{"version":3,"sources":["webpack://ml5/webpack/universalModuleDefinition","webpack://ml5/webpack/bootstrap","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/tf-core.esm.js","webpack://ml5/./node_modules/vega-util/build/vega-util.module.js","webpack://ml5/./node_modules/@tensorflow/tfjs-layers/dist/tf-layers.esm.js","webpack://ml5/./node_modules/@tensorflow/tfjs/dist/tf.esm.js","webpack://ml5/./node_modules/face-api.js/node_modules/@tensorflow/tfjs-core/dist/tf-core.esm.js","webpack://ml5/./node_modules/@babel/runtime/regenerator/index.js","webpack://ml5/./node_modules/face-api.js/node_modules/tslib/tslib.es6.js","webpack://ml5/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://ml5/./node_modules/@babel/runtime/helpers/typeof.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_export.js","webpack://ml5/./node_modules/@babel/runtime/helpers/createClass.js","webpack://ml5/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://ml5/./node_modules/vega-time/build/vega-time.module.js","webpack://ml5/./node_modules/d3-time/src/duration.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_is-object.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_an-object.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_fails.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_global.js","webpack://ml5/./node_modules/axios/index.js","webpack://ml5/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_wks.js","webpack://ml5/./node_modules/@tensorflow/tfjs-converter/dist/tf-converter.esm.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/util.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_to-length.js","webpack://ml5/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_core.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/engine.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-dp.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_descriptors.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/operation.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/tensor_util_env.js","webpack://ml5/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://ml5/./node_modules/d3-time/src/interval.js","webpack://ml5/./node_modules/semver/classes/semver.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/tensor.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_to-object.js","webpack://ml5/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://ml5/./node_modules/axios/lib/utils.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_string-html.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_redefine.js","webpack://ml5/./node_modules/d3-time/src/utcWeek.js","webpack://ml5/./node_modules/d3-time/src/week.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_to-iobject.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_hide.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_has.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/formatSpecifier.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/formatDecimal.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/exponent.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/precisionPrefix.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/precisionRound.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/precisionFixed.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/formatGroup.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/formatNumerals.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/formatTrim.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/formatPrefixAuto.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/formatRounded.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/formatTypes.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/identity.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/locale.js","webpack://ml5/./node_modules/vega-format/node_modules/d3-format/src/defaultLocale.js","webpack://ml5/./node_modules/vega-format/build/vega-format.module.js","webpack://ml5/./node_modules/d3-array/src/ticks.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/render/render_utils.js","webpack://ml5/./node_modules/semver/classes/range.js","webpack://ml5/./node_modules/semver/functions/compare.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_strict-method.js","webpack://ml5/./node_modules/d3-format/src/formatDecimal.js","webpack://ml5/./node_modules/d3-format/src/exponent.js","webpack://ml5/./node_modules/d3-format/src/formatGroup.js","webpack://ml5/./node_modules/d3-format/src/formatNumerals.js","webpack://ml5/./node_modules/d3-format/src/formatSpecifier.js","webpack://ml5/./node_modules/d3-format/src/formatTrim.js","webpack://ml5/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://ml5/./node_modules/d3-format/src/formatRounded.js","webpack://ml5/./node_modules/d3-format/src/formatTypes.js","webpack://ml5/./node_modules/d3-format/src/identity.js","webpack://ml5/./node_modules/d3-format/src/locale.js","webpack://ml5/./node_modules/d3-format/src/defaultLocale.js","webpack://ml5/./node_modules/d3-format/src/precisionFixed.js","webpack://ml5/./node_modules/d3-format/src/precisionPrefix.js","webpack://ml5/./node_modules/d3-format/src/precisionRound.js","webpack://ml5/./node_modules/d3-format/src/index.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_array-methods.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-sap.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-gopd.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_to-integer.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_a-function.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_ctx.js","webpack://ml5/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://ml5/./node_modules/@babel/runtime/helpers/inherits.js","webpack://ml5/(webpack)/buildin/global.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_typed-array.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_defined.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_cof.js","webpack://ml5/./node_modules/vega-loader/build/vega-loader.browser.module.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/util/dom.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_meta.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_to-primitive.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/index.js","webpack://ml5/./node_modules/d3-time/src/utcYear.js","webpack://ml5/./node_modules/d3-time/src/second.js","webpack://ml5/./node_modules/d3-time/src/year.js","webpack://ml5/./node_modules/d3-time/src/utcDay.js","webpack://ml5/./node_modules/d3-time/src/day.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/kernel_names.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/tensor_util.js","webpack://ml5/./node_modules/process/browser.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_validate-collection.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_add-to-unscopables.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-gpo.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-gopn.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-create.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_to-absolute-index.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-keys.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_library.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_uid.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_property-desc.js","webpack://ml5/./node_modules/fast-json-stable-stringify/index.js","webpack://ml5/./node_modules/d3-array/src/ascending.js","webpack://ml5/./node_modules/fast-json-patch/module/helpers.mjs","webpack://ml5/./node_modules/fast-json-patch/module/core.mjs","webpack://ml5/./node_modules/fast-json-patch/module/duplex.mjs","webpack://ml5/./node_modules/fast-json-patch/index.mjs","webpack://ml5/./node_modules/vega-dataflow/build/vega-dataflow.module.js","webpack://ml5/./node_modules/d3-array/src/max.js","webpack://ml5/./node_modules/d3-array/src/min.js","webpack://ml5/./node_modules/d3-array/src/quickselect.js","webpack://ml5/./node_modules/d3-array/src/number.js","webpack://ml5/./node_modules/d3-array/src/quantile.js","webpack://ml5/./node_modules/d3-array/src/variance.js","webpack://ml5/./node_modules/d3-array/src/deviation.js","webpack://ml5/./node_modules/d3-array/src/median.js","webpack://ml5/./node_modules/vega-statistics/build/vega-statistics.module.js","webpack://ml5/./node_modules/d3-array/src/mean.js","webpack://ml5/./node_modules/d3-array/src/range.js","webpack://ml5/./node_modules/vega-transforms/build/vega-transforms.module.js","webpack://ml5/./node_modules/d3-shape/src/curve/basis.js","webpack://ml5/./node_modules/d3-shape/src/noop.js","webpack://ml5/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://ml5/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://ml5/./node_modules/d3-shape/src/curve/bundle.js","webpack://ml5/./node_modules/d3-shape/src/curve/cardinal.js","webpack://ml5/./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://ml5/./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://ml5/./node_modules/d3-shape/src/math.js","webpack://ml5/./node_modules/d3-shape/src/curve/catmullRom.js","webpack://ml5/./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://ml5/./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://ml5/./node_modules/d3-shape/src/curve/linear.js","webpack://ml5/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://ml5/./node_modules/d3-shape/src/curve/monotone.js","webpack://ml5/./node_modules/d3-shape/src/curve/natural.js","webpack://ml5/./node_modules/d3-shape/src/curve/step.js","webpack://ml5/./node_modules/d3-path/src/path.js","webpack://ml5/./node_modules/d3-shape/src/constant.js","webpack://ml5/./node_modules/d3-shape/src/arc.js","webpack://ml5/./node_modules/d3-shape/src/array.js","webpack://ml5/./node_modules/d3-shape/src/point.js","webpack://ml5/./node_modules/d3-shape/src/line.js","webpack://ml5/./node_modules/d3-shape/src/area.js","webpack://ml5/./node_modules/d3-shape/src/symbol/circle.js","webpack://ml5/./node_modules/d3-shape/src/symbol/cross.js","webpack://ml5/./node_modules/d3-shape/src/symbol/diamond.js","webpack://ml5/./node_modules/d3-shape/src/symbol/star.js","webpack://ml5/./node_modules/d3-shape/src/symbol/square.js","webpack://ml5/./node_modules/d3-shape/src/symbol/triangle.js","webpack://ml5/./node_modules/d3-shape/src/symbol/wye.js","webpack://ml5/./node_modules/d3-shape/src/symbol.js","webpack://ml5/./node_modules/vega-canvas/src/domCanvas.js","webpack://ml5/./node_modules/vega-canvas/index.browser.js","webpack://ml5/./node_modules/d3-array/src/bisect.js","webpack://ml5/./node_modules/d3-scale/src/init.js","webpack://ml5/./node_modules/d3-scale/src/ordinal.js","webpack://ml5/./node_modules/d3-scale/src/tickFormat.js","webpack://ml5/./node_modules/d3-color/src/define.js","webpack://ml5/./node_modules/d3-color/src/color.js","webpack://ml5/./node_modules/d3-interpolate/src/basis.js","webpack://ml5/./node_modules/d3-interpolate/src/basisClosed.js","webpack://ml5/./node_modules/d3-interpolate/src/constant.js","webpack://ml5/./node_modules/d3-interpolate/src/color.js","webpack://ml5/./node_modules/d3-interpolate/src/rgb.js","webpack://ml5/./node_modules/d3-interpolate/src/numberArray.js","webpack://ml5/./node_modules/d3-interpolate/src/array.js","webpack://ml5/./node_modules/d3-interpolate/src/date.js","webpack://ml5/./node_modules/d3-interpolate/src/number.js","webpack://ml5/./node_modules/d3-interpolate/src/object.js","webpack://ml5/./node_modules/d3-interpolate/src/string.js","webpack://ml5/./node_modules/d3-interpolate/src/value.js","webpack://ml5/./node_modules/d3-interpolate/src/round.js","webpack://ml5/./node_modules/d3-scale/src/constant.js","webpack://ml5/./node_modules/d3-scale/src/number.js","webpack://ml5/./node_modules/d3-scale/src/continuous.js","webpack://ml5/./node_modules/d3-scale/src/linear.js","webpack://ml5/./node_modules/d3-scale/src/identity.js","webpack://ml5/./node_modules/d3-scale/src/nice.js","webpack://ml5/./node_modules/d3-scale/src/log.js","webpack://ml5/./node_modules/d3-scale/src/pow.js","webpack://ml5/./node_modules/d3-scale/src/symlog.js","webpack://ml5/./node_modules/d3-time/src/ticks.js","webpack://ml5/./node_modules/d3-scale/src/time.js","webpack://ml5/./node_modules/d3-scale/src/utcTime.js","webpack://ml5/./node_modules/d3-scale/src/sequential.js","webpack://ml5/./node_modules/d3-interpolate/src/piecewise.js","webpack://ml5/./node_modules/d3-scale/src/diverging.js","webpack://ml5/./node_modules/d3-scale/src/quantile.js","webpack://ml5/./node_modules/d3-scale/src/quantize.js","webpack://ml5/./node_modules/d3-scale/src/threshold.js","webpack://ml5/./node_modules/d3-scale/src/index.js","webpack://ml5/./node_modules/d3-interpolate/src/discrete.js","webpack://ml5/./node_modules/d3-interpolate/src/hue.js","webpack://ml5/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://ml5/./node_modules/d3-interpolate/src/transform/parse.js","webpack://ml5/./node_modules/d3-interpolate/src/transform/index.js","webpack://ml5/./node_modules/d3-interpolate/src/zoom.js","webpack://ml5/./node_modules/d3-interpolate/src/hsl.js","webpack://ml5/./node_modules/d3-color/src/math.js","webpack://ml5/./node_modules/d3-color/src/lab.js","webpack://ml5/./node_modules/d3-interpolate/src/lab.js","webpack://ml5/./node_modules/d3-interpolate/src/hcl.js","webpack://ml5/./node_modules/d3-color/src/cubehelix.js","webpack://ml5/./node_modules/d3-interpolate/src/cubehelix.js","webpack://ml5/./node_modules/d3-interpolate/src/quantize.js","webpack://ml5/./node_modules/d3-interpolate/src/index.js","webpack://ml5/./node_modules/vega-scale/build/vega-scale.module.js","webpack://ml5/./node_modules/vega-scenegraph/build/vega-scenegraph.module.js","webpack://ml5/./node_modules/vega-view-transforms/build/vega-view-transforms.module.js","webpack://ml5/./node_modules/d3-array/src/sum.js","webpack://ml5/./node_modules/vega-encode/build/vega-encode.module.js","webpack://ml5/./node_modules/d3-geo/src/identity.js","webpack://ml5/./node_modules/d3-geo/src/stream.js","webpack://ml5/./node_modules/d3-array/src/fsum.js","webpack://ml5/./node_modules/d3-geo/src/math.js","webpack://ml5/./node_modules/d3-geo/src/noop.js","webpack://ml5/./node_modules/d3-geo/src/path/area.js","webpack://ml5/./node_modules/d3-geo/src/path/bounds.js","webpack://ml5/./node_modules/d3-geo/src/path/centroid.js","webpack://ml5/./node_modules/d3-geo/src/path/context.js","webpack://ml5/./node_modules/d3-geo/src/path/measure.js","webpack://ml5/./node_modules/d3-geo/src/path/string.js","webpack://ml5/./node_modules/d3-geo/src/path/index.js","webpack://ml5/./node_modules/d3-geo/src/clip/buffer.js","webpack://ml5/./node_modules/d3-geo/src/pointEqual.js","webpack://ml5/./node_modules/d3-geo/src/clip/rejoin.js","webpack://ml5/./node_modules/d3-geo/src/cartesian.js","webpack://ml5/./node_modules/d3-geo/src/polygonContains.js","webpack://ml5/./node_modules/d3-array/src/merge.js","webpack://ml5/./node_modules/d3-geo/src/clip/index.js","webpack://ml5/./node_modules/d3-geo/src/clip/antimeridian.js","webpack://ml5/./node_modules/d3-geo/src/constant.js","webpack://ml5/./node_modules/d3-geo/src/compose.js","webpack://ml5/./node_modules/d3-geo/src/rotation.js","webpack://ml5/./node_modules/d3-geo/src/circle.js","webpack://ml5/./node_modules/d3-geo/src/clip/circle.js","webpack://ml5/./node_modules/d3-geo/src/clip/line.js","webpack://ml5/./node_modules/d3-geo/src/clip/rectangle.js","webpack://ml5/./node_modules/d3-geo/src/transform.js","webpack://ml5/./node_modules/d3-geo/src/projection/fit.js","webpack://ml5/./node_modules/d3-geo/src/projection/resample.js","webpack://ml5/./node_modules/d3-geo/src/projection/index.js","webpack://ml5/./node_modules/d3-geo/src/projection/conic.js","webpack://ml5/./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://ml5/./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://ml5/./node_modules/d3-geo/src/projection/albers.js","webpack://ml5/./node_modules/d3-geo/src/projection/albersUsa.js","webpack://ml5/./node_modules/d3-geo/src/projection/azimuthal.js","webpack://ml5/./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://ml5/./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://ml5/./node_modules/d3-geo/src/projection/mercator.js","webpack://ml5/./node_modules/d3-geo/src/projection/conicConformal.js","webpack://ml5/./node_modules/d3-geo/src/projection/equirectangular.js","webpack://ml5/./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://ml5/./node_modules/d3-geo/src/projection/equalEarth.js","webpack://ml5/./node_modules/d3-geo/src/projection/gnomonic.js","webpack://ml5/./node_modules/d3-geo/src/projection/identity.js","webpack://ml5/./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://ml5/./node_modules/d3-geo/src/projection/orthographic.js","webpack://ml5/./node_modules/d3-geo/src/projection/stereographic.js","webpack://ml5/./node_modules/d3-geo/src/projection/transverseMercator.js","webpack://ml5/./node_modules/d3-geo-projection/src/math.js","webpack://ml5/./node_modules/d3-geo-projection/src/mollweide.js","webpack://ml5/./node_modules/vega-projection/build/vega-projection.module.js","webpack://ml5/./node_modules/d3-geo/src/graticule.js","webpack://ml5/./node_modules/vega-geo/build/vega-geo.module.js","webpack://ml5/./node_modules/d3-force/src/center.js","webpack://ml5/./node_modules/d3-quadtree/src/add.js","webpack://ml5/./node_modules/d3-quadtree/src/cover.js","webpack://ml5/./node_modules/d3-quadtree/src/data.js","webpack://ml5/./node_modules/d3-quadtree/src/extent.js","webpack://ml5/./node_modules/d3-quadtree/src/quad.js","webpack://ml5/./node_modules/d3-quadtree/src/find.js","webpack://ml5/./node_modules/d3-quadtree/src/remove.js","webpack://ml5/./node_modules/d3-quadtree/src/root.js","webpack://ml5/./node_modules/d3-quadtree/src/size.js","webpack://ml5/./node_modules/d3-quadtree/src/visit.js","webpack://ml5/./node_modules/d3-quadtree/src/visitAfter.js","webpack://ml5/./node_modules/d3-quadtree/src/x.js","webpack://ml5/./node_modules/d3-quadtree/src/y.js","webpack://ml5/./node_modules/d3-quadtree/src/quadtree.js","webpack://ml5/./node_modules/d3-force/src/constant.js","webpack://ml5/./node_modules/d3-force/src/jiggle.js","webpack://ml5/./node_modules/d3-force/src/collide.js","webpack://ml5/./node_modules/d3-dispatch/src/dispatch.js","webpack://ml5/./node_modules/d3-timer/src/timer.js","webpack://ml5/./node_modules/d3-force/src/lcg.js","webpack://ml5/./node_modules/d3-force/src/simulation.js","webpack://ml5/./node_modules/d3-force/src/manyBody.js","webpack://ml5/./node_modules/d3-force/src/link.js","webpack://ml5/./node_modules/d3-force/src/x.js","webpack://ml5/./node_modules/d3-force/src/y.js","webpack://ml5/./node_modules/vega-force/build/vega-force.module.js","webpack://ml5/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://ml5/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://ml5/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://ml5/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://ml5/./node_modules/d3-hierarchy/src/hierarchy/find.js","webpack://ml5/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://ml5/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://ml5/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://ml5/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://ml5/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://ml5/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://ml5/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://ml5/./node_modules/d3-hierarchy/src/hierarchy/iterator.js","webpack://ml5/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://ml5/./node_modules/d3-hierarchy/src/array.js","webpack://ml5/./node_modules/d3-hierarchy/src/pack/enclose.js","webpack://ml5/./node_modules/d3-hierarchy/src/pack/siblings.js","webpack://ml5/./node_modules/d3-hierarchy/src/accessors.js","webpack://ml5/./node_modules/d3-hierarchy/src/constant.js","webpack://ml5/./node_modules/d3-hierarchy/src/pack/index.js","webpack://ml5/./node_modules/d3-hierarchy/src/treemap/round.js","webpack://ml5/./node_modules/d3-hierarchy/src/treemap/dice.js","webpack://ml5/./node_modules/d3-hierarchy/src/partition.js","webpack://ml5/./node_modules/d3-hierarchy/src/stratify.js","webpack://ml5/./node_modules/d3-hierarchy/src/tree.js","webpack://ml5/./node_modules/d3-hierarchy/src/cluster.js","webpack://ml5/./node_modules/d3-hierarchy/src/treemap/binary.js","webpack://ml5/./node_modules/d3-hierarchy/src/treemap/slice.js","webpack://ml5/./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://ml5/./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://ml5/./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://ml5/./node_modules/d3-hierarchy/src/treemap/index.js","webpack://ml5/./node_modules/vega-hierarchy/build/vega-hierarchy.module.js","webpack://ml5/./node_modules/vega-label/build/vega-label.module.js","webpack://ml5/./node_modules/vega-regression/build/vega-regression.module.js","webpack://ml5/./node_modules/delaunator/index.js","webpack://ml5/./node_modules/d3-delaunay/src/path.js","webpack://ml5/./node_modules/d3-delaunay/src/polygon.js","webpack://ml5/./node_modules/d3-delaunay/src/voronoi.js","webpack://ml5/./node_modules/d3-delaunay/src/delaunay.js","webpack://ml5/./node_modules/vega-voronoi/build/vega-voronoi.module.js","webpack://ml5/./node_modules/vega-wordcloud/build/vega-wordcloud.module.js","webpack://ml5/./node_modules/d3-array/src/permute.js","webpack://ml5/./node_modules/vega-crossfilter/build/vega-crossfilter.module.js","webpack://ml5/./node_modules/vega-functions/node_modules/vega-expression/build/vega-expression.module.js","webpack://ml5/./node_modules/d3-geo/src/area.js","webpack://ml5/./node_modules/d3-geo/src/bounds.js","webpack://ml5/./node_modules/d3-geo/src/centroid.js","webpack://ml5/./node_modules/vega-selections/node_modules/vega-expression/build/vega-expression.module.js","webpack://ml5/./node_modules/vega-selections/build/vega-selection.module.js","webpack://ml5/./node_modules/vega-functions/build/vega-functions.module.js","webpack://ml5/./node_modules/vega-runtime/build/vega-runtime.module.js","webpack://ml5/./node_modules/d3-timer/src/interval.js","webpack://ml5/./node_modules/vega-view/build/vega-view.module.js","webpack://ml5/./node_modules/vega-parser/node_modules/vega-event-selector/build/vega-event-selector.module.js","webpack://ml5/./node_modules/vega-parser/build/vega-parser.module.js","webpack://ml5/./node_modules/vega-expression/build/vega-expression.module.js","webpack://ml5/./node_modules/vega-event-selector/build/vega-event-selector.module.js","webpack://ml5/./node_modules/vega/build/vega.module.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/accessor.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/getter.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/error.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/splitAccessPath.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/field.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/accessors.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/logger.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/isArray.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/isObject.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/mergeConfig.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/peek.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/toNumber.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/transform.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/quarter.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/array.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/clampRange.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/isFunction.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/compare.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/constant.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/debounce.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/extend.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/extent.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/extentIndex.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/hasOwnProperty.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/fastmap.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/flush.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/inherits.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/inrange.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/isBoolean.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/isDate.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/isNumber.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/isRegExp.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/isString.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/key.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/lerp.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/lruCache.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/merge.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/repeat.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/pad.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/span.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/stringValue.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/toBoolean.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/toDate.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/toString.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/toSet.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/truncate.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/src/visitArray.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-util/index.js","webpack://ml5/./node_modules/tslib/tslib.es6.js","webpack://ml5/./node_modules/array-flat-polyfill/index.mjs","webpack://ml5/./node_modules/vega-lite/build/src/logical.js","webpack://ml5/./node_modules/vega-lite/build/src/util.js","webpack://ml5/./node_modules/vega-lite/build/src/axis.js","webpack://ml5/./node_modules/vega-lite/build/src/mark.js","webpack://ml5/./node_modules/vega-lite/build/src/spec/unit.js","webpack://ml5/./node_modules/vega-lite/build/src/compositemark/base.js","webpack://ml5/./node_modules/vega-lite/build/src/aggregate.js","webpack://ml5/./node_modules/vega-lite/build/src/channel.js","webpack://ml5/./node_modules/vega-lite/build/src/bin.js","webpack://ml5/./node_modules/vega-lite/build/src/log/message.js","webpack://ml5/./node_modules/vega-lite/build/src/log/index.js","webpack://ml5/./node_modules/vega-lite/build/src/datetime.js","webpack://ml5/./node_modules/vega-lite/build/src/timeunit.js","webpack://ml5/./node_modules/vega-lite/build/src/vega.schema.js","webpack://ml5/./node_modules/vega-lite/build/src/predicate.js","webpack://ml5/./node_modules/vega-lite/build/src/type.js","webpack://ml5/./node_modules/vega-lite/build/src/scale.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/valueref.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/format.js","webpack://ml5/./node_modules/vega-lite/build/src/sort.js","webpack://ml5/./node_modules/vega-lite/build/src/spec/facet.js","webpack://ml5/./node_modules/vega-lite/build/src/channeldef.js","webpack://ml5/./node_modules/vega-lite/build/src/title.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/common.js","webpack://ml5/./node_modules/vega-lite/build/src/encoding.js","webpack://ml5/./node_modules/vega-lite/build/src/compositemark/common.js","webpack://ml5/./node_modules/vega-lite/build/src/compositemark/boxplot.js","webpack://ml5/./node_modules/vega-lite/build/src/compositemark/errorbar.js","webpack://ml5/./node_modules/vega-lite/build/src/compositemark/errorband.js","webpack://ml5/./node_modules/vega-lite/build/src/compositemark/index.js","webpack://ml5/./node_modules/vega-lite/build/src/guide.js","webpack://ml5/./node_modules/vega-lite/build/src/legend.js","webpack://ml5/./node_modules/vega-lite/build/src/selection.js","webpack://ml5/./node_modules/vega-lite/build/src/spec/concat.js","webpack://ml5/./node_modules/vega-lite/build/src/spec/base.js","webpack://ml5/./node_modules/vega-lite/build/src/config.js","webpack://ml5/./node_modules/vega-lite/build/src/spec/layer.js","webpack://ml5/./node_modules/vega-lite/build/src/spec/repeat.js","webpack://ml5/./node_modules/vega-lite/build/src/spec/index.js","webpack://ml5/./node_modules/vega-lite/build/src/spec/map.js","webpack://ml5/./node_modules/vega-lite/build/src/stack.js","webpack://ml5/./node_modules/vega-lite/build/src/normalize/pathoverlay.js","webpack://ml5/./node_modules/vega-lite/build/src/normalize/rangestep.js","webpack://ml5/./node_modules/vega-lite/build/src/normalize/repeater.js","webpack://ml5/./node_modules/vega-lite/build/src/normalize/ruleforrangedline.js","webpack://ml5/./node_modules/vega-lite/build/src/normalize/core.js","webpack://ml5/./node_modules/vega-lite/build/src/normalize/index.js","webpack://ml5/./node_modules/vega-lite/build/src/spec/toplevel.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/split.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/index.js","webpack://ml5/./node_modules/vega-lite/build/src/data.js","webpack://ml5/./node_modules/vega-lite/build/src/transform.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/conditional.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/text.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/tooltip.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/aria.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/nonposition.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/color.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/offset.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/position-point.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/position-align.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/position-range.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/position-rect.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/base.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/defined.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/encode/index.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/transforms/nearest.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/dataflow.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/timeunit.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/transforms/project.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/transforms/inputs.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/transforms/toggle.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/transforms/clear.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/transforms/scales.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/transforms/legends.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/transforms/translate.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/transforms/zoom.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/transforms/transforms.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/assemble.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/interval.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/multi.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/single.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/index.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-expression/src/ast.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-expression/src/parser.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-expression/src/constants.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-expression/node_modules/vega-util/build/vega-util.module.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-expression/src/functions.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-expression/src/codegen.js","webpack://ml5/./node_modules/vega-lite/node_modules/vega-expression/index.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/expressions.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/filter.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/selection/parse.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/predicate.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/axis/assemble.js","webpack://ml5/./node_modules/vega-lite/build/src/header.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/axis/config.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/axis/properties.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/calculate.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/header/common.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/header/component.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/header/assemble.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/layoutsize/assemble.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/layoutsize/component.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/guide.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/resolve.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/legend/component.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/legend/encode.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/legend/properties.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/legend/parse.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/legend/assemble.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/projection/assemble.js","webpack://ml5/./node_modules/vega-lite/build/src/projection.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/projection/component.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/projection/parse.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/bin.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/source.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/debug.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/graticule.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/sequence.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/optimizer.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/aggregate.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/facet.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/formatparse.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/identifier.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/joinaggregate.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/stack.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/window.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/optimizers.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/optimize.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/signal.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/scale/domain.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/scale/assemble.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/scale/component.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/scale/range.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/scale/properties.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/scale/type.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/scale/parse.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/model.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/density.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/filterinvalid.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/flatten.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/fold.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/geojson.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/geopoint.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/impute.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/loess.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/lookup.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/quantile.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/regression.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/pivot.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/sample.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/assemble.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/header/parse.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/layoutsize/parse.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/facet.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/joinaggregatefacet.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/data/parse.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/concat.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/axis/component.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/axis/encode.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/axis/parse.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/layoutsize/init.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/init.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/arc.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/area.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/bar.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/geoshape.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/image.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/line.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/point.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/rect.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/rule.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/text.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/tick.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/mark/mark.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/unit.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/layer.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/buildmodel.js","webpack://ml5/./node_modules/vega-lite/build/src/compile/compile.js","webpack://ml5/./node_modules/vega-lite/build/src/transformextract.js","webpack://ml5/./node_modules/vega-lite/build/src/index.js","webpack://ml5/./node_modules/vega-schema-url-parser/dist/parser.module.js","webpack://ml5/./node_modules/vega-themes/build/vega-themes.module.js","webpack://ml5/./node_modules/vega-tooltip/build/vega-tooltip.module.js","webpack://ml5/./node_modules/vega-embed/build/vega-embed.module.js","webpack://ml5/./node_modules/semver/functions/parse.js","webpack://ml5/./node_modules/semver/internal/re.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/tensor_ops.js","webpack://ml5/./node_modules/node-libs-browser/node_modules/buffer/index.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_redefine-all.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_an-instance.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_set-species.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_iterators.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_string-trim.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_set-to-string-tag.js","webpack://ml5/./node_modules/events/events.js","webpack://ml5/./node_modules/d3-time-format/src/defaultLocale.js","webpack://ml5/./node_modules/css-in-js-utils/lib/isPrefixedValue.js","webpack://ml5/./node_modules/glamor/lib/index.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/environment.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_species-constructor.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_classof.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-pie.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_iobject.js","webpack://ml5/./node_modules/d3-array/src/bisector.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/render/table.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/util/math.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/util/utils.js","webpack://ml5/./node_modules/semver/functions/satisfies.js","webpack://ml5/./node_modules/semver/classes/comparator.js","webpack://ml5/./node_modules/semver/functions/gt.js","webpack://ml5/./node_modules/semver/internal/parse-options.js","webpack://ml5/./node_modules/semver/internal/debug.js","webpack://ml5/./node_modules/semver/internal/constants.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_typed.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_collection.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_user-agent.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_for-of.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_fix-re-wks.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_regexp-exec-abstract.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_flags.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_iter-detect.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_is-array.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-gops.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_array-includes.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_shared.js","webpack://ml5/./node_modules/@tensorflow/tfjs-data/dist/tf-data.esm.js","webpack://ml5/./node_modules/face-api.js/build/es6/env/createFileSystem.js","webpack://ml5/./node_modules/json-stringify-pretty-compact/index.js","webpack://ml5/./node_modules/d3-time/src/utcMonth.js","webpack://ml5/./node_modules/d3-time/src/month.js","webpack://ml5/./node_modules/axios/lib/defaults.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/render/histogram.js","webpack://ml5/./node_modules/preact/dist/preact.esm.js","webpack://ml5/./node_modules/object-assign/index.js","webpack://ml5/./node_modules/semver/ranges/outside.js","webpack://ml5/./node_modules/semver/functions/lte.js","webpack://ml5/./node_modules/semver/functions/gte.js","webpack://ml5/./node_modules/semver/functions/lt.js","webpack://ml5/./node_modules/semver/functions/compare-build.js","webpack://ml5/./node_modules/semver/functions/eq.js","webpack://ml5/./node_modules/semver/internal/identifiers.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_util.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_descriptors.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_is-object.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_global.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_typed-buffer.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_task.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_advance-string-index.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_regexp-exec.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.iterator.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_array-fill.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/core.get-iterator-method.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_create-property.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_is-array-iter.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_fails-is-regexp.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_is-regexp.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_string-context.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_iter-define.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_string-at.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_math-expm1.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_math-sign.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_string-repeat.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_inherit-if-required.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_string-ws.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_set-proto.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_html.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_enum-bug-keys.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_shared-key.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_wks-ext.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_dom-create.js","webpack://ml5/./node_modules/topojson-client/src/identity.js","webpack://ml5/./node_modules/topojson-client/src/transform.js","webpack://ml5/./node_modules/topojson-client/src/bbox.js","webpack://ml5/./node_modules/topojson-client/src/reverse.js","webpack://ml5/./node_modules/topojson-client/src/feature.js","webpack://ml5/./node_modules/topojson-client/src/stitch.js","webpack://ml5/./node_modules/topojson-client/src/mesh.js","webpack://ml5/./node_modules/topojson-client/src/merge.js","webpack://ml5/./node_modules/topojson-client/src/bisect.js","webpack://ml5/./node_modules/topojson-client/src/neighbors.js","webpack://ml5/./node_modules/topojson-client/src/untransform.js","webpack://ml5/./node_modules/topojson-client/src/quantize.js","webpack://ml5/./node_modules/topojson-client/src/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/env/isNodejs.js","webpack://ml5/./node_modules/face-api.js/build/es6/env/createNodejsEnv.js","webpack://ml5/./node_modules/semver/index.js","webpack://ml5/./node_modules/d3-time/src/utcMinute.js","webpack://ml5/./node_modules/d3-time/src/utcHour.js","webpack://ml5/./node_modules/d3-time/src/millisecond.js","webpack://ml5/./node_modules/d3-time/src/minute.js","webpack://ml5/./node_modules/d3-time/src/hour.js","webpack://ml5/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://ml5/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://ml5/./node_modules/axios/lib/cancel/Cancel.js","webpack://ml5/./node_modules/axios/lib/core/mergeConfig.js","webpack://ml5/./node_modules/axios/lib/cancel/isCancel.js","webpack://ml5/./node_modules/axios/lib/core/createError.js","webpack://ml5/./node_modules/axios/lib/adapters/xhr.js","webpack://ml5/./node_modules/axios/lib/core/enhanceError.js","webpack://ml5/./node_modules/axios/lib/helpers/buildURL.js","webpack://ml5/./node_modules/axios/lib/helpers/bind.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/render/linechart.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/visor.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/types.js","webpack://ml5/./node_modules/inline-style-prefixer/utils/capitalizeString.js","webpack://ml5/./node_modules/fbjs/lib/warning.js","webpack://ml5/./node_modules/glamor/lib/CSSPropertyOperations/index.js","webpack://ml5/./node_modules/d3-scale/src/band.js","webpack://ml5/./node_modules/semver/functions/cmp.js","webpack://ml5/./node_modules/semver/functions/neq.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/div.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/add.js","webpack://ml5/./node_modules/node-libs-browser/node_modules/timers-browserify/main.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_fails.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_core.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-to-array.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_string-pad.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_own-keys.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_to-index.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_collection-weak.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_collection-strong.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_promise-resolve.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_new-promise-capability.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.promise.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.flags.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.exec.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_iter-step.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_array-copy-within.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_array-reduce.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_array-species-create.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_iter-call.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_iter-create.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_math-log1p.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_is-integer.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_a-number-value.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_parse-float.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_parse-int.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_invoke.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_bind.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_same-value.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-assign.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-gopn-ext.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-dps.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-keys-internal.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_wks-define.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_ie8-dom-define.js","webpack://ml5/./node_modules/@magenta/sketch/es5/index.js","webpack://ml5/./node_modules/@tensorflow-models/coco-ssd/dist/coco-ssd.es2017.esm.min.js","webpack://ml5/./node_modules/fast-deep-equal/index.js","webpack://ml5/./node_modules/clone/clone.js","webpack://ml5/./node_modules/d3-time-format/src/locale.js","webpack://ml5/./node_modules/d3-selection/src/namespaces.js","webpack://ml5/./node_modules/d3-selection/src/namespace.js","webpack://ml5/./node_modules/d3-selection/src/creator.js","webpack://ml5/./node_modules/d3-selection/src/selector.js","webpack://ml5/./node_modules/d3-selection/src/selection/select.js","webpack://ml5/./node_modules/d3-selection/src/selectorAll.js","webpack://ml5/./node_modules/d3-selection/src/selection/selectAll.js","webpack://ml5/./node_modules/d3-selection/src/matcher.js","webpack://ml5/./node_modules/d3-selection/src/selection/filter.js","webpack://ml5/./node_modules/d3-selection/src/selection/sparse.js","webpack://ml5/./node_modules/d3-selection/src/selection/enter.js","webpack://ml5/./node_modules/d3-selection/src/constant.js","webpack://ml5/./node_modules/d3-selection/src/selection/data.js","webpack://ml5/./node_modules/d3-selection/src/selection/exit.js","webpack://ml5/./node_modules/d3-selection/src/selection/merge.js","webpack://ml5/./node_modules/d3-selection/src/selection/order.js","webpack://ml5/./node_modules/d3-selection/src/selection/sort.js","webpack://ml5/./node_modules/d3-selection/src/selection/call.js","webpack://ml5/./node_modules/d3-selection/src/selection/nodes.js","webpack://ml5/./node_modules/d3-selection/src/selection/node.js","webpack://ml5/./node_modules/d3-selection/src/selection/size.js","webpack://ml5/./node_modules/d3-selection/src/selection/empty.js","webpack://ml5/./node_modules/d3-selection/src/selection/each.js","webpack://ml5/./node_modules/d3-selection/src/selection/attr.js","webpack://ml5/./node_modules/d3-selection/src/window.js","webpack://ml5/./node_modules/d3-selection/src/selection/style.js","webpack://ml5/./node_modules/d3-selection/src/selection/property.js","webpack://ml5/./node_modules/d3-selection/src/selection/classed.js","webpack://ml5/./node_modules/d3-selection/src/selection/text.js","webpack://ml5/./node_modules/d3-selection/src/selection/html.js","webpack://ml5/./node_modules/d3-selection/src/selection/raise.js","webpack://ml5/./node_modules/d3-selection/src/selection/lower.js","webpack://ml5/./node_modules/d3-selection/src/selection/append.js","webpack://ml5/./node_modules/d3-selection/src/selection/insert.js","webpack://ml5/./node_modules/d3-selection/src/selection/remove.js","webpack://ml5/./node_modules/d3-selection/src/selection/clone.js","webpack://ml5/./node_modules/d3-selection/src/selection/datum.js","webpack://ml5/./node_modules/d3-selection/src/selection/on.js","webpack://ml5/./node_modules/d3-selection/src/selection/dispatch.js","webpack://ml5/./node_modules/d3-selection/src/selection/index.js","webpack://ml5/./node_modules/d3-selection/src/select.js","webpack://ml5/./node_modules/d3-selection/src/create.js","webpack://ml5/./node_modules/d3-selection/src/local.js","webpack://ml5/./node_modules/d3-selection/src/sourceEvent.js","webpack://ml5/./node_modules/d3-selection/src/point.js","webpack://ml5/./node_modules/d3-selection/src/mouse.js","webpack://ml5/./node_modules/d3-selection/src/selectAll.js","webpack://ml5/./node_modules/d3-selection/src/touch.js","webpack://ml5/./node_modules/d3-selection/src/touches.js","webpack://ml5/./node_modules/d3-selection/src/index.js","webpack://ml5/./src/utils/callcallback.js","webpack://ml5/./src/PitchDetection/index.js","webpack://ml5/./node_modules/@tensorflow-models/mobilenet/dist/mobilenet.esm.js","webpack://ml5/./src/utils/gettopkclasses.js","webpack://ml5/./src/utils/IMAGENET_CLASSES_DARKNET.js","webpack://ml5/./src/ImageClassifier/darknet.js","webpack://ml5/./src/utils/DOODLENET_CLASSES.js","webpack://ml5/./src/ImageClassifier/doodlenet.js","webpack://ml5/./src/utils/p5Utils.js","webpack://ml5/./src/utils/imageUtilities.js","webpack://ml5/./src/ImageClassifier/index.js","webpack://ml5/./node_modules/@tensorflow-models/speech-commands/dist/speech-commands.esm.js","webpack://ml5/./src/SoundClassifier/speechcommands.js","webpack://ml5/./src/SoundClassifier/index.js","webpack://ml5/./node_modules/@tensorflow-models/knn-classifier/dist/knn-classifier.esm.js","webpack://ml5/./src/utils/io.js","webpack://ml5/./src/KNNClassifier/index.js","webpack://ml5/./src/utils/Video.js","webpack://ml5/./src/FeatureExtractor/Mobilenet.js","webpack://ml5/./src/FeatureExtractor/index.js","webpack://ml5/./src/Word2vec/index.js","webpack://ml5/./src/utils/COCO_CLASSES.js","webpack://ml5/./src/utils/modelLoader.js","webpack://ml5/./src/ObjectDetector/YOLO/postprocess.js","webpack://ml5/./src/ObjectDetector/YOLO/index.js","webpack://ml5/./src/ObjectDetector/CocoSsd/index.js","webpack://ml5/./src/ObjectDetector/index.js","webpack://ml5/./node_modules/@tensorflow-models/posenet/dist/posenet.esm.js","webpack://ml5/./src/PoseNet/index.js","webpack://ml5/./src/utils/checkpointLoader.js","webpack://ml5/./src/StyleTransfer/index.js","webpack://ml5/./src/utils/sample.js","webpack://ml5/./src/CharRNN/index.js","webpack://ml5/./src/utils/checkpointLoaderPix2pix.js","webpack://ml5/./src/Pix2pix/index.js","webpack://ml5/./src/SketchRNN/models.js","webpack://ml5/./src/SketchRNN/index.js","webpack://ml5/./src/UNET/index.js","webpack://ml5/./src/CVAE/index.js","webpack://ml5/./src/DCGAN/index.js","webpack://ml5/./src/utils/p5PreloadHelper.js","webpack://ml5/./src/Sentiment/index.js","webpack://ml5/./node_modules/@tensorflow-models/body-pix/dist/body-pix.esm.js","webpack://ml5/./src/BodyPix/BODYPIX_PALETTE.js","webpack://ml5/./src/BodyPix/index.js","webpack://ml5/./src/utils/random.js","webpack://ml5/./src/NeuralNetwork/NeuralNetwork.js","webpack://ml5/./src/NeuralNetwork/NeuralNetworkUtils.js","webpack://ml5/./src/NeuralNetwork/NeuralNetworkData.js","webpack://ml5/./src/NeuralNetwork/NeuralNetworkVis.js","webpack://ml5/./src/NeuralNetwork/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/draw/drawContour.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/Dimensions.js","webpack://ml5/./node_modules/face-api.js/build/es6/utils/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/Point.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/Box.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/BoundingBox.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/ObjectDetection.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/FaceDetection.js","webpack://ml5/./node_modules/face-api.js/build/es6/ops/iou.js","webpack://ml5/./node_modules/face-api.js/build/es6/ops/minBbox.js","webpack://ml5/./node_modules/face-api.js/build/es6/ops/nonMaxSuppression.js","webpack://ml5/./node_modules/face-api.js/build/es6/ops/normalize.js","webpack://ml5/./node_modules/face-api.js/build/es6/ops/padToSquare.js","webpack://ml5/./node_modules/face-api.js/build/es6/ops/shuffleArray.js","webpack://ml5/./node_modules/face-api.js/build/es6/ops/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/Rect.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/FaceLandmarks.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/FaceLandmarks5.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/FaceLandmarks68.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/FaceMatch.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/LabeledBox.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/LabeledFaceDescriptors.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/PredictedBox.js","webpack://ml5/./node_modules/face-api.js/build/es6/classes/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/factories/WithFaceDetection.js","webpack://ml5/./node_modules/face-api.js/build/es6/env/createBrowserEnv.js","webpack://ml5/./node_modules/face-api.js/build/es6/env/isBrowser.js","webpack://ml5/./node_modules/face-api.js/build/es6/env/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/resolveInput.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/getContext2dOrThrow.js","webpack://ml5/./node_modules/face-api.js/build/es6/draw/DrawTextField.js","webpack://ml5/./node_modules/face-api.js/build/es6/draw/DrawBox.js","webpack://ml5/./node_modules/face-api.js/build/es6/draw/drawDetections.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/isMediaLoaded.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/awaitMediaLoaded.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/bufferToImage.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/getMediaDimensions.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/createCanvas.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/imageTensorToCanvas.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/isMediaElement.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/imageToSquare.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/NetInput.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/toNetInput.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/extractFaces.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/extractFaceTensors.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/fetchOrThrow.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/fetchImage.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/fetchJson.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/fetchNetWeights.js","webpack://ml5/./node_modules/face-api.js/build/es6/common/getModelUris.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/loadWeightMap.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/matchDimensions.js","webpack://ml5/./node_modules/face-api.js/build/es6/dom/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/NeuralNetwork.js","webpack://ml5/./node_modules/face-api.js/build/es6/common/depthwiseSeparableConv.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceFeatureExtractor/denseBlock.js","webpack://ml5/./node_modules/face-api.js/build/es6/common/convLayer.js","webpack://ml5/./node_modules/face-api.js/build/es6/common/disposeUnusedWeightTensors.js","webpack://ml5/./node_modules/face-api.js/build/es6/common/extractConvParamsFactory.js","webpack://ml5/./node_modules/face-api.js/build/es6/common/extractFCParamsFactory.js","webpack://ml5/./node_modules/face-api.js/build/es6/common/types.js","webpack://ml5/./node_modules/face-api.js/build/es6/common/extractSeparableConvParamsFactory.js","webpack://ml5/./node_modules/face-api.js/build/es6/common/extractWeightEntryFactory.js","webpack://ml5/./node_modules/face-api.js/build/es6/common/extractWeightsFactory.js","webpack://ml5/./node_modules/face-api.js/build/es6/common/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceFeatureExtractor/extractorsFactory.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceFeatureExtractor/extractParams.js","webpack://ml5/./node_modules/face-api.js/build/es6/common/loadConvParamsFactory.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceFeatureExtractor/loadParamsFactory.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceFeatureExtractor/extractParamsFromWeigthMap.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceFeatureExtractor/FaceFeatureExtractor.js","webpack://ml5/./node_modules/face-api.js/build/es6/common/fullyConnectedLayer.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceProcessor/extractParams.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceProcessor/extractParamsFromWeigthMap.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceProcessor/util.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceProcessor/FaceProcessor.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceExpressionNet/FaceExpressions.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceExpressionNet/FaceExpressionNet.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceExpressionNet/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/factories/WithFaceExpressions.js","webpack://ml5/./node_modules/face-api.js/build/es6/draw/drawFaceExpressions.js","webpack://ml5/./node_modules/face-api.js/build/es6/factories/WithFaceLandmarks.js","webpack://ml5/./node_modules/face-api.js/build/es6/draw/DrawFaceLandmarks.js","webpack://ml5/./node_modules/face-api.js/build/es6/draw/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/xception/extractParams.js","webpack://ml5/./node_modules/face-api.js/build/es6/xception/extractParamsFromWeigthMap.js","webpack://ml5/./node_modules/face-api.js/build/es6/xception/TinyXception.js","webpack://ml5/./node_modules/face-api.js/build/es6/ageGenderNet/extractParams.js","webpack://ml5/./node_modules/face-api.js/build/es6/ageGenderNet/extractParamsFromWeigthMap.js","webpack://ml5/./node_modules/face-api.js/build/es6/ageGenderNet/types.js","webpack://ml5/./node_modules/face-api.js/build/es6/ageGenderNet/AgeGenderNet.js","webpack://ml5/./node_modules/face-api.js/build/es6/ageGenderNet/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceLandmarkNet/FaceLandmark68NetBase.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceLandmarkNet/FaceLandmark68Net.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceFeatureExtractor/extractParamsFromWeigthMapTiny.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceFeatureExtractor/extractParamsTiny.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceFeatureExtractor/TinyFaceFeatureExtractor.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceLandmarkNet/FaceLandmark68TinyNet.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceLandmarkNet/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceRecognitionNet/scaleLayer.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceRecognitionNet/convLayer.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceRecognitionNet/extractParams.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceRecognitionNet/extractParamsFromWeigthMap.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceRecognitionNet/residualLayer.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceRecognitionNet/FaceRecognitionNet.js","webpack://ml5/./node_modules/face-api.js/build/es6/faceRecognitionNet/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/factories/WithFaceDescriptor.js","webpack://ml5/./node_modules/face-api.js/build/es6/factories/WithAge.js","webpack://ml5/./node_modules/face-api.js/build/es6/factories/WithGender.js","webpack://ml5/./node_modules/face-api.js/build/es6/factories/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/MtcnnOptions.js","webpack://ml5/./node_modules/face-api.js/build/es6/ssdMobilenetv1/extractParams.js","webpack://ml5/./node_modules/face-api.js/build/es6/ssdMobilenetv1/extractParamsFromWeigthMap.js","webpack://ml5/./node_modules/face-api.js/build/es6/ssdMobilenetv1/pointwiseConvLayer.js","webpack://ml5/./node_modules/face-api.js/build/es6/ssdMobilenetv1/mobileNetV1.js","webpack://ml5/./node_modules/face-api.js/build/es6/ssdMobilenetv1/nonMaxSuppression.js","webpack://ml5/./node_modules/face-api.js/build/es6/ssdMobilenetv1/outputLayer.js","webpack://ml5/./node_modules/face-api.js/build/es6/ssdMobilenetv1/boxPredictionLayer.js","webpack://ml5/./node_modules/face-api.js/build/es6/ssdMobilenetv1/predictionLayer.js","webpack://ml5/./node_modules/face-api.js/build/es6/ssdMobilenetv1/SsdMobilenetv1Options.js","webpack://ml5/./node_modules/face-api.js/build/es6/ssdMobilenetv1/SsdMobilenetv1.js","webpack://ml5/./node_modules/face-api.js/build/es6/ssdMobilenetv1/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyYolov2/const.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyYolov2/config.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyYolov2/leaky.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyYolov2/convWithBatchNorm.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyYolov2/depthwiseSeparableConv.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyYolov2/extractParams.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyYolov2/extractParamsFromWeigthMap.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyYolov2/TinyYolov2Options.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyYolov2/TinyYolov2Base.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyYolov2/TinyYolov2.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyYolov2/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyFaceDetector/TinyFaceDetectorOptions.js","webpack://ml5/./node_modules/face-api.js/build/es6/globalApi/ComposableTask.js","webpack://ml5/./node_modules/face-api.js/build/es6/globalApi/extractFacesAndComputeResults.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/bgrToRgbTensor.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/config.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/extractParams.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/extractParamsFromWeigthMap.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/getSizesForScale.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/pyramidDown.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/MtcnnBox.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/normalize.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/prelu.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/sharedLayers.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/PNet.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/stage1.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/extractImagePatches.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/RNet.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/stage2.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/ONet.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/stage3.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/Mtcnn.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyFaceDetector/const.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyFaceDetector/TinyFaceDetector.js","webpack://ml5/./node_modules/face-api.js/build/es6/globalApi/nets.js","webpack://ml5/./node_modules/face-api.js/build/es6/globalApi/PredictFaceExpressionsTask.js","webpack://ml5/./node_modules/face-api.js/build/es6/globalApi/PredictAgeAndGenderTask.js","webpack://ml5/./node_modules/face-api.js/build/es6/globalApi/ComputeFaceDescriptorsTasks.js","webpack://ml5/./node_modules/face-api.js/build/es6/globalApi/DetectFaceLandmarksTasks.js","webpack://ml5/./node_modules/face-api.js/build/es6/globalApi/DetectFacesTasks.js","webpack://ml5/./node_modules/face-api.js/build/es6/globalApi/detectFaces.js","webpack://ml5/./node_modules/face-api.js/build/es6/globalApi/allFaces.js","webpack://ml5/./node_modules/face-api.js/build/es6/euclideanDistance.js","webpack://ml5/./node_modules/face-api.js/build/es6/globalApi/FaceMatcher.js","webpack://ml5/./node_modules/face-api.js/build/es6/globalApi/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/mtcnn/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/tinyFaceDetector/index.js","webpack://ml5/./node_modules/face-api.js/build/es6/resizeResults.js","webpack://ml5/./node_modules/face-api.js/build/es6/index.js","webpack://ml5/./src/FaceApi/index.js","webpack://ml5/./src/KMeans/index.js","webpack://ml5/./src/DBSCAN/index.js","webpack://ml5/./src/CartoonGAN/index.js","webpack://ml5/./node_modules/@tensorflow-models/universal-sentence-encoder/dist/universal-sentence-encoder.esm.js","webpack://ml5/./src/UniversalSentenceEncoder/index.js","webpack://ml5/./node_modules/@tensorflow-models/facemesh/dist/facemesh.esm.js","webpack://ml5/./src/Facemesh/index.js","webpack://ml5/./node_modules/@tensorflow-models/handpose/dist/handpose.esm.js","webpack://ml5/./src/Handpose/index.js","webpack://ml5/./src/utils/community.js","webpack://ml5/./src/utils/testingUtils/index.js","webpack://ml5/./src/index.js","webpack://ml5/util (ignored)?fa66","webpack://ml5/node-fetch (ignored)?41ff","webpack://ml5/crypto (ignored)?f228","webpack://ml5/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://ml5/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://ml5/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://ml5/./node_modules/@magenta/sketch/es5/core/sketch_support.js","webpack://ml5/./node_modules/@magenta/sketch/es5/sketch_rnn/model.js","webpack://ml5/./node_modules/@magenta/sketch/es5/sketch_rnn/index.js","webpack://ml5/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://ml5/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://ml5/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://ml5/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://ml5/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://ml5/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://ml5/./node_modules/axios/lib/helpers/spread.js","webpack://ml5/./node_modules/axios/lib/cancel/CancelToken.js","webpack://ml5/./node_modules/axios/lib/helpers/validator.js","webpack://ml5/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://ml5/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://ml5/./node_modules/axios/lib/helpers/combineURLs.js","webpack://ml5/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://ml5/./node_modules/axios/lib/core/buildFullPath.js","webpack://ml5/./node_modules/axios/lib/helpers/cookies.js","webpack://ml5/./node_modules/axios/lib/core/settle.js","webpack://ml5/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://ml5/./node_modules/axios/lib/core/transformData.js","webpack://ml5/./node_modules/axios/lib/core/dispatchRequest.js","webpack://ml5/./node_modules/axios/lib/core/InterceptorManager.js","webpack://ml5/./node_modules/axios/lib/core/Axios.js","webpack://ml5/./node_modules/axios/lib/axios.js","webpack://ml5/./node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/version.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/show/tensor.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/show/quality.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/show/model.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/show/history.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/render/scatterplot.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/render/heatmap.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/render/confusion_matrix.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/components/tabs.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/components/surface.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/components/visor.js","webpack://ml5/./node_modules/glamor/lib/hash.js","webpack://ml5/./node_modules/hyphenate-style-name/index.js","webpack://ml5/./node_modules/css-in-js-utils/lib/hyphenateProperty.js","webpack://ml5/./node_modules/inline-style-prefixer/static/plugins/transition.js","webpack://ml5/./node_modules/inline-style-prefixer/static/plugins/sizing.js","webpack://ml5/./node_modules/inline-style-prefixer/static/plugins/position.js","webpack://ml5/./node_modules/inline-style-prefixer/static/plugins/imageSet.js","webpack://ml5/./node_modules/inline-style-prefixer/static/plugins/gradient.js","webpack://ml5/./node_modules/inline-style-prefixer/static/plugins/flexboxOld.js","webpack://ml5/./node_modules/inline-style-prefixer/static/plugins/flex.js","webpack://ml5/./node_modules/inline-style-prefixer/static/plugins/filter.js","webpack://ml5/./node_modules/inline-style-prefixer/static/plugins/crossFade.js","webpack://ml5/./node_modules/inline-style-prefixer/static/plugins/cursor.js","webpack://ml5/./node_modules/inline-style-prefixer/utils/prefixValue.js","webpack://ml5/./node_modules/inline-style-prefixer/utils/prefixProperty.js","webpack://ml5/./node_modules/inline-style-prefixer/static/staticData.js","webpack://ml5/./node_modules/glamor/lib/prefixer.js","webpack://ml5/./node_modules/glamor/lib/plugins.js","webpack://ml5/./node_modules/glamor/lib/clean.js","webpack://ml5/./node_modules/fbjs/lib/memoizeStringOnly.js","webpack://ml5/./node_modules/fbjs/lib/hyphenate.js","webpack://ml5/./node_modules/fbjs/lib/hyphenateStyleName.js","webpack://ml5/./node_modules/fbjs/lib/emptyFunction.js","webpack://ml5/./node_modules/glamor/lib/CSSPropertyOperations/CSSProperty.js","webpack://ml5/./node_modules/glamor/lib/CSSPropertyOperations/dangerousStyleValue.js","webpack://ml5/./node_modules/fbjs/lib/camelize.js","webpack://ml5/./node_modules/fbjs/lib/camelizeStyleName.js","webpack://ml5/./node_modules/glamor/lib/sheet.js","webpack://ml5/./node_modules/d3-scale/src/sequentialQuantile.js","webpack://ml5/./node_modules/d3-scale/src/radial.js","webpack://ml5/./node_modules/semver/ranges/subset.js","webpack://ml5/./node_modules/semver/ranges/simplify.js","webpack://ml5/./node_modules/semver/ranges/intersects.js","webpack://ml5/./node_modules/semver/ranges/ltr.js","webpack://ml5/./node_modules/semver/ranges/gtr.js","webpack://ml5/./node_modules/semver/ranges/valid.js","webpack://ml5/./node_modules/semver/ranges/min-version.js","webpack://ml5/./node_modules/semver/ranges/min-satisfying.js","webpack://ml5/./node_modules/semver/ranges/max-satisfying.js","webpack://ml5/./node_modules/semver/ranges/to-comparators.js","webpack://ml5/./node_modules/yallist/iterator.js","webpack://ml5/./node_modules/yallist/yallist.js","webpack://ml5/./node_modules/lru-cache/index.js","webpack://ml5/./node_modules/semver/functions/coerce.js","webpack://ml5/./node_modules/semver/functions/rsort.js","webpack://ml5/./node_modules/semver/functions/sort.js","webpack://ml5/./node_modules/semver/functions/compare-loose.js","webpack://ml5/./node_modules/semver/functions/rcompare.js","webpack://ml5/./node_modules/semver/functions/prerelease.js","webpack://ml5/./node_modules/semver/functions/patch.js","webpack://ml5/./node_modules/semver/functions/minor.js","webpack://ml5/./node_modules/semver/functions/major.js","webpack://ml5/./node_modules/semver/functions/diff.js","webpack://ml5/./node_modules/semver/functions/inc.js","webpack://ml5/./node_modules/semver/functions/clean.js","webpack://ml5/./node_modules/semver/functions/valid.js","webpack://ml5/./node_modules/@tensorflow/tfjs-vis/dist/render/barchart.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/globals.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm_util.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batchnorm.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/pad.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pad.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/transpose.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/transpose.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/one_hot.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/one_hot.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/tile.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tile.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/squared_difference.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squared_difference.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/concat_util.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/concat_split.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/axis_util.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/array_ops.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/backends/where_impl.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/logical_ops.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/div_no_nan.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div_no_nan.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/unary_ops.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/complex_ops.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/binary_ops.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_to.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/broadcast_to.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/types.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/tensor_format.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/tape.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/profiler.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/kernel_registry.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/add.js","webpack://ml5/./node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops.js","webpack://ml5/fs (ignored)","webpack://ml5/string_decoder (ignored)","webpack://ml5/crypto (ignored)","webpack://ml5/util (ignored)","webpack://ml5/node-fetch (ignored)","webpack://ml5/crypto (ignored)?1bf0","webpack://ml5/./node_modules/setimmediate/setImmediate.js","webpack://ml5/./node_modules/isarray/index.js","webpack://ml5/./node_modules/ieee754/index.js","webpack://ml5/./node_modules/base64-js/index.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_has.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_property-desc.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_to-primitive.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_dom-create.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_an-object.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_object-dp.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_hide.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_a-function.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_ctx.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_export.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/es7.global.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/library/fn/global.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/regenerator-runtime/runtime.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/web.dom.iterable.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/web.immediate.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/web.timers.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/web/index.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.promise.finally.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/fn/promise/finally.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.object.entries.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/fn/object/entries.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.object.values.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/fn/object/values.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/fn/object/get-own-property-descriptors.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/fn/symbol/async-iterator.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.string.trim-right.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/fn/string/trim-end.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.string.trim-left.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/fn/string/trim-start.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.string.pad-end.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/fn/string/pad-end.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.string.pad-start.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/fn/string/pad-start.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_flatten-into-array.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.array.flat-map.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/fn/array/flat-map.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.array.includes.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/fn/array/includes.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.set.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.own-keys.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.has.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.get.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.enumerate.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.delete-property.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.define-property.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.construct.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.apply.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.float64-array.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.float32-array.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.uint32-array.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.int32-array.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.uint16-array.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.int16-array.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.uint8-array.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.int8-array.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.data-view.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.array-buffer.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.weak-set.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.weak-map.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.set.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.map.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_perform.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_microtask.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.split.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.search.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.replace.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.match.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.to-string.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.constructor.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.species.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.find-index.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.find.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.fill.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.copy-within.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.last-index-of.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.index-of.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.reduce-right.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.reduce.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.every.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.some.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.filter.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.map.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_array-species-constructor.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.for-each.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.sort.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.slice.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.join.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.of.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.from.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.is-array.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_date-to-primitive.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.date.to-primitive.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.date.to-string.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_date-to-iso-string.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.date.to-iso-string.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.date.to-json.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.date.now.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.sup.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.sub.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.strike.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.small.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.link.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.italics.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.fontsize.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.fontcolor.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.fixed.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.bold.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.blink.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.big.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.anchor.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.starts-with.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.repeat.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.includes.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.ends-with.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.code-point-at.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.iterator.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.trim.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.raw.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.from-code-point.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.trunc.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.tanh.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.sinh.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.sign.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.log2.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.log1p.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.log10.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.imul.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.hypot.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_math-fround.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.fround.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.expm1.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.cosh.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.clz32.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.cbrt.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.atanh.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.asinh.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.acosh.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.parse-int.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.parse-float.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.is-nan.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.is-integer.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.is-finite.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.epsilon.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.to-precision.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.to-fixed.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.constructor.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.parse-float.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.parse-int.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.function.has-instance.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.function.name.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.function.bind.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.to-string.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.is.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.assign.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.is-extensible.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.is-sealed.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.is-frozen.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.seal.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.freeze.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.keys.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.define-properties.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.define-property.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.create.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_enum-keys.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/_function-to-string.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.symbol.js","webpack://ml5/./node_modules/@babel/polyfill/node_modules/core-js/es6/index.js","webpack://ml5/./node_modules/@babel/polyfill/lib/noConflict.js","webpack://ml5/./node_modules/@babel/polyfill/lib/index.js","webpack://ml5/./node_modules/d3-dsv/src/dsv.js"],"names":["callCallback","promise","callback","Promise","resolve","reject","then","result","undefined","error","PitchDetection","model","audioContext","stream","frequency","ready","loadModel","tf","processStream","Error","mic","createMediaStreamSource","minBufferSize","sampleRate","bufferSize","scriptNode","createScriptProcessor","onaudioprocess","processMicrophoneBuffer","bind","gain","createGain","setValueAtTime","currentTime","connect","destination","state","console","warn","event","results","resample","inputBuffer","resampled","centMapping","running","frame","slice","zeromean","framestd","dataSync","Math","sqrt","normalized","input","reshape","activation","predict","confidence","max","center","argMax","toFixed","start","end","min","weights","cents","products","productSum","reduce","a","b","weightSum","predictedCent","predictedHz","audioBuffer","onComplete","interpolate","multiplier","original","getChannelData","subsamples","Float32Array","i","left","floor","right","p","pitchDetection","modelPath","context","getTopKClassesFromArray","values","topK","CLASSES","valuesAndIndices","length","push","value","index","sort","topkValues","topkIndices","Int32Array","topClassesAndProbs","className","probability","getTopKClassesFromTensor","logits","data","DEFAULTS","DARKNET_URL","DARKNET_TINY_URL","IMAGE_SIZE_DARKNET","IMAGE_SIZE_DARKNET_TINY","preProcess","img","size","image","HTMLImageElement","HTMLVideoElement","HTMLCanvasElement","ImageData","fromPixels","elt","toFloat","div","resized","shape","alignCorners","resizeBilinear","batched","Darknet","version","imgSize","dispose","topk","imgData","predictions","IMAGENET_CLASSES_DARKNET","classes","load","modelConfig","darknet","DOODLENET_URL","IMAGE_SIZE_DOODLENET","sub","r","g","gray","add","Doodlenet","DOODLENET_CLASSES","doodlenet","P5Util","window","m_p5Instance","p5Instance","loadImage","p5","Image","inputCanvas","toBlob","blob","url","raws","width","height","arr","Array","from","canvas","document","createElement","ctx","getContext","createImageData","putImageData","getBlob","checkP5","URL","loadAsync","createObjectURL","p5Utils","processVideo","videoInput","element","onplay","captureStream","srcObject","autoplay","playsinline","muted","array3DToImage","tensor","imgHeight","imgWidth","imageData","getImageData","j","k","dataUrl","toDataURL","outputImg","src","style","cropImage","centerHeight","beginHeight","centerWidth","beginWidth","flipImage","inputImg","p5Canvas","createGraphics","translate","scale","pop","drawImage","imgToTensor","croppedImage","batchedImage","expandDims","isInstanceOfSupportedElement","subject","imgToPixelArray","mobilenet","alpha","IMAGE_SIZE","MODEL_OPTIONS","ImageClassifier","modelNameOrUrl","video","options","mapStringToIndex","includes","modelName","modelUrl","modelToUse","endsWith","loadModelFrom","path","axios","get","ml5Specs","split","prefix","join","metadataUrl","metadataError","log","metadataResponse","metadata","labels","imgToPredict","numberOfClasses","readyState","onloadeddata","imageResize","predictedClasses","processedImg","as1D","map","label","classify","c","inputNumOrCallback","numOrCallback","cb","classifyInternal","imageClassifier","videoOrOptionsOrCallback","optionsOrCallback","indexOf","toLowerCase","instance","SpeechCommands","metadataJson","tfjsSpeechCommands","ensureModelLoaded","allLabels","wordLabels","listen","scores","err","message","speechCommandsModel","SoundClassifier","speechCommands","soundClassifier","saveBlob","name","type","link","display","body","appendChild","Blob","href","download","click","loadFile","response","json","KNN","knnClassifier","classIndexOrLabel","classIndex","example","isArray","addExample","kOrCallback","numClass","getNumClasses","predictClass","res","confidences","confidencesByLabel","indexes","Object","keys","forEach","labelIndex","clearClass","clearAllClasses","countByIndex","getClassExampleCount","countByLabel","key","getClassifierDataset","dataset","setClassifierDataset","tensors","t","fileName","io","JSON","stringify","pathOrData","tensorsData","v","dtype","acc","cur","KNNClassifier","Video","videoElt","videoReady","sUsrAg","navigator","userAgent","mozCaptureStream","playPromise","play","IMAGE_RESIZE_DIMENSIONS","BASE_URL","learningRate","hiddenUnits","epochs","numLabels","batchSize","layer","MODEL_INFO","EMBEDDING_NODES","Mobilenet","topKPredictions","hasAnyTrainedClass","customModel","jointModel","config","normalizationOffset","mobilenetURL","graphModelURL","isPredicting","usageType","fromTFHub","getLayer","inputs","outputs","output","mobilenetFeatures","objOrCallback","assign","loadVideo","inputVideo","vid","inputOrLabel","labelOrCallback","imgToAdd","addImageInternal","prediction","y","xs","ys","oldX","concat","oldY","onProgress","loss","layers","flatten","inputShape","dense","units","kernelInitializer","useBias","optimizer","adam","compile","fit","callbacks","onBatchEnd","batch","logs","onTrainEnd","inputOrCallback","predictInternal","predictedClass","filesOrPath","file","fr","FileReader","onload","d","parse","target","readAsText","browserFiles","fileResult","fileData","save","withSaveHandler","weightsManifest","modelTopology","paths","weightSpecs","weightData","embedding","embeddingName","internal","execute","squeeze","logits1001","endpoint","endpointToPredict","mobilenetInfer","featureExtractor","word2vec","isAbsoluteURL","str","pattern","RegExp","test","getModelPath","absoluteOrRelativeUrl","location","pathname","boxIntersection","w","h","boxUnion","boxIOU","filterBoxes","boxes","boxConfidence","boxClassProbs","threshold","boxScores","boxClasses","boxClassScores","predictionMask","maskArr","indicesArr","indices","boxesToCorners","boxXY","boxWH","two","boxMins","boxMaxes","dim0","dim1","dim2","nonMaxSuppression","iouThreshold","zipped","sortedBoxes","selectedBoxes","box","curIOU","e","head","feats","anchors","numClasses","numAnchors","anchorsTensor","convDims","convDims0","convDims1","convHeightIndex","convWidthIndex","convIndex","filterBoxesThreshold","IOUThreshold","classProbThreshold","imageSize","YOLOBase","modelReady","disableDeprecationNotice","modelLoader","detectInternal","ANCHORS","bConfidence","bClassProbs","aBoxes","allBoxes","imageDims","boxesModified","preKeepBoxesArr","scoresArr","keepIndx","boxesArr","keepScores","classesIndxArr","gather","classIndx","classProb","CLASS_NAMES","x","resultObj","YOLO","videoOr","optionsOr","base","CocoSsdBase","constructorCallback","cocoSsd","detect","formattedPredictions","score","bbox","CocoSsd","ObjectDetector","objectDetector","architecture","outputStride","flipHorizontal","minConfidence","maxPoseDetections","scoreThreshold","nmsRadius","detectionType","inputResolution","quantBytes","PoseNet","modelJson","posenet","net","singlePose","multiPose","keypoints","pose","newPose","keypoint","part","position","inputOr","getInput","estimateSinglePose","poseWithParts","mapParts","skeleton","emit","estimateMultiplePoses","maxDetections","poses","posesWithParts","EventEmitter","poseNet","MANIFEST_FILE","CheckpointLoader","urlPath","variables","varName","getCheckpointManifest","manifest","filename","responseType","checkpointManifest","loadManifest","getKeys","variableNames","variablePromises","getVariable","all","loadVariable","convertCanvasToImage","StyleTransfer","variableDictionary","timesScalar","plusScalar","epsilonScalar","loadCheckpoints","checkpointLoader","getAllVariables","id","inDepth","moments","mu","mean","sigmaSq","variance","shift","getVariableName","epsilon","asType","shifted","as3D","strides","relu","y2","instanceNorm","conv1","convLayer","conv2","numFilters","newRows","newCols","newShape","y3","transferInternal","conv3","res1","residualBlock","res2","res3","res4","res5","convT1","convTransposeLayer","convT2","convT3","outTanh","scaled","clamped","styleTransfer","videoOrCallback","sampleFromDistribution","randomValue","random","sum","regexCell","regexWeights","regexFullyConnected","CharRNN","cellsAmount","cells","zeroState","vocab","vocabSize","probabilities","defaults","seed","temperature","stateful","reader","vars","match","fullyConnectedWeights","fullyConnectedBiases","loadVocab","initCells","forgetBias","lstm","cell","DATA","C","H","userInput","encodedInput","char","probabilitiesNormalized","onehotBuffer","set","onehot","toTensor","embedded","outputH","weightedResult","divided","generated","mapped","find","sample","reset","generateInternal","temp","pm","inputSeed","charRNN","CheckpointLoaderPix2pix","buf","parts","offset","byteLength","Uint8Array","len","shapes","TextDecoder","decode","encoded","total","num","raw","Pix2pix","inputElement","inputData","floatInput","normalizedInput","preprocessedInput","preprocess","filter","bias","convolved","conv2d","scope","toString","bias2","layerInput","rectified","batchnorm","skipLayer","deconv2d","rectified2","bias3","deprocessedOutput","deprocess","inputPreproc","inputDeproc","inputBat","varianceEpsilon","inputCon","filterCon","tempFilter","clone","inputDeconv","filterDeconv","biasDecon","biased","pix2pix","models","modelPaths","Set","modelPath_large","modelPath_small","PATH_END","pixelFactor","SketchRNN","large","checkpointUrl","has","ms","penState","zeroInput","initialize","strokes","rnnState","setPixelFactor","updateStrokes","update","pdf","getPDF","dx","dy","pen","optionsOrSeedOrCallback","seedOrCallback","seedStrokes","s","up","down","sketchRNN","returnTensors","UNET","segmentInternal","tfBrowserPixelImage","rawToBlob","blob1","blobToP5Image","p5Image1","tfImage","resizedImg","normTensor","pred","tile","maskBackgroundInternal","sign","neg","featureMaskInternal","mul","maskFeature","backgroundMaskInternal","alpha255","newpred","featureMask","backgroundMask","segmentation","toPixels","maskFeat","maskBg","mask","maskFeatDom","maskBgDom","maskFeatBlob","dataURLtoBlob","maskBgBlob","convertToP5Image","pFeatureMask","pBgMask","pMask","dataurl","mime","bstr","atob","n","u8arr","charCodeAt","uNet","Cvae","latentDim","modelPathPrefix","loadCVAEModel","labelVector","fill","cursor","CVAE","DCGANBase","modelInfo","modelInfoJson","modelJsonPath","latentVector","z","buffer","count","yDim","transpose","modelLatentDim","compute","imageTensor","p5Image","DCGAN","optionsOrCb","registerPreload","obj","prototype","registerPreloadMethod","preloadFn","fn","preloads","originCallback","args","argLen","apply","doingPreloads","targetPreloadFn","OOV_CHAR","PAD_CHAR","padSequences","sequences","maxLen","padding","truncating","seq","splice","pad","Sentiment","movieReviews","sentimentMetadata","indexFrom","index_from","max_len","wordIndex","word_index","vocabularySize","vocabulary_size","text","inputText","trim","replace","sequence","word","paddedSequence","predictOut","sentiment","BODYPIX_PALETTE","BodyPix","segmentationThreshold","palette","bp","p5ColorObj","regExp","exec","segmentationWidth","segmentationHeight","colorOptions","color","Color","p5Color2RGB","imgToSegment","segmentationOptions","estimatePartSegmentation","bodyPartsMeta","bodyPartsSpec","colorsArray","personMask","partMask","bodyParts","maskPersonTensor","maskBackgroundTensor","partTensor","personMaskPixels","bgMaskPixels","partMaskPixels","configOrCallback","segmentWithPartsInternal","estimatePersonSegmentation","bodyPix","randomFloat","randomInt","randomGaussian","sd","y1","x1","x2","previous","randomSample","withReplacement","RangeError","NeuralNetwork","isTrained","isCompiled","isLayered","init","createModel","addLayer","setOptimizerFunction","train","trainInternal","_type","_layerOptions","LAYER_OPTIONS","_modelOptions","call","_options","_cb","TRAINING_OPTIONS","shuffle","validationSplit","whileTraining","_inputs","arraySync","array","predictSync","nameOrCb","FileList","modelMetadata","files","item","modelJsonResult","modelJsonFile","File","weightsBlobResult","weightsBlob","weightsBlobFile","rate","mutateFunction","getWeights","mutatedWeights","newTensor","setWeights","other","weightsA","weightsB","childWeights","tensorA","tensorB","valuesA","valuesB","NeuralNetworkUtils","_array","arr1","arr2","idx","incoming","val","neuralNetworkUtils","NeuralNetworkData","meta","inputUnits","outputUnits","isNormalized","isMetadataReady","isWarmedUp","createMetadata","getDataStats","getInputMetaStats","getDataUnits","getInputMetaUnits","getDTypesFromData","addData","convertRawToTensors","normalizeDataRaw","normalizeInputData","normalizeArray","unnormalizeArray","applyOneHotEncodingsToDataRaw","getDataOneHot","getInputMetaOneHot","createOneHotEncodings","loadDataFromUrl","loadJSON","loadCSV","loadBlob","loadData","saveData","saveMeta","loadMeta","findEntries","formatRawData","csvToJSON","dataRaw","inputMeta","outputMeta","inputOrOutputMeta","xsOrYs","dataAsArray","nnUtils","getMin","getMax","flat","_arrayShape","arrayShape","outputShape","_dataRaw","_inputsMeta","inputsMeta","entries","uniqueValues","uniqueCount","prop","getDataType","xInputObj","yInputObj","dataLength","inputArr","outputArr","row","normXs","normYs","normalizedData","zipArrays","legend","inputArray","every","normalizeValue","unnormalized","matches","truthy","unnormalizeValue","uniqueVals","oneHotMeta","_uniqueValuesArray","onehotValues","oneHotEncodedValues","oneHotEncodedValuesArray","uVal","uIdx","dataUrlOrJson","inputLabels","outputLabels","myCsv","csv","toArray","loadedData","isJsonOrString","today","Date","date","String","getFullYear","getMonth","getDate","time","getHours","getMinutes","getSeconds","datetime","dataName","metaPath","substring","lastIndexOf","dataArray","lines","headers","currentline","_data","parentCopy","rawArray","NeuralNetworkVis","_model","tfvis","modelSummary","inputLabel","outputLabel","visOptions","chartOptions","xLabel","yLabel","scatterplot","surface","barchart","fitCallbacks","task","debug","noTraining","DiyNeuralNetwork","neuralNetwork","neuralNetworkData","neuralNetworkVis","training","loadDataInternal","createMetaData","prepareForTraining","normalizeData","normalizeInput","searchAndFormat","formatInputItem","convertTrainingDataToTensors","formatInputsForPrediction","formatInputsForPredictionAll","isOneHotEncodedOrNormalized","createNetworkLayers","addDefaultLayers","predictMultiple","classifyMultiple","mutate","crossover","createLayersNoTraining","inputSample","outputSample","nnCopy","weightCopies","xInputs","yInputs","createLabelsFromArrayValues","formattedInputs","formatDataAsObject","unnormalizedTrainingData","trainingData","_key","_meta","newXInputs","_trainingData","_input","inputHeaders","optionsOrWhileTraining","whileTrainingCb","finishedTrainingCb","trainingVis","onEpochEnd","layerJsonArray","layersLength","lastIndex","lastLayer","filters","kernelSize","poolSize","_learningRate","LEARNING_RATE","sgd","metrics","predictSyncInternal","classifySyncInternal","unformattedResults","formattedResults","unformattedResult","unNormalized","unNormalizedValue","classifySync","vals","copy","inputsOrOptions","outputsOrCallback","withLandmarks","withDescriptors","withTinyNet","MODEL_URLS","Mobilenetv1Model","TinyFaceDetectorModel","FaceLandmarkModel","FaceLandmark68TinyNet","FaceRecognitionModel","FaceApiBase","detectorOptions","checkUndefined","modelOptions","faceapi","inputSize","loadFaceLandmarkTinyModel","loadTinyFaceDetectorModel","loadFaceLandmarkModel","loadSsdMobilenetv1Model","loadFaceRecognitionModel","imgToClassify","faceApiOptions","setReturnOptions","detectAllFaces","withFaceLandmarks","withFaceDescriptors","resizeResults","landmarkParts","detectSingleInternal","detectSingleFace","withFaceDescriptor","_param","_default","detections","newItem","landmarks","mouth","getMouth","nose","getNose","leftEye","getLeftEye","leftEyeBrow","getLeftEyeBrow","rightEye","getRightEye","rightEyeBrow","getRightEyeBrow","jawOutline","getJawOutline","faceApi","readCsv","loadDataset","dataFlat","KMeans","maxIter","dataTensor","centroids","getClosestCentroids","recenterCentroids","centroidDistance","getEuclidianDistance","centroidsOld","iteration","minCentroid","closestCentroid","centroid","dist","squaredDifference","argMin","valueTensor","unstack","centroidK","centroidKTensor","newCentroids","tensor1","tensor2","distTensor","distance","kmeans","eps","minPts","DBSCAN","lastClusterId","status","neighboursIndices","getNeighboursIndices","incrementClusterId","extend","pointIndex","clusterid","getClusterId","neighbourIndex","currNeighbours","currNumNeighbours","point","neighbours","prev","dbscan","Cartoon","miyazaki","resultFinalize","cartoon","withTokenizer","UniversalSentenceEncoder","tokenizer","USE","textArray","embed","embeddings","textString","encodeInternal","encode","universalSentenceEncoder","Facemesh","facemeshCore","estimateFaces","facemesh","Handpose","handposeCore","estimateHands","handpose","getRobin","crossOrigin","Uint8ClampedArray","withPreload","communityStatement","preloadRegister","imageUtils","testingUtils"],"mappings":"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A;AACA,mBAAmB,SAAS;AAC5B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,GAAG,IAAI;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+CAA+C,SAAS;AACxD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,iCAAiC;;AAEzD,oBAAoB;;AAEpB,YAAY,OAAO;AACnB,qBAAqB,wBAAwB;;AAE7C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,2BAA2B,iCAAiC;;AAE5D,oBAAoB;;AAEpB,YAAY,OAAO;AACnB,wBAAwB,wBAAwB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA,gCAAgC;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,oBAAoB;AAC5B;AACA;;AAEA,QAAQ,SAAS;AACjB;AACA;;AAEA,QAAQ,SAAS;AACjB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AAC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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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CA;AACA;AACA;AACA,kFAAkF,uBAAuB;AACzG,iEAAiE;AACjE,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,eAAe;AACf,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB;;;;;;;AC1CA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,4G;;;;;;ACnBA;AACA;AACA;AACA;AACA;;AAEA,+G;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAyG;AAC8F;AACzJ;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA,YAAY,+DAAK;AACjB,eAAe;;AAEf,iBAAiB,+DAAK;AACtB;AACA,QAAQ,wEAAc;AACtB;AACA,KAAK;AACL,MAAM,+DAAK;AACX;AACA,GAAG;AACH;;AAEA;AACA,IAAI,+DAAK;AACT,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAM,GAAG;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,WAAW;AAC5B,wBAAwB,aAAa;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uDAAO;AAChB;AACA;AACA,SAAS,sDAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uDAAM;AACf;AACA;AACA;AACA,SAAS,yDAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY,8DAAI;AAChB;AACA;AACA;AACA;;AAEA;AACA,YAAY,gEAAK;AACjB,gCAAgC,kEAAQ;AACxC,4DAA4D,uDAAI;AAChE,4JAA4J,qDAAG;AAC/J,kCAAkC,uDAAI;AACtC,sCAAsC,uDAAI;AAC1C,sCAAsC,uDAAI;AAC1C,gDAAgD,uDAAI;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;;;AAGA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,uDAAQ;AAClB,aAAa,uDAAS;AACtB,WAAW,uDAAS;AACpB,UAAU,sDAAQ;AAClB,UAAU,uDAAO;AACjB,SAAS,uDAAO;AAChB,eAAe,uDAAO;AACtB,WAAW,uDAAQ;AACnB,aAAa,uDAAU;AACvB,aAAa,uDAAU;AACvB,kBAAkB,wDAAe;AACjC;AACA;AACA,UAAU,wDAAO;AACjB,aAAa,wDAAQ;AACrB,WAAW,wDAAQ;AACnB,UAAU,yDAAO;AACjB,UAAU,uDAAM;AAChB,SAAS,uDAAM;AACf,eAAe,uDAAM;AACrB,WAAW,wDAAO;AAClB,aAAa,wDAAS;AACtB,aAAa,uDAAS;AACtB,kBAAkB,wDAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;A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AgB,uGAAuG,+CAA+C,EAAE,EAAE,sDAAsD,2CAA2C,qBAAqB,GAAG,EAAE,gCAAgC,wBAAwB,GAAG,GAAG,6BAA6B,wBAAwB,0CAA0C,MAAM,oCAAoC,gBAAgB,4IAA4I,qBAAqB,yIAAyI,8BAA8B,EAAE,EAAE,oBAA2G;AACjn7F;;;;;;;;;ACjBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,oBAAoB,mBAAO,CAAC,GAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mCAAmC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mCAAmC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,yBAAyB;AACjE,qDAAqD,sFAAsF,EAAE;AAC7I;AACA;AACA;AACA,mCAAmC,wEAAwE,EAAE;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mCAAmC;AAC7C;AACA,4BAA4B,aAAa;AACzC,oCAAoC,wBAAwB;AAC5D;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mCAAmC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mCAAmC;AAC7C;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,+BAA+B,UAAU,GAAG;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,UAAU,EAAE;AACjE;AACA,qCAAqC,iCAAiC,EAAE;AACxE;AACA;AACA,KAAK;AACL;AACA,qCAAqC,kBAAkB,EAAE,gBAAgB;AACzE,6BAA6B,EAAE;AAC/B;AACA,kCAAkC,6BAA6B,EAAE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0BAA0B,EAAE;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB,EAAE;AACnE,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB,EAAE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mCAAmC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gBAAgB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gBAAgB;AAC1B;AACA,8BAA8B,oBAAoB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gBAAgB;AAC1B;AACA,8BAA8B,oBAAoB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gC;;;;;;ACxuBA;AACA,gBAAgB,mBAAO,CAAC,EAAe;AACvC;AACA;AACA,2DAA2D;AAC3D;;;;;;;ACLA,qBAAqB,mBAAO,CAAC,GAAqB;;AAElD,2BAA2B,mBAAO,CAAC,GAA2B;;AAE9D,iCAAiC,mBAAO,CAAC,GAAiC;;AAE1E,sBAAsB,mBAAO,CAAC,GAAsB;;AAEpD;AACA;AACA;;AAEA,8G;;;;;;ACZA,6BAA6B;AAC7B,uCAAuC;;;;;;;;ACDvC,uDAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA,8CAA8C,cAAc;AAC5D,oBAAoB,mBAAO,CAAC,GAAe;AAC3C,wBAAwB,mBAAO,CAAC,GAAmB;AACnD,iBAAiB,mBAAO,CAAC,GAAY;AACrC,aAAa,mBAAO,CAAC,GAAQ;AAC7B,eAAe,mBAAO,CAAC,EAAU;AACjC,oBAAoB,mBAAO,CAAC,EAAe;AAC3C,WAAW,mBAAO,CAAC,EAAQ;AAC3B,aAAa,mBAAO,CAAC,EAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,EAAE;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,cAAc;AAChD;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,wBAAwB;AACxB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,+BAA+B,EAAE,eAAe,+BAA+B,EAAE;AAC5H;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,kCAAkC,UAAU,iBAAiB,qBAAqB,EAAE,EAAE,EAAE;AACxF;AACA,kFAAkF;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uDAAuD;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,yBAAyB,EAAE;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,wCAAwC,EAAE;AACjG;AACA;AACA;AACA,8CAA8C,+CAA+C,EAAE;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kCAAkC,EAAE,eAAe,kCAAkC,EAAE;AAC3H;AACA;AACA;AACA;AACA,wFAAwF,qBAAqB,EAAE;AAC/G;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,0BAA0B,EAAE;AACjG,2DAA2D,mBAAmB,EAAE;AAChF,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,wCAAwC,EAAE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,iEAAiE,EAAE;AACnI,6EAA6E,oBAAoB,EAAE;AACnG;AACA;AACA,4EAA4E,0BAA0B,EAAE;AACxG;AACA,sEAAsE,2BAA2B,EAAE;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,6BAA6B,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6HAA6H,6BAA6B,EAAE;AAC5J;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,aAAa,EAAE;AACxG;AACA,uBAAuB,yCAAyC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0BAA0B;AACpE,gDAAgD,oDAAoD,EAAE;AACtG;AACA;AACA;AACA,4CAA4C,0BAA0B,EAAE,eAAe,wBAAwB,EAAE,eAAe,iCAAiC,EAAE;AACnK,+DAA+D,yDAAyD,EAAE;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sBAAsB,EAAE;AAClD,6CAA6C,qCAAqC,EAAE;AACpF;AACA;AACA;AACA;AACA,qDAAqD,gBAAgB;AACrE;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,oBAAoB;AACpB,SAAS;AACT;AACA;AACA;AACA,qDAAqD,4DAA4D,EAAE;AACnH;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA,mDAAmD,qCAAqC,EAAE,gBAAgB;AAC1G,0BAA0B,EAAE;AAC5B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,+EAA+E;AAC/E,2DAA2D,EAAE;AAC7D,wEAAwE;AACxE,iEAAiE,EAAE;AACnE;AACA,aAAa;AACb;AACA;AACA,yEAAyE;AACzE;AACA,6EAA6E,EAAE;AAC/E,sDAAsD,qCAAqC,EAAE,gBAAgB;AAC7G;AACA,8CAA8C,EAAE;AAChD;AACA;AACA,8CAA8C,aAAa;AAC3D,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB,EAAE;AAClE;AACA;AACA;AACA,kC;;;;;;;AC1hCA,eAAe,mBAAO,CAAC,EAAc;AACrC,qBAAqB,mBAAO,CAAC,GAAmB;AAChD,kBAAkB,mBAAO,CAAC,EAAiB;AAC3C;;AAEA,YAAY,mBAAO,CAAC,EAAgB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;AACA;AACA;;;;;;;ACfA;AACA,kBAAkB,mBAAO,CAAC,EAAU;AACpC,iCAAiC,QAAQ,mBAAmB,UAAU,EAAE,EAAE;AAC1E,CAAC;;;;;;;;ACHY;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAO,CAAC,EAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,oCAAoC;AAC3E;AACA;AACA;AACA;AACA,qC;;;;;;;AC9Da;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAU;AACjC,oBAAoB,mBAAO,CAAC,GAAe;AAC3C,eAAe,mBAAO,CAAC,EAAU;AACjC,aAAa,mBAAO,CAAC,EAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD,+EAA+E,EAAE;AACjF;AACA;AACA,iDAAiD;AACjD,2DAA2D,EAAE;AAC7D,wDAAwD;AACxD,0DAA0D,EAAE;AAC5D;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA,wCAAwC,kEAAkE,EAAE;AAC5G;AACA;AACA,2C;;;;;;AC/GA,wBAAwB,mBAAO,CAAC,GAAwB;;AAExD,sBAAsB,mBAAO,CAAC,GAAsB;;AAEpD,iCAAiC,mBAAO,CAAC,GAAiC;;AAE1E,wBAAwB,mBAAO,CAAC,GAAwB;;AAExD;AACA;AACA;;AAEA,kH;;;;;;;ACZA;AAAA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mDAAmD;AACnD,SAAS;AACT,mDAAmD;AACnD;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8BAA8B;AAC3D,6BAA6B,0CAA0C,EAAE;AACzE;AACA;;AAEA;AACA;;;;;;;ACrEA,cAAc,mBAAO,CAAC,GAAmB;AACzC,OAAO,+BAA+B,GAAG,mBAAO,CAAC,GAAuB;AACxE,OAAO,QAAQ,GAAG,mBAAO,CAAC,EAAgB;;AAE1C,qBAAqB,mBAAO,CAAC,GAA2B;AACxD,OAAO,qBAAqB,GAAG,mBAAO,CAAC,GAAyB;AAChE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,8CAA8C,QAAQ;AACtD;;AAEA;AACA;AACA,kCAAkC,WAAW;AAC7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,8CAA8C,QAAQ;AACtD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,WAAW,GAAG,WAAW,GAAG,WAAW;AAC7D;AACA,0BAA0B,0BAA0B;AACpD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,uDAAuD,QAAQ;AAC/D;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC9Ra;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA,8CAA8C,cAAc;AAC5D,sBAAsB,mBAAO,CAAC,GAAiB;AAC/C,WAAW,mBAAO,CAAC,EAAQ;AAC3B,aAAa,mBAAO,CAAC,EAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,0CAA0C;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,gEAAgE,EAAE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2CAA2C;AACzD;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D,oDAAoD,EAAE;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2CAA2C;AACzD;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,oBAAoB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,cAAc,2CAA2C;AACzD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,0CAA0C;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA,kDAAkD,8CAA8C,EAAE;AAClG;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,6BAA6B,EAAE;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA,8CAA8C,6BAA6B,EAAE;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA,8BAA8B,UAAU;AACxC,mCAAmC,mBAAmB;AACtD,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD,oCAAoC,oBAAoB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB;AAChD,8BAA8B,aAAa;AAC3C,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C;AACA;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAa;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAa;AAC5C;AACA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;AACA;AACA;AACA;AACA,8BAA8B,WAAW;AACzC;AACA;AACA;AACA;AACA;AACA,sCAAsC,sBAAsB;AAC5D;AACA;AACA;AACA;AACA,sCAAsC,sBAAsB;AAC5D;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD,kCAAkC,cAAc;AAChD;AACA;AACA;AACA;AACA,oCAAoC,qBAAqB;AACzD,mCAAmC,oBAAoB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qBAAqB;AACzD,mCAAmC,oBAAoB;AACvD;AACA;AACA;AACA;AACA,kCAAkC,mBAAmB;AACrD,oCAAoC,qBAAqB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;AAC5C,8BAA8B,UAAU;AACxC,+BAA+B,WAAW;AAC1C,8BAA8B,YAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC,gCAAgC,eAAe;AAC/C;AACA;AACA;AACA;AACA,mCAAmC,eAAe;AAClD,iCAAiC,aAAa;AAC9C,sCAAsC,kBAAkB;AACxD,qCAAqC,iBAAiB;AACtD,wCAAwC,oBAAoB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,UAAU,0CAA0C;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kC;;;;;;AC9qCA;AACA,cAAc,mBAAO,CAAC,EAAY;AAClC;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,+G;;;;;;;ACPa;;AAEb,WAAW,mBAAO,CAAC,GAAgB;;AAEnC;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS,GAAG,SAAS;AAC5C,2BAA2B;AAC3B;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,4BAA4B;AAC5B,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5VA,cAAc,mBAAO,CAAC,CAAW;AACjC,YAAY,mBAAO,CAAC,EAAU;AAC9B,cAAc,mBAAO,CAAC,EAAY;AAClC;AACA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;AClBA,aAAa,mBAAO,CAAC,EAAW;AAChC,WAAW,mBAAO,CAAC,EAAS;AAC5B,UAAU,mBAAO,CAAC,EAAQ;AAC1B,UAAU,mBAAO,CAAC,EAAQ;AAC1B,gBAAgB,mBAAO,CAAC,GAAuB;AAC/C;AACA;;AAEA,mBAAO,CAAC,EAAS;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;;;;;;;AC9BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqC;AACM;;AAE3C;AACA,SAAS,oEAAQ;AACjB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,2BAA2B,iEAAY;AACvC,GAAG;AACH;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqC;AACsB;;AAE3D;AACA,SAAS,oEAAQ;AACjB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,kFAAkF,mEAAc,IAAI,iEAAY;AAChH,GAAG;AACH;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BP;AACA,cAAc,mBAAO,CAAC,GAAY;AAClC,cAAc,mBAAO,CAAC,EAAY;AAClC;AACA;AACA;;;;;;;ACLA,SAAS,mBAAO,CAAC,EAAc;AAC/B,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,iBAAiB,mBAAO,CAAC,EAAgB;AACzC;AACA,CAAC;AACD;AACA;AACA;;;;;;;ACPA,uBAAuB;AACvB;AACA;AACA;;;;;;;;;;;;;ACHA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,sDAAsD;;AAE/C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9Ce;AACf;AACA;AACA;AACA,CAAC;;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AgB,mBAAO,CAAC,GAAU;AAClC,gBAAgB,mBAAO,CAAC,GAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,kEAAkE;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,wC;;;;;;ACnEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,MAAM;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,SAAS,GAAG,MAAM;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;A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E,EAAE;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gCAAgC;AACzF;AACA,OAAO;AACP;AACA;AACA,6EAA6E,YAAY;AACzF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yDAAyD,6CAA6C,EAAE;;AAExG;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,mDAAmD;AACnD;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,oCAAoC;AACpC;AACA,KAAK;AACL,wEAAwE;AACxE;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,8DAA8D;AAC9D;AACA,KAAK;AACL,wEAAwE;AACxE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,yBAAyB,sBAAsB,EAAE,EAAE;AACnD;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,sBAAsB,0BAA0B;AAChD,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,yBAAyB;AACzB,KAAK;AACL,uBAAuB;AACvB,2BAA2B;AAC3B,0BAA0B;AAC1B,2BAA2B;AAC3B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,aAAa;AACvC,OAAO;AACP;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL,uDAAuD,6BAA6B,EAAE;AACtF;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA,uDAAuD,YAAY;;AAEnE;;AAEA;;AAEA;AACA;AACA,KAAK,UAAU,gBAAgB;;AAE/B;AACA;AACA,KAAK;AACL;AACA,KAAK,WAAW,kCAAkC;;AAElD;AACA;AACA;AACA,CAAC,oCAAoC;;;;;;;AC/drC;AACA;AACA;AACA;AACA;;;;;;;ACJA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0K;AACvI;AACa;AACM;;AAEtD;;AAEA,iDAAiD;;AAEjD,qHAAqH;;AAErH,oFAAoF;AACpF;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,OAAO;AAClB;AACA,YAAY,SAAS;AACrB,YAAY,OAAO;AACnB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,mCAAmC,eAAe;AAClD,sBAAsB,WAAW,wBAAwB,WAAW;AACpE;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA,YAAY,QAAQ;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;;AAGA;AACA,YAAY,gEAAM,GAAG;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI,+DAAK,qCAAqC,sEAAW;AACzD;;AAEA,4CAA4C;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;;AAGH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG,EAAE;;AAEL,oBAAoB;;AAEpB;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,SAAS;AACrB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa,QAAQ;AACrB;;;AAGA;AACA;AACA;AACA,+BAA+B;AAC/B,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA,EAAE,+DAAK;AACP;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa,QAAQ;AACrB;;;AAGA;AACA;AACA,gBAAgB,gEAAM,GAAG;AACzB;AACA;AACA,0BAA0B,+DAAK,+CAA+C,oEAAU;AACxF,GAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA,EAAE,+DAAK;AACP;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,WAAW,4DAAS;AACpB,WAAW,2DAAQ;AACnB,UAAU,2DAAQ;AAClB,QAAQ,yDAAM;AACd,UAAU,2DAAQ;AAClB,WAAW,0DAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,OAAO;AACzC;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gEAAM;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8DAAW;AACxC;;AAEA,SAAS,8DAAS;AAClB;AACA;;AAEA;AACA,yCAAyC,oEAAU;AACnD;;AAEA;AACA,2CAA2C,+DAAK,oBAAoB,0DAAQ;AAC5E,SAAS,kEAAQ;AACjB;AACA;;AAEA;AACA,OAAO,iEAAO,UAAU,oEAAU;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,+DAAO;AACpB;AACA,GAAG;AACH,aAAa,4DAAI;AACjB;AACA;AACA,GAAG;AACH,IAAI,+DAAK;AACT;;AAEA,8EAA8E,+DAAK;AACnF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,WAAW,wEAAc;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,+DAAK;AACpB;AACA;AACA,MAAM,wEAAc;AACpB;AACA;;AAEA;AACA,2BAA2B;;AAE3B,iBAAiB,mFAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;;AAEtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH,iDAAiD,OAAO;AACxD;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE2F;;;;;;;;;ACvX9E;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,iBAAiB,mBAAO,CAAC,GAAQ;AACjC,uBAAuB,mBAAO,CAAC,EAAwB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,oCAAoC;AACpC,uDAAuD,KAAK;AAC5D;AACA;AACA,qCAAqC,MAAM;AAC3C;AACA;AACA;AACA,4DAA4D,WAAW;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+B;;;;;;ACxFA,WAAW,mBAAO,CAAC,EAAQ;AAC3B,eAAe,mBAAO,CAAC,EAAc;AACrC,UAAU,mBAAO,CAAC,EAAQ;AAC1B,cAAc,mBAAO,CAAC,EAAc;AACpC;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,EAAU;AAChC,iDAAiD;AACjD,CAAC;AACD;AACA,qBAAqB;AACrB;AACA,SAAS;AACT,GAAG,EAAE;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpDA;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXa;AACb;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAO,CAAC,CAAuB;AAC/B;AACA,mBAAO,CAAC,GAAwE;AAChF,mBAAmB,mBAAO,CAAC,GAAmB;AAC9C,2BAA2B,mBAAO,CAAC,GAA2B;AAC9D,kBAAkB,mBAAO,CAAC,GAAkB;AAC5C,oBAAoB,mBAAO,CAAC,GAAoB;AAChD,oBAAoB,mBAAO,CAAC,GAAoB;AAChD,sBAAsB,mBAAO,CAAC,GAAsB;AACpD,gBAAgB,mBAAO,CAAC,GAAgB;AACxC,kBAAkB,mBAAO,CAAC,GAAgB;AAC1C,gBAAgB,mBAAO,CAAC,GAAc;AACtC,kBAAkB,mBAAO,CAAC,GAAgB;AAC1C,iBAAiB,mBAAO,CAAC,GAAe;AACxC,eAAe,mBAAO,CAAC,GAAa;AACpC,kBAAkB,mBAAO,CAAC,GAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,GAAS;AAC/B;AACA,SAAS,mBAAO,CAAC,GAAS;AAC1B,iC;;;;;;;AClEA;AAAA;AAAqC;;AAErC,cAAc,oEAAQ;AACtB;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA,2DAA2D,oEAAQ;AACnE;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEe,gEAAO,EAAC;AAChB;;;;;;;;ACzBP;AAAA;AAAA;AAAqC;AACQ;;AAE7C,aAAa,oEAAQ;AACrB;AACA,CAAC;AACD,8BAA8B,mEAAc;AAC5C,CAAC;AACD,yBAAyB,mEAAc;AACvC,CAAC;AACD;AACA,CAAC;;AAEc,+DAAM,EAAC;AACf;;;;;;;;ACdP;AAAA;AAAqC;;AAErC,WAAW,oEAAQ;AACnB;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA,2DAA2D,oEAAQ;AACnE;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEe,6DAAI,EAAC;AACb;;;;;;;;ACzBP;AAAA;AAAA;AAAqC;AACK;;AAE1C,aAAa,oEAAQ;AACrB;AACA,CAAC;AACD;AACA,CAAC;AACD,yBAAyB,gEAAW;AACpC,CAAC;AACD;AACA,CAAC;;AAEc,+DAAM,EAAC;AACf;;;;;;;;ACdP;AAAA;AAAA;AAAqC;AACqB;;AAE1D,UAAU,oEAAQ;AAClB;AACA;AACA,yFAAyF,mEAAc,IAAI,gEAAW;AACtH;AACA;;AAEe,4DAAG,EAAC;AACZ;;;;;;;;ACXM;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wC;;;;;;;ACpBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAU;AACjC,cAAc,mBAAO,CAAC,GAAS;AAC/B,aAAa,mBAAO,CAAC,EAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD,sDAAsD,EAAE;AACxD;AACA;AACA;AACA,yCAAyC,2BAA2B,EAAE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iBAAiB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uC;;;;;;AClFA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;ACvLtC,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA;;;;;;;ACJA;AACA,kBAAkB,mBAAO,CAAC,EAAQ;AAClC;AACA,0CAA0C,mBAAO,CAAC,EAAS,6BAA6B;AACxF;AACA;AACA;;;;;;;ACNA;AACA,UAAU,mBAAO,CAAC,EAAQ;AAC1B,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,GAAe;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;ACZA;AACA,YAAY,mBAAO,CAAC,GAAyB;AAC7C,iBAAiB,mBAAO,CAAC,GAAkB;;AAE3C;AACA;AACA;;;;;;;ACNA;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC,UAAU,mBAAO,CAAC,GAAe;AACjC,kBAAkB,mBAAO,CAAC,GAAkB;AAC5C,eAAe,mBAAO,CAAC,GAAe;AACtC,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA,eAAe,mBAAO,CAAC,GAAe;AACtC;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAO,CAAC,GAAS;AACnB,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;ACxCA,gBAAgB,mBAAO,CAAC,EAAe;AACvC;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA;AACA,YAAY,mBAAO,CAAC,GAAyB;AAC7C,kBAAkB,mBAAO,CAAC,GAAkB;;AAE5C;AACA;AACA;;;;;;;ACNA;;;;;;;ACAA;AACA;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPa;;AAEb;AACA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA;AACA,4BAA4B;AAC5B,4BAA4B;AAC5B;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B,KAAK;AACL;;;;;;;;AC1De;AACf;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFD;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD;AACO,SAAS,sBAAc;AAC9B;AACA;AACO;AACP;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sBAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,WAAW,IAAI;AACf;AACO;AACP;AACA;AACA,mDAAmD;AACnD;AACA,wBAAwB;AACxB;AACA,uBAAuB;AACvB;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA,YAAY,sBAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mGAAmG;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,6DAA6D;AACxI;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,6DAA6D,6DAA6D;AAC1H;AACA;AACA;AACA,CAAC;AACqB;;;AC1KiF;AAChG,IAAI,mBAAc,GAAG,UAAU;AAC/B,IAAI,cAAS,GAAG,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAM;AACV;AACA;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA;AACA;AACA,sBAAsB,sBAAiB;AACvC;AACA,sBAAsB,UAAU;AAChC;AACA,4BAA4B,mBAAc,YAAY,gCAAgC;AACtF,QAAQ,mBAAc,YAAY,mDAAmD;AACrF,gBAAgB;AAChB,KAAK;AACL;AACA,0BAA0B,sBAAiB;AAC3C;AACA,QAAQ,mBAAc,YAAY,oCAAoC,UAAU,eAAe;AAC/F,gBAAgB;AAChB,KAAK;AACL;AACA,gBAAgB,8BAA8B,cAAU;AACxD,KAAK;AACL;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,IAAI,WAAM;AACV;AACA,YAAY,SAAS;AACrB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA;AACA,gBAAgB;AAChB,KAAK;AACL,UAAU,WAAM;AAChB,UAAU,WAAM;AAChB,UAAU,WAAM;AAChB,UAAU,WAAM;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,sBAAiB;AACjC;AACA;AACA;AACA,kCAAkC;AAClC,IAAI,mBAAc;AAClB;AACA;AACA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACO,SAAS,mBAAc;AAC9B,uCAAuC,2BAA2B;AAClE,oCAAoC,uBAAuB;AAC3D,+CAA+C,kCAAkC;AACjF,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA,YAAY,cAAS;AACrB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,sEAAsE;AACtE,sCAAsC,sBAAiB,2BAA2B;AAClF,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,+BAA+B,cAAU;AACzC;AACA,0BAA0B,mBAAc;AACxC;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,0BAA0B,mBAAc;AACxC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,cAAS;AACxC;AACA;AACA;AACA;AACA,sBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD,kCAAkC,mBAAc;AAChD,qBAAqB;AACrB,6BAA6B,SAAS;AACtC;AACA;AACA;AACA;AACA;AACA,kCAAkC,mBAAc;AAChD;AACA,sCAAsC,WAAM,mDAAmD;AAC/F;AACA,kCAAkC,mBAAc;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,WAAM,mDAAmD;AAC/F;AACA,kCAAkC,mBAAc;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mBAAc;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oBAAoB;AAC7C;AACO,SAAS,eAAU;AAC1B,oCAAoC,uBAAuB;AAC3D,+CAA+C,kCAAkC;AACjF;AACA;AACA,sBAAsB,mBAAc;AACpC;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA,4CAA4C,cAAc;AAC1D;AACA,qBAAqB,mBAAc;AACnC,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAY;AAC5B,0BAA0B,mBAAc;AACxC,yCAAyC;AACzC,kBAAkB,mBAAc;AAChC;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACO,SAAS,cAAS;AACzB;AACA,kBAAkB,mBAAc;AAChC;AACA,cAAc,WAAM;AACpB,kBAAkB,mBAAc;AAChC;AACA;AACA,kBAAkB,mBAAc;AAChC;AACA;AACA;AACA,kBAAkB,mBAAc;AAChC;AACA;AACA,kBAAkB,mBAAc;AAChC;AACA;AACA,kBAAkB,mBAAc;AAChC;AACA,kGAAkG,YAAY;AAC9G,kBAAkB,mBAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mBAAc;AACxC;AACA;AACA;AACA;AACA,0BAA0B,mBAAc;AACxC;AACA;AACA;AACA,iCAAiC;AACjC,wBAAwB,aAAQ;AAChC;AACA,0BAA0B,mBAAc;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACO,SAAS,aAAQ;AACxB;AACA;AACA,sBAAsB,mBAAc;AACpC;AACA;AACA;AACA,YAAY,eAAU,CAAC,UAAU,YAAY,UAAU;AACvD;AACA;AACA,qDAAqD,cAAS;AAC9D,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA,yBAAyB,mBAAc;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAW;AACvC,qBAAqB,cAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA,wBAAwB,WAAW;AACnC;AACA,iBAAiB,cAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9aA;AACA;AACA;AACA;AACA;AAC6F;AACrD;AACxC,IAAI,iBAAU;AACd,IAAI,aAAM;AACV;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,IAAI,mBAAY;AAChB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,gBAAS;AAClB,WAAW,iBAAU;AACrB;AACA,SAAS,4BAAqB;AAC9B;AACA;AACA,SAAS,+BAAwB;AACjC;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAS;AACzB;AACA;AACA;AACA;AACA;AACO,SAAS,cAAO;AACvB;AACA;AACA,iBAAiB,gBAAS;AAC1B;AACA,qBAAqB,aAAM;AAC3B,QAAQ,iBAAU;AAClB;AACA;AACA,2BAA2B,4BAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA,YAAY,eAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,eAAQ;AAChB;AACA,QAAQ,+BAAwB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,mBAAY;AACnD;AACA;AACA;AACA;AACA;AACO,SAAS,eAAQ;AACxB,gCAAgC,oBAAoB;AACpD,iBAAiB,iBAAU;AAC3B,IAAI,sBAAS;AACb;AACA,QAAQ,eAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAS;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,WAAW;AAC7B,kBAAkB,WAAW;AAC7B;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA,YAAY,sBAAc;AAC1B;AACA;AACA,gBAAgB,sBAAS,uCAAuC,mBAAmB;AACnF;AACA;AACA;AACA;AACA;AACA,sCAAsC,gCAAgC,mBAAmB,cAAc,UAAU,UA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;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,SAAS,0BAAK;AACd;AACA;;AAEA;;AAEA,IAAI,0BAAK;AACT,MAAM,0BAAK;AACX,MAAM,8BAAS,OAAO,+BAAU,GAAG;;AAEnC,MAAM,2BAAM;AACZ,MAAM,6BAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,wBAAwB;AACnC;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;;AAEA,SAAS,6BAAQ;AACjB,cAAc,0BAAK;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,SAAS,yBAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAQ;AACR;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,6CAA6C,+BAAU,CAAC,8BAAE;AAC1D,GAAG;;AAEH;AACA;AACA,aAAa,EAAE;AACf,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yBAAI,CAAC,2BAAM;;AAEnB;AACA;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA,YAAY,yBAAI,CAAC,6BAAQ;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA,sDAAsD,+BAAU;AAChE;AACA;AACA;;AAEA;AACA,2BAA2B,6BAAQ;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,0BAAK;AACxB,QAAQ,yCAAK;AACb,8BAA8B,6BAAQ;AACtC,YAAY,yCAAK;AACjB,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO,UAAU,2CAAO;AACxB;;AAEA,mBAAmB,OAAO;AAC1B,OAAO;AACP;AACA;AACA;;AAEA,4BAA4B;;AAE5B;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA,mCAAmC,8BAAS;AAC5C;AACA;;AAEA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,oCAAoC,eAAe;AACnD,SAAS,eAAe;AACxB,8DAA8D,eAAe;AAC7E,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA,YAAY,SAAS;AACrB;;AAEA,SAAS,wBAAG;AACZ;AACA;;AAEA,sBAAsB,6BAAQ;AAC9B;AACA,GAAG,4CAA4C,6BAAQ;AACvD;AACA,GAAG,UAAU,8CAAU;AACvB,aAAa,6BAAQ;AACrB,GAAG;AACH;AACA,aAAa,6BAAQ;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,gBAAgB;AAC3B;AACA;AACA,SAAS,4BAAO;AAChB;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,8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AK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA,eAAe,0BAAK;AACpB,GAAG;;AAEH;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA,wBAAwB,wBAAG;AAC3B;AACA;AACA;AACA;AACA,yBAAyB,wBAAG,GAAG,2BAAM;AACrC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL,cAAc,0BAAK;AACnB;AACA,iBAAiB;;AAEjB;AACA;AACA,GAAG;;AAEH;AACA;AACA,4BAA4B,WAAW;AACvC;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;;AAEA,gCAAgC,8BAAS;AACzC;AACA;;AAEA,gBAAgB,wBAAG;AACnB;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,gBAAgB,wBAAG;AACnB;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,gBAAgB,wBAAG;AACnB;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,gBAAgB,8BAAS;AACzB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,aAAa,OAAO;AACpB;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA,uBAAuB,wBAAG;AAC1B,e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A;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,8BAAS;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;;AAGA,SAAS,4BAAO;AAChB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,uCAAuC,UAAU;AACjD;;AAEA,SAAS,6BAAQ;AACjB;AACA;AACA,cAAc,2CAAO,UAAU,+BAAU,mEAAmE,gCAAW;AACvH;;AAEA,SAAS,gCAAW;AACpB;AACA;AACA;;AAEA;;AAEA,iBAAiB,oCAAe;AAChC;AACA;;AAEA;AACA;;AAEA,MAAM,2BAAM;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA,YAAY;AACZ;;AAEA,SAAS,0BAAK;AACd,yBAAyB,2BAAM;;AAE/B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA,WAAW,QAAQ;AACnB;AACA,YAAY;AACZ;;AAEA,SAAS,2BAAM;AACf,yBAAyB,2BAAM;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,UAAU;AACrB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA,YAAY;AACZ;;AAEA,SAAS,0BAAK;AACd,4BAA4B,2BAAM;AAClC,gBAAgB,0BAAK;AACrB;AACA;AACA;AACA;AACA;;AAEA,SAAS,yBAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6BAAQ;AACrB,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,2BAAM;AACd,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,6BAAQ;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,SAAS,2BAAM;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS,6BAAQ;AACjB;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,6BAAQ;AACjB,cAAc,0CAAM;AACpB,gBAAgB,iCAAK;AACrB;AACA;AACA,iBAAiB,mDAAa;;AAE9B;AACA,mBAAmB,oDAAM;AACzB,GAAG,YAAY;AACf;;AAEA,kBAAkB,+BAAU,CAAC,8BAAE;AAC/B;AACA;AACA,eAAe,yBAAI;AACnB;AACA;;AAEA,SAAS,8BAAS;AAClB;AACA;AACA;AACA;;AAEA,6BAAQ;AACR;AACA;AACA;AACA;AACA;AACA,MAAM,kBAAkB;AACxB,cAAc,OAAO;AACrB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,SAAS,8BAAS;;AAElB;AACA;AACA;AACA;AACA;AACA,QAAQ,8BAAS;;AAEjB;AACA;AACA;AACA;AACA;AACA,QAAQ,8BAAS;;AAEjB;AACA;AACA;AACA;AACA;AACA,SAAS,8BAAS;;AAElB;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA,YAAY,8BAAS;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,SAAS;AACT,MAAM;AACN,QAAQ;AACR;AACA,OAAO;AACP,OAAO;AACP,QAAQ;AACR,WAAW;AACX;AACA,QAAQ;AACR,OAAO;AACP,SAAS;AACT,SAAS;AACT;AACA,QAAQ;AACR,IAAI;AACJ;AACA,UAAU;AACV,KAAK;AACL,UAAU;AACV,UAAU;AACV,YAAY,4BAAO;AACnB,aAAa,6BAAQ;AACrB;;AAEA;AACA;AACA,8BAA8B,gBAAgB;AAC9C;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;;AAEA,SAAS,8BAAS;AAClB,EAAE,6BAAQ;AACV;AACA,4CAAQ,CAAC,8BAAS,EAAE,6BAAQ;AAC5B;AACA,gBAAgB,wBAAwB;AACxC,oCAAoC,eAAe;AACnD,SAAS,eAAe;AACxB,8DAA8D,eAAe;AAC7E,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,gBAAgB,wBAAwB;AACxC,kDAAkD,gBAAgB;AAClE,aAAa,MAAM;AACnB,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,MAAM;AACnB,cAAc,MAAM;AACpB;AACA;AACA;;AAEA,CAAC;;AAED,MAAM,+BAAU;AAChB,SAAS,+BAAU;AACnB,YAAY,8BAAS;AACrB;AACA;AACA,SAAS,8BAAS;AAClB;AACA,SAAS,kDAAc,CAAC,+BAAU,UAAU,+BAAU;AACtD;;AAE2P;;;;;;ACvwE5O,SAAS,OAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnBe,SAAS,OAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnBuC;;AAEvC;AACA;AACe,SAAS,uBAAW,yDAAyD,gCAAS;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,uBAAW;AACjB;;AAEA;AACA;AACA;;AAEA,IAAI,gBAAI;AACR,sCAAsC,gBAAI;;AAE1C;AACA,MAAM,gBAAI;AACV;AACA;AACA;;AAEA,uCAAuC,gBAAI;AAC3C,cAAc,gBAAI;;AAElB;AACA;AACA;AACA;AACA;;AAEA,SAAS,gBAAI;AACb;AACA;AACA;AACA;;;AC3Ce;AACf;AACA,CAAC;;AAEM,UAAU,cAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnB2B;AACA;AACgB;AACC;;AAE7B,SAAS,iBAAQ;AAChC,6BAA6B,cAAO;AACpC;AACA,qCAAqC,OAAG;AACxC,qBAAqB,OAAG;AACxB;AACA;AACA;AACA,eAAe,OAAG,CAAC,uBAAW;AAC9B,eAAe,OAAG;AAClB;AACA;;AAEO,SAAS,uBAAc,sBAAsB,UAAM;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC5Be;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxBqC;;AAEtB,SAAS,mBAAS;AACjC,YAAY,QAAQ;AACpB;AACA;;;ACLqC;;AAEtB;AACf,SAAS,iBAAQ;AACjB,CAAC;;;ACJiF;;AAElF,UAAU,8BAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,gCAAS;AAClB,mCAAmC,8BAAO,YAAY;AACtD;;AAEA,cAAc,gCAAS;AACvB,oBAAoB,uBAAc;AAClC;;AAEA,SAAS,gCAAS;AAClB,SAAS,gCAAS;AAClB;;AAEA;;AAEA,SAAS,wCAAiB;AAC1B;AACA,YAAY,mBAAS;AACrB,YAAY,gCAAS;AACrB;AACA;AACA;AACA;;AAEA,SAAS,0BAAG;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,mCAAmC,yBAAyB;;AAE5D;AACA,GAAG;AACH;AACA;AACA;AACA,wFAAwF;;AAExF;AACA;AACA,KAAK;;;AAGL,+BAA+B,OAAO;AACtC;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,6BAAM;AACV,SAAS,gCAAS;AAClB,EAAE,6BAAM;AACR;;AAEA,SAAS,kCAAW;AACpB;AACA,mCAAmC,8BAAO;AAC1C;AACA;AACA;;AAEA,4BAA4B,OAAO;AACnC,sBAAsB,OAAO;AAC7B,qBAAqB,6BAAM;AAC3B;;AAEA;AACA;;AAEA,UAAU,gCAAS;AACnB,UAAU,iBAAQ,iBAAiB,iBAAQ;AAC3C;;AAEA;AACA;AACA;AACA,SAAS,6BAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;;AAEA;AACA;;AAEA,YAAY,OAAO;;AAEnB;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,QAAQ,OAAO;;AAEf,kBAAkB,gCAAS;AAC3B,CAAC;AACD;AACA;;AAEA,SAAS,gCAAS;AAClB;AACA;AACA;AACA;AACA,QAAQ;;AAER;;AAEA;AACA;AACA;;AAEA,8BAA8B;AAC9B;;;AAGA;AACA;;AAEA;;AAEA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;;AAEA,SAAS,0BAAG;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,8BAAO;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA,gCAAgC,6BAAM;AACtC,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAM,8BAAO;AACb,MAAM,4BAAK;;AAEX,IAAI,iCAAU;AACd,SAAS,mCAAY;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,iCAAU,KAAK,iCAAU;AAC/B,QAAQ,iCAAU;AAClB,IAAI,iCAAU;AACd,GAAG;AACH;AACA,UAAU,6BAAM;AAChB,UAAU,6BAAM;AAChB;AACA,KAAK;;AAEL,4CAA4C;;AAE5C;AACA,IAAI,iCAAU;AACd;;AAEA;AACA;AACA,SAAS,oCAAa;AACtB;AACA;AACA,2CAA2C,8BAAO;AAClD,CAAC;AACD;;AAEA,SAAS,uCAAgB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,SAAS,qCAAc;AACvB;AACA,qDAAqD,4BAAK,GAAG,6BAAM;AACnE,CAAC;AACD;AACA;;AAEA,SAAS,6BAAM;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,SAAS,+BAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL,kBAAkB,mCAAY;AAC9B,kBAAkB,oCAAa;AAC/B,kBAAkB,uCAAgB;AAClC,eAAe,qCAAc;AAC7B;AACA;AACA;;AAEA,SAAS,0BAAG;AACZ,iBAAiB,+BAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,6CAA6C,wCAAiB;AAC9D;AACA,KAAK;;AAEL;AACA,wBAAwB,6BAAM;AAC9B,KAAK;;AAEL;AACA;AACA;;AAEA,YAAY,OAAO;AACnB;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,YAAY,OAAO;AACnB;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,sCAAe;AACxB;AACA;AACA,yBAAyB,mCAAY;AACrC;AACA,SAAS,uCAAgB;AACzB;AACA;AACA;AACA;AACA,2CAA2C,8BAAO;AAClD;AACA,SAAS,0CAAmB;AAC5B,SAAS,uCAAgB;AACzB;AACA,SAAS,wCAAiB;AAC1B,kBAAkB,qCAAc;AAChC;AACA,SAAS,gCAAS;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL,kBAAkB,sCAAe;AACjC,kBAAkB,uCAAgB;AAClC,kBAAkB,0CAAmB;AACrC,eAAe,wCAAiB;AAChC;AACA;AACA;;AAEA,SAAS,8BAAO;AAChB;AACA;;AAEA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,gBAAgB,6BAAM;AACtB;AACA;AACA,gBAAgB;;AAEhB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,YAAY,OAAO;AACnB;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,YAAY,OAAO;AACnB;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,oCAAa;AACtB;AACA;AACA;AACA;;AAEA,6BAA6B,6BAAM;AACnC;AACA,SAAS,qCAAc;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,wCAAiB;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,sCAAe;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,8BAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL,kBAAkB,oCAAa;AAC/B,kBAAkB,qCAAc;AAChC,kBAAkB,wCAAiB;AACnC,eAAe,sCAAe;AAC9B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS,0BAAG;AACZ;AACA;AACA;AACA;AACA;;AAEA,SAAS,6BAAM;AACf;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA,SAAS,kCAAW;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAS,+BAAQ;AACjB;AACA;AACA,EAAE,kCAAW;AACb;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA,SAAS,6BAAM;AACf;AACA;AACA;AACA;AACA;AACA,EAAE,kCAAW;AACb;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,eAAe,0BAAG;AAClB;;AAEA;AACA;AACA;AACA,cAAc,+BAAQ;AACtB;AACA;;AAEA;;AAEA,SAAS,0BAAG;AACZ;AACA;AACA;AACA;AACA;AACA,EAAE,kCAAW;AACb;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,eAAe,0BAAG;AAClB;;AAEA;AACA;AACA;AACA,cAAc,+BAAQ;AACtB;AACA;;AAEA,SAAS,0BAAG;AACZ;AACA,2BAA2B,6BAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,kCAAW;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,mBAAmB,0BAAG;AACtB;;AAEA;AACA;AACA;AACA,cAAc,+BAAQ;AACtB;AACA;;AAEA;;AAEA,SAAS,0BAAG;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,kCAAW;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,eAAe,0BAAG;AAClB;;AAEA;AACA;AACA;AACA;AACA,cAAc,+BAAQ;AACtB;AACA;;AAEA,SAAS,2BAAI;AACb,2BAA2B,6BAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA,cAAc,+BAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,2BAAI;AACb;AACA,0BAA0B,6BAAM;AAChC,0BAA0B,2BAAI;AAC9B,2BAA2B,6BAAM;AACjC;AACA;AACA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB,sBAAsB,OAAO;AAC7B;AACA;;AAEA;AACA;;AAEA,eAAe,OAAO;AACtB,wBAAwB,OAAO;AAC/B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,eAAe,0CAAmB;AAClC;AACA;AACA;;AAEA,eAAe,OAAO;;AAEtB;AACA;;AAEA;AACA,UAAU,+BAAQ;AAClB;AACA,cAAc,+BAAQ;AACtB;AACA;;AAEA,SAAS,+BAAQ;AACjB;AACA,iBAAiB;;AAEjB,aAAa,OAAO,eAAe;;;AAGnC,iBAAiB,QAAQ;AACzB;AACA;AACA;;AAEA,eAAe,QAAQ;AACvB,2BAA2B;;AAE3B;AACA;AACA,GAAG;;;AAGH;AACA;AACA,CAAC;AACD;;;AAGA,SAAS,0CAAmB;AAC5B;AACA;AACA;;AAEA,aAAa,OAAO;AACpB,UAAU;;AAEV,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA,eAAe,WAAW;AAC1B;AACA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA,iBAAiB,QAAQ;AACzB;;AAEA,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,MAAM,+BAAQ;AACd,MAAM,8BAAO,SAAS;AACtB;AACA;;AAEA,SAAS,4BAAK;AACd,2BAA2B,6BAAM;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,WAAW,+BAAQ,CAAC;AACzC;;AAEA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;;AAErD,sBAAsB,SAAS;AAC/B;AACA;AACA,kBAAkB,8BAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;;AAGP,qBAAqB,0BAAG;AACxB;AACA;AACA,MAAM,qCAAc;AACpB;;AAEA,iBAAiB,+BAAQ;AACzB;AACA;;AAEA,2BAA2B,MAAM;AACjC,mCAAmC,8BAAO;;AAE1C,2BAA2B,OAAO;AAClC,gDAAgD;AAChD;;AAEA,oCAAoC,8BAAO;AAC3C;AACA;;AAEA,SAAS,6BAAM;AACf,CAAC;;AAED,SAAS,8BAAO;AAChB;AACA,CAAC;;;AAGD,SAAS,qCAAc;AACvB;AACA;AACA;AACA,iCAAiC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;AAGA,SAAS,6BAAM;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM,kCAAW,uBAAuB;;AAExC,SAAS,kCAAW;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,0BAA0B,SAAS;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,6BAAM;;AAEnB;AACA;AACA;AACA;;AAEA,cAAc,iCAAU,uBAAuB,kCAAW;AAC1D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,SAAS,6BAAM;AACf;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA,SAAS,iCAAU;AACnB;AACA;AACA;AACA;;AAE4pB;;;ACjvC7oB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClBe;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;ACZwP;AAC1I;AAC+D;AAC3G;AACwC;;AAE3G,SAAS,+BAAQ;AACjB;AACA;AACA;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;;AAEA;AACA;AACA;AACA,SAAS,+BAAQ;AACjB;AACA;AACA,GAAG,qCAAqC,+BAAQ;AAChD;;AAEA,SAAS,kCAAW;AACpB;AACA;;AAEA,MAAM,2BAAI;;AAEV,MAAM,8BAAO;AACb,QAAQ,2BAAI;AACZ,OAAO,2BAAI;AACX,OAAO,2BAAI;AACX;AACA;AACA,MAAM,mCAAY;AAClB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,MAAM,wCAAiB,eAAe,mCAAY;;AAElD,SAAS,8BAAO;AAChB,gBAAgB,0CAAM;AACtB;AACA;AACA,GAAG,EAAE,8BAAO;AACZ;;AAEA,wCAAiB;AACjB,EAAE,mCAAY,QAAQ,8BAAO,MAAM,mCAAY;AAC/C,CAAC;AACD,SAAS,oCAAa;AACtB,SAAS,mCAAY;AACrB;;AAEA,SAAS,mCAAY;AACrB;AACA;;AAEA,SAAS,8BAAO;AAChB;AACA;;AAEA;AACA;AACA;AACA,wCAAwC,mCAAY;AACpD,KAAK;AACL;;AAEA;AACA,iCAAiC,mCAAY;AAC7C;;AAEA,SAAS,2BAAI;AACb;AACA;;AAEA;AACA;;AAEA,SAAS,0BAAG;AACZ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,SAAS,0BAAG;AACZ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,SAAS,0BAAG;AACZ;;AAEA;AACA;;AAEA,SAAS,sCAAe;AACxB,uBAAuB,oCAAQ;AAC/B,cAAc,8BAAO;AACrB,+BAA+B,mCAAY;;AAE3C;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,2BAAI;AAC3B,sBAAsB,0BAAG;AACzB,sBAAsB,0BAAG;AACzB,sBAAsB,0BAAG;AACzB;AACA;AACA;AACA;;AAEA,SAAS,iCAAU;AACnB,oBAAoB,yCAAK,QAAQ,4BAAO;AACxC;AACA;AACA,MAAM,kCAAW,GAAG,iCAAU;;AAE9B,kCAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAW;AACX;AACA;;AAEA,kCAAW;AACX;AACA;;AAEA,kCAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,aAAa,OAAO;AACpB;AACA;;AAEA,oBAAoB,OAAO;AAC3B;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,EAAE;;;AAGF,kCAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,SAAS,kDAAc;AACvB;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kCAAW;AACX;AACA;AACA,cAAc,+CAAW;AACzB;AACA;AACA;;AAEA;AACA;;AAEA,kCAAW;AACX;AACA;;AAEA,kCAAW;AACX;AACA;;AAEA,kCAAW;AACX;AACA;AACA;;AAEA,kCAAW;AACX;AACA;AACA;;AAEA,kCAAW;AACX;AACA,cAAc,gCAAS;AACvB;AACA;;AAEA;AACA;;AAEA,kCAAW;AACX;AACA;;AAEA,kCAAW;AACX;AACA;;AAEA,kCAAW;AACX;AACA;;AAEA,kCAAW;AACX;AACA,eAAe,kCAAW;AAC1B;AACA;;AAEA;AACA;;AAEA,kCAAW;AACX;AACA;;AAEA,kCAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,2BAA2B;AACtC,WAAW,2BAA2B;AACtC,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,QAAQ;AACnB;;AAEA,SAAS,gCAAS;AAClB,EAAE,8BAAS;AACX,kBAAkB;;AAElB,kBAAkB;;AAElB,iBAAiB;;AAEjB,iBAAiB;;AAEjB,oBAAoB;;AAEpB,sBAAsB;;AAEtB,kBAAkB;;AAElB,oBAAoB;;AAEpB,sBAAsB;;AAEtB,0BAA0B;;AAE1B,sBAAsB;;AAEtB,oBAAoB;;AAEpB,sBAAsB;;AAEtB,uBAAuB;AACvB;AACA,gCAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,cAAc,wCAAiB;AAC/B,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,gCAAS,EAAE,8BAAS;AAC7B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;;AAGL,gCAAgC;;AAEhC,kCAAkC;AAClC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,mCAAmC;AACnC,0BAA0B;;AAE1B;AACA;;AAEA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;;AAEA,mBAAmB;AACnB,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,yCAAK,CAAC,kDAAc;AACzC;AACA;AACA;;AAEA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL,iBAAiB,yCAAK;AACtB;AACA,oBAAoB,gDAAY;AAChC;AACA;AACA;AACA,KAAK;AACL,mCAAmC,+BAAQ,aAAa;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,yCAAK;AACX;;AAEA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,QAAQ,yCAAK;AACb;;AAEA,cAAc,gDAAY;AAC1B,gBAAgB,kCAAW;AAC3B;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,oCAAa;AAC1B;;AAEA,6CAA6C,sCAAe;AAC5D,cAAc;AACd,GAAG;;AAEH;AACA,WAAW,+BAAQ;;AAEnB;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qBAAqB,OAAO;AAC5B;AACA;AACA;;AAEA;AACA,sBAAsB,iCAAU;AAChC;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;;AAEA,eAAe,4BAAO,eAAe,6BAAM;AAC3C,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC,OAAO;AAC1C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC,OAAO;AAC1C;AACA;AACA,GAAG;;AAEH;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA,KAAK;;;AAGL,sCAAsC,OAAO;AAC7C;AACA;;AAEA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,OAAO;AACtC;AACA,qBAAqB;AACrB;;AAEA,+BAA+B,OAAO;AACtC;AACA;AACA,qBAAqB;AACrB;;AAEA,gCAAgC;;AAEhC;AACA;AACA;;AAEA,CAAC;;AAED,MAAM,gCAAS;AACf;AACA;AACA;AACA,WAAW,OAAO;AAClB,sDAAsD,UAAU;AAChE,WAAW,oBAAoB;AAC/B;;AAEA,SAAS,0BAAG;AACZ,EAAE,8BAAS;AACX;AACA,0BAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,0BAAG,EAAE,8BAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL,4BAA4B,kDAAc;AAC1C;;AAEA;AACA,wBAAwB;;AAExB,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,0BAAG;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,6CAAQ;AACtB,yJAAyJ,gCAAS;AAClK;;AAEA;AACA;AACA;AACA,wBAAwB,4CAAQ,IAAI,kDAAc,4BAA4B,gDAAY;AAC1F;;AAEA,CAAC;;AAED,SAAS,iCAAU;AACnB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB,yCAAK;AAC9B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,sBAAsB;AACjC;AACA;;AAEA,SAAS,8BAAO;AAChB,EAAE,8BAAS;AACX;AACA,8BAAO;AACP;AACA;AACA;AA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W,cAAc;AACzB;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA,SAAS,8BAAO;AAChB,EAAE,8BAAS;AACX;AACA,MAAM,oCAAa;AACnB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD,MAAM,8BAAO;AACb;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,cAAc,oCAAa;AAC3B,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,8BAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,cAAc,oCAAa,QAAQ,8BAAO;AAC1C,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,8BAAO,EAAE,8BAAS;AAC3B;AACA;;AAEA;AACA,mBAAmB,4BAAK,iBAAiB,6BAAM;AAC/C;AACA;AACA;;AAEA;AACA,QAAQ,yCAAK;AACb;;AAEA;AACA,QAAQ,yCAAK;AACb;;AAEA;AACA;AACA,iCAAiC,0CAAM;AACvC,qBAAqB,kCAAW;AAChC;AACA;AACA;AACA,eAAe,6BAAM;AACrB,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED,SAAS,6BAAM;AACf;AACA;;AAEA,SAAS,iCAAU;AACnB;AACA,uCAAuC,gDAAY;AACnD;AACA,SAAS,kCAAW;AACpB;AACA;;AAEA,yBAAyB;;AAEzB;AACA;AACA,GAAG;AACH,iBAAiB,yBAAyB,OAAO;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,MAAM,6BAAM;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B,WAAW,2BAA2B;AACtC,WAAW,OAAO;AAClB;AACA,WAAW,QAAQ;AACnB;AACA;;AAEA,SAAS,6BAAM;AACf,EAAE,8BAAS;AACX;AACA,6BAAM;AACN;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,eAAe,6BAAM;AACrB,GAAG;AACH;;AAEA,MAAM,+BAAQ,oBAAoB,wCAAI,CAAC,0CAAM;;AAE7C,4CAAQ,CAAC,6BAAM,EAAE,8BAAS;AAC1B;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA,mBAAmB,kCAAW,0BAA0B,oCAAQ;AAChE;AACA;AACA,2BAA2B,+BAAQ;AACnC,iBAAiB,kCAAa;AAC9B,uBAAuB,6BAAM;AAC7B,4BAA4B;;AAE5B;AACA;AACA;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;;AAEA,sBAAsB,6BAAM;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;;AAEA,SAAS,iCAAU;AACnB,EAAE,6BAAQ,kBAAkB,+BAAQ;AACpC;AACA;AACA,4CAAQ,CAAC,iCAAU,EAAE,6BAAQ;;AAE7B,SAAS,+BAAQ;AACjB;AACA,0DAA0D,4CAAQ,0BAA0B,kDAAc,QAAQ,gDAAY;AAC9H;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B;;AAEA,SAAS,6BAAM;AACf,EAAE,8BAAS;AACX;AACA,6BAAM;AACN;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,6BAAM,EAAE,8BAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,6CAAQ;;AAExB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,iBAAiB,gDAAY;AAC7B,sCAAsC,KAAK;AAC3C,4CAA4C,KAAK,KAAK,IAAI,IAAI,IAAI;AAClE;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,UAAU;AACrB;;AAEA,SAAS,8BAAO;AAChB,EAAE,6BAAQ;AACV;AACA;AACA;AACA,4CAAQ,CAAC,8BAAO,EAAE,6BAAQ;AAC1B;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,qCAAqC;AAChD;AACA,WAAW,oBAAoB;AAC/B;;AAEA,SAAS,4BAAK;AACd,EAAE,8BAAS,cAAc;AACzB,eAAe,2CAAO,GAAG;AACzB;AACA;;AAEA;AACA;;AAEA;AACA,iCAAiC,OAAO;AACxC;AACA;AACA;AACA;AACA,4CAAQ,CAAC,4BAAK,EAAE,8BAAS;AACzB;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,kDAAc;AAC3B;AACA;;AAEA;AACA;AACA;AACA,eAAe,8BAAO;AACtB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;;AAEA,UAAU,uBAAuB;AACjC,kBAAkB;AAClB;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB;;AAEvB;AACA,iBAAiB,4BAAO;AACxB;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,4BAAO;AACvB;AACA,KAAK;;AAEL;AACA;AACA,mBAAmB,4BAAO;AAC1B;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,0BAA0B,4BAAO;AACjC,OAAO;AACP;;AAEA;AACA;AACA,mBAAmB,4BAAO;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;;AAEA,SAAS,4BAAK;AACd,EAAE,6BAAQ,kBAAkB,+BAAQ;AACpC;AACA,4CAAQ,CAAC,4BAAK,EAAE,6BAAQ;;AAExB,SAAS,+BAAQ;AACjB,oDAAoD,2CAAO,WAAW,yCAAK,kBAAkB,yCAAK,OAAO,yCAAK;AAC9G;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B;AACA;;AAEA,SAAS,6BAAM;AACf,EAAE,8BAAS,YAAY,2CAAO;AAC9B;AACA,6BAAM;AACN;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,6BAAM,EAAE,8BAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4BAAO;AACxB,sCAAsC;AACtC,KAAK;AACL;AACA,kCAAkC,eAAe,4BAAO;AACxD,KAAK;;AAEL;AACA,iBAAiB,4BAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,2BAA2B;AACtC;AACA,WAAW,OAAO;AAClB;AACA,WAAW,cAAc;AACzB;AACA;AACA;;AAEA,SAAS,8BAAO;AAChB,EAAE,8BAAS;AACX;AACA,8BAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,8BAAO,EAAE,8BAAS;AAC3B;AACA;AACA;AACA,eAAe,iCAAU;AACzB;AACA,wBAAwB;;AAExB,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,YAAY;AACxB,YAAY,2BAAM;;AAElB,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B;AACA,WAAW,cAAc;AACzB;AACA;;AAEA,SAAS,2BAAI;AACb,EAAE,8BAAS;AACX;AACA,2BAAI;AACJ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,2BAAI,EAAE,8BAAS;AACxB;AACA;AACA;AACA,8BAA8B,wCAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B,YAAY,2BAAM;AAClB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;;AAEA,SAAS,8BAAO;AAChB,EAAE,8BAAS;AACX;AACA,8BAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,8BAAO,EAAE,8BAAS;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,6BAA6B;AACxC;AACA;AACA;AACA,WAAW,OAAO;AAClB;;AAEA,SAAS,+BAAQ;AACjB,EAAE,8BAAS;AACX;AACA,4CAAQ,CAAC,+BAAQ,EAAE,8BAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,YAAY;AAChC,qBAAqB,6BAAM;AAC3B;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,MAAM,8BAAO;AACb;AACA,UAAU,MAAM;AAChB,QAAQ,IAAI;AACZ,OAAO,OAAG;AACV,OAAO,OAAG;AACV;AACA,MAAM,4BAAK;AACX;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B,WAAW,2BAA2B;AACtC;AACA,WAAW,oBAAoB;AAC/B;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA,WAAW,EAAE;AACb;AACA;;AAEA,SAAS,6BAAM;AACf,EAAE,8BAAS;AACX;AACA,6BAAM;AACN;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA,SAAS,+BAAQ;AACjB,sBAAsB,8BAAO;AAC7B;;AAEA,MAAM,8BAAO;AACb,IAAI,yCAAK;AACT,GAAG,gBAAgB,8BAAO;AAC1B;AACA;AACA,GAAG;AACH,WAAW,8BAAO;AAClB;AACA;;AAEA,SAAS,+BAAQ;AACjB;AACA;AACA;;AAEA,4CAAQ,CAAC,6BAAM,EAAE,8BAAS;AAC1B;AACA;AACA,iBAAiB,+BAAQ;AACzB,gBAAgB,+BAAQ;AACxB,gBAAgB,gDAAY;AAC5B,gBAAgB,gDAAY;AAC5B,uCAAuC,wCAAY;AACnD,iBAAiB,gCAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,OAAO;AACzC;AACA;AACA,kBAAkB;;AAElB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA,qCAAqC,OAAO;;AAE5C;AACA;AACA,kBAAkB,6BAAM;AACxB;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,SAAS,gCAAS;AAClB;AACA;AACA;AACA,eAAe;AACf,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,8BAA8B,OAAO;AACrC;AACA;AACA;AACA,iDAAiD,4BAAK;;AAEtD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS,oCAAa;AACtB,EAAE,gCAAS;AACX;AACA,oCAAa;AACb;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,cAAc,wCAAiB;AAC/B,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,oCAAa,EAAE,gCAAS;AACjC;AACA;AACA;;AAEA,cAAc;;AAEd;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;;AAGL,mBAAmB;;AAEnB;AACA,MAAM,0CAAM;AACZ,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA,+BAA+B,OAAO;AACtC;AACA,qBAAqB;AACrB;;AAEA,+BAA+B,OAAO;AACtC;AACA,qBAAqB;AACrB;;AAEA,gCAAgC;AAChC;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,2BAA2B;AACtC;AACA,WAAW,oBAAoB;AAC/B;AACA,WAAW,OAAO;AAClB;AACA,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,OAAO;AAClB;AACA,WAAW,cAAc;AACzB;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA,SAAS,0BAAG;AACZ,EAAE,8BAAS;AACX;AACA,0BAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,0BAAG,EAAE,8BAAS;AACvB;AACA;;AAEA;AACA;AACA,qBAAqB,kCAAW;AAChC,0CAA0C,wCAAY;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,yCAAK;AACb;;AAEA;AACA,8BAA8B,0CAAM;AACpC;AACA;;AAEA;AACA,wBAAwB,0BAAS;AACjC;AACA,gCAAgC,0CAAM;AACtC,QAAQ,kCAAW;AACnB;;AAEA,yBAAyB,kBAAkB;AAC3C;AACA;;AAEA;AACA;AACA,sBAAsB,6BAAM;AAC5B,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB;AACA;AACA;;AAEA,SAAS,0BAAG;AACZ,EAAE,6BAAQ,kBAAkB,+BAAQ;AACpC;AACA,4CAAQ,CAAC,0BAAG,EAAE,6BAAQ;;AAEtB,SAAS,+BAAQ;AACjB,oDAAoD,uCAAG;AACvD;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;;AAEA,SAAS,2BAAI;AACb,EAAE,8BAAS;AACX;AACA;AACA,4CAAQ,CAAC,2BAAI,EAAE,8BAAS;AACxB;AACA;;AAEA;AACA;AACA,aAAa,6BAAM;AACnB;;AAEA,QAAQ,2BAAI;;AAEZ;AACA;AACA,aAAa,6BAAM;AACnB,KAAK;AACL;AACA;AACA,wBAAwB,yCAAK;AAC7B;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA,qDAAqD,6BAAM,cAAc,yCAAK;AAC9E;AACA;;AAEA,CAAC;;AAED,SAAS,2BAAI;AACb;AACA;;AAEA,SAAS,6BAAM;AACf,eAAe,6BAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,IAAI;AACf,WAAW,0BAA0B;AACrC,WAAW,cAAc;AACzB,WAAW,EAAE;AACb;;AAEA,SAAS,6BAAM;AACf,EAAE,8BAAS,cAAc;AACzB;AACA,6BAAM;AACN;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,6BAAM,EAAE,8BAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,QAAQ,yCAAK;AACb;;AAEA;AACA,QAAQ,yCAAK;AACb;;AAEA,4BAA4B,wCAAY;;AAExC;AACA,oCAAoC,OAAO;AAC3C;AACA,oCAAoC,OAAO,mCAAmC,gBAAgB,OAAO;AACrG;AACA;AACA,KAAK;AACL;AACA,QAAQ,yCAAK;AACb;;AAEA;AACA,0BAA0B,OAAO;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,qBAAqB;AAChC;;AAEA,SAAS,kCAAW;AACpB,EAAE,6BAAQ,kBAAkB,+BAAQ;AACpC;AACA,4CAAQ,CAAC,kCAAW,EAAE,6BAAQ;;AAE9B,SAAS,+BAAQ;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,gBAAgB;AAC3B;;AAEA,SAAS,kCAAW;AACpB,EAAE,6BAAQ,kBAAkB,6BAAM;AAClC;AACA,4CAAQ,CAAC,kCAAW,EAAE,6BAAQ;;AAE9B,SAAS,6BAAM;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;;AAEA,SAAS,6BAAM;AACf,EAAE,8BAAS;AACX;AACA,4CAAQ,CAAC,6BAAM,EAAE,8BAAS;AAC1B;AACA;AACA;AACA,yDAAyD;AACzD;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,2BAA2B;AACtC;AACA,WAAW,oBAAoB;AAC/B;AACA,WAAW,oBAAoB;AAC/B;AACA,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA,SAAS,4BAAK;AACd,EAAE,gCAAS;AACX;AACA,4BAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,cAAc,wCAAiB;AAC/B;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,4BAAK,EAAE,gCAAS;AACzB,cAAc,gCAAS;;AAEvB;AACA,2BAA2B,sCAAe;AAC1C;;AAEA,CAAC,EAAE;AACH;AACA;;AAEA,SAAS,sCAAe;AACxB;AACA;AACA;AACA,iBAAiB,kDAAc,aAAa,kDAAc;AAC1D,eAAe,gCAAS,2BAA2B;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0BAAG;AAC7B;AACA;AACA;AACA,CAAC;AACD,sCAAsC;;;AAGtC,SAAS,0BAAG;AACZ,SAAS,4CAAQ;AACjB,CAAC;;;AAGD,SAAS,gCAAS;AAClB,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,YAAY,qCAAS;AACrB;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,qCAAqC;AAChD;AACA,WAAW,gCAAgC;AAC3C;AACA;;AAEA,SAAS,+BAAQ;AACjB,EAAE,4BAAK;AACP;AACA,4CAAQ,CAAC,+BAAQ,EAAE,4BAAK;AACxB;AACA;AACA;AACA,sCAAsC,4BAAO;;AAE7C,uDAAuD,kDAAc;AACrE,MAAM,yCAAK;AACX;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,qCAAqC,6BAAM;AAC3C,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,0BAA0B;AACrC;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;;AAEA,SAAS,8BAAO;AAChB,EAAE,8BAAS;AACX;AACA,8BAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,8BAAO,EAAE,8BAAS;AAC3B;AACA;AACA;AACA,eAAe,iCAAU;AACzB,sCAAsC,8BAAO,qBAAqB,6BAAQ;AAC1E;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,iBAAiB,4BAAO;AACxB;AACA;AACA,KAAK;AACL;AACA,2BAA2B,6BAAM,GAAG;AACpC,UAAU,4BAAO;AACjB;AACA,KAAK;AACL;AACA,iCAAiC,4BAAO;AACxC,KAAK;AACL;AACA;;AAEA,CAAC;;AAED,SAAS,8BAAO;AAChB,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;;AAEA,SAAS,4BAAK;AACd,EAAE,8BAAS;AACX;AACA,4CAAQ,CAAC,4BAAK,EAAE,8BAAS;AACzB;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B;AACA,WAAW,2BAA2B;AACtC;AACA,WAAW,cAAc;AACzB;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;;AAEA,SAAS,+BAAQ;AACjB,EAAE,8BAAS;AACX;AACA,+BAAQ;AACR;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,MAAM,8BAAO;AACb,4CAAQ,CAAC,+BAAQ,EAAE,8BAAS;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,kCAAW;AAC9B,wCAAwC,wCAAY;AACpD;AACA;AACA,yBAAyB,SAAK,eAAe,8BAAO;AACpD;AACA;AACA,gBAAgB,gCAAS;;AAEzB,qBAAqB,OAAO;AAC5B;;AAEA,uBAAuB,kBAAkB;AACzC;AACA;;AAEA;AACA;AACA,oBAAoB,6BAAM;AAC1B;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;;AAEA,SAAS,4BAAK;AACd,EAAE,8BAAS;AACX;AACA,4CAAQ,CAAC,4BAAK,EAAE,8BAAS;AACzB;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,4BAAO;AAC1B;AACA;AACA,OAAO;AACP;AACA,mBAAmB,2BAAM;AACzB,YAAY,4BAAO;AACnB;AACA,OAAO;AACP;AACA,uBAAuB,4BAAO;;AAE9B;AACA,uBAAuB;AACvB;;AAEA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;;AAEA,SAAS,6BAAM;AACf,EAAE,8BAAS;AACX;AACA;AACA,6BAAM;AACN;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,6BAAM,EAAE,8BAAS;AAC1B;AACA;AACA;AACA;AACA,+CAA+C,4BAAO,gBAAgB;;AAEtE;AACA;AACA,gBAAgB;;AAEhB;AACA;;AAEA;AACA;AACA,OAAO;AACP,6BAA6B,6BAAM;;AAEnC;AACA;AACA,kBAAkB,4BAAO,sBAAsB;;AAE/C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,4BAAO;;AAE1B;AACA;AACA;AACA;;AAEA;AACA,OAAO,EAAE;;AAET,gCAAgC,4BAAO;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4BAAO;AACxB,OAAO;AACP;AACA;;AAEA;AACA;;AAEA,qBAAqB,OAAO;AAC5B,YAAY,4BAAO;AACnB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,4BAAO;AACvB,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,qCAAqC,4BAAO;AAC5C;;AAEA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;;AAEA,SAAS,+BAAQ;AACjB,EAAE,8BAAS;AACX;AACA,+BAAQ;AACR;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,+BAAQ,EAAE,8BAAS;AAC5B;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAK;AACtB;AACA;AACA,aAAa,6BAAM;AACnB,KAAK;AACL;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA,SAAS,4BAAK;AACd,EAAE,8BAAS;AACX,sBAAsB;AACtB;AACA,4CAAQ,CAAC,4BAAK,EAAE,8BAAS;AACzB;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B;;AAEA,SAAS,+BAAQ;AACjB,EAAE,8BAAS;AACX;AACA,MAAM,6BAAM;AACZ,+BAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,cAAc,sCAAU;AACxB;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,6BAAM;AACrB,GAAG;AACH;AACA,4CAAQ,CAAC,+BAAQ,EAAE,8BAAS;AAC5B;AACA;AACA;AACA;AACA;AACA,0BAA0B,uCAAW,GAAG,wCAAY;AACpD,uBAAuB,6BAAM;AAC7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uCAAuC,kDAAc;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA,qCAAqC;;AAErC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK,GAAG,2CAAO;AACf,0BAA0B,0CAAM;AAChC;AACA,KAAK,EAAE;;AAEP,mBAAmB,6CAAS;AAC5B,iCAAiC;AACjC,yBAAyB,oCAAQ,GAAG,qCAAS;AAC7C,iBAAiB,wCAAI;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B;;AAEA,SAAS,iCAAU;AACnB,EAAE,8BAAS,YAAY,2CAAO;AAC9B;AACA,4CAAQ,CAAC,iCAAU,EAAE,8BAAS;AAC9B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B,WAAW,sBAAsB;AACjC;AACA;AACA;;AAEA,SAAS,6BAAM;AACf,EAAE,8BAAS;AACX;AACA,4CAAQ,CAAC,6BAAM,EAAE,8BAAS;AAC1B;AACA;;AAEA;AACA,uDAAuD,kCAAa;AACpE;AACA;;AAEA,CAAC;;AAED,SAAS,+BAAQ;AACjB,aAAa,gCAAS;AACtB;AACA,qBAAqB,iCAAI;AACzB;AACA;AACA;AACA;AACA;AACA,MAAM,gCAAS;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,iBAAiB,gCAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,oBAAoB,yCAAK;AACzB,iBAAiB,gCAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;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CA,qBAAqB,4CAAQ;AAC7B;AACA;;AAEA,iBAAiB,OAAO;AACxB,IAAI,gCAAS;AACb,eAAe,kCAAW;AAC1B;AACA;AACA;;AAEA,SAAS,gCAAS;AAClB;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD,SAAS,kCAAW;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEwxB;;;ACp/HjxB,SAAS,WAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,cAAc,WAAK,2BAA2B;AAC9C,uDAAuD;AACvD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B,oFAAoF;AAClH,eAAe,WAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;AClDc,0DAAa;;;ACAE;AACG;;AAEjC,SAAS,uBAAW;AACpB;AACA;;AAEA,uBAAW;AACX,aAAa,QAAI;AACjB,WAAW,QAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,4BAA4B;AAC1D,8BAA8B,4BAA4B,4FAA4F;AACtJ,eAAe,WAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf,aAAa,uBAAW;AACxB,CAAC;;;ACnDgC;;AAEjC,SAAS,mBAAS;AAClB;AACA;;AAEA,mBAAS;AACT;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,oFAAoF,0EAA0E;AAC5L,8BAA8B;AAC9B,eAAe,WAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf,aAAa,mBAAS;AACtB,CAAC;;;ACtCgC;;AAEjC,SAAS,aAAM;AACf,oBAAoB,KAAK;AACzB;AACA;;AAEA,aAAM;AACN;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,4BAA4B,KAAK,gBAAgB,aAAM;AACvD;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,OAAO,EAAC;;;ACvDF,SAAS,cAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,cAAc,cAAK,2BAA2B;AAC9C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B,4BAA4B;AAC1D,8BAA8B;AAC9B,eAAe,cAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;AC5D8B;;AAE7B,SAAS,yBAAY;AAC5B;AACA;AACA;;AAEA,yBAAY;AACZ;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,kGAAkG;AAChI,8BAA8B;AAC9B,eAAe,cAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,eAAe,yBAAY;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;AChDwB;AACM;;AAE7B,SAAS,6BAAc;AAC9B;AACA;AACA;;AAEA,6BAAc;AACd,aAAa,QAAI;AACjB,WAAW,QAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,kDAAkD;AAChF,8BAA8B,4BAA4B;AAC1D,eAAe,cAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,eAAe,6BAAc;AAC7B;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;AC5DC;AACA;AACA;AACA,IAAI,QAAG;AACP,IAAI,QAAG;AACP;AACA,IAAI,SAAI;;AAER,IAAI,YAAO;AACX;AACA;AACA,IAAI,QAAG;;AAEP;AACP;AACA;;AAEO;AACP;AACA;;;ACnBmC;AACI;;AAEhC,SAAS,gBAAK;AACrB;AACA;AACA;AACA;;AAEA,oBAAoB,YAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,YAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,SAAS,qBAAU;AACnB;AACA;AACA;;AAEA,qBAAU;AACV;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,6CAA6C;AAC7C;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B;AAC9B,eAAe,gBAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,uBAAuB,qBAAU,uBAAuB,QAAQ;AAChE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;ACvF2C;AACrB;AACQ;;AAEtC,SAAS,iCAAgB;AACzB;AACA;AACA;;AAEA,iCAAgB;AAChB,aAAa,QAAI;AACjB,WAAW,QAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,kDAAkD;AAChF,8BAA8B,4BAA4B;AAC1D,eAAe,gBAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,uBAAuB,iCAAgB,uBAAuB,6BAAc;AAC5E;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;ACzEuC;AACT;;AAEtC,SAAS,6BAAc;AACvB;AACA;AACA;;AAEA,6BAAc;AACd;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,kGAAkG;AAChI,8BAA8B;AAC9B,eAAe,gBAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,uBAAuB,6BAAc,uBAAuB,yBAAY;AACxE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;AC7DR,SAAS,aAAM;AACf;AACA;;AAEA,aAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA;;AAEe;AACf,aAAa,aAAM;AACnB,CAAC;;;AC9B6B;;AAE9B,SAAS,yBAAY;AACrB;AACA;;AAEA,yBAAY;AACZ,aAAa,QAAI;AACjB,WAAW,QAAI;AACf;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,aAAa,yBAAY;AACzB,CAAC;;;ACxBD,SAAS,aAAI;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,aAAI,OAAO,aAAI;AACzB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,cAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,cAAc,cAAK,yCAAyC;AAC5D;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B,CAAC,cAAK,kDAAkD;AACtF,eAAe,cAAK,0CAA0C;AAC9D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,4BAA4B,EAAE;AACxD,yBAAyB,2BAA2B,EAAE;AACtD,0BAA0B,4BAA4B,EAAE;AACxD,iDAAiD,mDAAmD;AACpG;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;ACvGA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB;AACA,aAAa,OAAO;AACpB;AACA,iBAAiB,QAAQ;AACzB;AACA,aAAa,WAAW;AACxB;AACA;;AAEe;AACf;AACA,CAAC;;;AChED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;;;ACpDA,MAAM,OAAE;AACR,IAAI,QAAG,OAAO,OAAE;AAChB,IAAI,YAAO;AACX,iBAAiB,QAAG,GAAG,YAAO;;AAE9B;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA,SAAS,SAAI;AACb;AACA;;AAEA,iBAAiB,SAAI;AACrB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,YAAO;;AAE9B;AACA;AACA;AACA,iDAAiD,YAAO;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAE;AAC9B;AACA;;AAEA;AACA,8BAA8B,YAAO;AACrC;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,YAAO,8BAA8B,YAAO;AACnF;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B,QAAG,GAAG,QAAG;;AAEnC;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,YAAO;AACzB,qDAAqD,OAAE;AACvD;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe,sDAAI,EAAC;;;ACjIL;AACf;AACA;AACA;AACA,CAAC;;;ACJ4B;AACQ;AACgE;;AAErG,SAAS,kBAAc;AACvB;AACA;;AAEA,SAAS,kBAAc;AACvB;AA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;AAEhC,IAAI,SAAG;AACP,IAAI,SAAG;AACP,IAAI,SAAG;AACP,IAAI,WAAK,gBAAgB,IAAI;AAC7B,IAAI,kBAAY,2BAA2B,SAAG,EAAE,SAAG,EAAE,SAAG;AACxD,IAAI,kBAAY,2BAA2B,SAAG,EAAE,SAAG,EAAE,SAAG;AACxD,IAAI,mBAAa,4BAA4B,SAAG,EAAE,SAAG,EAAE,SAAG,EAAE,SAAG;AAC/D,IAAI,mBAAa,4BAA4B,SAAG,EAAE,SAAG,EAAE,SAAG,EAAE,SAAG;AAC/D,IAAI,kBAAY,2BAA2B,SAAG,EAAE,SAAG,EAAE,SAAG;AACxD,IAAI,mBAAa,4BAA4B,SAAG,EAAE,SAAG,EAAE,SAAG,EAAE,SAAG;;AAE/D,IAAI,WAAK;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,CAAC,WAAK,EAAE,WAAK;AACnB;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,OAAO,qBAAe;AACtB,aAAa,qBAAe;AAC5B,aAAa,qBAAe;AAC5B,aAAa,qBAAe;AAC5B,YAAY,qBAAe;AAC3B,CAAC;;AAED,SAAS,qBAAe;AACxB;AACA;;AAEA,SAAS,qBAAe;AACxB,SAAS,gBAAU;AACnB;;AAEA,SAAS,qBAAe;AACxB;AACA;;AAEe,SAAS,WAAK;AAC7B;AACA;AACA,cAAc,WAAK,qEAAqE,UAAI;AAC5F,sBAAsB,SAAG;AACzB,kBAAkB,UAAI;AACtB,kBAAkB,UAAI;AACtB;AACA,aAAa,kBAAY,qBAAqB,SAAG;AACjD,aAAa,kBAAY,qBAAqB,SAAG;AACjD,aAAa,mBAAa,iBAAiB,UAAI;AAC/C,aAAa,mBAAa,iBAAiB,UAAI;AAC/C,aAAa,kBAAY,iBAAiB,UAAI;AAC9C,aAAa,mBAAa,iBAAiB,UAAI;AAC/C,QAAQ,WAAK,0BAA0B,UAAI,CAAC,WAAK;AACjD,uCAAuC,SAAG;AAC1C;AACA;;AAEA,SAAS,UAAI;AACb,aAAa,SAAG;AAChB;;AAEA,SAAS,UAAI;AACb;AACA,aAAa,SAAG;AAChB;;AAEO,SAAS,gBAAU;AAC1B,qBAAqB,WAAK,OAAO,WAAK;AACtC,qBAAqB,SAAG;AACxB;AACA,aAAa,SAAG;AAChB;;AAEO,SAAS,SAAG;AACnB,kCAAkC,gBAAU,UAAU,SAAG;AACzD;;AAEO,SAAS,SAAG;AACnB;AACA;AACA;AACA;AACA;;AAEA,MAAM,CAAC,SAAG,EAAE,SAAG,EAAE,MAAM,CAAC,WAAK;AAC7B;AACA,oBAAoB,cAAQ,YAAY,cAAQ;AAChD,eAAe,SAAG;AAClB,GAAG;AACH;AACA,oBAAoB,YAAM,YAAY,YAAM;AAC5C,eAAe,SAAG;AAClB,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,OAAO,mBAAa;AACpB,aAAa,mBAAa;AAC1B,aAAa,mBAAa;AAC1B,YAAY,mBAAa;AACzB,CAAC;;AAED,SAAS,mBAAa;AACtB,eAAe,SAAG,WAAW,SAAG,WAAW,SAAG;AAC9C;;AAEA,SAAS,mBAAa;AACtB,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAG;AACZ;AACA;AACA;;AAEA,SAAS,UAAI;AACb;AACA;AACA;AACA,aAAa,SAAG;AAChB;;AAEO,SAAS,gBAAU;AAC1B,mBAAmB,SAAG,aAAa,SAAG;AACtC,qBAAqB,WAAK,OAAO,WAAK;AACtC,qBAAqB,SAAG;AACxB,mBAAmB,SAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,aAAa,SAAG;AAChB;;AAEO,SAAS,SAAG;AACnB,kCAAkC,gBAAU,UAAU,SAAG;AACzD;;AAEA,SAAS,SAAG;AACZ;AACA;AACA;AACA;AACA;;AAEA,MAAM,CAAC,SAAG,EAAE,SAAG,EAAE,MAAM,CAAC,WAAK;AAC7B;AACA,oBAAoB,cAAQ,YAAY,cAAQ;AAChD,eAAe,SAAG;AAClB,GAAG;AACH;AACA,oBAAoB,YAAM,YAAY,YAAM;AAC5C,eAAe,SAAG;AAClB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAG;AAClB,MAAM,aAAO;AACb,MAAM,aAAO;AACb,MAAM,aAAO;AACb;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,SAAS,aAAO;AAChB;AACA;AACA;AACA;AACA;;;AClXO,SAAS,WAAK;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAK;AAChB;AACA,CAAC;;;AClBgC;;AAElB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAK;AAChB;AACA,CAAC;;;ACZc,4EAAY,EAAC;;;ACAS;;AAErC,SAAS,YAAM;AACf;AACA;AACA;AACA;;AAEA,SAAS,iBAAW;AACpB;AACA;AACA;AACA;;AAEO,SAAS,SAAG;AA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;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,2BAAS;AAC3B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mBAAmB,SAAK;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV,uCAAuC;;AAEvC;AACA;AACA;AACA;AACA;;AAEA,4DAA4D;;AAE5D,oBAAoB,kBAAW;AAC/B,wBAAwB,kBAAW,iBAAiB;;AAEpD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW,sBAAI;AACf;;AAEA;AACA;;AAEA,SAAS,0BAAQ;AACjB;AACA;AACA;;AAEA;AACA,WAAW,0BAAQ;AACnB;;AAEA;AACA;;AAEA,SAAS,uBAAK;AACd,SAAS,0BAAQ,CAAC,sBAAI;AACtB;;AAEA,IAAI,qBAAG;AACP,SAAS,yBAAO;AAChB,SAAS,qBAAG,SAAS,qCAAQ;AAC7B;;AAEA,MAAM,uBAAK;;AAEX,SAAS,iCAAe;AACxB;AACA;;AAEA;AACA,qDAAqD,UAAM;AAC3D;;AAEA;AACA;AACA,eAAe,yBAAO;AACtB;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc,uBAAK;AACnB;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,WAAW,qBAAY,YAAY,wCAAI;AACvC;;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AoB;AAC7B;AACA;;AAEA,iBAAiB,WAAW;;AAE5B;AACA;AACA,SAAS,2BAAS;AAClB;AACA;AACA;AACA;AACA;AACA,SAAS,+BAAa;AACtB;AACA;;AAEA;AACA,WAAW,4CAAQ;AACnB,GAAG;AACH;AACA;AACA,QAAQ,uBAAK;AACb,IAAI,4BAAU;AACd;AACA;AACA;AACA,SAAS,6BAAW;AACpB,iBAAiB,kCAAC,CAAC,wBAAM;AACzB;AACA;;AAEA,SAAS,wBAAM;AACf;AACA;;AAEA,MAAM,4BAAU;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,0BAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,wBAAM;AACf;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;;AAEA,SAAS,uBAAK;AACd,qBAAqB,wBAAM;AAC3B;;AAEA,MAAM,yBAAO;AACb,uBAAK,CAAC,0BAAQ,EAAE,wBAAM;AACtB,uBAAK,CAAC,4BAAU,OAAO,mCAAiB,CAAC,wBAAM;AAC/C,SAAS,wBAAM;AACf;;AAEA;AACA,IAAI,yBAAO;AACX;AACA,GAAG;AACH,WAAW,yBAAO;AAClB;AACA;;AAEA,MAAM,8BAAY;AAClB,MAAM,gCAAc;AACpB,MAAM,gCAAc;;AAEpB,MAAM,kCAAgB,YAAY,2CAAO;;AAEzC,MAAM,2BAAS;;AAEf,MAAM,4BAAU;AAChB;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,YAAY,EAAE;AACd;;;AAGA,SAAS,2BAAS;AAClB;;AAEA,MAAM,4CAAQ;AACd;AAC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,YAAY,2BAAI;;AAEhB;AACA,IAAI,2BAAI;AACR,IAAI,2BAAI;AACR,IAAI,2BAAI;AACR,IAAI,2BAAI;AACR,IAAI,2BAAI;AACR,IAAI,2BAAI;AACR,IAAI,2BAAI;AACR,GAAG;AACH,IAAI,2BAAI;AACR,GAAG;AACH,IAAI,2BAAI;AACR,GAAG;AACH,uCAAuC,OAAO;AAC9C,MAAM,2BAAI;AACV;AACA;;AAEA,SAAS,2BAAI;AACb;;AAEA,SAAS,iCAAU;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,SAAS;AAC7C;;AAEA;AACA,gBAAgB,8BAAO;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA,wHAAwH;AACxH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,8BAAO;AACf;AACA;AACA;;AAEA;AACA,QAAQ,8BAAO;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,8BAAO;AAChB,cAAc,+BAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC,gBAAgB,6BAAM;AACtB;AACA;AACA;;AAEA,MAAM,4BAAK;AACX,MAAM,+BAAQ;AACd;AACA;AACA;AACA;AACA,8BAA8B,0BAAG;AACjC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,cAAc,gCAAS;AACvB,sBAAsB,4BAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,cAAc,gCAAS;AACvB,sBAAsB,4BAAK;AAC3B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,cAAc,gCAAS;AACvB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,cAAc,gCAAS;AACvB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,cAAc,gCAAS;AACvB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,cAAc,gCAAS;AACvB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8BAAO;AAChB,S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AEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA,SAAS,2BAAI;AACb;AACA,mCAAmC,6BAAM;AACzC;;AAEA,SAAS,gCAAS;AAClB,EAAE,2BAAI;AACN;AACA;AACA,4CAAQ,CAAC,gCAAS,EAAE,2BAAI;;AAExB,SAAS,qCAAc;AACvB;AACA,iCAAiC,oDAAM;AACvC;;AAEA,SAAS,gCAAS;AAClB;AACA;;AAEA,SAAS,gCAAS;AAClB;AACA;;AAEA,qCAAc;AACd;AACA;AACA,GAAG;;AAEH;AACA;AACA,IAAI,gCAAS;AACb;AACA;AACA,KAAK;AACL,MAAM,gCAAS;AACf;AACA,KAAK;AACL,MAAM,gCAAS;AACf;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,kBAAkB,QAAO;AACzB,IAAI,gCAAS;AACb;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,8BAA8B,4CAA4C;AAC1E;;AAEA,mBAAmB,kDAAc;AACjC,+CAA+C;;AAE/C,yBAAyB,gCAAS;;AAElC,0BAA0B,gCAAS;;AAEnC;AACA;AACA,KAAK;AACL,MAAM,gCAAS;AACf;AACA;AACA;AACA;AACA;AACA;A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AAC7B;AACA,GAAG;AACH;AACA;AACA;;AAEA,IAAI,4BAAK;AACT,SAAS,6BAAM;AACf;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,4BAAK;AAC/B;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,4BAAK;AAClD;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA,SAAS,8BAAO;AAChB;AACA;;AAEA,SAAS,6BAAM;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,OAAO;AACtC;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,8BAAO;AAC3C;AACA,SAAS,4BAAK;AACd;AACA;AACA;AACA;AACA,iBAAiB,6BAAM;;AAEvB;AACA,iCAAiC,OAAO;AACxC;AACA;;AAEA;AACA;;AAEA,+BAA+B,OAAO;AACtC;AACA;AACA;AACA,SAAS,gCAAS;AAClB;AACA;AACA;AACA;AACA,iBAAiB,6BAAM;AACvB;;AAEA,wBAAwB,UAAU;AAClC;AACA;;AAEA;AACA,+CAA+C,UAAU;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,SAAS,8BAAO;AAChB;AACA,IAAI,4BAAK;AACT;AACA,QAAQ,+BAAQ;AAChB;AACA,KAAK;AACL;AACA;AACA,SAAS,8BAAO;AAChB;AACA;AACA,MAAM,+BAAQ;AACd;AACA;AACA;;AAEA,SAAS,+BAAQ;AACjB;AACA;AACA;AACA,EAAE,4BAAK;;AAEP,mBAAmB,2BAAI;AACvB;AACA;;AAEA,qBAAqB,6BAAM;AAC3B;AACA;AACA;;AAEA,SAAS,6BAAM;AACf,iBAAiB,mCAAM;AACvB;AACA;AACA;AACA,WAAW,gCAAS;AACpB,4BAA4B;;AAE5B,iDAAiD;;AAEjD;AACA,KAAK;AACL;AACA;AACA,SAAS,8BAAO;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,+BAAQ;AACjB,SAAS,6BAAM,CAAC,8BAAO;AACvB;;AAEA,SAAS,gCAAS;AAClB;AACA;AACA,SAAS,6BAAM;AACf;AACA;AACA,SAAS,4BAAK;AACd;AACA;AACA,SAAS,oCAAa;AACtB,SAAS,gCAAS;AAClB;AACA,SAAS,iCAAU;AACnB,SAAS,gCAAS,iDAAiD,6BAAM;AACzE;AACA,SAAS,oCAAa;AACtB,SAAS,gCAAS,iDAAiD,6BAAM,yDAAyD,4BAAK;AACvI;;AAEA,SAAS,mCAAY;AACrB;AACA,sBAAsB,iCAAU;AAChC;AACA;;AAEA;AACA,UAAU,mCAAY;AACtB,WAAW,kCAAW;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA+B,+BAAQ;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAAO;AACjB,UAAU,+BAAQ;AAClB,oBAAoB,oCAAa;AACjC;AACA;;AAEA,IAAI,0BAAG,GAAG,mCAAY,QAAQ,4BAAK;;AAEnC,SAAS,+BAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,+BAAQ;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,gCAAS;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,SAAS,wCAAiB;AAC1B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL,YAAY,mCAAY;AACxB,aAAa,kCAAW;AACxB;AACA;;AAEA;AACA;AACA;AACA;;AAEA,cAAc,8BAAO;;AAErB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAAO;AACjB;AACA,WAAW,qCAAc;AACzB;AACA;AACA;;AAEA,IAAI,2BAAI,GAAG,wCAAiB,SAAS,6BAAM,EAAE,+BAAQ;;AAErD,SAAS,2BAAI;AACb;AACA;;AAEA,MAAM,8CAAU;AAChB;AACA;AACA;AACA,GAAG;AACH,IAAI,gCAAS;AACb;AAC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ACvD;;AAEA,IAAI,4BAAK;AACT;AACA;AACA,SAAS,gCAAS;AAClB,aAAa,4BAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,4BAAK;AACX,aAAa,4BAAK;AAClB;;AAEA,QAAQ,gCAAS;AACjB;AACA;AACA;;AAEA,+DAA+D,6BAAM;;AAErE;AACA,iCAAiC,OAAO;AACxC,mBAAmB,gCAAS;AAC5B;AACA;;AAEA;AACA;;AAEA,MAAM,2BAAI;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kCAAW;AACpB,+BAA+B,2BAAI;AACnC;AACA,SAAS,oCAAa;AACtB;AACA,SAAS,iCAAU;AACnB;;AAEA,SAAS,iCAAU;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,OAAO;AACxC;AACA;AACA;AACA,wCAAwC,iCAAU;AAClD;AACA;;AAEA,YAAY,gCAAS;AACrB;AACA;;AAEA,SAAS,iCAAU;AACnB;AACA,gBAAgB,oCAAa;AAC7B,GAAG;AACH,gBAAgB,iCAAU;AAC1B;AACA;AACA;AACA,KAAK;AACL,2BAA2B,gCAAS;AACpC;AACA;AACA,iCAAU;AACV;AACA,WAAW,kCAAW;AACtB,GAAG;;AAEH;AACA;AACA,iBAAiB,iCAAU;AAC3B;AACA;AACA;AACA;;AAEA;;AAEA,SAAS,iCAAU;AACnB;AACA,gBAAgB,6BAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS,gCAAS;AAClB;AACA;AACA;;AAEA;AACA,CAAC;;AAED,SAAS,8BAAO;AAChB;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA;AACA,CAAC;AACD;;AAEA,SAAS,+BAAQ;AACjB;AACA;;AAEA;AACA;AACA,QAAQ,gCAAS;AACjB;AACA;;AAEA;AACA,CAAC;;AAED,SAAS,+BAAQ;AACjB;AACA;;AAEA;;AAEA;AACA,CAAC;;AAED,SAAS,+BAAQ;AACjB;AACA;;AAEA,SAAS,4BAAK;AACd;AACA;AACA;;AAEA,SAAS,kCAAW;AACpB;AACA;AACA;;AAEA,sBAAsB,4BAAK;AAC3B,QAAQ,4BAAK;AACb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA,SAAS,8BAAO;AAChB;AACA;AACA,iCAAiC,oDAAM;AACvC,mCAAmC,qCAAc;AACjD,CAAC;AACD;;AAEA,SAAS,qCAAc;AACvB;AACA;;AAEA,8BAAO;AACP;AACA;AACA,aAAa,WAAW;AACxB,aAAa,cAAc;AAC3B;AACA,aAAa,OAAO;AACpB;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,cAAc,OAAO;AACrB;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA,aAAa,OAAO;AACpB,mBAAmB;AACnB;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,aAAa,MAAM;AACnB,aAAa,KAAK;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB,gCAAS;;AAEzB;;AAEA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,aAAa,MAAM;AACnB,aAAa,KAAK;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,aAAa,kCAAW;AACxB;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,KAAK;AAClB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA,SAAS,+BAAQ;AACjB;AACA;AACA,qBAAqB,qCAAc;AACnC;AACA,+BAAQ;AACR;AACA;AACA,aAAa,WAAW;AACxB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,cAAc;AAC3B;AACA,aAAa,OAAO;AACpB;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,cAAc;AAC3B;AACA,aAAa,OAAO;AACpB;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,SAAS;AACvB;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA,MA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EH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,2BAAI;AACf,GAAG;;AAEH;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,cAAc;AAC3B;AACA,aAAa,OAAO;AACpB;AACA,cAAc,YAAY;AAC1B;AACA;AACA,IAAI,2BAAI;;AAER;AACA,MAAM,oCAAa;AACnB;AACA;AACA,wBAAwB,YAAY,GAAG,aAAa;AACpD,OAAO;;AAEP,wDAAwD,aAAa;AACrE;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,+BAAQ,MAAM,gCAAS,UAAU,4BAAK;AACnD,MAAM,oCAAa;AACnB;AACA;AACA;AACA,OAAO;AACP;;AAEA,iBAAiB,mCAAY;;AAE7B;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+BAAQ;AACd;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,OAAO;AACxC;AACA;;AAEA;AACA;AACA;AACA,eAAe,4BAAK;AACpB;;AAEA;AACA;AACA,QAAQ,mCAAY;AACpB;AACA;AACA,SAAS;AACT;;AAEA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wCAAwC;;AAExC;AACA;AACA;AACA,QAAQ,mCAAY;AACpB,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,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AAkF;;AAElF;AACA,QAAQ,4BAAK;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,gBAAgB;;AAEhB,0BAA0B;AAC1B;;AAEA;AACA;AACA,KAAK;AACL,MAAM,4BAAK;AACX,KAAK;;;AAGL,qBAAqB;AACrB,GAAG;;AAEH;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,SAAS;AACT;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA,aAAa,OAAO;AACpB,aAAa,KAAK;AAClB,aAAa,eAAe;AAC5B,aAAa,OAAO;AACpB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,MAAM;;;AAGN;AACA;AACA,KAAK;AACL;AACA,KAAK;;;AAGL;AACA,MAAM,4BAAK;AACX;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,oCAAa;AAC3B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;;AAEA,CAAC,EAAE;;AAEH,SAAS,4BAAK;AACd;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8CAA8C,4BAA4B;AAC1E;;AAEA;AACA,uBAAuB,iCAAU;AACjC,qBA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M,yCAAK;AACX;;AAEA;AACA;AACA,yBAAyB,yBAAM;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,WAAW,kCAAkC;AAC7C,WAAW,kCAAkC;AAC7C,WAAW,kCAAkC;AAC7C;;AAEA,SAAS,yBAAM;AACf,EAAE,8BAAS;AACX;AACA,4CAAQ,CAAC,yBAAM,EAAE,8BAAS;AAC1B;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA,QAAQ,2CAAO;AACf;AACA;AACA,0BAA0B;AAC1B,OAAO;AACP;AACA;AACA,KAAK;;;AAGL;AACA,oCAAoC,iCAAK;AACzC,kCAAkC,iCAAK;AACvC,gCAAgC,iCAAK;AACrC,kEAAkE,iCAAK;;AAEvE;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA,kBAAkB,iCAAK;AACvB;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,6CAA6C,iCAAK;AAClD;AACA;AACA,OAAO;AACP;AACA;;AAEA,2BAA2B,iCAAK;AAChC;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,EAAE;AACb;AACA,WAAW,EAAE;AACb;AACA,WAAW,SAAS;AACpB;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA;;AAEA,SAAS,gCAAa;AACtB,EAAE,8BAAS;AACX;AACA,4CAAQ,CAAC,gCAAa,EAAE,8BAAS;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,8BAAY;AACrC;AACA;AACA,gBAAgB,2BAAS;AACzB,uCAAuC,8BAAY;AACnD,6BAA6B,6BAAW;AACxC,6BAA6B,6BAAW;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,8BAAY;AAC7B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA,UAAU,8CAAU;AACpB;AACA;AACA;AACA,SAAS;;;AAGT;AACA,OAAO;AACP,eAAe,4CAAQ;AACvB;;AAEA,0CAA0C,6BAAM;AAChD;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,mBAAmB,6BAAM;AACzB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK,mBAAmB,gCAAc;AACtC,0CAA0C,+BAAa,mBAAmB,wCAAI,UAAU;AACxF;;AAEA,0DAA0D,wCAAI;AAC9D,6BAA6B,wCAAI;AACjC;;AAEA,2CAA2C,6BAAM;AACjD;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,iBAAiB,+BAAa;AAC9B,2CAA2C,6BAAM;AACjD;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,MAAM,0BAAO;;AAEb,MAAM,0BAAO;;AAEb,MAAM,0BAAO;;AAEb,MAAM,0BAAO;AACb;AACA;AACA;AACA,WAAW,OAAO;AAClB;;;AAGA,SAAS,2BAAQ;AACjB,EAAE,8BAAS,cAAc;AACzB;AACA,2BAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,2BAAQ,EAAE,8BAAS;AAC5B;AACA,0BAA0B,0BAAO;A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AY;;AAEZ,aAAa,4BAAS,uCAAuC;;AAE7D,oDAAoD,OAAO;AAC3D;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED,SAAS,8BAAW;AACpB;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;;AAEA,SAAS,iCAAc;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;;AAEA,SAAS,4BAAS;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,SAAS,4BAAS;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA,GAAG;AACH,iBAAiB,yBAAyB,OAAO;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH,yCAAyC,OAAO;AAChD;;AAEA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEoM;;;ACzhCrL,uDAAM,EAAC;;;ACAtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;;ACpED;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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QAAG,oCAAoC,QAAG;AACzE,6CAA6C,YAAG;;AAEhD;AACA;AACA;AACA,kBAAkB,wBAAc,CAAC,mBAAS,UAAU,mBAAS;AAC7D,QAAQ,mCAAyB;AACjC,2BAA2B,wBAAc;AACzC,QAAQ,mCAAyB;AACjC,4DAA4D,SAAI;AAChE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAO,YAAY,gBAAO,WAAW,aAAQ;AAChE,CAAC;;;AC5ED,UAAU,aAAO;AACjB;AACA;AACA;AACA;;AAEe,SAAS,WAAK;AAC7B,oBAAoB,aAAO;AAC3B;;;ACRqC;AACA;AACM;AACS;AACrB;;AAEhB;AACf;AACA;AACA,qBAAqB,WAAU;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,mBAAmB,WAAK;AACxB,0BAA0B,eAAe;AACzC;AACA;AACA,UAAU,MAAU,WAAW,wBAAmB;AAClD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wCAAwC,iBAAY;AACpD;;AAEA;AACA;AACA,CAAC;;AAED,SAAS,iBAAY;AACrB;AACA;;AAEA;AACA;AACA,SAAS,wBAAmB;AAC5B,oCAAoC,WAAM,GAAG,gBAAO,GAAG,WAAM;AAC7D,oCAAoC,WAAM,GAAG,gBAAO,GAAG,WAAM;AAC7D;;;AClI8B;AACsC;;AAErD,8DAAI;AACnB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BAAS;AACnB,EAAE,mCAAyB;AAC3B,eAAe,SAAI;AACnB,+CAA+C,YAAG,GAAG,gBAAO,IAAI,YAAG;AACnE;;AAEe;AACf,eAAe,mBAAQ;AACvB,eAAe,mBAAQ;AACvB,kBAAkB,mBAAQ;AAC1B;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA,YAAY,gBAAO,UAAU,gBAAO;AACpC;;AAEA;AACA;AACA,4CAA4C,YAAO;AACnD,+CAA+C,YAAO;AACtD;AACA,aAAa,sBAAa,SAAS,YAAO,UAAU,YAAO;AAC3D,IAAI,mBAAY;AAChB,SAAS;AACT;AACA;AACA;;AAEA;AACA,sEAAsE,mBAAQ;AAC9E;;AAEA;AACA,sEAAsE,mBAAQ;AAC9E;;AAEA;AACA,yEAAyE,mBAAQ;AACjF;;AAEA;AACA,CAAC;;;ACvEuH;AAC9E;AACsB;AACtB;AACZ;;AAEf;AACf,WAAW,QAAG;AACd,kBAAkB,YAAO;AACzB;AACA,sBAAsB,QAAG,OAAO,gBAAO,CAAC;;AAExC;AACA,IAAI,mBAAY;AAChB;;AAEA;AACA,WAAW,QAAG,WAAW,QAAG;AAC5B;;AAEA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAE,IAAI,OAAE;AACxD;AACA;AACA;AACA,yBAAyB,UAAU,oBAAoB,UAAU;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,mBAAS;AACtB,aAAa,mBAAS;;AAEtB;AACA;AACA;AACA,aAAa,wBAAc;AAC3B,eAAe,sBAAY;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB,wBAAc;AAC9B,YAAY,wBAAc;AAC1B,YAAY,wBAAc;AAC1B,IAAI,6BAAmB;;AAEvB;AACA;AACA,YAAY,sBAAY;AACxB,aAAa,sBAAY;AACzB,2BAA2B,sBAAY;;AAEvC;;AAEA,YAAY,aAAI;AAChB,YAAY,wBAAc;AAC1B,IAAI,6BAAmB;AACvB,QAAQ,mBAAS;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB,QAAG,SAAS,OAAE,IAAI,gBAAO;AACzC,oCAAoC,gBAAO;;AAE3C;;AAEA;AACA;AACA;AACA,sCAAsC,QAAG,mBAAmB,gBAAO;AACnE;AACA,kBAAkB,OAAE;AACpB,eAAe,wBAAc;AAC7B,MAAM,6BAAmB;AACzB,iBAAiB,mBAAS;AAC1B;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,OAAE;AACrC;AACA,+BAA+B;AAC/B,mCAAmC;AACnC,4BAA4B;AAC5B,gCAAgC;AAChC;AACA;;AAEA,SAAS,QAAI,gEAAgE,OAAE,WAAW,OAAE;AAC5F,CAAC;;;AChLc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;AC1DuC;AACH;AACJ;AACI;AACN;;AAE/B,IAAI,iBAAO,QAAQ,iBAAO,IAAI,iBAAO;;AAErC;AACA;;AAEe,SAAS,uBAAa;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,WAAW,QAAG,cAAc,gBAAO;AACnC,UAAU,QAAG,cAAc,gBAAO;AAClC,UAAU,QAAG,cAAc,gBAAO;AAClC,gCAAgC;AAChC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,WAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC,OAAO;AAChD,kHAAkH,OAAO;AACzH;AACA,yBAAyB,yEAAyE;AAClG,gBAAgB,0EAA0E;AAC1F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,WAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,MAAU;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,iCAAiC,iBAAO,WAAW,iBAAO,sBAAsB,iBAAO,WAAW,iBAAO;AACzG,gCAAgC,iBAAO,WAAW,iBAAO,oBAAoB,iBAAO,WAAW,iBAAO;AACtG,cAAc,SAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;ACvKe;AACf;AACA,YAAY,qBAAW;AACvB;AACA,CAAC;;AAEM,SAAS,qBAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,yBAAyB,yBAAyB,EAAE;AACpD,sBAAsB,sBAAsB,EAAE;AAC9C,yBAAyB,yBAAyB,EAAE;AACpD,uBAAuB,uBAAuB,EAAE;AAChD,4BAA4B,4BAA4B,EAAE;AAC1D,0BAA0B,0BAA0B;AACpD;;;ACzBkD;AACL;;AAE7C,SAAS,OAAG;AACZ;AACA;AACA;AACA,EAAE,UAAS,2BAA2B,WAAY;AAClD,YAAY,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AAI,qBAAK;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,+BAA+B,yCAAK;AACpC;AACA;;AAEA;AACA,2DAA2D,oBAAI;AAC/D;;AAEA;AACA;;AAEA,SAAS,oBAAI;AACb;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,SAAS,wBAAQ;AACjB;AACA;AACA;;AAEA,0BAA0B,4BAAY;;AAEtC;AACA;;AAEA,SAAS,4BAAY;AACrB;AACA;AACA;;AAEA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,+BAAe;AACvB;AACA;;AAEA;AACA;;AAEA,SAAS,+BAAe;AACxB;AACA,SAAS,yBAAS,aAAa,sBAAM;AACrC;;AAEA,SAAS,yBAAS;AAClB;AACA;;AAEA,SAAS,sBAAM;AACf;AACA;;AAEA,SAAS,wBAAQ;AACjB;AACA,aAAa,0CAAM;AACnB;AACA;AACA;AACA,sBAAsB,qCAAQ;AAC9B,WAAW,SAAK;AAChB;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B;AACA,WAAW,cAAc;AACzB;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA,SAAS,0BAAU;AACnB,EAAE,8BAAS;AACX;AACA,0BAAU;AACV;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,0BAAU,EAAE,8BAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,oCAAQ;AACnC,kBAAkB,wBAAQ;AAC1B,6BAA6B,sBAAM;AACnC;AACA;AACA;AACA,4BAA4B;;AAE5B,yEAAyE,2CAAO,6BAA6B;;AAE7G,MAAM,8BAAc,oBAAoB,WAAW;;AAEnD;AACA,oBAAoB,6BAAQ,IAAI,6BAAM;AACtC;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA,CAAC;;AAED,SAAS,sBAAM;AACf,YAAY,wBAAQ;AACpB,wDAAwD,OAAG;AAC3D;;AAEA,SAAS,8BAAc;AACvB;AACA;AACA,MAAM,8CAAU;AAChB,MAAM,8CAAU;AAChB;AACA,cAAc,4CAAQ;AACtB,cAAc,4CAAQ;AACtB;AACA;AACA,gBAAgB,yBAAS;AACzB;;AAEA,SAAS,yBAAS;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS,sBAAM;AACf,2BAA2B,wCAAY;AACvC;AACA;;AAEA,SAAS,sBAAM;AACf,SAAS,8CAAU,UAAU,4CAAQ;AACrC,CAAC;;;AAGD,SAAS,yBAAS;AAClB;AACA;AACA,eAAe,+BAAG;AAClB;AACA;AACA;AACA,YAAY;;;AAGZ;AACA,eAAe,sBAAM;AACrB;AACA,SAAS,sBAAM;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA,MAAM,qBAAK;AACX,MAAM,qBAAK;AACX,MAAM,qBAAK;AACX,MAAM,qBAAK;AACX,MAAM,qBAAK;AACX,MAAM,qBAAK;AACX,KAAK;AACL,MAAM,qBAAK;AACX,MAAM,qBAAK;AACX,MAAM,qBAAK;AACX;AACA,KAAK;AACL,MAAM,qBAAK;AACX,MAAM,qBAAK;AACX,MAAM,qBAAK;AACX;AACA,KAAK;AACL;;;AAGA,iDAAiD,OAAG;;AAEpD,+BAA+B,QAAQ;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,sBAAM;AACzC;;AAEA;AACA,mCAAmC,sBAAM;AACzC;;AAEA;AACA,wCAAwC,sBAAM;AAC9C;;AAEA;AACA;;AAEA;AACA;;AAEA,+BAA+B,yCAAK;AACpC;AACA;;AAEA;AACA;AACA,0BAA0B,yCAAK;AAC/B;AACA;AACA;;AAEA;AACA;AACA,QAAQ,yCAAK;AACb;AACA,wBAAwB,yCAAK;AAC7B;AACA;;AAEA;AACA;;AAEA,SAAS,qBAAK;AACd;;AAEA,iBAAiB,OAAO;AACxB,2BAA2B,WAAW;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS,qBAAK;AACd;;AAEA,iBAAiB,OAAO;AACxB,2BAA2B,WAAW;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,cAAc;AACzB;AACA,WAAW,yBAAyB;AACpC,WAAW,yBAAyB;AACpC,WAAW,yBAAyB;AACpC,WAAW,2BAA2B;AACtC;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA,SAAS,qBAAK;AACd,EAAE,8BAAS;AACX;AACA,qBAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,MAAM,sBAAM;AACZ,SAAS,sBAAM;AACf,EAAE,sBAAM;AACR;AACA;AACA,4CAAQ,CAAC,qBAAK,EAAE,8BAAS;AACzB;AACA;AACA;AACA;AACA,iBAAiB,yBAAS;AAC1B,sCAAsC,wCAAY;AAClD,cAAc,sBAAM,CAAC,yBAAS;AAC9B;AACA;;AAEA;AACA,qBAAqB,kBAAkB;;AAEvC;AACA,KAAK;;;AAGL,6BAA6B,6BAAM;AACnC;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,CAAC;AACD,SAAS,yBAAS;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;;AAGR;AACA;AACA,GAAG;AACH,iBAAiB,yBAAyB,OAAO;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,cAAc;AACzB;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA,WAAW,yBAAyB;AACpC,WAAW,yBAAyB;AACpC,WAAW,yBAAyB;AACpC,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,cAAc;AACzB;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;;AAEA,SAAS,uBAAO;AAChB,EAAE,8BAAS;AACX;AACA,uBAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,uBAAO,EAAE,8BAAS;AAC3B;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,wBAAQ;AAC1B;AACA,iCAAiC,wBAAQ;AACzC;AACA;AACA;;AAEA;AACA;AACA,aAAa,sBAAM,CAAC,yBAAS;AAC7B,aAAa,yBAAS;AACtB;AACA;AACA;;AAEA,aAAa,2CAAO;AACpB;AACA;AACA;AACA,2DAA2D,6BAAM;AACjE;AACA;;AAEA,CAAC;;AAED,MAAM,uBAAO;AACb,MAAM,iCAAiB;AACvB,MAAM,0BAAU;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,2BAA2B;AACtC;AACA,WAAW,oBAAoB;AAC/B;AACA;;AAEA,SAAS,uBAAO;AAChB,EAAE,8BAAS;AACX;AACA,uBAAO;AACP;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,uBAAO,EAAE,8BAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,oCAAQ;AAClD;AACA;AACA,qEAAqE,kDAAc,oCAAoC,kDAAc,gCAAgC,kDAAc;;AAEnL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,cAAc,uBAAO;AACrB;AACA,gBAAgB,0BAAU;AAC1B;AACA;AACA,OAAO;AACP;;AAEA;AACA,YAAY,iCAAiB;AAC7B;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,4BAA4B;AACvC;AACA,WAAW,oBAAoB;AAC/B;AACA,WAAW,OAAO;AAClB;AACA;;AAEA,SAAS,uBAAO;AAChB,EAAE,8BAAS;AACX;AACA,uBAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,uBAAO,EAAE,8BAAS;AAC3B;AACA;AACA;AACA,2BAA2B,oCAAQ;AACnC;AACA;;AAEA;AACA;AACA,0BAA0B,wCAAiB;AAC3C;AACA,KAAK;AACL,uBAAuB,oCAAQ;AAC/B;;AAEA,iBAAiB,wBAAQ;AACzB;AACA;AACA;AACA;;AAEA,CAAC;;AAED,SAAS,wBAAQ;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,4BAA4B;AACvC;AACA,WAAW,2BAA2B;AACtC;AACA,WAAW,cAAc;AACzB;AACA;;AAEA,SAAS,wBAAQ;AACjB,EAAE,8BAAS;AACX;AACA,wBAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,wBAAQ,EAAE,8BAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,4BAA4B;AACvC;AACA,WAAW,oBAAoB;AAC/B;AACA,WAAW,OAAO;AAClB;AACA;;AAEA,SAAS,wBAAQ;AACjB,EAAE,8BAAS;AACX;AACA,wBAAQ;AACR;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,wBAAQ,EAAE,8BAAS;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,8BAAc,CAAC,wCAAiB,2BAA2B,yCAAK;AAC3F;AACA;AACA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,SAAS,8BAAc;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,yBAAS;AAClB,EAAE,8BAAS;AACX,mBAAmB,mBAAY;AAC/B;AACA,yBAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,yBAAS,EAAE,8BAAS;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,8CAAU;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB,4BAAO;AAC5B,KAAK;AACL,qBAAqB,6BAAM;AAC3B;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B;AACA,WAAW,OAAO;AAClB;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA,SAAS,uBAAO;AAChB,EAAE,8BAAS;AACX;AACA,uBAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,uBAAO,EAAE,8BAAS;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,oCAAQ;AACnC,kBAAkB,wBAAQ;AAC1B,gBAAgB,sBAAM;AACtB;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAG,iBAAiB,OAAG;AAC5C;AACA;AACA,yBAAyB;;AAEzB,gBAAgB,0CAAM,GAAG,UAAU;;AAEnC,4BAA4B,OAAG,iBAAiB;AAChD;;AAEA,cAAc,wBAAQ,2BAA2B,4CAAQ,oCAAoC,4CAAQ;AACrG,KAAK;AACL;AACA;;AAEA,CAAC,EAAE;;AAEH,SAAS,sBAAM;AACf;;AAEA,MAAM,8CAAU;AAChB,eAAe,SAAG;;AAElB,YAAY,0BAAU;AACtB,GAAG;AACH;AACA,QAAQ,4CAAQ,CAAC,SAAG;AACpB;;AAEA;AACA,CAAC;;;AAGD,SAAS,wBAAQ;AACjB;;AAEA,MAAM,8CAAU;AAChB;;AAEA,YAAY,0BAAU;AACtB,GAAG;AACH,QAAQ,4CAAQ;AAChB,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;;AAGD,SAAS,0BAAU;AACnB,OAAO,8CAAU;AACjB,cAAc,0CAAK,CAAC,kDAAc;AAClC;AACA,CAAC;;;AAGD,SAAS,wBAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iCAAI;AACxC,cAAc,SAAM;AACpB;AACA;AACA;;AAEA,yBAAyB,QAAQ;AACjC;;AAEA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;;AAEA,SAAS,0BAAU;AACnB,EAAE,8BAAS;AACX,sBAAsB;AACtB;AACA,4CAAQ,CAAC,0BAAU,EAAE,8BAAS;AAC9B;AACA;;AAEA;AACA,0BAA0B,sBAAM;AAChC,MAAM,2CAAoB;AAC1B,6BAA6B,mBAAG;AAChC,OAAO;AACP,KAAK;AACL,MAAM,2CAAoB;AAC1B,8BAA8B,mBAAG;AACjC,OAAO;AACP;;AAEA;AACA,eAAe,mBAAG;AAClB;AACA;;AAEA,CAAC;;AAED,SAAS,mBAAG;AACZ,eAAe,8BAAc;AAC7B;AACA;;AAEA,SAAS,sBAAM;AACf,sBAAsB,iCAAU;AAChC,oBAAoB,yCAAK;AACzB;AACA;;AAEA,SAAS,mBAAG;AACZ,MAAM,8CAAU;AAChB;;AAEA,SAAS,8BAAc;AACvB,SAAS,yCAAK;AACd;AACA,UAAU,iCAAiB;AAC3B,6CAA6C,yBAAS;AACtD;AACA;;AAEA,SAAS,yBAAS;AAClB,oBAAoB,iCAAiB,gBAAgB,yCAAK,+CAA+C,uBAAO;AAChH,UAAU,uBAAO;AACjB;AACA,GAAG;AACH;;AAEkO;;;ACp6CnN;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;;AAEA,2EAA2E,OAAO;AAClF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACvCc;AACf;AACA;AACA,SAAS,OAAG;AACZ,CAAC;;AAED,SAAS,OAAG;AACZ,wCAAwC;;AAExC;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD,GAAG;AACH;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,IAAI,OAAG;AACP;;AAEA;AACA;;;ACnFe;AACf,kDAAkD;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AC1Cc;AACf;AACA;AACA,8CAA8C;AAC9C,GAAG;AACH;AACA,CAAC;;;ACNc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACN4B;;AAEd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,QAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAY,QAAI;AAChB,YAAY,QAAI;AAChB,YAAY,QAAI;AAChB,YAAY,QAAI;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACrEc;AACf,0FAA0F;;AAE1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP,kCAAkC,OAAO;AACzC;AACA;;;AC7De;AACf;AACA,CAAC;;;ACFc;AACf;AACA;AACA,gCAAgC;AAChC,GAAG;AACH;AACA,CAAC;;;ACN4B;;AAEd;AACf;AACA,2BAA2B,QAAI;AAC/B;AACA;AACA;AACA,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C;AACA;AACA;AACA,CAAC;;;ACf4B;;AAEd;AACf;AACA,iCAAiC,QAAI;AACrC;AACA;AACA;AACA;AACA,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACpBM;AACP;AACA;;AAEe;AACf;AACA,CAAC;;;ACNM;AACP;AACA;;AAEe;AACf;AACA,CAAC;;;ACNwD;AACrB;AACF;AACI;AACJ;AACmC;AACnC;AACA;AACE;AACU;AACN;AACA;;AAEzB,SAAS,iBAAQ;AAChC,iBAAiB,iBAAQ,aAAa,QAAQ,kBAAkB,QAAQ;AACxE;AACA;;AAEA,SAAS,iBAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,kBAAS;AAClB,cAAc,gBAAgB;AAC9B,+CAA+C;AAC/C;AACA;;AAEA,IAAI,kBAAS,GAAG,iBAAQ,aAAa,iBAAQ;;AAE7C,kBAAS;AACT,iBAAiB,iBAAQ;AACzB;AACA;AACA;;AAEA;;AAEA,wCAAwC,kBAAS;;AAEjD,YAAY,gDAAgD;AAC5D;AACA,mBAAmB,OAAO;AAC1B;AACA,sCAAsC,qDAAqD;AAC3F,8BAA8B,kBAAS;AACvC;AACA;AACA;;AAEA;AACA;;AAEA,kBAAS,OAAO,OAAQ;AACxB,kBAAS,UAAU,MAAW;AAC9B,kBAAS,SAAS,KAAU;AAC5B,kBAAS,QAAQ,QAAS;AAC1B,kBAAS,UAAU,UAAW;AAC9B,kBAAS,QAAQ,QAAS;AAC1B,kBAAS,UAAU,UAAW;AAC9B,kBAAS,aAAa,SAAc;AACpC,kBAAS,QAAQ,QAAS;AAC1B,kBAAS,QAAQ,QAAS;AAC1B,kBAAS,SAAS,SAAU;AAC5B,kBAAS,cAAc,UAAe;AACtC,kBAAS,KAAK,KAAM;AACpB,kBAAS,KAAK,KAAM;;;ACxEL;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA,CAAC;;;ACFoC;AACA;AACJ;;AAEjC,SAAS,SAAC;AACV;AACA;;AAEA,SAAS,SAAC;AACV;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;;AAEA,6CAA6C,qBAAQ;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC,aAAa,iBAAQ,QAAQ,SAAC,EAAE,SAAC;AACjC,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,MAAM;AACnC,6BAA6B,MAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sEAAsE,qBAAQ;AAC9E;;AAEA;AACA,CAAC;;;ACnGD,IAAI,aAAI,IAAI;;AAEZ;AACA,8CAA8C,IAAI,OAAO;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA+D,YAAG;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,YAAG;AAChD,qDAAqD,YAAG;AACxD;;AAEA;AACA,GAAG;AACH;AACA,iBAAiB;AACjB;AACA;AACA,GAAG;AACH;AACA,kFAAkF,OAAO;AACzF;AACA,+CAA+C,OAAO;AACtD,GAAG;AACH;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;;AAEA,SAAS,YAAG;AACZ,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;;AAEA,SAAS,YAAG;AACZ,kCAAkC,OAAO;AACzC;AACA,gBAAgB,aAAI;AACpB;AACA;AACA;AACA,mCAAmC,4BAA4B;AAC/D;AACA;;AAEe,yDAAQ,EAAC;;;ACnFxB,IAAI,WAAK;AACT;AACA,IAAI,cAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qIAAqI,mBAAmB;;AAEjJ;AACP;AACA;;AAEA;AACA;AACA;;AAEO,SAAS,WAAK;AACrB;AACA;AACA;AACA;;AAEA,WAAK,aAAa,WAAK;AACvB,eAAe,WAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAAS,WAAK;AACrB,cAAc,WAAK;AACnB;AACA;AACA;;AAEO;AACP,QAAQ;AACR,IAAI,WAAK,CAAC;AACV;AACA;AACA;AACA;AACA;AACA,IAAI,WAAK;AACT;;AAEA;AACA;AACA,EAAE,WAAK;AACP;AACA;AACA,GAAG;AACH,IAAI,WAAK;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,WAAK,SAAS;AACpB;AACA,8BAA8B;AAC9B;AACA;AACA,QAAQ,cAAQ,EAAE,cAAQ,iBAAiB,cAAQ;AACnD,GAAG;AACH,SAAS,cAAQ,2BAA2B,cAAQ;AACpD,IAAI,WAAK;AACT;AACA;;;AC7GA;AACA,MAAM,KAAC;AACP,MAAM,KAAC;AACP,MAAM,KAAC,cAAc;;AAEN;AACf;AACA,qBAAqB,KAAC,OAAO,KAAC,IAAI,KAAC,IAAI,KAAC;AACxC,CAAC;;;ACRoC;AACN;AACJ;;AAEpB,SAAS,YAAC;AACjB;AACA;;AAEO,SAAS,YAAC;AACjB;AACA;;AAEA,IAAI,wBAAa;AACjB,IAAI,uBAAY;;AAED;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAK;AACrB,cAAc,YAAQ;AACtB,eAAe,OAAG;;AAElB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA,OAAO;;AAEP,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA,qBAAqB,wBAAa,mCAAmC,uBAAY;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,CAAC;;;AC3JoC;AACA;AACJ;AACI;;AAEtB;AACf;AACA;AACA;AACA;AACA,iBAAiB,qBAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,iBAAQ,QAAQ,YAAC,EAAE,YAAC;AACxD,0BAA0B,OAAO;AACjC;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;AAEA;AACA;;AAEA;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC;AACA;AACA,yBAAyB,MAAM;AAC/B,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC;AACzC;AACA,uBAAuB,MAAM;AAC7B,uBAAuB,MAAM;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnHoC;AACJ;;AAEjC,SAAS,UAAK;AACd;AACA;;AAEA,SAAS,SAAI;AACb;AACA;AACA;AACA;;AAEe;AACf,WAAW,UAAK;AAChB;AACA;AACA,iBAAiB,qBAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,gBAAgB;AACrD,uDAAuD,OAAO;AAC9D;AACA,2DAA2D,MAAM;AACjE,2DAA2D,MAAM;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA,yDAAyD,SAAI;AAC7D,yDAAyD,SAAI;AAC7D;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,CAAC;;;ACpHoC;;AAEtB;AACf,iBAAiB,qBAAQ;AACzB;AACA;AACA;;AAEA,mCAAmC,qBAAQ;;AAE3C;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,iEAAiE,qBAAQ;AACzE;;AAEA;AACA,CAAC;;;ACxCoC;;AAEtB;AACf,iBAAiB,qBAAQ;AACzB;AACA;AACA;;AAEA,mCAAmC,qBAAQ;;AAE3C;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,iEAAiE,qBAAQ;AACzE;;AAEA;AACA,CAAC;;;ACxCyC;AACqD;AACiB;;AAEhH,MAAM,0BAAQ;AACd,UAAU,UAAW;AACrB,WAAW,OAAY;AACvB,SAAS,QAAa;AACtB,QAAQ,QAAS;AACjB,KAAK,cAAM;AACX,KAAK,cAAM;AACX;AACA,MAAM,wBAAM;AACZ,MAAM,6BAAW;AACjB,MAAM,6BAAW;AACjB,MAAM,6BAAW;AACjB;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,cAAc;AACzB;;AAEA,SAAS,uBAAK;AACd,EAAE,8BAAS;AACX;AACA,uBAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,6BAAW;AAC1B,GAAG;AACH;AACA,4CAAQ,CAAC,uBAAK,EAAE,8BAAS;AACzB;AACA;AACA;AACA,4BAA4B,6BAAW;AACvC,oCAAoC;;;AAGpC;AACA,yBAAyB,4BAAU;AACnC,qBAAqB,uBAAK;;AAE1B;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,QAAQ,uBAAK;AACb;AACA,KAAK;;;AAGL,uCAAuC,6BAAW;AAClD;;AAEA;AACA,wBAAwB,cAAc;AACtC,OAAO;AACP;AACA,kDAAkD;AAClD;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,oCAAoC;;AAEpC,8DAA8D,OAAO;AACrE;;AAEA,uBAAuB,wBAAM;AAC7B;AACA;;AAEA,+DAA+D,OAAO;AACtE;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL,+CAA+C,6BAAW;AAC1D;;AAEA,CAAC;;AAED,SAAS,uBAAK;AACd;AACA;;AAEA,SAAS,4BAAU;AACnB,cAAc,cAAe;AAC7B;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,SAAS,uBAAK;AACd;;AAEA,SAAS,uBAAK;AACd,UAAU,yCAAK;AACf;AACA;AACA;AACA;;AAEA,kBAAkB,6BAAW,QAAQ,OAAO;AAC5C,QAAQ,6BAAW;AACnB,cAAc,wBAAM;AACpB;;AAEA,2BAA2B,OAAO;AAClC,WAAW,wBAAM;AACjB,2BAA2B,wBAAM,OAAO,0BAAQ,kBAAkB,0BAAQ;AAC1E;AACA;;AAEA,8BAA8B,OAAO;AACrC,cAAc,wBAAM,YAAY;AAChC;;AAEA;AACA;AACA;;AAEA,SAAS,0BAAQ;AACjB;;AAEA;AACA,QAAQ,8CAAU,6BAA6B,kDAAc;AAC7D;;AAEA;AACA;;AAEA,SAAS,0BAAQ;AACjB;;AAEA,OAAO,kDAAc,CAAC,0BAAQ;AAC9B,IAAI,yCAAK;AACT;;AAEA,MAAM,0BAAQ;;AAEd;AACA,QAAQ,8CAAU,QAAQ,+BAAa;AACvC;;AAEA;AACA;;AAEA,SAAS,+BAAa;AACtB,IAAI,8CAAU;AACd;;AAE0B;;;ACzT1B,SAAS,WAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,wBAAwB,WAAK;AAC7B,CAAC;;;ACXc;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACNc;AACf;AACA;AACA;AACA;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACXc;AACf;AACA;AACA;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACdc;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACPc;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;ACRc;AACf;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;ACNc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7Be;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACNc;AACf;AACA,CAAC;;;ACFc;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACRc;AACf;AACA;AACA,wBAAwB;AACxB,kBAAkB,kCAAkC;AACpD;AACA,GAAG;AACH;AACA,CAAC;;;ACRc;AACf;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;ACbmC;AACF;AACY;AACF;AACV;AACF;AACE;AACA;AACU;AACI;AACV;AACF;AACM;;AAE3B,SAAS,mBAAS;AACjC;AACA;AACA,2CAA2C,qBAAW;AACtD,GAAG;AACH,eAAe,wBAAc;AAC7B;;AAEA,iBAAiB,cAAI;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B,2CAA2C,cAAI;AAC/C;AACA;AACA;AACA;AACA;;AAEA,yBAAyB,uBAAa;AACtC;;AAEA,SAAS,mBAAS;AAClB,SAAS,mBAAS,kBAAkB,kBAAQ;AAC5C;;AAEA,SAAS,wBAAc;AACvB;AACA;;AAEA,SAAS,qBAAW;AACpB;AACA;;AAEA,SAAS,kBAAQ;AACjB;AACA;AACA;;AAEO,SAAS,uBAAa;AAC7B;AACA;AACA;AACA;;AAEO,SAAS,cAAI;AACpB;AACA;AACA;AACA;AACA;;AAEA,cAAI,aAAa,mBAAS;AAC1B,eAAe,cAAI;AACnB,SAAS,eAAU;AACnB,QAAQ,IAAS;AACjB,aAAa,SAAc;AAC3B,cAAc,UAAe;AAC7B,QAAQ,cAAS;AACjB,OAAO,aAAQ;AACf,QAAQ,cAAS;AACjB,QAAQ,cAAS;AACjB,aAAa,SAAc;AAC3B,eAAe,WAAgB;AAC/B,UAAU,MAAW;AACrB,SAAS,eAAU;AACnB,QAAQ,mBAAS;AACjB,qBAAqB,QAAa;AAClC;;;AC1Fe;AACf;AACA;AACA,oBAAoB;AACpB,CAAC;;AAEM;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;ACnBoC;;AAErB;AACf,4BAA4B,OAAO;;AAEnC;AACA;AACA,aAAa,oBAAY;AACzB,aAAa,oBAAY,KAAK,mBAAW;AACzC;;AAEA;AACA,CAAC;;AAED,SAAS,mBAAW;AACpB;;AAEA,MAAM,uBAAe;;AAErB;AACA,aAAa,cAAc;AAC3B,QAAQ,mBAAW;AACnB,WAAW,uBAAe,CAAC,qBAAa;AACxC;AACA;AACA;;AAEA;AACA,aAAa,kBAAkB;AAC/B,mBAAmB,cAAc;AACjC,UAAU,mBAAW,CAAC,qBAAa;AACnC,aAAa,mBAAW,CAAC,qBAAa;AACtC,aAAa,mBAAW,CAAC,qBAAa;AACtC,aAAa,uBAAe,CAAC,qBAAa;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,mBAAW;AACpB;AACA;AACA;;AAEA,SAAS,oBAAY;AACrB;AACA;AACA;;AAEA,SAAS,uBAAe;AACxB,iBAAiB,cAAc;AAC/B,SAAS,oBAAY;AACrB;AACA;AACA;AACA;AACA;;AAEA,SAAS,oBAAY;AACrB;AACA,mBAAmB,qBAAa;AAChC,mBAAmB,qBAAa;AAChC,mBAAmB,qBAAa;AAChC;AACA;;AAEA,SAAS,qBAAa;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,qBAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,qBAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrHgC;AACG;;AAEnC,SAAS,cAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,SAAS,mBAAU;AACnB;AACA;AACA;;AAEA,SAAS,cAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,aAAI;AACb;AACA;AACA;AACA;;AAEO,SAAS,oBAAW;AAC3B,uBAAuB,sBAAK;;AAE5B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE,cAAK;;AAEP;AACA,UAAU,aAAI,aAAa,aAAI,aAAa,aAAI;AAChD;AACA;AACA;;AAEA;AACA,mBAAmB,OAAO;AAC1B,IAAI,cAAK,oCAAoC,aAAI;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAU;AACtB;AACA;AACA;AACA;AACA,OAAO;AACP,YAAY,mBAAU;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA,SAAS,cAAK;AACd;AACA,gBAAgB,cAAK;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,wCAAwC,KAAK,OAAO;;AAEvE;AACA,aAAa,OAAO;;AAEpB;AACA;;AAEe;AACf,EAAE,oBAAW;AACb;AACA,CAAC;;;ACtHM;AACP;AACA;;AAEO;AACP;AACA;AACA;;;ACPO;AACP;AACA;;AAEe;AACf;AACA;AACA;AACA,CAAC;;;ACRyC;AACD;AACa;;AAEtD,SAAS,kBAAa;AACtB;AACA;;AAEe;AACf;AACA;AACA;AACA,gBAAgB,YAAY;;AAE5B;AACA;AACA;AACA,sBAAsB,eAAU;AAChC,qBAAqB,iBAAY;AACjC,sBAAsB,mBAAc;AACpC,KAAK;AACL,sBAAsB,eAAU,CAAC,kBAAa;AAC9C,qBAAqB,iBAAY,CAAC,YAAY;AAC9C,qBAAqB,iBAAY;AACjC,sBAAsB,mBAAc;AACpC;AACA;AACA;;AAEA;AACA,wCAAwC,QAAQ;AAChD;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE,yBAAQ;AAC/E;;AAEA;AACA,CAAC;;AAED,SAAS,eAAU;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,OAAO;AAC/B,UAAU,oBAAW;AACrB,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;;AAEA,SAAS,mBAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9Ee;AACf;AACA;AACA;AACA;AACA,CAAC;;;ACLc;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACX0C;AACC;;AAE7B;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnDuC;AACiB;;AAEzD,IAAI,gBAAO,IAAI,UAAU;AACzB,IAAI,kBAAS;;AAEb,SAAS,kBAAS;AAClB;AACA;;AAEA,SAAS,wBAAe;AACxB;AACA;;AAEe;AACf,WAAW,kBAAS;AACpB,iBAAiB,wBAAe;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB,0CAA0C,cAAI;AAC9C;AACA;AACA,wDAAwD,kBAAS;AACjE;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,uBAAuB,kBAAS;AAChC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,gBAAO;AACzB,oCAAoC,oCAAoC,KAAK,EAAE,aAAa,uBAAa;AACzG;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;;AAEA;AACA,0CAA0C,QAAQ;AAClD;;AAEA;AACA,CAAC;;;AC1EyC;;AAE1C,SAAS,sBAAiB;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,aAAQ;AACjB;AACA;AACA;;AAEA;AACA,SAAS,cAAS;AAClB;AACA;AACA;;AAEA;AACA;AACA,SAAS,gBAAW;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,kBAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,iBAAY;AACrB;AACA;;AAEA,SAAS,aAAQ;AACjB;AACA;AACA;AACA,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb,gBAAgB;AAChB,aAAa;AACb;;AAEA,aAAQ,2BAA2B,cAAI;;AAEvC,SAAS,aAAQ;AACjB,iBAAiB,aAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B,kDAAkD,aAAQ;AAC1D;AACA;AACA;AACA;;AAEA,qBAAqB,aAAQ;AAC7B;AACA;;AAEA;AACe;AACf,mBAAmB,sBAAiB;AACpC;AACA;AACA;;AAEA;AACA,YAAY,aAAQ;;AAEpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,kBAAa;AACnB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAS,aAAa,aAAQ;AACjD,cAAc,aAAQ;AACtB,cAAc,cAAS;AACvB;AACA;AACA;AACA,UAAU,gBAAW,CAAC,iBAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,cAAS;AAC3B;AACA;AACA;AACA,kBAAkB,aAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;AC5OD,SAAS,yBAAiB;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf,mBAAmB,yBAAiB;AACpC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnFc;AACf;AACA;AACA;;AAEA,6BAA6B,OAAO;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC;;;AC7Cc;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACX4B;AACE;;AAEhB;AACf,sBAAsB,aAAK,GAAG,IAAI;AAClC,CAAC;;;ACLmC;AACE;;AAE/B,IAAI,YAAG;;AAEP,SAAS,sBAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA,UAAU,QAAQ;AAClB;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB,OAAO;AAC9D;AACA;;AAEA;AACA,qBAAqB,8DAA8D;AACnF,kBAAkB,IAAW;AAC7B,SAAS,aAAY;AACrB;AACA;;AAEA;AACA;;AAEe;;AAEf;AACA,IAAI,sBAAa;AACjB;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,EAAE,YAAG,CAAC,EAAC;;;ACjE4B;AACE;AACW;;AAElC;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD,OAAO;AACxD,sBAAsB,IAAW;AACjC,aAAa,aAAY;AACzB;AACA;AACA,KAAK;AACL,gCAAgC,sBAAa;AAC7C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,EAAE,YAAG,CAAC,EAAC;;;ACnC2B;AACE;AACI;AACa;;AAEvC;AACf,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC,mBAAmB,YAAY;AAC/B,qBAAqB,YAAY;AACjC,sBAAsB,YAAY;AAClC,oBAAoB,YAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAsC,QAAQ;AAC9C;;AAEA;AACA;AACA;;A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AACA,GAAG;AACH;AACA;AACA,4CAAQ,CAAC,+BAAS,EAAE,8BAAS;AAC7B;AACA;AACA;AACA;AACA;AACA,eAAe,yCAAK;;AAEpB;AACA;AACA,sBAAsB;;AAEtB,yCAAyC,4BAAO,UAAU;;AAE1D;AACA;AACA;;AAEA,qBAAqB,4BAAO,YAAY,4BAAO;AAC/C,uBAAuB,6BAAM;AAC7B;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA,sCAAsC,4BAAO,UAAU;;AAEvD;AACA,gBAAgB,4BAAO,sBAAsB,4BAAO;AACpD;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA,CAAC;;AAED,MAAM,2BAAK;AACX,UAAU,MAAa;AACvB,QAAQ,IAAW;AACnB,SAAS,aAAY;AACrB,aAAa,SAAgB;AAC7B,YAAY,QAAe;AAC3B,cAAc,kBAAiB;AAC/B;AACA,MAAM,8BAAQ;AACd;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B;;AAEA,SAAS,6BAAO;AAChB,EAAE,qCAAe;AACjB;AACA,6BAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,cAAc,8BAAQ;AACtB,eAAe,8BAAQ;AACvB,GAAG;AACH;AACA,4CAAQ,CAAC,6BAAO,EAAE,qCAAe;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc,WAAO;;AAErB;AACA;AACA;AACA;;AAEA;AACA,UAAU,kDAAc,CAAC,2BAAK,aAAa,2BAAK,KAAK,KAAK,yCAAK;AAC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;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,6BAAW;AACpB;AACA;AACA;AACA,SAAS,2BAAS;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,6CAA2B;AACpC;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,6BAAW,iDAAiD,2BAAS,mDAAmD,2BAAS;AAC1I;AACA;AACA;AACA;;AAEA,YAAY,2BAAS;AACrB;AACA,SAAS;AACT;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kCAAW,8BAA8B;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;;AAGhB,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC,sBAAsB,WAAW;AACjC,wBAAwB,WAAW;AACnC;;AAEA;AACA;AACA;AACA;AACA,OAAO;;;AAGP,sBAAsB,WAAW;AACjC,wBAAwB,WAAW;AACnC;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B,0CAA0C,6BAAW,iDAAiD,2BAAS;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,MAAM,uBAAK;AACX,MAAM,uBAAK;AACX,SAAS,yCAAuB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kCAAW;AAC3B;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;;AAGlB,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA,wDAAwD;;AAExD,uDAAuD;;AAEvD;AACA,+BAA+B;;AAE/B,4EAA4E;AAC5E;;AAEA;;AAEA,uBAAuB,OAAO;AAC9B,mBAAmB,uBAAK;AACxB,mBAAmB,uBAAK;AACxB;AACA,SAAS;;;AAGT;AACA;AACA;AACA,oBAAoB;;AAEpB,aAAa,6BAAW,iDAAiD,2BAAS,mDAAmD,2BAAS;AAC9I;AACA;AACA;AACA;;AAEA,gBAAgB,2BAAS;AACzB;AACA,aAAa;AACb;AACA;AACA,WAAW;;;AAGX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B,0CAA0C,6BAAW,iDAAiD,2BAAS;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,MAAM,wBAAM;AACZ,MAAM,2BAAS;AACf,SAAS,gCAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;;AAGZ,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,sBAAI;AACjB;AACA;AACA,SAAS;AACT;AACA,sBAAsB,kCAAW;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,UAAU,sBAAI;AACd;AACA;AACA;AACA,kBAAkB,wBAAM;AACxB,qBAAqB,2BAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED,SAAS,sBAAI;AACb,0GAA0G,+BAAa;AACvH;;AAEA,SAAS,+BAAa;AACtB;AACA;;AAEA,MAAM,qBAAG;AACT,MAAM,wBAAM;AACZ,MAAM,wBAAM;AACZ,MAAM,sBAAI;AACV,MAAM,wBAAM;AACZ,MAAM,uBAAK,OAAO;;AAElB,MAAM,4BAAU;AAChB,cAAc,qBAAG,GAAG,sBAAI;AACxB,SAAS,qBAAG,GAAG,wBAAM;AACrB,eAAe,qBAAG,GAAG,uBAAK;AAC1B,UAAU,wBAAM,GAAG,sBAAI;AACvB,YAAY,wBAAM,GAAG,wBAAM;AAC3B,WAAW,wBAAM,GAAG,uBAAK;AACzB,iBAAiB,wBAAM,GAAG,sBAAI;AAC9B,YAAY,wBAAM,GAAG,wBAAM;AAC3B,kBAAkB,wBAAM,GAAG,uBAAK;AAChC;AACA,MAAM,gCAAc;AACpB,WAAW,qCAAmB;AAC9B,oBAAoB,6CAA2B;AAC/C,eAAe,yCAAuB;AACtC;AACA,SAAS,6BAAW;AACpB;AACA;AACA;AACA,kBAAkB,4BAAU;AAC5B,kBAAkB,4BAAU;AAC5B,mBAAmB,0BAAQ;AAC3B;AACA;AACA,mBAAmB,8BAAY;AAC/B,YAAY,wBAAM;AAClB,6DAA6D;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;;AAEA,mBAAmB,oCAAoC;AACvD;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA,KAAK;;;AAGL,kCAAkC,6BAAW,4CAA4C,6BAAW;AACpG,GAAG;;;AAGH,8BAA8B,gCAAc,iDAAiD,gCAAc,+BAA+B;;AAE1I;AACA;AACA;;AAEA,SAAS,4BAAU;AACnB;AACA;;AAEA,iBAAiB,OAAO;;AAExB,iBAAiB,WAAW;;AAE5B;AACA;;AAEA,SAAS,4BAAU;AACnB;AACA;;AAEA,iBAAiB,OAAO,oBAAoB,4BAAU;;AAEtD,iBAAiB,WAAW;;AAE5B;AACA;;AAEA,SAAS,0BAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,SAAS,8BAAY;AACrB;;AAEA;AACA,cAAc;AACd,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,wBAAM;AACZ,MAAM,yBAAO;AACb;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,cAAc;AACzB,WAAW,sBAAsB;AACjC;AACA,WAAW,cAAc;AACzB;AACA;AACA,WAAW,cAAc;AACzB;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,cAAc;AACzB;AACA,WAAW,QAAQ;AACnB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,cAAc;AACzB;AACA;;AAEA,SAAS,uBAAK;AACd,EAAE,8BAAS;AACX;AACA,uBAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,aAAa,yBAAO;AACpB,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,YAAY,wBAAM;AAClB,aAAa,wBAAM;AACnB,GAAG;AACH;AACA,4CAAQ,CAAC,uBAAK,EAAE,8BAAS;AACzB;AACA;AACA;AACA,aAAa,8CAAU;AACvB;;AAEA;;AAEA;;AAEA;AACA,MAAM,yCAAK;AACX;;AAEA,uBAAuB,wBAAM,CAAC;;AAE9B,IAAI,6BAAW,yDAAyD,yCAAK,iBAAiB,yCAAK,aAAa,yBAAO;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,CAAC;;AAEyB;;;AC54BoI;AAC5G;AACgC;;AAElF,SAAS,gCAAS;AAClB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,QAAQ;;;AAGR;AACA;AACA,GAAG;AACH,iBAAiB,yBAAyB,OAAO;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B,WAAW,oBAAoB;AAC/B,WAAW,2BAA2B;AACtC,WAAW,OAAO;AAClB;;AAEA,SAAS,4BAAK;AACd,EAAE,8BAAS;AACX;AACA,4BAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,4BAAK,EAAE,8BAAS;AACzB;AACA;;AAEA;AACA;AACA,qBAAqB,gCAAS;AAC9B,0CAA0C,wCAAY;AACtD;AACA,0BAA0B,gDAAY,OAAO,gDAAY;AACzD;AACA;AACA,QAAQ,4BAAe;AACvB;;AAEA,yBAAyB,OAAO;AAChC;AACA;;AAEA;AACA;AACA,sBAAsB,6BAAM;AAC5B,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED,MAAM,8BAAO;AACb,UAAU,6BAAgB;AAC1B,OAAO,0BAAa;AACpB,OAAO,0BAAa;AACpB,OAAO,0BAAa;AACpB,QAAQ,2BAAc;AACtB,QAAQ,2BAAc;AACtB;;AAEA,MAAM,uCAAgB;AACtB;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B,WAAW,oBAAoB;AAC/B,WAAW,OAAO;AAClB,WAAW,2BAA2B;AACtC,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB;;;AAGA,SAAS,iCAAU;AACnB,EAAE,8BAAS;AACX;AACA,iCAAU;AACV;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,0BAA0B,8BAAO;AACjC,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,iCAAU,EAAE,8BAAS;AAC9B;AACA;;AAEA;AACA;AACA,qBAAqB,gCAAS;AAC9B,0CAA0C,wCAAY;AACtD;AACA;AACA,kBAAkB,uCAAgB;AAClC,0BAA0B,gDAAY,OAAO,gDAAY;AACzD,kBAAkB,8BAAO;AACzB;AACA;;AAEA,WAAW,kDAAc,CAAC,8BAAO;AACjC,QAAQ,yCAAK;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,sBAAsB,6BAAM;AAC5B;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA,8BAA8B,0CAAM;AACpC;AACA;;AAEA,yBAAyB,kBAAkB;AAC3C;AACA;;AAEA;AACA;AACA,sBAAsB,6BAAM;AAC5B;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,UAAU,kCAAW;AACrB;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAEmD;;;;AC9PpD,MAAM,kBAAO;AACb;;AAEe;;AAEf;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;AAC5C,4CAA4C;AAC5C,2CAA2C;AAC3C,iEAAiE;;AAEjE;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,yFAAyF;AACxG;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uBAAuB,OAAO;AAC9B,sBAAsB,eAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,uBAAuB,OAAO;AAC9B;AACA,sBAAsB,eAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,iBAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B,6BAA6B,eAAI;AACjC;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+BAA+B,sBAAsB;AACrD;AACA;AACA;;AAEA;AACA,6CAA6C,kBAAO,wBAAwB,kBAAO;AACnF;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sDAAsD,oBAAoB;AAC1E;AACA;AACA;;AAEA;AACA;AACA,qCAAqC,iBAAM;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kCAAkC;;AAErE;AACA;;AAEA;AACA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA,oCAAoC,iBAAM;AAC1C;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,iBAAM;AAC9C;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C,cAAc;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,eAAe,qDAAqD;;AAEpE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wCAAwC;AACxC;;AAEA,SAAS,eAAI;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,iBAAM;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,YAAY;AACZ;;AAEA;AACA;AACA,8BAA8B,YAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,QAAQ,eAAI;AACZ,kDAAkD,eAAI;AACtD,+CAA+C,eAAI;AACnD,8CAA8C,eAAI;;AAElD;AACA;AACA;AACA,mBAAmB;AACnB,mBAAmB;AACnB;AACA,YAAY,eAAI;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA,SAAS,eAAI;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AC9eA,MAAM,gBAAO;;AAEE,MAAM,SAAI;AACzB;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,kBAAkB,yBAAyB,GAAG,yBAAyB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,cAAc,GAAG,cAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,GAAG,GAAG,GAAG;AAClD,uCAAuC,gBAAO,8BAA8B,gBAAO;AACnF;AACA,kBAAkB,EAAE,GAAG,EAAE,SAAS,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,cAAc,GAAG,cAAc;AAC/F;AACA;AACA,kBAAkB,yBAAyB,GAAG,yBAAyB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AACzF;AACA;AACA;AACA;AACA;;;ACpCe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AChB6B;AACM;;AAEpB,MAAM,eAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW,wBAAwB,UAAU;;AAExD;AACA;AACA,sDAAsD,OAAO;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAI;AACvD,WAAW,WAAW,yBAAyB,yBAAyB;AACxE;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAI;AACvD;AACA;AACA;AACA;AACA,mDAAmD,SAAI;AACvD;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW,QAAQ;AAC9B,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,0BAA0B,+BAA+B;AACpE;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,OAAO;AACvF;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,UAAU;AAC3C,+DAA+D,OAAO;AACtE,iCAAiC,UAAU;AAC3C,+DAA+D,OAAO;AACtE,iCAAiC,UAAU;AAC3C,+DAA+D,OAAO;AACtE,iCAAiC,UAAU;AAC3C,+DAA+D,OAAO;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,KAAK,mBAAmB;AACxB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,KAAK,mBAAmB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC/ToC;AACP;AACM;AACA;;AAEnC,MAAM,YAAG,gBAAgB,YAAG;;AAE5B,SAAS,eAAM;AACf;AACA;;AAEA,SAAS,eAAM;AACf;AACA;;AAEA;AACA,SAAS,kBAAS;AAClB,SAAS,kBAAkB;AAC3B,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,eAAM;AACf;AACA;;AAEe,MAAM,iBAAQ;AAC7B,2BAA2B,eAAM,OAAO,eAAM;AAC9C,eAAe,iBAAQ;AACvB,UAAU,kBAAS;AACnB,4BAA4B,qBAAY;AACxC;AACA;AACA,2BAA2B,UAAU;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,kBAAS;AAChD,wCAAwC,wBAAwB;AAChE,gGAAgG;AAChG;AACA;AACA;AACA,4CAA4C,OAAO;AACnD,kBAAkB,eAAM;AACxB;AACA;AACA;AACA,6BAA6B,UAAU;AACvC,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,qDAAqD;AACrD;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAO;AACtB;AACA;AACA,WAAW,2DAA2D;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wDAAwD;AACnE;AACA;AACA,aAAa,YAAG,yBAAyB,YAAG;AAC5C;AACA;AACA;AACA;AACA,iBAAiB,YAAG,yBAAyB,YAAG;AAChD;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,cAAc,YAAG,yBAAyB,YAAG;AAC7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,mDAAmD,SAAI;AACvD,WAAW,6BAA6B;AACxC,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAI;AACvD,WAAW,OAAO;AAClB,sCAAsC,OAAO;AAC7C;AACA;AACA,8BAA8B,YAAG;AACjC;AACA;AACA;AACA;AACA,mDAAmD,SAAI;AACvD,WAAW,aAAa;AACxB;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA,mDAAmD,SAAI;AACvD,WAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;;AAEA,SAAS,kBAAS;AAClB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,qBAAY;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnP0C;AACL;AACE;;AAEvC,SAAS,2BAAO;AAChB,EAAE,8BAAS;AACX;AACA,2BAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,MAAM,iCAAa;AACnB,4CAAQ,CAAC,2BAAO,EAAE,8BAAS;AAC3B;AACA;AACA,8BAA8B;;AAE9B,4CAA4C;;AAE5C;AACA,yFAAyF,iCAAa;AACtG,iCAAiC,iBAAQ,iCAAiC;;AAE1E,oCAAoC,OAAO;AAC3C;AACA,8BAA8B,gCAAY;AAC1C;;AAEA;AACA;;AAEA,CAAC,EAAE;;AAEH,SAAS,gCAAY;AACrB;AACA;AACA;;AAEA,QAAQ,gCAAgC;;AAExC;AACA;;AAE8B;;;AC1EO;AACK;AACgC;AACvC;AACM;;AAEzC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,kCAAY;AAChB,IAAI,wBAAE;AACN,IAAI,wBAAE;AACN,SAAS,2BAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uCAAiB;AAChC;AACA;AACA;;AAEA;AACA,qCAAqC,SAAM;AAC3C,gBAAgB,+BAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,MAAM,iCAAW;;AAEjB;AACA;AACA,oBAAoB,iCAAW,YAAY;AAC3C;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,wBAAE;AACtB,oBAAoB,wBAAE;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qHAAqH;;AAErH,sBAAsB,kCAAY;AAClC,uBAAuB,kCAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB,OAAO;AAChC;;AAEA,2BAA2B,QAAQ;AACnC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa,6BAAO;AACpB;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,6BAAO;AACzB;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,6BAAO;AAC1B;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe,6BAAO;AACtB;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa,6BAAO;AACpB;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe,6BAAO;AACtB;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,6BAAO;AACxB;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,6BAAO;AACvB;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,CAAC;AACD;;AAEA,SAAS,iCAAW;AACpB;AACA;AACA;AACA,qBAAqB,wBAAE,gBAAgB,wBAAE;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,kCAAY;AAC/C,mCAAmC,kCAAY;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA,iBAAiB,wBAAE;AACnB;AACA;AACA;AACA;;AAEA,iBAAiB,wBAAE;AACnB;AACA,sCAAsC,kCAAY;AAClD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC,wBAAE,gBAAgB,wBAAE;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB,eAAe,aAAa;;AAE5B;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA,kCAAkC,wBAAE;AACpC;AACA;AACA;;AAEA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;AAGD,SAAS,kCAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB;;AAEA,mBAAmB,QAAQ;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,SAAS,iCAAW;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,kCAAY;AACrB;AACA;;AAEA,SAAS,uCAAiB;AAC1B;AACA;AACA;AACA;AACA;;AAEA,SAAS,uCAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;AAGD,SAAS,+BAAS;AAClB;AACA;;AAEA;;AAEA;AACA;;AAEA,SAAS,6BAAO;AAChB;AACA;AACA;AACA;;AAEA,IAAI,6BAAO;AACX,eAAe,uCAAiB;AAChC,eAAe,uCAAiB;AAChC;;AAEA,MAAM,4BAAM;AACZ,MAAM,4BAAM;AACZ,SAAS,+BAAS;AAClB,EAAE,8BAAS,YAAY,2BAAK;AAC5B;AACA,+BAAS;AACT;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,4BAAM;AACrB,GAAG;AACH;AACA,4CAAQ,CAAC,+BAAS,EAAE,8BAAS;AAC7B;AACA;AACA,MAAM,yCAAK;AACX;;AAEA;AACA;AACA,aAAa,8CAAU;AACvB;;AAEA;;AAEA,iDAAiD,4BAAM;AACvD;AACA;AACA,uBAAuB,4BAAM;AAC7B;AACA;AACA,IAAI,8CAAU,kDAAkD,4CAAQ,WAAW;;AAEnF;AACA;AACA,wBAAwB,uBAAK,kBAAkB,0CAAM;;AAErD;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK,EAAE;;AAEP,4RAA4R,6BAAM;AAClS;AACA;AACA;AACA;;AAEA,yBAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAEiC;;;ACllBnB;AACf;AACA,CAAC;;;ACF2D;AAClB;AACL;;AAErC,MAAM,8BAAM;AACZ,MAAM,+BAAO;AACb,MAAM,+BAAO;;AAEb;AACA;AACA;;AAEA,SAAS,+BAAO;AAChB;AACA;AACA,aAAa,+BAAO;AACpB,aAAa,6BAAK;AAClB,aAAa,6BAAK;AAClB;AACA;AACA,uBAAuB,gCAAQ;;AAE/B;AACA,2DAA2D,OAAO;AAClE;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B,kBAAkB;;AAElB,iBAAiB,kBAAkB;AACnC;AACA;AACA,OAAO;;;AAGP,iBAAiB,OAAO;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,oBAAoB;AACpB;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,eAAe,6BAAK;AACpB,eAAe,6BAAK;AACpB;AACA;;AAEA;AACA;;AAEA,SAAS,gCAAQ;AACjB;AACA;AACA;AACA;AACA;;AAEA,SAAS,6BAAK;AACd,4BAA4B,8BAAM,iBAAiB,+BAAO,GAAG,+BAAO;AACpE;AACA;AACA;;AAEA,SAAS,iCAAS;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,QAAQ;;AAEzB,kBAAkB,QAAQ;;AAE1B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,mCAAW;AACpB,cAAc,+BAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,+BAAO;AACxB;AACA;AACA;AACA;;AAEA,eAAe,QAAQ;AACvB;AACA;AACA;;AAEA,WAAW,4BAAI;;AAEf;AACA;AACA;AACA;AACA,cAAc,+BAAO;AACrB,MAAM,6BAAK;AACX,KAAK;AACL,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;;AAElB,eAAe,yBAAyB,MAAM;;;AAG9C,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,YAAY,iBAAU,yBAAyB,kBAAW;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,4BAAI;AACb;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,OAAO;AAChB;;AAEA,SAAS,6BAAK;AACd;AACA;AACA;;AAEA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,SAAS;AACjB;AACA;AACA;;AAEA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,2BAA2B;AACtC,WAAW,MAAM;AACjB;;AAEA,SAAS,mCAAW;AACpB,EAAE,8BAAS,YAAY,+BAAO;AAC9B;AACA;AACA;AACA,mCAAW;AACX;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,mCAAW,EAAE,8BAAS;AAC/B;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,cAAc;;AAEd,UAAU,OAAO;AACjB;AACA,8CAA8C,mCAAW;AACzD,gBAAgB,iCAAS;AACzB;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;;AAEvD,mBAAmB;;AAEnB;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA,oDAAoD,OAAO;AAC3D;AACA;AACA,KAAK;;;AAGL,eAAe,OAAO;AACtB;;AAEA;AACA;;AAEA;AACA,iCAAiC,mCAAW;AAC5C;AACA;;AAEA,kBAAkB,iCAAS;AAC3B;AACA,KAAK;AACL;AACA;;;AAGA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B,eAAe,OAAO;AACtB;AACA;AACA;AACA,KAAK;;;AAGL,UAAU,OAAO;AACjB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,mBAAmB;;AAEnB,kCAAkC,OAAO;AACzC;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,2BAA2B,OAAO;AAClC;AACA;AACA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA,2CAA2C,OAAO;AAClD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL,2CAA2C,OAAO;AAClD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA,2CAA2C,OAAO;AAClD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL,2CAA2C,OAAO;AAClD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA,KAAK;AACL,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA,KAAK;AACL,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,0CAA0C,kBAAkB;AAC5D;;AAEA,SAAS,qCAAa;AACtB,EAAE,8BAAS;AACX;AACA,qCAAa;AACb;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,4CAAQ,CAAC,qCAAa,EAAE,8BAAS;AACjC;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA,2DAA2D;;;AAG3D,oCAAoC;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL;AACA;;AAEA,CAAC;;AAEqE;;;ACnuBS;;AAE/E,MAAM,8BAAO;AACb,MAAM,8BAAO;AACb,MAAM,+BAAQ;AACd,MAAM,iCAAU;AAChB,MAAM,sCAAe;AACrB,MAAM,uCAAgB;AACtB,MAAM,qCAA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AE,gCAAS;AACX,EAAE,2BAAI;AACN,eAAe,sCAAe;;AAE9B,MAAM,gCAAS,UAAU,+BAAQ;AACjC;AACA;;AAEA;AACA;;AAEA,IAAI,gCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,gCAAS;AAClB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yCAAK;AAChC,2BAA2B,yCAAK;AAChC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yCAAK;AAChC,2BAA2B,yCAAK;AAChC;AACA;AACA;AACA;AACA;;AAEA,SAAS,kCAAW;AACpB;AACA;AACA;;AAEA,SAAS,8BAAO;AAChB;AACA,gCAAgC,0CAAK,kBAAkB;AACvD,oCAAoC,0CAAK,oBAAoB;AAC7D,qCAAqC,gCAAS;AAC9C,sCAAsC,gCAAS;AAC/C;AACA;AACA,uBAAuB,8CAAU,mCAAmC,UAAU,IAAI,GAAG;AACrF,kBAAkB;AAClB,iBAAiB;AACjB;;AAEA;AACA,QAAQ,4CAAQ;AAChB;AACA,2BAA2B,yCAAK;AAChC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO,UAAU,kDAAc;AAC/B,eAAe,yCAAK;AACpB,OAAO,UAAU,kDAAc;AAC/B;AACA,OAAO,UAAU,kDAAc;AAC/B;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,kCAAW;AAC1B;;AAEA;AACA;AACA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kCAAK;AACX,oBAAoB,qCAAQ,EAAE;AAC9B;;AAEA;AACA;;AAEA,SAAS,mCAAM;AACf,EAAE,mCAAM;AACR,EAAE,kCAAK;AACP,EAAE,mCAAM,GAAG,mCAAM;AACjB,EAAE,sCAAS;AACX,EAAE,iCAAI;AACN,eAAe,4CAAe;;AAE9B,MAAM,sCAAS,UAAU,qCAAQ;AACjC;AACA;;AAEA;AACA;;AAEA,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,sCAAS;AAClB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yCAAK;AAChC,2BAA2B,yCAAK;AAChC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yCAAK;AAChC,2BAA2B,yCAAK;AAChC;AACA;AACA;AACA;AACA;;AAEA,SAAS,wCAAW;AACpB;AACA;AACA;;AAEA,SAAS,oCAAO;AAChB;AACA,gCAAgC,0CAAK,kBAAkB;AACvD,oCAAoC,0CAAK,oBAAoB;AAC7D,qCAAqC,sCAAS;AAC9C,sCAAsC,sCAAS;AAC/C;AACA;AACA,uBAAuB,8CAAU,mCAAmC,UAAU,IAAI,GAAG;AACrF,kBAAkB;AAClB,iBAAiB;AACjB;;AAEA;AACA,QAAQ,4CAAQ;AAChB;AACA,2BAA2B,yCAAK;AAChC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO,UAAU,kDAAc;AAC/B,eAAe,yCAAK;AACpB,OAAO,UAAU,kDAAc;AAC/B;AACA,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GA,SAAS,iCAAa;AACtB;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,4CAAQ;AAC3C;AACA;AACA;AACA;;;AAGA,SAAS,0BAAM;AACf;AACA,mCAAmC,uCAAG;AACtC;AACA;AACA;AACA;;;AAGA,SAAS,4BAAQ;AACjB;AACA;AACA,mCAAmC,yCAAK;AACxC;AACA;AACA;AACA;;;AAGA,SAAS,8BAAU;AACnB;AACA;AACA;AACA,YAAY,yCAAK,wCAAwC,4BAAO;AAChE,mCAAmC,2CAAO;AAC1C;AACA;AACA;AACA;;;AAGA,SAAS,6BAAS;AAClB;AACA;;AAEA;AACA;AACA,mBAAmB,4CAAQ;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,SAAS,8BAAU;AACnB;AACA;AACA;AACA;AACA;;;AAGA,SAAS,8BAAU;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,SAAS,8BAAU;AACnB,SAAS,4BAAO;AAChB;;AAEA;AACA;AACA;;AAEA,SAAS,+BAAW;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI,yCAAK;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,+BAAW;AACpB;AACA,cAAc,4CAAQ;AACtB;AACA;AACA;AACA;AACA,eAAe,yCAAK;AACpB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,MAAM,wBAAI;AACV;AACA;AACA,SAAS,4BAAQ;AACjB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS,4BAAQ;AACjB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,8CAA8C,wBAAI;AAClD,GAAG;AACH,wBAAwB;AACxB,wDAAwD,mCAAM;AAC9D,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS,2BAAO;AAChB,aAAa,2BAAO;AACpB;;AAEA,SAAS,2BAAO;AAChB;AACA;AACA;AACA,sBAAsB,qCAAiB;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS,8BAAU;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,2BAAO,aAAa,8BAAU;AAC9B;AACA,oBAAoB,8BAAU;AAC9B;AACA;AACA,GAAG;;AAEH;AACA,6DAA6D;AAC7D;;AAEA;;AAEA;;AAEA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA,QAAQ,6BAAS;AACjB;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA,qDAAqD,iCAAa;AAClE,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA,OAAO;AACP,eAAe;AACf,yBAAyB;AACzB,iBAAiB;AACjB,aAAa;AACb,aAAa;AACb;AACA,UAAU;AACV,UAAU;AACV;;AAEmB;;;AC/pBmB;;AAEvB;AACf,cAAc,WAAK;AACnB;AACA;AACA;AACA,0CAA0C,GAAG;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AAC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BAAK;AAC5B;AACA;;AAEA,SAAS,sBAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,SAAS,yBAAQ;AACjB;AACA,cAAc,wBAAO;AACrB,aAAa,0BAAS;AACtB,GAAG;AACH,kEAAkE,wBAAO;AACzE,sBAAsB,wBAAO;AAC7B,aAAa,0BAAS;AACtB,GAAG;AACH;AACA,cAAc,qBAAI;;AAElB;AACA;AACA,cAAc,yBAAQ;AACtB;;AAEA;AACA,cAAc,uBAAM;AACpB;;AAEA;AACA,cAAc,sBAAK;AACnB;;AAEA;AACA,cAAc,sBAAK;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,SAAS,qBAAI;AACb,eAAe,wBAAO;;AAEtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,SAAS,yBAAQ;AACjB;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,SAAS,uBAAM;AACf,eAAe,wBAAO;AACtB;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,QAAQ,4BAAW;AACnB,qBAAqB,wBAAO;AAC5B,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,6CAA6C,OAAO;AACpD,UAAU,4BAAW;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,SAAS,sBAAK;AACd,gBAAgB,wBAAO;AACvB,aAAa,2BAAU;AACvB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4BAAW;AACnB,kBAAkB,wBAAO;AACzB;AACA,kBAAkB,wBAAO,YAAY;AACrC;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B,UAAU,4BAAW;AACrB;AACA;AACA;AACA;AACA;AACA;;;AAGA,SAAS,sBAAK;AACd;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC,eAAe,wBAAO;AACtB;AACA;AACA;AACA;AACA;AA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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,+BAAI;AACjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,+BAAI;AACb;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA,0CAA0C,qDAAqD;AAC/F;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,+BAAI;AACZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0CAA0C,sCAAW;AACrD;;AAEA;AACA;AACA;AACA;AACA,MAAM,+BAAI;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,SAAS,sCAAW;AACpB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA,kBAAkB;;AAElB,oCAAoC;;AAEpC,MAAM,+BAAI;;AAEV;AACA;AACA;AACA,GAAG;;;AAGH,MAAM,+BAAI;;AAEV;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA,QAAQ,+BAAI;AACZ;AACA;AACA;AACA;AACA,GAAG;;;AAGH,8BAA8B,kCAAO;AACrC;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAE0C;;;ACxNqG;AAC9F;AACG;AACgD;AACzC;;AAE3D,SAAS,gCAAa;AACtB,SAAS,4CAAQ;AACjB;AACA;AACA;;AAEA,MAAM,yBAAM;;AAEZ,MAAM,gCAAa;AACnB;AACA;AACA;AACA;AA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ACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,+BAAY;AACrB,8CAA8C,4CAAQ;AACtD;AACA;AACA,GAAG,mBAAmB;AACtB,YAAY,+BAAY;AACxB,GAAG;AACH;;AAEA,SAAS,4BAAS;AAClB;AACA;AACA;AACA;AACA,kBAAkB,+BAAY,sBAAsB,uBAAI;AACxD,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,SAAS,iCAAc;AACvB,YAAY,yBAAM;AAClB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,uBAAI;AACnB,SAAS,uBAAI;AACb,SAAS,uBAAI;AACb,aAAa,0BAAO;AACpB,cAAc,0BAAO;AACrB,KAAK;AACL,YAAY,0CAAM,GAAG;AACrB,eAAe,sBAAG;AAClB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,uBAAI;AACnB;AACA;AACA,EAAE,8BAAW;AACb;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,SAAS,4BAAS;AAClB,UAAU,2BAAQ;AAClB,UAAU,qCAAkB;AAC5B;AACA,GAAG;AACH;;AAEA,SAAS,yCAAsB;AAC/B,YAAY,yBAAM;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uBAAI;AACjB;AACA;AACA,aAAa,wBAAK;AAClB;AACA;AACA;AACA,gCAAgC,uBAAI;AACpC;AACA;AACA,aAAa,uBAAI;AACjB;AACA,gCAAgC,wBAAK;AACrC;AACA;AACA,cAAc,0BAAO;AACrB;AACA;AACA,YAAY,0CAAM,GAAG;AACrB,eAAe,sBAAG;AAClB,KAAK;AACL;AACA,eAAe,uBAAI;AACnB;AACA;AACA,EAAE,8BAAW;AACb;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,SAAS,4BAAS;AAClB,UAAU,2BAAQ;AAClB,UAAU,iCAAc;AACxB,SAAS,wBAAK;AACd;AACA;AACA,GAAG;AACH;;AAEA,MAAM,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CA;AACA;AACA,GAAG;AACH,CAAC;AACD;;AAEA,SAAS,8BAAW;AACpB;AACA,mCAAmC,0CAAM;AACzC;AACA;AACA;AACA,GAAG;AACH;;AAEA,SAAS,8BAAW;AACpB;AACA,aAAa;AACb;AACA;AACA,EAAE,8BAAW;AACb;AACA;AACA;AACA,cAAc,8BAAW;AACzB,KAAK;AACL;AACA,cAAc,4BAAS;AACvB,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,+BAAY,qBAAqB,uBAAI;AAC9C;;AAEA,SAAS,6BAAU;AACnB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,EAAE,8BAAW;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,4BAAS;AAClB,UAAU,2BAAQ;AAClB,UAAU,gCAAa;AACvB,WAAW,kCAAe;AAC1B;AACA;AACA,GAAG;AACH;;AAEA,SAAS,gCAAa;AACtB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,EAAE,8BAAW;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,4BAAS;AAClB,UAAU,2BAAQ;AAClB,UAAU,oCAAiB;AAC3B,WAAW,qCAAkB;AAC7B;AACA;AACA,GAAG;AACH;;AAEA,SAAS,4BAAS;AAClB;;AAEA;AACA;AACA,sBAAsB,iCAAc;AACpC,KAAK;AACL;;AAEA;AACA;AACA,MAAM,+BAAY;AAClB,KAAK;AACL;;AAEA,mCAAmC,0BAAO;AAC1C;AACA;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;AAE/B,qBAAqB,wBAAK;AAC1B;AACA,WAAW,sBAAG;AACd,GAAG;AACH,iBAAiB,yBAAM;AACvB,WAAW,sBAAG;AACd,GAAG;AACH,iBAAiB,wBAAK;AACtB,WAAW,sBAAG;AACd,GAAG,GAAG;;AAEN,4BAA4B,4BAAS;AACrC;AACA;;AAEA,SAAS,+BAAY;AACrB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,SAAS,iCAAc;AACvB,oBAAoB,wBAAK;AACzB,mBAAmB,+BAAY,iCAAiC,+BAAY,aAAa,gCAAa,kBAAkB,+BAAY,YAAY,+BAAY,iBAAiB,+BAAY,4BAA4B,+BAAY;AACjO,6DAA6D;AAC7D,iBAAiB;;;AAGjB,EAAE,yCAAK;AACP,QAAQ,kDAAc;AACtB;AACA,UAAU,0CAAM;AAChB,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG,EAAE;;AAEL,EAAE,yCAAK;AACP,SAAS,kDAAc,kBAAkB,kDAAc;AACvD;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,SAAS,wBAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,2BAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAK,aAAa,2BAAQ;AAC1B;AACA,WAAW,6BAAU;AACrB,GAAG;;AAEH;AACA,eAAe,2BAAQ;AACvB,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,+BAA+B,wBAAK,GAAG,s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AAc;AACvB,UAAU,2CAAO,SAAS,8BAAW,GAAG,+BAAY;AACpD;;AAEA,SAAS,8BAAW;AACpB;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA,kCAAkC,4CAAQ,0BAA0B,iCAAc,UAAU,gDAAW;AACvG;;AAEA;AACA;;AAEA,SAAS,+BAAY;AACrB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,gDAAW,eAAe,4CAAQ,0BAA0B,iCAAc,UAAU,gDAAW;AAClI;;AAEA,kBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,2BAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC,oCAAoC,8BAA8B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA,SAAS,wBAAK;AACd,OAAO,4CAAQ;AACf,IAAI,yCAAK;AACT;;AAEA,WAAW,+CAAW,CAAC,2BAAQ;AAC/B,SAAS,4BAAS,WAAW,wBAAK;AAClC;;AAE+U;;;AC77HhQ;;AAE/E,MAAM,oDAAO;AACb,MAAM,oDAAO;AACb,MAAM,qDAAQ;AACd,MAAM,uDAAU;AAChB,MAAM,4DAAe;AACrB,MAAM,6DAAgB;AACtB,MAAM,2DAAc;AACpB,MAAM,kEAAqB;AAC3B,MAAM,8DAAiB;AACvB,MAAM,6DAAgB;AACtB,MAAM,6DAAgB;AACtB,MAAM,4DAAe;AACrB,SAAS,oDAAO;AAChB;AACA;;AAEA,oDAAO;AACP;AACA;;AAEA,WAAW,qDAAQ,4BAA4B,OAAO;AACtD;AACA;AACA;;AAEA,SAAS,qDAAQ;AACjB;AACA,SAAS,4DAAe;AACxB;;AAEA,SAAS,6DAAgB;AACzB,SAAS,8DAAiB;AAC1B;;AAEA,SAAS,2DAAc;AACvB;;AAEA,SAAS,kEAAqB;AAC9B;;AAEA,SAAS,6DAAgB;AACzB;;AAEA,SAAS,6DAAgB;AACzB;;AAEA,SAAS,qDAAQ;AACjB;;AAEA,SAAS,4DAAe;AACxB;;AAEA,SAAS,uDAAU;AACnB,SAAS,oDAAO;AAChB,SAAS,oDAAO;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yCAAK;AAChC,2BAA2B,yCAAK;AAChC;AACA;AACA;AACA;AACA;;AAEA,SAAS,wDAAW;AACpB;AACA;AACA;;AAEA,SAAS,oDAAO;AAChB;AACA,gCAAgC,0CAAK,kBAAkB;AACvD,oCAAoC,0CAAK,oBAAoB;AAC7D,qCAAqC,sDAAS;AAC9C,sCAAsC,sDAAS;AAC/C;AACA;AACA,uBAAuB,8CAAU;AACjC,kBAAkB;AAClB,iBAAiB;AACjB;;AAEA;AACA,QAAQ,4CAAQ;AAChB;AACA,2BAA2B,yCAAK;AAChC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO,UAAU,kDAAc;AAC/B,eAAe,yCAAK;AACpB,OAAO,UAAU,kDAAc;AAC/B;AACA,OAAO,UAAU,kDAAc;AAC/B;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,wDAAW;AAC1B;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,QAAQ,yCAAK;AACb;;AAEA;AACA;AACA,iBAAiB,kDAAc;AAC/B,eAAe,yCAAK;AACpB,aAAa,8CAAU;AACvB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,6BAA6B,0CAA0C;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEuR;;;ACxuDvR,MAAM,qCAAI;AACV,MAAM,iCAAM;AACZ,MAAM,iCAAM;AACZ,MAAM,iCAAM,KAAK;AACjB,MAAM,iCAAM,KAAK;AACjB,MAAM,gCAAK;AACX,MAAM,gCAAK;AACX,MAAM,+BAAI;AACV,MAAM,6BAAE;AACR,MAAM,wCAAO,UAAU;AACvB,MAAM,wCAAa;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,yCAAc,EAAE,gCAAK;AACzB;AACA;AACA;AACA;;AAEA,SAAS,wCAAa;AACtB,EAAE,yCAAc,aAAa,qCAAI;AACjC,EAAE,gCAAK,YAAY,wCAAa;AAChC,SAAS,qCAAU,sBAAsB,wCAAa;AACtD;;AAEA,SAAS,qCAAU;AACnB,SAAS,gCAAK;AACd;;AAEA,SAAS,qCAAI;AACb;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA,0CAA0C,qDAAqD;AAC/F;;AAEA;AACA;;AAEA,SAAS,qCAAU;AACnB;AACA;AACA;AACA;;AAEA;AACA,QAAQ,qCAAI,OAAO,gCAAK,EAAE,iCAAM,GAAG,iCAAM,EAAE,iCAAM,GAAG,iCAAM;AAC1D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,SAAS,wCAAa;AACtB,wBAAwB,uCAAY,MAAM,4CAAW;AACrD;;AAEA,SAAS,uCAAY;AACrB;AACA;AACA;AACA,MAAM,qCAAI,OAAO,iCAAM,EAAE,iCAAM,EAAE,iCAAM;;AAEvC;AACA;AACA;;AAEA,MAAM,qCAAU;;AAEhB;AACA;AACA;;AAEA;;AAEA,eAAe,6BAAE;AACjB;AACA;;AAEA,YAAY,wCAAa;AACzB,iBAAiB,wCAAa;;AAE9B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,SAAS,4CAAW;AACpB;AACA,YAAY,yCAAc;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb,mBAAmB,iCAAM;AACzB,sBAAsB,iCAAM;;AAE5B;AACA;AACA,mBAAmB,wCAAa;AAChC,OAAO;AACP;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA,kBAAkB;;AAElB,eAAe,+BAAI,iBAAiB;;AAEpC,MAAM,qCAAI,OAAO,gCAAK;;AAEtB;AACA;AACA;AACA,GAAG;;;AAGH,MAAM,qCAAI,OAAO,iCAAM;;AAEvB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA,QAAQ,qCAAI,OAAO,iCAAM;AACzB;AACA;AACA,gCAAgC,iCAAM;AACtC;AACA,GAAG;;;AAGH,8BAA8B,wCAAO;AACrC;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK,UAAU,qCAAU;AACzB;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS,wCAAa;AACtB,oBAAoB,gCAAK;AACzB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEqC;;;ACxNF;AACT;AACiB;AACuI;AAC5I;AACM;AACN;AACN;AACI;AACG;AACH;AACG;AACC;AACI;AACL;AACP;AACN;AACE;AACI;AACmF;AACtE;AACZ;AAC+H;AAC5G;AAChB;AACqB;AACgC;AACzB;;AAEhE,IAAI,gBAAI;AACR,IAAI,qBAAS;AACb,IAAI,uBAAW;AACf,IAAI,oBAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAO;AACX,IAAI,kBAAM;AACV,IAAI,gBAAI;AACR,IAAI,kBAAM;AACV,IAAI,iBAAK;AACT,IAAI,oBAAQ;AACZ,IAAI,iBAAK;AACT,IAAI,sBAAU;AACd,IAAI,mBAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,wBAAY;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,2BAAe;AACnB;AACA;AACA,IAAI,mBAAO;AACX,IAAI,eAAG;AACP,OAAO,gBAAI;AACX,UAAU,qBAAS;AACnB,cAAc,uBAAW;AACzB,WAAW,oBAAQ;AACnB,UAAU,mBAAO;AACjB,SAAS,kBAAM;AACf,OAAO,gBAAI;AACX,SAAS,kBAAM;AACf,QAAQ,iBAAK;AACb,WAAW,oBAAQ;AACnB,QAAQ,iBAAK;AACb,aAAa,sBAAU;AACvB,UAAU,mBAAO;AACjB,eAAe,wBAAY;AAC3B,kBAAkB,2BAA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;AACA;AACA;AACA,UAAU,eAAO;AACjB;AACA;AACA;AACA;;;AClDsC;;AAEvB;AACf,SAAS,UAAU,sBAAsB,UAAU;AACnD,CAAC;;;ACJc;AACf;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACbc;AACf,2CAA2C,OAAO;AAClD;AACA,kBAAkB,aAAa;AAC/B;AACA;AACA,CAAC;;;ACND;AACA;AACA;AACA;AACe;AACf;;AAEA;AACA;AACA;AACA,wBAAwB,iCAAiC;AACzD;;AAEA;AACA,YAAY,KAAK;AACjB;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,2BAA2B,iCAAiC;AAC5D;;AAEA;AACA,YAAY,KAAK;AACjB;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACxCc;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACtDD;;AAEe;AACf;AACA,CAAC;;;ACJ6C;;AAE9C,IAAI,YAAI;;AAEO;AACf,cAAc;AACd;AACA;;AAEA;AACA,WAAW,kBAAc,2BAA2B,YAAI;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,yBAAyB,YAAI;AAC7B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,mBAAmB,YAAI;AACvB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,sBAAsB,YAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;;ACvEyB;;AAEX;AACf;;AAEA;AACA,UAAU,QAAI;AACd;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;ACrBc;AACf;AACA;AACA;AACA,CAAC;;;ACJD;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;ACjBc;AACf;AACA,CAAC;;;ACFc;AACf;AACA,CAAC;;;ACFc;AACf;AACA,CAAC;;;ACFc;AACf;AACA,CAAC;;;ACFc;AACf;AACA,CAAC;;;ACFiC;AACN;AACE;AACkB;;AAEjC;AACf;AACA;AACA,QAAQ,mBAAK;AACb,QAAQ,mBAAK;AACb;;AAEA;AACA,gCAAgC,MAAM;AACtC,oCAAoC,eAAe;AACnD;;AAEA;AACA,qBAAqB,WAAW;AAChC,GAAG;AACH;AACA,sBAAsB,oBAAoB;AAC1C,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,YAAQ;AACjB,CAAC;;;AChCyB;;AAEX;AACf;AACA,aAAa,QAAI;AACjB;AACA;AACA,CAAC;;;ACPkC;;AAEnC,MAAM,yBAAgB;;AAEtB;AACe;AACf,wBAAwB,yBAAgB;;AAExC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,gBAAgB,kBAAG,eAAe,kBAAG;AACrC,gBAAgB,kBAAG;AACnB,UAAU,kBAAG;AACb;AACA,yBAAyB,kBAAG;AAC5B;AACA;AACA;AACA,CAAC;;;ACrCc;AACf;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA;;AAEA,QAAQ,OAAO;AACf;AACA;;AAEA;AACA,CAAC;;;ACzBc;AACf;AACA;AACA;AACA,CAAC;;;ACJ6B;;AAEf;AACf;AACA;AACA;;AAEA;AACA,yBAAyB,UAAM;AAC/B,2BAA2B,UAAM,mBAAmB,UAAM;AAC1D,UAAU,UAAM;AAChB,CAAC;;;ACXyB;;AAE1B;AACA;AACA;AACA;AACe;AACf,mBAAmB,QAAI;AACvB,CAAC;;;ACR+B;AACE;AACA;;AAEnB,SAAS,aAAC;AACzB,SAAS,OAAO,kBAAkB,aAAC;AACnC,MAAM,QAAQ,OAAO,QAAQ;AAC7B;AACA;AACA;AACA;AACA;;;ACXe;AACf;AACA,CAAC;;;ACF6B;AACI;;AAElC,SAAS,oBAAa;AACtB,SAAS,QAAQ,UAAU,MAAM;AACjC;;AAEe;AACf,qBAAqB,oBAAa;AAClC;AACA,CAAC;;;ACVc;AACf;AACA,CAAC;;;ACFc;AACf,eAAe,kBAAkB,KAAK;AACtC;AACA,CAAC;;;ACHc;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACVc;AACf;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;;;ACPuB;;AASC;;AASH;;AAKK;;AAWF;;AAKF;;AAEsB;AACU;AACN;AACE;AACA;AACN;AACE;AACA;AACU;AACR;AACJ;AACA;AACkB;AACZ;AACF;AACA;AACI;AACN;AACQ;AACJ;AACA;AACA;AACA;AACV;AACE;AACQ;AACN;AACJ;AACE;AACI;AACJ;AACsB;AACR;AACJ;AACN;AACI;AACA;AACN;AACM;AACI;;;ACpFvD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,8EAA8E;AACvG;AACA;;AAEO,SAAS,iBAAS;AACzB;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEO;AACP;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAAS,cAAM;AACtB;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AAC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B;AACA;AACO,SAAS,SAAI;AACpB,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAmB,oCAAe,eAAe;AACnE;AACA;AACA;AACA;AACO,MAAM,cAAS,GAAG,oCAAe;AACxC;AACA;AACA;AACO,SAAS,SAAI;AACpB,QAAQ,QAAQ;AAChB;AACA;AACA,gBAAgB,QAAQ,UAAU,oCAAe;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACO,SAAS,kBAAa;AAC7B;AACA;AACO,SAAS,aAAQ;AACxB;AACA;AACA;AACA;AACA;AACO,SAAS,SAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAS;AACzB;AACA,QAAQ,eAAU,0CAA0C;AAC5D;AACA;AACA;AACA,SAAS,eAAU;AACnB,2BAA2B,SAAI;AAC/B,QAAQ,uBAAW;AACnB;AACA;AACO,SAAS,WAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAO;AACvB,qBAAqB,SAAI;AACzB,sBAAsB,SAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oBAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oBAAe;AAC/B;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA,iFAAiF,EAAE;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,sBAAiB;AACjC;AACA;AACA;AACA,WAAW,oBAAe,CAAC,oBAAe,KAAK,oBAAe;AAC9D;AACO,SAAS,YAAO;AACvB,WAAW,SAAI;AACf;AACA;AACO,MAAM,SAAI;AACV,MAAM,SAAI;AACV,SAAS,YAAO;AACvB;AACA;AACA,YAAY,kBAAc;AAC1B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACO,SAAS,cAAS;AACzB;AACA;AACA;AACA;AACA;AACO,SAAS,YAAO;AACvB;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAW;AAC3B,QAAQ,YAAY;AACpB,sBAAsB,gBAAW;AACjC;AACA,aAAa,YAAY;AACzB,yCAAyC,gBAAW;AACpD;AACA,aAAa,WAAW;AACxB,uCAAuC,gBAAW;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAoB;AACpC;AACA;AACA;AACA,sCAAsC;AACtC,uBAAuB,yBAAoB;AAC3C;AACA;AACA,WAAW,YAAO;AAClB;AACO,SAAS,cAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAmB;AACnC,mBAAmB,eAAe;AAClC;AACA,mBAAmB,oBAAoB;AACvC,2BAA2B,uBAAuB,aAAW,aAAa;AAC1E,yBAAyB,MAAM,EAAE,OAAO;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAmB;AACnC,cAAc,MAAM,GAAG,aAAW,CAAC,eAAe,kBAAkB;AACpE;AACA,SAAS,qBAAgB;AACzB;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,uBAAkB;AAClC,cAAc,eAAe,WAAW,qBAAgB,cAAc;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAU;AAC1B,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAmB;AACnC,cAAc,eAAe,iBAAiB;AAC9C;AACA;AACA;AACA;AACO,SAAS,oBAAe;AAC/B;AACA;AACA;AACA,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACO,SAAS,oBAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAS;AACb;AACA;AACA;AACA;AACA;AACO,SAAS,aAAQ;AACxB,iBAAiB,cAAS;AAC1B;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAc;AAC9B,IAAI,cAAS;AACb;AACO,SAAS,kBAAa;AAC7B,WAAW,oBAAe,qBAAqB,KAAK;AACpD;AACO,SAAS,oBAAe;AAC/B;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAS;AACzB,QAAQ,QAAQ;AAChB;AACA;AACA;AACA;AACA,gC;;ACjW8B;AACvB,MAAM,gCAA2B;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACO,SAAS,2BAAsB;AACtC;AACA;AACO,MAAM,eAAU;AACvB;AACA;AACA;AACO,MAAM,uBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,iCAA4B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,0BAAqB,iCAAiC,EAAE,iCAA4B,IAAI,sCAAsC;AAC7H,SAAS,mBAAc;AAC9B,aAAa,0BAAqB;AAClC;AACA;AACO,MAAM,oBAAe,GAAG,SAAI,CAAC,0BAAqB;AACzD,gC;;ACnQkC;AACM;AACxC;AACA;AACA;AACO,MAAM,SAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,QAAG,GAAG,SAAI;AAChB,MAAM,SAAI,GAAG,SAAI;AACjB,MAAM,QAAG,GAAG,SAAI;AAChB,MAAM,UAAK,GAAG,SAAI;AAClB,MAAM,SAAI,GAAG,SAAI;AACjB,MAAM,UAAK,GAAG,SAAI;AAClB,MAAM,SAAI,GAAG,SAAI;AACjB,MAAM,SAAI,GAAG,SAAI;AACjB,MAAM,SAAI,GAAG,SAAI;AACjB,MAAM,SAAI,GAAG,SAAI;AACjB,MAAM,UAAK,GAAG,SAAI;AAClB,MAAM,WAAM,GAAG,SAAI;AACnB,MAAM,WAAM,GAAG,SAAI;AACnB,MAAM,aAAQ,GAAG,SAAI;AACrB,SAAS,WAAM;AACtB,gBAAgB,SAAI;AACpB;AACO,SAAS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AAU;AAC1B,aAAa,QAAQ;AACrB,2BAA2B,uBAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,eAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,qBAAY,GAAG,eAAM;AAC3B,MAAM,aAAI;AACV,MAAM,mBAAU,GAAG,aAAI;AAC9B,SAAS,yBAAgB;AACzB,QAAQ,cAAS;AACjB;AACA;AACA,QAAQ,QAAQ;AAChB;AACA,YAAY,QAAQ,CAAC,uBAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAW;AACnC;AACA;AACA,SAAS,uBAAc;AACvB,QAAQ,cAAS;AACjB;AACA;AACA,QAAQ,QAAQ;AAChB;AACA;AACA;AACA;AACA;AACA,2BAA2B,eAAM;AACjC;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC,qBAAY;AAC5C;AACA;AACA;AACA;AACA,wBAAwB,uBAAW;AACnC;AACA;AACA,SAAS,qBAAY;AACrB,QAAQ,cAAS;AACjB;AACA;AACA,QAAQ,QAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,aAAI;AAC7B;AACA,4BAA4B;AAC5B;AACA;AACA,8BAA8B,mBAAU;AACxC;AACA;AACA;AACA;AACA,wBAAwB,uBAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAa;AACtB;AACA;AACA,YAAY,SAAI;AAChB,YAAY,QAAQ,CAAC,uBAAW;AAChC,gBAAgB,cAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAc;AAChD;AACA;AACA;AACA,oCAAoC,yBAAgB;AACpD,mBAAmB,QAAQ;AAC3B;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAY;AAC5C,mBAAmB,QAAQ;AAC3B;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,uBAAc;AAC9B,kBAAkB,sBAAa;AAC/B;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,2BAAkB;AAClC,kBAAkB,sBAAa;AAC/B;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,4BAAmB;AACnC,kBAAkB,sBAAa;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;ACjM+B;AACoB;AACJ;AACC;AACY;AAC5D;AACO,MAAM,oCAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,uBAAc,GAAG,SAAI,CAAC,oCAA2B;AACvD,SAAS,8BAAqB;AACrC,aAAa,oCAA2B;AACxC;AACO,MAAM,kCAAyB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mCAA0B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,iCAAwB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,sBAAa;AAC7B;AACA;AACO,SAAS,yBAAgB;AAChC;AACA;AACA;AACO,MAAM,4BAAmB;AAChC;AACA;AACA;AACO,SAAS,yBAAgB;AAChC;AACA,uBAAuB,uBAAc;AACrC,YAAY,yBAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAS,uBAAuB,MAAM,IAAI,aAAa;AACvE,qBAAqB,wBAAmB;AACxC,gBAAgB,sBAAa;AAC7B;AACA;AACA;AACA,uBAAuB,IAAI,UAAU,SAAS;AAC9C;AACA;AACA,sBAAsB,IAAI,EAAE,SAAS,GAAG,SAAS;AACjD;AACA;AACA;AACA;AACA,uBAAuB,uBAAc;AACrC,YAAY,yBAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,2BAAkB;AAC7B;AACO,SAAS,oCAA2B;AAC3C;AACA;AACA;AACA,0BAA0B,yBAAgB;AAC1C,gCAAgC,oCAAS,gBAAgB,IAAI,oCAAS,CAAC,4BAAmB,EAAE;AAC5F;AACA;AACA;AACA;AACO,SAAS,yBAAgB;AAChC;AACA;AACA;AACA,iBAAiB,oCAA2B;AAC5C;AACA;AACA;AACA,8BAA8B,sBAAa;AAC3C,cAAc,qBAAqB,SAAS,MAAM,IAAI,KAAK;AAC3D;AACO,SAAS,0BAAiB;AACjC;AACA;AACA;AACA;AACA,QAAQ,QAAQ;AAChB;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,+CAA+C,+BAA+B,sBAAsB,KAAK;AACzG;AACA,QAAQ,sBAAa;AACrB;AACA,sBAAsB,yBAAgB;AACtC;AACA;AACA;AACO,SAAS,yBAAgB;AAChC,eAAe,0BAAiB,OAAO,MAAM,cAAc,cAAM;AACjE;AACA;AACA,YAAY,SAAI;AAChB,0BAA0B,YAAO,IAAI,wBAAwB,EAAE,GAAG,EAAE,QAAQ;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,SAAI;AAChB,0BAA0B,YAAO,KAAK,EAAE,GAAG,QAAQ;AACnD;AACA;AACA;AACA,oC;;AC9NoC;AACN;AACvB,SAAS,uBAAW;AAC3B;AACA;AACO,SAAS,yBAAa;AAC7B;AACA;AACO,SAAS,kCAAsB;AACtC,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACO,SAAS,iCAAqB;AACrC,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACO,SAAS,2BAAe;AAC/B,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACA,MAAM,gCAAoB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,2BAAe,GAAG,SAAI,CAAC,gCAAoB;AACjD,MAAM,yBAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,oCAAwB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,uC;;ACnHoC;AACc;AAC6B;AACnC;AACrC,SAAS,8BAAoB;AACpC;AACA;AACO,SAAS,+BAAqB;AACrC;AACA;AACO,SAAS,4BAAkB;AAClC;AACA;AACO,SAAS,6BAAmB;AACnC;AACA;AACO,SAAS,4BAAkB;AAClC;AACA;AACO,SAAS,6BAAmB;AACnC;AACA;AACO,SAAS,+BAAqB;AACrC;AACA,YAAY,OAAO;AACnB;AACA;AACA,iBAAiB,uBAAW;AAC5B;AACA;AACA;AACA;AACA;AACO,SAAS,+BAAqB;AACrC,+CAA+C,OAAO,qBAAqB,OAAO;AAClF;AACA;AACO,SAAS,+BAAqB;AACrC;AACA;AACO,SAAS,0BAAgB;AAChC,YAAY,+BAAqB;AACjC,QAAQ,+BAAqB;AAC7B,QAAQ,+BAAqB;AAC7B,QAAQ,4BAAkB;AAC1B,QAAQ,4BAAkB;AAC1B,QAAQ,6BAAmB;AAC3B,QAAQ,6BAAmB;AAC3B;AACA,SAAS,4BAAkB;AAC3B,WAAW,oBAAS,KAAK,2BAA2B;AACpD;AACA,SAAS,6BAAmB;AAC5B,yBAAyB,4BAAkB;AAC3C;AACA;AACO,SAAS,+BAAqB;AACrC;AACA,WAAW,QAAQ;AACnB,2BAA2B,0BAAiB;AAC5C;AACA;AACA;AACA;AACA,sBAAsB,kBAAiB;AACvC,UAAU,kBAAO,aAAa,gBAAgB;AAC9C,QAAQ,+BAAqB;AAC7B,mCAAmC,4BAAkB;AACrD;AACA,aAAa,4BAAkB;AAC/B;AACA,kBAAkB,UAAU,GAAG,4BAAkB,kBAAkB;AACnE;AACA,aAAa,4BAAkB;AAC/B;AACA,kBAAkB,UAAU,GAAG,4BAAkB,kBAAkB;AACnE;AACA,aAAa,6BAAmB;AAChC;AACA,kBAAkB,UAAU,IAAI,4BAAkB,kBAAkB;AACpE;AACA,aAAa,6BAAmB;AAChC;AACA,kBAAkB,UAAU,IAAI,4BAAkB,kBAAkB;AACpE;AACA,aAAa,+BAAqB;AAClC,2BAA2B,6BAAmB,sCAAsC,KAAK,UAAU;AACnG;AACA,aAAa,+BAAqB;AAClC,eAAe,6BAAmB;AAClC;AACA,aAAa,+BAAqB;AAClC,eAAe,QAAQ;AACvB,sBAAsB,uBAAW,WAAW,YAAY,aAAa,MAAM;AAC3E,sBAAsB,uBAAW,WAAW,YAAY,aAAa,MAAM;AAC3E;AACA;AACA;AACA;AACA,gBAAgB,4BAAkB;AAClC;AACA,gBAAgB,4BAAkB;AAClC;AACA;AACA;AACA;AACA,0BAA0B,UAAU,MAAM,4BAAkB,kBAAkB;AAC9E;AACA;AACA,0BAA0B,UAAU,MAAM,4BAAkB,kBAAkB;AAC9E;AACA;AACA;AACA;AACA,gDAAgD,0BAA0B;AAC1E;AACO,SAAS,6BAAmB;AACnC;AACA,0BAA0B,UAAU,iBAAiB,UAAU;AAC/D;AACA;AACA,2BAA2B,UAAU,kBAAkB,UAAU;AACjE;AACA;AACO,SAAS,4BAAkB;AAClC;AACA,QAAQ,0BAAgB;AACxB,6CAA6C,OAAO,iBAAiB,0BAAiB,4DAA4D;AAClJ;AACA;AACA;AACA,qC;;ACnI8B;AAC9B;AACA;AACA;AACO,MAAM,SAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAM;AACtB,gBAAgB,SAAI;AACpB;AACO,MAAM,iBAAY,GAAG,SAAI;AACzB,MAAM,YAAO,GAAG,SAAI;AACpB,MAAM,aAAQ,GAAG,SAAI;AACrB,MAAM,YAAO,GAAG,SAAI;AACpB,MAAM,YAAO,GAAG,SAAI;AACpB,MAAM,UAAK,GAAG,SAAI,CAAC,SAAI;AAC9B;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAW;AAC3B;AACA;AACA;AACA;AACA,iBAAiB,iBAAY;AAC7B;AACA;AACA,iBAAiB,aAAQ;AACzB;AACA;AACA,iBAAiB,YAAO;AACxB;AACA;AACA,iBAAiB,YAAO;AACxB;AACA,iBAAiB,YAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,gC;;AChD+B;AACa;AACP;AACgB;AACxB;AAC4C;AACjC;AACjC,MAAM,eAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,0BAAoB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,iBAAW,GAAG,SAAI,CAAC,0BAAoB;AACpD;AACA;AACA;AACO,SAAS,qBAAe;AAC/B,2BAA2B,0BAAoB;AAC/C,2BAA2B,0BAAoB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,4BAAsB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAmB;AACnC,WAAW,4BAAsB;AACjC;AACO,MAAM,qCAA+B;AAC5C,MAAM,oCAA8B,GAAG,KAAK,CAAC,qCAA+B;AACrE,MAAM,yBAAmB;AAChC,MAAM,+BAAyB,GAAG,KAAK,CAAC,yBAAmB;AACpD,SAAS,oBAAc;AAC9B,mBAAmB,+BAAyB;AAC5C;AACO,MAAM,mCAA6B;AAC1C,MAAM,kCAA4B,GAAG,KAAK,CAAC,mCAA6B;AACjE,MAA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AwY,cAAM;AAC9Y,WAAW,yGAAyG,GAAG,sCAA6B;AACpJ;AACA;AACA,4BAA4B,8BAAuB;AACnD;AACA;AACA;AACA;AACA;AACA,gDAAgD,qBAAqB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,0CAAiC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,CAAC,uBAAW;AAChC;AACA;AACA;AACA,iBAAiB,8EAA8E;AAC/F,iBAAiB;AACjB;AACA;AACA;AACA,gDAAgD,oBAAoB,qBAAqB,oBAAoB;AAC7G;AACA,iBAAiB;AACjB;AACA,gDAAgD,oBAAoB,qBAAqB,oBAAoB;AAC7G;AACA;AACA;AACA;AACA,iBAAiB,sCAAsC,cAAS,UAAU;AAC1E,iBAAiB,qCAAqC,uBAAc,uBAAuB;AAC3F,iBAAiB,qCAAqC,uBAAc;AACpE;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ,CAAC,uBAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oFAAoF;AACrG,iBAAiB,oFAAoF;AACrG,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iCAAiC,gBAAK,EAAE,6EAA6E;AACrH;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA,iCAAiC,gBAAK,EAAE,6EAA6E;AACrH;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA,iCAAiC,gBAAK,EAAE,wEAAwE;AAChH;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,CAAC,uBAAW;AAChC;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB,gCAAgC,yCAAyC;AAChH,iBAAiB,sBAAsB,oBAAoB;AAC3D;AACA;AACA;AACA,+BAA+B,oDAAoD;AACnF;AACA;AACA,yCAAyC,oBAAoB,cAAc,oCAAoC;AAC/G;AACA;AACA;AACA;AACA;AACA,yCAAyC,oBAAoB,cAAc,qCAAqC;AAChH;AACA,iBAAiB;AACjB;AACA;AACA;AACA,yCAAyC,oBAAoB,cAAc,oCAAoC;AAC/G;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,6BAA6B,eAAU,CAAC,eAAU;AAClD,aAAa;AACb;AACA;AACA,YAAY;AACZ;AACA,SAAS,uBAAc;AACvB,WAAW,cAAS;AACpB;AACA,oC;;ACvT8B;AACmB;AACY;AACjB;AACrC,MAAM,mBAAS;AACf,MAAM,yBAAe;AACrB,MAAM,6BAAmB,OAAO,4BAAuB,CAAC,mBAAS,EAAE,4BAAkB;AACrF,SAAS,4BAAkB,QAAQ,SAAS;AACnD,WAAW,0HAA0H,GAAG,uBAAc,OAAO,mBAAS;AACtK;AACA,8BAA8B,wCAAiC;AAC/D;AACA,oBAAoB;AACpB,uBAAuB;AACvB,sDAAsD,+BAA+B,wCAAwC,KAAK,yDAAyD,gCAAgC,KAAK;AAChO;AACA,+DAA+D,4BAA4B,mCAAmC;AAC9H,oDAAoD;AACpD;AACA;AACA,QAAQ,QAAQ,CAAC,uBAAW;AAC5B;AACA;AACA,QAAQ,QAAQ,CAAC,uBAAW;AAC5B;AACA,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA,qC;;ACjD+B;AACkB;AACoB;AACQ;AACJ;AACzE;AACA;AACA;AACA,MAAM,mCAAqB;AACpB,SAAS,iBAAG;AACnB,2BAA2B,4BAAuB;AAClD,IAAI,mCAAqB,UAAU;AACnC;AACO,SAAS,oBAAM;AACtB,WAAW,mCAAqB;AAChC;AACO,SAAS,kCAAoB;AACpC,WAAW,SAAI,CAAC,mCAAqB;AACrC;AACA,iBAAG,CAAC,eAAO,EAAE,wBAAgB,EAAE,qBAAa;AAC5C,iBAAG,CAAC,iBAAQ,EAAE,0BAAiB,EAAE,uBAAc;AAC/C,iBAAG,CAAC,mBAAS,EAAE,4BAAkB,EAAE,yBAAe;AAClD,iC;;ACtBO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,iC;;ACP8B;AACvB,MAAM,4BAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,+BAAwB;AACrC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACO,MAAM,0BAAmB;AAChC;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mCAA4B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,wBAAiB,GAAG,SAAI,CAAC,mCAA4B;AAClE,kC;;ACnHqC;AAC9B,MAAM,sBAAY;AAClB,MAAM,uBAAa;AAC1B;AACA;AACA,iBAAiB,sBAAY;AAC7B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB,sBAAY;AAC7B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,eAAe,oDAAoD;AACnE;AACA;AACA;AACA;AACO,SAAS,yBAAe;AAC/B;AACA;AACO,SAAS,+BAAqB;AACrC,WAAW,yBAAe,UAAU,QAAQ;AAC5C;AACA,qC;;AClCO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA,kC;;ACZ+C;AAChB;AACwB;AACD;AAC/C,SAAS,WAAM;AACtB,WAAW,QAAQ;AACnB;AACO,SAAS,kBAAa;AAC7B;AACA;AACO,MAAM,oBAAe;AAC5B,MAAM,6BAAwB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,kCAA6B,GAAG,SAAI,CAAC,6BAAwB;AAC5D,SAAS,6BAAwB;AACxC;AACA;AACA;AACA;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA;AACA;AACA,aAAa,WAAW,WAAW,cAAc,iBAAiB,YAAY;AAC9E;AACA;AACA;AACA,QAAQ,aAAa;AACrB;AACA;AACA;AACA,uBAAuB,kCAA6B;AACpD;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gC;;ACvD+B;AACmB;AACF;AACO;AACP;AACD;AAChB;AACuF;AACzE;AACyB;AAChB;AACT;AACgB;AACtD,SAAS,kCAA2B;AAC3C;AACA,gJAAgJ;AAChJ;AACO,SAAS,gCAAyB;AACzC,iBAAiB,gCAAyB;AAC1C,WAAW,WAAM,qBAAqB,mBAAY;AAClD;AACO,SAAS,gCAAyB;AACzC;AACA,kJAAkJ;AAClJ,WAAW,oBAAe,QAAQ,wBAAwB;AAC1D;AACO,MAAM,mBAAY;AAClB,MAAM,wBAAiB;AAC9B;AACA;AACA,UAAU,mBAAY;AACtB;AACO,SAAS,iBAAU;AAC1B;AACA;AACO,MAAM,oBAAa;AAC1B;AACA;AACA;AACA;AACA,UAAU,wBAAiB;AAC3B,UAAU,sBAAsB;AAChC,WAAW;AACX,YAAY;AACZ,SAAS,qBAAqB;AAC9B,cAAc;AACd,gBAAgB;AAChB,aAAa;AACb,YAAY;AACZ,aAAa;AACb,UAAU,sBAAsB;AAChC,WAAW,iBAAiB;AAC5B,cAAc;AACd,WAAW,iBAAiB;AAC5B,UAAU,sBAAsB;AAChC,aAAa;AACb;AACA;AACA;AACA,eAAe;AACf,iBAAiB,iBAAiB;AAClC,oBAAoB;AACpB,gBAAgB;AAChB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL,WAAW,wBAAkB;AAC7B,kBAAkB;AAClB,YAAY,0BAAmB;AAC/B,aAAa,qCAAqC;AAClD,oBAAoB;AACpB,iBAAiB;AACjB,mBAAmB;AACnB,eAAe,uBAAsB;AACrC,aAAa;AACb,aAAa;AACb,YAAY,UAAU,oBAAe,EAAE;AACvC,aAAa,UAAU,oBAAe;AACtC;AACA;AACA,MAAM,YAAK;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,wBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,oBAAa;AAC1B,UAAU,YAAK;AACf,YAAY,YAAK;AACjB,SAAS,YAAK;AACd,UAAU,YAAK;AACf,WAAW,YAAK;AAChB,YAAY,YAAK;AACjB,YAAY,YAAK;AACjB,UAAU,YAAK;AACf,WAAW,YAAK;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAiB,WAAW;AAC5C;AACA;AACA;AACA;AACA,uBAAuB,QAAQ,wCAAwC,EAAE,oBAAa,YAAY,oBAAa;AAC/G;AACA;AACA,eAAe,SAAS,uBAAuB,EAAE;AACjD,eAAe,SAAS,wBAAwB,EAAE;AAClD;AACA,oBAAoB;AACpB,SAAS;AACT;AACA;AACA,uBAAuB;AACvB,aAAa;AACb;AACA,uBAAuB;AACvB,aAAa;AACb;AACA,uBAAuB;AACvB,aAAa;AACb;AACA,uBAAuB;AACvB,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,SAAS;AACT;AACA,0BAA0B,yBAAyB;AACnD,wBAAwB,wBAAwB;AAChD,wBAAwB;AACxB,SAAS;AACT;AACA;AACA,iBAAiB,uBAAuB;AACxC,iBAAiB,yBAAyB;AAC1C,iBAAiB,sBAAsB;AACvC,iBAAiB,uBAAuB;AACxC,iBAAiB,wBAAwB;AACzC,iBAAiB,yBAAyB;AAC1C,iBAAiB,yBAAyB;AAC1C,iBAAiB,uBAAuB;AACxC,iBAAiB,wBAAwB;AACzC,iBAAiB;AACjB;AACA;AACA;AACA;AACO,SAAS,2BAAoB;AACpC;AACA;AACA;AACA;AACA,uBAAuB,QAAQ,2CAA2C,EAAE,wBAAiB,eAAe,wBAAiB;AAC7H;AACA;AACA;AACA,uBAAuB;AACvB,SAAS;AACT;AACA;AACA,2BAA2B;AAC3B,aAAa;AACb;AACA,2BAA2B;AAC3B,aAAa;AACb;AACA,2BAA2B;AAC3B,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACO,SAAS,iBAAU;AAC1B;AACA,eAAe,OAAO;AACtB;AACA,4BAA4B,OAAO;AACnC,4BAA4B,OAAO;AACnC,4BAA4B,OAAO;AACnC,+BAA+B;AAC/B;AACA;AACA;AACO,SAAS,iBAAU,YAAY;AACtC,WAAW,wBAAwB,wBAAwB,cAAM;AACjE,WAAW,uBAAW,GAAG,EAAE,oBAAa,SAAS,iBAAU,WAAW,UAAU,wBAAiB,YAAY,aAAa,2BAAoB,eAAe,kBAAkB;AAC/K;AACA,MAAM,kBAAW,eAAe,oBAAe;AAC/C,MAAM,gCAAyB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,sDAA+C,kBAAkB,2FAA2F,EAAE,gDAA2C;AACxM,SAAS,6BAAsB;AACtC,aAAa,cAAS;AACtB,uBAAuB,gCAAyB;AAChD;AACA;AACA;AACA;AACA;AACA,gBAAgB,2BAAsB;AACtC;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA,2BAA2B,mCAA8B;AACzD;AACA;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA,2BAA2B,kBAAW;AACtC;AACA,2BAA2B,mCAA8B;AACzD;AACA;AACA;AACA,0CAA0C,sDAA+C;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kCAA2B;AACnC;AACA,oBAAoB,kCAAoB;AACxC;AACA;AACA;AACA,IAAI,0BAAmB;AACvB;AACA;AACA,YAAY,QAAQ,kBAAkB,YAAO;AAC7C;AACA;AACA;AACA,WAAW,YAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,0BAAmB;AAC5B,WAAW,gDAAgD,GAAG,wBAAkB;AAChF;AACA,SAAS,YAAO;AAChB,oEAAoE;AACpE;AACA;AACA,SAAS,YAAO;AAChB,uEAAuE;AACvE;AACA;AACA,SAAS,YAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kCAA2B;AACpC;AACA;AACA;AACA,wBAAwB;AACxB;AACA,gDAAgD;AAChD;AACA,SAAS,YAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kC;;ACtWO;AACP;AACA;AACA,iC;;ACHoC;AAC7B,SAAS,mBAAY;AAC5B;AACA;AACO,SAAS,wBAAiB;AACjC,YAAY,OAAO;AACnB;AACA,kC;;ACPyE;AACnC;AACA;AACE;AACJ;AACpC,iC;;ACL+B;AACD;AACwC;AAChC;AACA;AACE;AACJ;AAC7B,MAAM,cAAU;AACvB;AACA,YAAY,WAAW;AACvB;AACA;AACA,iBAAiB,mBAAY;AAC7B;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,WAAW;AACvB;AACA;AACA,iBAAiB,UAAU;AAC3B;AACA;AACA,wBAAwB,uBAAW;AACnC;AACA;AACA,6CAA6C,UAAU,yEAAyE;AAChI;AACA;AACA,6CAA6C,UAAU,kEAAkE;AACzH;AACA;AACA,6CAA6C,UAAU,kEAAkE;AACzH;AACA;AACA,eAAe,SAAS,gBAAgB,cAAM;AAC9C,6CAA6C,UAAU,2DAA2D;AAClH;AACA;AACA,6CAA6C,U;AAC7C;AACA,+CAA+C;AAC/C;AACA;AACA,6CAA6C,U;AAC7C;AACA,+CAA+C;AAC/C;AACA;AACA,+B;;AC7D6C;AACP;AACqC;AACwB;AACzC;AAC7B;AACiF;AAC1E;AACF;AAClC,MAAM,wBAAkB;AACxB;AACA;AACA;AACA;AACO,SAAS,mBAAa;AAC7B,gBAAgB,wBAAkB;AAClC;AACO,MAAM,qBAAe,YAAY,QAAG,EAAE,QAAG,EAAE,SAAI,EAAE,SAAI,EAAE,UAAK,EAAE,WAAM,EAAE,WAAM,EAAE,SAAI,EAAE,SAAI,EAAE,SAAI;AAC9F,MAAM,4BAAsB,YAAY,QAAG,EAAE,SAAI,EAAE,QAAG;AAC7D,SAAS,6BAAuB;AAChC;AACA;AACA;AACA;AACA,QAAQ,qBAAU,UAAU,qBAAU;AACtC,YAAY,yBAAc,6BAA6B,yBAAc;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,qBAAU;AACzC,+BAA+B,qBAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yBAAc;AAC/B;AACA;AACA,iBAAiB,yBAAc;AAC/B;AACA;AACA;AACA,aAAa,yBAAc;AAC3B;AACA;AACA,aAAa,yBAAc;AAC3B;AACA;AACA;AACA;AACA,SAAS,yBAAmB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAK,sBAAsB;AAC3C,iBAAiB,cAAS;AAC1B;AACA,SAAS,qBAAe;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6BAAuB,mBAAmB,6BAAuB;AAC1F;AACA;AACA;AACA;AACA,yBAAyB,qBAAU,oBAAoB,kBAAO,oBAAoB;AAClF,2BAA2B,yBAAmB;AAC9C;AACA,yBAAyB,qBAAU,iBAAiB,kBAAO,iBAAiB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAAoB;AACxC;AACA,qCAAqC,wBAAe;AACpD;AACA,+BAA+B,mBAAK;AACpC,iCAAiC,sBAAW;AAC5C;AACA;AACA;AACA;AACA,0BAA0B,kBAAO,aAAa;AAC9C;AACA;AACA;AACA;AACA;AACA,6BAA6B,oBAAoB;AACjD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,YAAY,aAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4BAAsB;AACzD;AACA;AACA;AACA,oBAAoB,mBAAa;AACjC;AACA;AACA,QAAQ,oBAAW;AACnB;AACA;AACA;AACA,8FAA8F,eAAS;AACvG;AACA;AACA;AACA;AACA,YAAY,QAAQ,CAAC,uBAAW;AAChC;AACA;AACA;AACA,QAAQ,4BAAiB,UAAU,gCAAwB;AAC3D;AACA,YAAY,QAAQ,CAAC,uBAAW;AAChC;AACA;AACA;AACA;AACA,QAAQ,qBAAU,mDAAmD,aAAQ,CAAC,iBAAO;AACrF,QAAQ,QAAQ,CAAC,uBAAW;AAC5B;AACA;AACA;AACA;AACA;AACA,0DAA0D,eAAU;AACpE;AACA;AACA;AACA;AACA,iC;;AC/K+B;AACM;AACD;AACM;AACT;AACU;AAC3C,SAAS,4BAAgB;AACzB,WAAW,6BAA6B,mBAAmB,cAAM;AACjE,WAAW,SAAI;AACf;AACA,SAAS,sCAA0B;AACnC;AACA;AACA,mDAAmD,Y;AACnD;AACA,wBAAwB,SAAI,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,SAAS,2BAAe,yBAAyB;AACjD;AACA,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA,SAAS,0BAAc,yBAAyB;AAChD;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACO,MAAM,iCAAqB;AAClC;AACA;AACA;AACA;AACA,YAAY,UAAU;AACtB,mBAAmB,iBAAiB;AACpC,4BAA4B,cAAS,iBAAiB;AACtD;AACA;AACA;AACA;AACA,6BAA6B,2BAAe;AAC5C;AACA;AACA;AACA,sBAAsB,2BAAe;AACrC,0BAA0B,0BAAc;AACxC;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,wCAAwC,qBAAqB,cAAM;AAClF,wBAAwB,cAAS,iBAAiB;AAClD,6BAA6B,2BAAe;AAC5C,uDAAuD,0BAAc;AACrE;AACA,0CAA0C,gBAAgB,YAAY,KAAK,KAAK,OAAO,4BAAgB,+BAA+B;AACtI,uBAAuB;AACvB,wBAAwB;AACxB;AACA,0BAA0B,SAAI,uBAAuB;AACrD;AACA;AACA;AACA,2BAA2B,WAAK;AAChC;AACA;AACA,mBAAmB,0CAA0C;AAC7D,4DAA4D,cAAc,oDAAoD,2CAA2C,gBAAgB,KAAK,IAAI;AAClM;AACA;AACA,qDAAqD,iBAAiB,aAAa,KAAK,KAAK,oCAAoC,eAAe,EAAE,SAAI,oGAAoG;AAC1P;AACA;AACA,qDAAqD,iBAAiB,aAAa,KAAK,KAAK,oCAAoC,0CAA0C,EAAE,SAAI,2EAA2E;AAC5P;AACA,uDAAuD,eAAe,QAAQ,iCAAiC,YAAY,SAAS,sCAA0B,UAAU;AACxK;AACA;AACA,uC;;ACjH+B;AACsC;AACnB;AACpB;AACY;AACR;AAC3B,MAAM,6BAAmB;AAChC;AACA;AACA;AACA;AACA;AACA,YAAY,UAAU;AACtB,kCAAkC,+BAAuB;AACzD;AACA,2BAA2B,4BAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,8BAA8B,+BAAuB;AACrD,6BAA6B,sBAAc;AAC3C;AACA,uBAAuB,4BAAiB;AACxC;AACA,2BAA2B,QAAQ,0BAA0B,cAAM;AACnE,uCAAuC,YAAY,+BAA+B,cAAM;AACxF,4CAA4C;AAC5C,oBAAoB,QAAQ,CAAC,uBAAW;AACxC,6DAA6D,cAAc,0CAA0C,qBAAqB,YAAO,4BAA4B,IAAI,+BAA+B,IAAI;AACpN;AACA;AACA;AACA,2DAA2D,uBAAuB,WAAW;AAC7F;AACA;AACA,qC;;AC5C+B;AACqB;AAC4F;AAClH;AACQ;AACS;AACxC,SAAS,+BAAsB;AACtC;AACA;AACA;AACA,QAAQ,cAAc;AACtB,eAAe,iCAAwB;AACvC;AACA,WAAW,kCAAyB;AACpC;AACO,SAAS,kCAAyB;AACzC;AACA;AACA;AACA,WAAW,iCAAwB;AACnC;AACA;AACA;AACA;AACA,SAAS,4BAAmB;AAC5B;AACA,QAAQ,sBAAW;AACnB;AACA,iDAAiD,OAAO,+BAA+B;AACvF;AACA;AACA,YAAY,QAAQ,CAAC,uBAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kCAAyB;AAClC,eAAe,4BAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6BAAkB,cAAc,gBAAW;AACnD,qBAAqB,4BAAmB;AACxC,iDAAiD,sBAAsB,OAAO,KAAK;AACnF;AACA;AACA;AACA,SAAS,yCAAgC;AACzC,QAAQ,qBAAU;AAClB,eAAe,kCAAyB;AACxC;AACA;AACA,yBAAyB,4BAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oCAA2B;AACpC,QAAQ,4BAAiB;AACzB,mBAAmB,yCAAgC;AACnD;AACA;AACA;AACA,iBAAiB,2BAAgB;AACjC,oBAAoB;AACpB;AACA;AACA;AACA,YAAY,wCAA6B;AACzC,uBAAuB,yCAAgC;AACvD;AACA,qDAAqD,gBAAgB,gBAAgB;AACrF;AACA;AACA,uBAAuB,YAAY,4CAA4C,cAAM;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iCAAwB;AACjC;AACA;AACA,YAAY,kBAAc;AAC1B;AACA,gBAAgB,OAAO;AACvB;AACA;AACA,+BAA+B,oCAA2B;AAC1D;AACA;AACA;AACA,2BAA2B,oCAA2B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;ACjHkC;AACwC;AACnB;AACzB;AACY;AACnC,MAAM,6CAA2B;AACxC;AACA;AACA;AACA;AACA,YAAY,UAAU;AACtB,mBAAmB,iBAAiB;AACpC;AACA,sCAAsC,+BAAuB;AAC7D,wCAAwC,2BAAmB;AAC3D;AACA;AACA,6BAA6B,qBAAU,qBAAqB,YAAQ,yBAAyB,qBAAU;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,WAAW;AAC1B,QAAQ,QAAQ,CAAC,uBAAW;AAC5B,uDAAuD,UAAU,eAAe;AAChF;AACA;AACA,6C;;AChC+B;AACK;AACY;AACa;AACI;AACF;AACjB;AAChB;AACiB;AACN;AACU;AACT;AACa;AACD;AACJ;AAC6B;AACb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oB;AAC1B;AACA;AACA;AACA;AACO,SAAS,kCAAyB;AACzC,WAAW,6BAAoB;AAC/B;AACA;AACA;AACA;AACA,KAAK,IAAI;AACT;AACA,oC;;ACpB8B;AACwC;AACtE;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,WAAK;AAClB,6BAA6B,eAAe;AAC5C;AACA;AACA;AACA;AACA,mBAAmB,WAAK,CAAC,cAAS,iBAAiB,cAAS;AAC5D;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,eAAe,oBAAe;AAC9B;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,oBAAoB;AACpB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,SAAI;AAC9B;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAY;AAC5B;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAY;AAC5B;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uBAAiB;AAChC;AACA;AACO,SAAS,uBAAiB;AACjC;AACA,QAAQ,QAAQ,CAAC,uBAAW;AAC5B;AACA;AACA;AACA;AACO,SAAS,6BAAuB,4CAA4C,uBAAiB;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,iC;;ACxHiC;AACjC;AACA;AACA;AACA;AACA;AACO,MAAM,kBAAa,SAAS,WAAK;AACxC,6BAA6B,eAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;ACnBO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;A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CO;AACC;AAC5C,MAAM,eAAO;AACb,MAAM,eAAO;AACb;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,2CAA2C,eAAO;AAClD;AACA;AACA,KAAK;AACL;AACA,eAAe,OAAO;AACtB;AACA,YAAY,eAAU;AACtB,YAAY,QAAQ,CAAC,uBAAW;AAChC;AACA;AACA;AACA,gCAAgC,eAAO;AACvC;AACA;AACA,mBAAmB,+BAA+B;AAClD;AACA,uCAAuC,QAAQ,uBAAuB,gBAAgB,cAAc,WAAW,uBAAuB,cAAc,cAAc,EAAE,EAAE,eAAO,SAAS,qBAAqB;AAC3M,aAAa;AACb;AACA;AACA;AACA,wBAAwB,6CAA6C;AACrE,wBAAwB,6CAA6C;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,eAAO;AACzC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACe,sEAAO,EAAC;AACvB,mC;;AC5DsC;AACtC;AACA;AACA;AACO,MAAM,qBAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAU,SAAS,qBAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,aAAQ,GAAG;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;ACpJ+B;AAC0B;AACL;AACiB;AACW;AACzC;AACG;AACnC,MAAM,qBAAY,SAAS,qBAAY;AAC9C;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAY,OAAO,cAAS;AAC/C;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,gCAAgC,iBAAW,yBAAyB,gCAAwB;AAC5F,yBAAyB,iBAAW,WAAW,kBAAO;AACtD;AACA,2BAA2B,kBAAO,YAAY,cAAc;AAC5D,kCAAkC,SAAI;AACtC;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA,8BAA8B,WAAW,aAAa,KAAK;AAC3D;AACA;AACA,SAAS,IAAI;AACb,YAAY,YAAO;AACnB;AACA;AACA,mBAAmB,qBAAY;AAC/B;AACA;AACA,mCAAmC,OAAO,WAAW,eAAe,cAAM;AAC1E,mCAAmC,0BAAiB;AACpD,wDAAwD,WAAW,+BAA+B;AAClG,mBAAmB,qBAAY;AAC/B,aAAa,SAAI;AACjB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAI;AAC3B;AACA;AACA,uBAAuB,SAAI;AAC3B;AACA;AACA,2BAA2B,SAAI,eAAe;AAC9C;AACA;AACA;AACA,wBAAwB,SAAI;AAC5B,mBAAmB,sBAAsB;AACzC,uBAAuB,0BAAiB,aAAa,YAAY,gBAAgB,cAAM;AACvF,qFAAqF,QAAQ,uBAAkB,2BAA2B,WAAW,QAAQ,yBAAgB,QAAQ,KAAK,YAAY,kBAAkB,KAAK,cAAc,aAAa,GAAG,QAAQ;AACnQ;AACA;AACA;AACA;AACA,oC;;ACnF+B;AACG;AACwB;AACtB;AACiB;AAC4B;AAC9B;AAC5C,MAAM,oBAAY;AAClB,MAAM,oCAA4B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAO;AACb;AACA,oBAAoB;AACpB,KAAK;AACL;AACA;AACA;AACA,oGAAoG,oCAA4B;AAChI;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAO,IAAI,KAAK,GAAG,OAAO;AAC/C,iCAAiC,iBAAiB;AAClD,qBAAqB,YAAO,IAAI,KAAK,GAAG,OAAO,GAAG,QAAQ;AAC1D;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,mBAAK;AACxC,sCAAsC,SAAI;AAC1C,4BAA4B,8BAAsB;AAClD;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ,CAAC,uBAAW;AACxC;AACA;AACA;AACA,oBAAoB,QAAQ,CAAC,uBAAW;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,SAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ,CAAC,uBAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAK;AAClC;AACA;AACA;AACA,aAAa,YAAO;AACpB,gCAAgC,qBAAY;AAC5C;AACA,KAAK;AACL;AACA,oCAAoC,oBAAY;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB,gBAAgB,cAAM;AACtE,iCAAiC,uBAAkB;AACnD;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACe,sEAAO,EAAC;AACvB,mC;;ACzJwC;AACb;AACa;AACG;AACX;AACS;AACY;AACrD,MAAM,oBAAa;AACnB;AACA;AACA;AACA;AACA;AACA,aAAa,yBAAe;AAC5B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,qDAAqD;AACrD,sBAAsB,kBAAO;AAC7B;AACA;AACA,2BAA2B,YAAO,IAAI,KAAK,GAAG,QAAQ;AACtD;AACA;AACA,6DAA6D,eAAe,WAAW,OAAO,qBAAY,WAAW,IAAI,cAAc,KAAK;AAC5I;AACA;AACA;AACA,uFAAuF,MAAM,GAAG,aAAW,UAAU;AACrH;AACA;AACA,wJAAwJ;AACxJ;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,6DAA6D,eAAK;AAClE,8BAA8B,oBAAY;AAC1C,2CAA2C,YAAO,IAAI,KAAK,GAAG,QAAQ;AACtE,yCAAyC,EAAE;AAC3C;AACA,+BAA+B,MAAM,IAAI,UAAU,OAAO,aAAa,kBAAkB,EAAE;AAC3F;AACA;AACA;AACA;AACA;AACA;AACe,0EAAa,EAAC;AAC7B,kC;;AC9DqC;AAC9B,MAAM,aAAM;AACnB,MAAM,aAAM;AACZ;AACA;AACA,KAAK;AACL;AACA;AACA,iCAAiC,aAAM;AACvC;AACA,kBAAkB,iDAAiD;AACnE,SAAS;AACT,KAAK;AACL;AACA,mCAAmC,eAAK;AACxC,sCAAsC,aAAM;AAC5C,mBAAmB,OAAO,YAAY,IAAI;AAC1C,+CAA+C,OAAO,uBAAuB,OAAO,WAAW,QAAQ,kBAAQ,SAAS;AACxH,eAAe,OAAO,KAAK,IAAI;AAC/B;AACA;AACe,mEAAM,EAAC;AACtB,kC;;ACtBgE;AAC3B;AACV;AACa;AACH;AACK;AAC1C,MAAM,WAAK;AACX;AACA;AACA,KAAK;AACL;AACA;AACA,4BAA4B,QAAQ,iBAAiB,wCAAa;AAClE;AACA,KAAK;AACL;AACA,YAAY,iBAAa;AACzB;AACA,8DAA8D,YAAO,IAAI,aAAa,GAAG,WAAW;AACpG;AACA,0CAA0C,wCAAwC;AAClF;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,sCAAsC,gCAAgC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,eAAK;AAC7E;AACA,gBAAgB,iBAAM;AACtB,wEAAwE,aAAM;AAC9E;AACA;AACA;AACA;AACA;AACA;AACe,gEAAK,EAAC;AACrB,iC;;ACvDwC;AACE;AACQ;AACd;AACiB;AACV;AAC3C,MAAM,oBAAa;AACnB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,iBAAiB,sBAAc;AAC/B;AACA;AACA;AACA;AACA,2BAA2B,yBAAmB;AAC9C,gBAAgB,QAAQ,CAAC,uBAAW;AACpC;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,6BAA6B,sBAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,8BAAoB;AAC/C,+BAA+B,EAAE,qBAAqB,aAAW,aAAa,IAAI,kBAAkB,eAAe;AACnH;AACA;AACA;AACA,mCAAmC,aAAW,aAAa,IAAI,kBAAkB;AACjF;AACA,gCAAgC,uCAAuC,IAAI,SAAS;AACpF;AACA;AACA;AACA;AACA,kDAAkD,0BAA0B;AAC5E,KAAK;AACL;AACA;AACA,6BAA6B,sBAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,0EAAa,EAAC;AACtB,SAAS,aAAM;AACtB,kBAAkB,aAAW;AAC7B,qBAAqB,MAAM;AAC3B;AACA,SAAS,sBAAe;AACxB;AACA,2BAA2B,kBAAY,gFAAgF,sBAAe;AACtI;AACA,kC;;AC/EgE;AACpB;AACC;AACT;AACsD;AACvC;AACV;AACP;AAClC,MAAM,sBAAc;AACpB;AACA,qEAAqE,yBAAe;AACpF,iGAAiG,sBAAY;AAC7G;AACA,YAAY,QAAQ,CAAC,uBAAW;AAChC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAK;AAClC;AACA;AACA;AACA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4BAAW;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,MAAM,oBAAG;AACT,SAAS,oBAAG;AACZ,SAAS,oBAAG;AACZ;;AAEA,MAAM,qBAAI;AACV,SAAS,wBAAO;AAChB,cAAc;AACd;;AAEA;AACA,WAAW,oBAAG,2BAA2B,qBAAI;AAC7C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,yBAAyB,qBAAI;AAC7B;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,mBAAmB,qBAAI;AACvB;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB,qBAAI;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,SAAS,sBAAK;AACd;AACA;AACA;AACA,UAAU,qBAAI;AACd,QAAQ;;AAER;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA,gCAAgC;;AAEhC;AACA;;AAEA,SAAS,yBAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,uBAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAO;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,0BAAS;AAClB;AACA;;AAEA,SAAS,uBAAM;AACf;AACA;;AAEA;AACA,cAAc,2BAAU;AACxB;;AAEA,SAAS,yBAAQ;AACjB;AACA;;AAEA,SAAS,yBAAQ;AACjB;AACA;;AAEA,SAAS,yBAAQ;AACjB;AACA;;AAEA,SAAS,oBAAG;AACZ;AACA,oBAAoB,sBAAK,+CAA+C,sBAAK;AAC7E;;AAEA;AACA,gCAAgC,uBAAM;AACtC,oCAAoC,gCAAe;;AAEnD;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,SAAS,yBAAQ;AACjB;;AAEA,SAAS,qBAAI;AACb;AACA,aAAa,qBAAI;AACjB;AACA;AACA;;AAEA,MAAM,iCAAgB,SAAS;;AAE/B,SAAS,yBAAQ;AACjB,wBAAwB,iCAAgB;AACxC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,oBAAG,eAAe,oBAAG;AACrC,gBAAgB,oBAAG,0BAA0B,oBAAG;AAChD,yBAAyB,oBAAG;AAC5B;AACA;;AAEA,SAAS,sBAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,oBAAoB;AAC5B;AACA;;AAEA,QAAQ,SAAS;AACjB;AACA;;AAEA,QAAQ,SAAS;AACjB;AACA;;AAEA;AACA;;AAEA,SAAS,uBAAM;AACf;;AAEA;;AAEA;AACA;;AAEA,SAAS,oBAAG;AACZ;AACA;AACA;AACA,yCAAyC,uBAAM,kCAAkC,uBAAM,qBAAqB,uBAAM,4BAA4B,uBAAM;AACpJ;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,qBAAI;AACb,kBAAkB,qBAAI;AACtB;;AAEA,SAAS,kBAAC;AACV,SAAS,wBAAO,kBAAkB,kBAAC,UAAU,yBAAQ,OAAO,yBAAQ;AACpE;AACA;AACA;;AAEA,SAAS,0BAAS;AAClB;AACA;;AAEA,MAAM,8BAAa,QAAQ,yBAAQ,UAAU,uBAAM;;AAEnD,SAAS,uBAAM;AACf,qBAAqB,8BAAa;AAClC;AACA;;AAEA,SAAS,yBAAQ;AACjB;AACA;;AAEA,SAAS,sBAAK;AACd,cAAc;AACd;;AAEA,iBAAiB,OAAO;;AAExB;AACA;;AAEA,SAAS,yBAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,2BAAU;AACnB;AACA;AACA;;AAEA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEoqB;;;ACt0BpoB;;AAEjB;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,sBAAK;AAChC,2BAA2B,sBAAK;AAChC;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B,sBAAK;AAClC,6BAA6B,sBAAK;AAClC;AACA;AACA;AACA;AACA,CAAC;;;AC7GmC;AACA;AACyC;;AAE7E,SAAS,mBAAW;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;;AAEA,oCAAoC,sBAAK,oBAAoB;AAC7D,oCAAoC,sBAAK,oBAAoB;AAC7D,qCAAqC,aAAS;AAC9C,sCAAsC,aAAS;AAC/C;AACA;AACA,uBAAuB,2BAAU;AACjC;AACA,qBAAqB,UAAU,IAAI,GAAG;;AAEtC,kBAAkB;AAClB,iBAAiB;AACjB;;AAEA;AACA,QAAQ,yBAAQ;AAChB;AACA,2BAA2B,sBAAK;AAChC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,UAAU,oBAAc;AAC/B,eAAe,sBAAK;AACpB,OAAO,UAAU,oBAAc;AAC/B;AACA,OAAO,UAAU,oBAAc;AAC/B;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAW;AAC5B;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,UAAU,sBAAK;AACf;AACA;AACA;AACA,mBAAmB,oBAAc;AACjC,iBAAiB,sBAAK;AACtB,eAAe,2BAAU;AACzB;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,0CAA0C;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;;AC/GkB;;AAE4B;AACI;AACI;AACA;;;ACnBf;AACxC,SAAS,mBAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mBAAO;AAC5B,qBAAqB,mBAAO;AAC5B;AACA;AACA;AACA,SAAS,2BAAe;AACxB;AACA,eAAe,2BAAe;AAC9B;AACA;AACA;AACO,SAAS,8BAAkB;AAClC,gBAAgB,UAAK;AACrB;AACA;AACA,gDAAgD,2BAAe;AAC/D,2BAA2B,mBAAO;AAClC;AACA,KAAK;AACL;AACA;AACA,uC;;AC/BuC;AACG;AACA;AACS;AAC5C,MAAM,iBAAU,SAAS,qBAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAU;AAC9B,gCAAgC,8BAAkB;AAClD;AACA;AACA,mBAAmB,iBAAU,mBAAmB,cAAS;AACzD;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;AACA,kC;;ACjC+B;AACiC;AACd;AACN;AACX;AACkC;AACrB;AACF;AACe;AACpD,SAAS,wBAAkB;AAClC;AACA;AACA;AACA,uBAAuB,SAAI,sDAAsD;AACjF,uBAAuB,cAAS;A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K,qCAAqC,cAAc,KAAK,KAAK,SAAS,oBAAe;AAClK,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,4BAAmB;AACnC,WAAW,OAAO;AAClB;AACA,0BAA0B,+BAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,qBAAY;AAC5B,WAAW,iBAAiB;AAC5B;AACA,sBAAsB,qBAAY;AAClC,sBAAsB,qBAAY;AAClC,sBAAsB,qBAAY;AAClC,sBAAsB,qBAAY;AAClC,qBAAqB;AACrB;AACA,oC;;ACzK8B;AACvB,MAAM,kCAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,kCAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,8BAAuB,GAAG,SAAI,CAAC,kCAA2B;AAChE,MAAM,8BAAuB,GAAG,SAAI,CAAC,kCAA2B;AACvE,kC;;ACjCkC;AACW;AACA;AACG;AACgB;AAChE,SAAS,mCAA4B;AACrC;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,0CAA0C,SAAI,oBAAoB,SAAI;AACtE;AACA;AACA;AACA;AACA,mCAAmC,iBAAiB,QAAQ,QAAQ,MAAM,0BAAmB,sBAAsB,KAAK,0BAAmB,sBAAsB;AACjK;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO,SAAS,qBAAc;AAC9B;AACA;AACA;AACA;AACA,cAAc,oBAAc;AAC5B;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAW,mCAAmC,cAAS,SAAS;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mCAA4B;AACtD,sBAAsB,mCAA4B;AAClD,yBAAyB,yBAAkB;AAC3C;AACA;AACO,SAAS,yBAAkB;AAClC;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,oBAAoB,mBA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CA;AACO,SAAS,4BAAiB;AACjC,2BAA2B,aAAQ;AACnC;AACA;AACA;AACA;AACO,SAAS,8BAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAa;AAC7B;AACA;AACO,SAAS,2BAAgB,EAAE,iDAAiD;AACnF;AACA,kBAAkB,uBAAiB;AACnC,YAAY,qBAAU;AACtB,gBAAgB,aAAS;AACzB;AACA,wBAAwB,iBAAiB,YAAY;AACrD;AACA;AACA,gBAAgB,aAAQ,6CAA6C,0BAAiB;AACtF;AACA;AACA;AACA,gBAAgB,iBAAiB,YAAY;AAC7C;AACA;AACA;AACO,SAAS,2BAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAM;AACtB;AACA,QAAQ,OAAO;AACf,eAAe,qBAAU;AACzB;AACA,aAAa,uBAAW;AACxB;AACA;AACA;AACA;AACO,SAAS,wBAAa;AAC7B,2BAA2B,qBAAU;AACrC;AACA;AACA;AACA;AACA,sC;;AC3P4D;AACJ;AACf;AACI;AACH;AACS;AAC5C,MAAM,uBAAa,SAAS,qBAAY;AAC/C;AACA;AACA;AACA,gCAAgC,8BAAkB;AAClD;AACA;AACA,mBAAmB,uBAAa,OAAO,cAAS;AAChD;AACA;AACA;AACA;AACA,iBAAiB,0BAAe;AAChC;AACA;AACA,gBAAgB,gBAAW;AAC3B,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA,8BAA8B,+BAAqB,EAAE,oCAAoC,EAAE,KAAK,EAAE;AAClG,iBAAiB;AACjB;AACA,6BAA6B,uBAAa;AAC1C;AACA,wBAAwB,6BAAmB,qBAAqB,cAAc;AAC9E,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAI,iBAAiB;AACjD;AACA;AACO,SAAS,6BAAmB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;AACjC,SAAS,8BAAqB;AACrC;AACA,WAAW,oBAAW;AACtB,WAAW,oBAAW;AACtB,WAAW,oBAAW;AACtB,WAAW,oBAAW;AACtB;AACA;AACO,SAAS,oBAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uBAAiB,UAAU,yBAAa;AACxD;AACA,oBAAoB,kBAAY;AAChC;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAU;AAC1C;AACA;AACA;AACA,oBAAoB,mBAAU;AAC9B;AACA;AACA,gCAAgC,iBAAQ,uCAAuC,UAAU;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAA2B;AACxD,qCAAqC,KAAK,MAAM,KAAK,KAAK,aAAa;AACvE,iBAAiB,6BAA6B,4CAA4C,GAAG;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAU;AACnB;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAQ;AACxB;AACA;AACA,yBAAyB,oBAAe;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAY,IAAI,aAAa,IAAI,aAAa,MAAM,UAAU;AACtF;AACA,oC;;ACvFO;AACP;AACA;AACA,qC;;ACH+B;AACc;AACC;AACvC,SAAS,sBAAgB;AAChC,WAAW,SAAI;AACf;AACA,6CAA6C,WAAW,yBAAa,mCAAmC,uBAAW,WAAW,iBAAiB;AAC/I,KAAK,IAAI;AACT;AACA,iC;;ACToC;AACN;AACsC;AAC7D,SAAS,2BAAmB;AACnC,QAAQ,kBAAY,WAAW,kBAAY;AAC3C;AACA;AACA,aAAa,mBAAa;AAC1B,eAAe,cAAM;AACrB;AACA;AACA;AACA;AACO,SAAS,yBAAiB;AACjC;AACA,kBAAkB,cAAM;AACxB;AACA;AACA,YAAY,QAAQ,CAAC,uBAAW;AAChC;AACA;AACA;AACA;AACA;AACA,mC;;ACxB4D;AAC1B;AACD;AACjC,MAAM,yCAA+B,iCAAiC,EAAE,mCAA4B,IAAI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a,uBAAW;AACxB;AACA;AACA;AACA;AACO,SAAS,4BAAiB;AACjC;AACA;AACA;AACA,4BAA4B,6BAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,qBAAU;AAC1B;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAa;AAC7B,WAAW,SAAS;AACpB,WAAW,oBAAe,cAAc,sBAAW;AACnD;AACO,SAAS,sBAAW,EAAE,+BAA+B;AAC5D;AACA,QAAQ,sBAAc;AACtB,YAAY,aAAQ;AACpB;AACA;AACA,YAAY,8BAAwB;AACpC;AACA;AACA;AACA;AACA;AACO,SAAS,uBAAY,EAAE,2CAA2C;AACzE;AACA,gLAAgL,2BAAgB;AAChM;AACO,SAAS,2BAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gCAAqB,EAAE,oDAAoD;AAC3F,WAAW,iHAAiH;AAC5H,QAAQ,8BAAwB;AAChC;AACA;AACA,uBAAuB,+BAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+BAAoB;AACvC;AACA;AACA;AACA;AACA,SAAS,+BAAoB;AAC7B;AACA,YAAY,kBAAkB,WAAW,IAAI,IAAI,IAAI,IAAI;AACzD;AACO,SAAS,qCAAmB;AACnC,QAAQ,aAAQ;AAChB;AACA;AACA;AACA;AACA,sC;;ACpJ6C;AACqB;AACb;AACF;AACd;AACqC;AAC1B;AACJ;AACL;AACQ;AAC0B;AACW;AACT;AAC9B;AAC2B;AACjE,SAAS,iBAAW;AAC3B,4BAA4B,iBAAW,UAAU,qBAAe,UAAU,wBAAkB;AAC5F;AACA;AACA;AACA,SAAS,qBAAe;AACxB,WAAW,WAAW;AACtB;AACA,2BAA2B,aAAK,KAAK,4BAAqB;AAC1D,oBAAoB,6BAAkB;AACtC;AACA;AACA;AACA,wBAAwB,aAAK,IAAI,qBAAU,sBAAsB,YAAO;AACxE;AACA;AACA,mCAAmC,2BAAqB;AACxD;AACA;AACA;AACA,SAAS,2BAAqB;AAC9B;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,uCAAuC,cAAc,IAAI;AACzD;AACA,YAAY;AACZ;AACA,SAAS,gBAAU;AACnB;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACO,SAAS,2BAAqB;AACrC;AACA;AACA,WAAW,4BAA4B;AACvC;AACA,2BAA2B,yBAAe,GAAG,EAAE,2BAAqB;AACpE,IAAI,8BAAsB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6BAAkB;AAC9C,qBAAqB,qBAAU,0BAA0B,0BAAiB;AAC1E;AACA,uBAAuB,wBAAa,EAAE,uCAAuC;AAC7E,sBAAsB,uBAAY,EAAE,2CAA2C;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qCAA2B;AACtD,kCAAkC,sBAAW,GAAG,sBAAW;AAC3D;AACA,6BAA6B,gBAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,mCAAmC,sBAAgB,gEAAgE;AACnH,8BAA8B,wBAAiB;AAC/C,cAAc,wBAAiB;AAC/B,iCAAiC;AACjC,oCAAoC,YAAO;AAC3C,6EAA6E,kFAAkF,qBAAU;AACzK,mBAAmB,UAAU,YAAO,wBAAwB,UAAU,KAAK;AAC3E,oBAAoB,oFAAoF,4BAA4B,KAAK,KAAK,gBAAgB;AAC9J;AACA;AACA,SAAS,YAAO;AAChB;AACA;AACA;AACA;AACA,SAAS,wBAAkB;AAC3B,WAAW,mBAAmB;AAC9B;AACA,QAAQ,iBAAW;AACnB,8BAA8B,SAAI;AAClC,sCAAsC,yBAAiB;AACvD;AACA;AACA;AACA,mCAAmC,0BAAoB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,SAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,0BAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qCAA2B;AAClD,wCAAwC,6BAAuB;AAC/D;AACA;AACA;AACA;AACA,2BAA2B,qBAAe;AAC1C;AACA,2BAA2B,0BAAmB;AAC9C;AACA;AACA;AACA,2BAA2B,kBAAY;AACvC;AACA,mBAAmB,uBAAiB;AACpC,SAAS;AACT;AACA;AACA;AACA;AACA,YAAY,yBAAoB;AAChC;AACA;AACA,YAAY,yBAAoB;AAChC;AACA;AACA;AACA;AACA,SAAS,qBAAe;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iC;;ACnN+B;AACgD;AAChB;AACf;AACD;AAC/C,SAAS,wBAAe;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAe;AAC/B;AACA;AACA,0BAA0B,SAAI;AAC9B;AACA,2BAA2B,cAAS;AACpC;AACA;AACA,+BAA+B,0BAAoB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAI;AACxB;AACA,kBAAkB,uBAAc;AAChC;AACA;AACA;AACO,SAAS,uBAAc;AAC9B;AACA,sCAAsC,iCAAiC,gBAAgB,cAAM;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,+BAA+B,4BAAqB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2IAA2I,uBAAW;AACtJ,mBAAmB,eAAU;AAC7B;AACA,QAAQ,wBAAe,4BAA4B,eAAe;AAClE;AACA;AACA;AACA,YAAY,uBAAW;AACvB,8BAA8B,+BAAwB;AACtD;AACA,uBAAuB,eAAe;AACtC,gBAAgB,wBAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,oC;;ACpFsC;AACU;AACO;AAChD,SAAS,4BAAmB;AACnC,QAAQ,kBAAY,WA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AkB;AAC7C;AACA,iBAAiB;AACjB,mCAAmC;AACnC;AACA;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA,8BAA8B,kBAAO,EAAE,kBAAkB,GAAG,gBAAgB;AAC5E;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA,+B;;AChKkG;AAC7C;AACX;AACnC,MAAM,iBAAU,SAAS,qBAAY;AAC5C;AACA,oBAAoB;AACpB,0DAA0D;AAC1D;AACA,aAAa,WAAW;AACxB,mDAAmD,EAAE,SAAI;AACzD;AACA,YAAY,YAAY;AACxB,0BAA0B;AAC1B;AACA,iBAAiB,SAAS;AAC1B,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,qBAAqB,aAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA,0BAA0B,WAAW,iBAAiB;AACtD;AACA,iBAAiB,WAAW,UAAU,WAAW;AACjD;AACA;AACA;AACA,0BAA0B,WAAW;AACrC;AACA;AACA;AACA;AACA,uBAAuB,YAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,mBAAmB,gBAAgB,gBAAgB;AAC/F;AACA;AACA,kC;;AC9E+C;AACP;AACF;AACtC;AACA;AACA;AACO,SAAS,WAAK;AACrB,mBAAmB,sBAAsB,EAAE,qBAAqB,eAAe,QAAQ,MAAM;AAC7F,kBAAkB,mBAAmB,EAAE,mBAAmB,YAAY,QAAQ;AAC9E,KAAK,EAAE;AACP;AACA,0BAA0B,WAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAI;AACpB;AACA,IAAI,gBAAU;AACd;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA,iCAAiC,iBAAU;AAC3C;AACA,+BAA+B,qEAAqE;AACpG;AACA;AACA;AACA;AACA,sEAAsE,uCAAuC;AAC7G;AACA;AACA;AACA,uEAAuE,sCAAsC;AAC7G;AACA,4BAA4B,mBAAU;AACtC,4EAA4E,kBAAkB;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iBAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAO;AACX,eAAe,aAAa,WAAW,IAAI;AAC3C,eAAe,YAAY;AAC3B,kBAAkB,SAAS,OAAO,EAAE,WAAW;AAC/C;AACA;;AAEA,IAAI,oCAAoC,OAAO,QAAQ,OAAO;AAC9D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gBAAU;AACvB;AACA;AACA;AACA;AACA;AACA,iC;;ACxGkC;AACQ;AACnC,MAAM,uBAAa,SAAS,qBAAY;AAC/C;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAa;AAChC;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,4BAA4B,SAAI,cAAc;AAC9C;AACA;AACA,8BAA8B,oBAAoB,4BAA4B;AAC9E;AACA;AACA,qC;;ACvBkC;AACQ;AACnC,MAAM,qBAAY,SAAS,qBAAY;AAC9C;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAI,cAAc;AACzC;AACA;AACA,8BAA8B,mBAAmB;AACjD;AACA;AACA,oC;;ACxBsC;AACM;AACF;AAC1C;AACA;AACA;AACO,SAAS,0BAAgB;AAChC,2BAA2B,iBAAU,oBAAoB,uBAAa,oBAAoB,qBAAY;AACtG;AACA;AACA;AACA;AACA;AACA,MAAM,uBAAa;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,2BAAiB,SAAS,uBAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA,eAAe,4BAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0BAAgB;AAC5B;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,0BAAgB,SAAS,uBAAa;AACnD;AACA,qC;;AC1E2D;AACmE;AACvC;AACtD;AACgD;AAC1C;AACG;AAC1C,SAAS,sBAAY;AACrB,wBAAwB,iBAAW,yBAAyB,gCAAwB;AACpF,QAAQ,0BAAe;AACvB,QAAQ,iBAAW;AACnB,QAAQ,kBAAO;AACf,iBAAiB,kBAAO,aAAa;AACrC,iBAAiB,kBAAO,YAAY,gBAAgB;AACpD,4BAA4B,2BAAgB;AAC5C,qBAAqB,kBAAO,YAAY,qBAAqB;AAC7D;AACA;AACA,aAAa,4BAAoB;AACjC,2BAA2B,qCAA6B;AACxD;AACA;AACA;AACA,iBAAiB,kBAAO;AACxB;AACA;AACA;AACA,SAAS,uBAAa;AACtB;AACA,wBAAwB,SAAI;AAC5B;AACA;AACA,yBAAyB,SAAI;AAC7B;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACO,MAAM,uBAAa,SAAS,qBAAY;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAa,iCAAiC,cAAS;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA,kDAAkD,kBAAO,YAAY,cAAc;AACnF;AACA;AACA,wBAAwB,qBAAW,eAAe,qBAAW;AAC7D,mCAAmC,qBAAW;AAC9C;AACA;AACA,sDAAsD,kBAAO,EAAE,sBAAsB,GAAG,cAAc;AACtG;AACA;AACA;AACA,0DAA0D,kBAAO,YAAY,cAAc;AAC3F;AACA;AACA,wBAAwB,sBAAc;AACtC;AACA,sDAAsD,kBAAO,EAAE,0BAA0B,GAAG,cAAc;AAC1G,sDAAsD,kBAAO,EAAE,0BAA0B,GAAG,cAAc;AAC1G;AACA;AACA;AACA;AACA,gBAAgB,sBAAY;AAC5B;AACA,SAAS;AACT,wBAAwB,SAAI;AAC5B;AACA;AACA,mBAAmB,uBAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA,4DAA4D,kBAAO,KAAK,cAAc;AACtF;AACA;AACA;AACA,yDAAyD,kBAAO,KAAK,cAAc;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAI;AAC5B;AACA;AACA,mBAAmB,uBAAa;AAChC;AACA;AACA,YAAY,aAAQ;AACpB,YAAY,uBAAa;AACzB;AACA;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAI;AACnD;AACA;AACA;AACA,4BAA4B,SAAI;AAChC,6BAA6B,SAAI;AACjC;AACA;AACA,+BAA+B,GAAG,GAAG,MAAM;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAI,EAAE,uDAAuD,EAAE;AAC3F;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAI;AAChC,6BAA6B,SAAI;AACjC;AACA;AACA;AACA,uDAAuD,uBAAkB;AACzE;AACA;AACA;AACA;AACA;AACA,8CAA8C,uBAAkB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qC;;AC9LoC;AACE;AAC+C;AAC1C;AACV;AACe;AACU;AACxB;AACgB;AACkB;AACC;AACnB;AACR;AAC1C;AACA;AACA;AACO,MAAM,eAAS,SAAS,qBAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sBAAc;AAC5C;AACA;AACA,uBAAuB,YAAY;AACnC,+CAA+C,wBAAwB,QAAQ,oBAAoB,kBAAO,gBAAgB,aAAS,SAAS,kBAAO,YAAY,mBAAmB,WAAW,GAAG,gBAAW;AAC3M,uBAAuB;AACvB,sBAAsB,OAAO;AAC7B,2BAA2B,iBAAiB,6BAAmB;AAC/D,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sBAAc;AAC5C;AACA,2BAA2B,kBAAkB,GAAG,SAAI,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sBAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sBAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+BAAuB;AACrD;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAiB,UAAU,yBAAa;AAC5D,mCAAmC,qBAAc;AACjD,kCAAkC,yBAAkB;AACpD;AACA;AACA;AACA;AACA,wBAAwB,QAAQ,sBAAsB,QAAQ;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,wBAAwB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,6CAA6C;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAA6C;AAC7E;AACA,eAAe,4BAA4B;AAC3C;AACA,mBAAmB,MAAM,oBAAe,SAAS;AACjD;AACA;AACA,oBAAoB,kBAAO,aAAa,cAAc;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mDAAmD;AAClF;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB,eAAe,gBAAgB;AAC/B;AACA;AACA,oCAAoC,eAAe;AACnD,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA,2BAA2B,iBAAiB,YAAY,KAAK,QAAQ;AACrE;AACA;AACA,2BAA2B,gBAAgB,YAAY,IAAI,QAAQ;AACnE,2BAA2B;AAC3B;AACA,6BAA6B,gBAAgB,GAAG,cAAc;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAqB;AACpC;AACA;AACA,uCAAuC,iBAAiB,GAAG,cAAc;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,+BAA+B,cAAM,EAAE,WAAG;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;ACvO+C;AACF;AACO;AAC4D;AACvE;AACG;AACX;AACW;AACJ;AACgF;AAC/E;AACqE;AACzD;AACpB;AACS;AAC1C;AACA;AACA;AACA,SAAS,mBAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2BAAe;AACxB,cAAc,wBAAmB;AACjC;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA,4BAA4B,EAAE;AAC9B;AACA;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA,0BAA0B,mBAAO;AACjC,4BAA4B,EAAE,IAAI,UAAU;AAC5C;AACA;AACA,0BAA0B,mBAAO;AACjC,2BAA2B,EAAE,IAAI,UAAU;AAC3C;AACA;AACA,QAAQ,QAAQ,CAAC,uBAAW;AAC5B;AACA;AACA;AACO,SAAS,0CAA8B;AAC9C;AACA,IAAI,WAAW;AACf;AACA,YAAY,0BAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA,gBAAgB,+BAAqB;AACrC;AACA;AACA,qBAAqB,+BAAqB;AAC1C;AACA;AACA,qBAAqB,+BAAqB;AAC1C;AACA,aAAa;AACb;AACA,oBAAoB,mBAAU;AAC9B;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACO,SAAS,mCAAuB;AACvC;AACA;AACA,YAAY,yCAA8B;AAC1C;AACA;AACA;AACA,YAAY,oBAAU;AACtB;AACA;AACA;AACA,iBAAiB,oBAAe;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,0BAAe,cAAc,gBAAW,mBAAmB,oBAAe;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iBAAW,WAAW,kBAAY;AAC1C;AACA;AACA,gBAAgB,0BAAe;AAC/B;AACA;AACA;AACA,oCAAoC,2BAAmB;AACvD;AACA,kDAAkD,cAAc,0BAA0B;AAC1F;AACA,SAAS;AACT;AACA;AACA,QAAQ,iBAAW;AACnB,eAAe,0BAA0B;AACzC,YAAY,eAAU;AACtB;AACA;AACA;AACA;AACA,gBAAgB,qBAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oCAAwB;AACxC;AACA,QAAQ,iBAAW;AACnB,2BAA2B,SAAI;AAC/B;AACA;AACA,qCAAqC,oBAAe;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,qBAAS,SAAS,qBAAY;AAC3C;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAS,OAAO,cAAS;AAC5C;AACA;AACA,wBAAwB,SAAI,cAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ,CAAC,uBAAW;AACxC;AACA;AACA;AACA,4BAA4B,SAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ,CAAC,uBAAW;AACxC;AACA;AACA;AACA,0BAA0B,WAAK;AAC/B;AACA;AACA;AACA;AACA,0BAA0B,SAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,YAAY,SAAI;AAChB;AACA;AACA,mBAAmB,qBAAS;AAC5B;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAI;AAChC;AACA,gBAAgB,oBAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAI;AAC3B;AACA;AACA,uBAAuB,SAAI;AAC3B;AACA;AACA,eAAe,SAAI;AACnB,2CAA2C,oBAAe;AAC1D;AACA,yBAAyB,2BAAe;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wBAAmB;AACvC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uC;;AC/R+C;AACL;AACnC,MAAM,yBAAc,SAAS,qBAAY;AAChD;AACA,mBAAmB,yBAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAY;AACpC;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAyB,sBAAY;AACrD;AACA;AACA,sC;;ACtB2C;AACE;AACT;AACM;AAC1C;AACA;AACA;AACO,MAAM,wCAA0B,SAAS,qBAAY;AAC5D;AACA;AACA;AACA;AACA;AACA,mBAAmB,wCAA0B,OAAO,cAAS;AAC7D;AACA;AACA,iCAAiC,WAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,kBAAO;AACvF;AACA;AACA,yCAAyC,SAAI,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,oBAAoB,4BAA4B,UAAU,KAAK;AAC/D;AACA;AACA,yC;;ACtD8C;AACsB;AACN;AACvB;AACG;AAC1C,SAAS,sBAAgB;AACzB;AACA;AACA,uBAAuB,kBAAO;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,SAAS,oBAAc;AACvB,WAAW,OAAO,sBAAsB,QAAQ;AAChD;AACO,MAAM,eAAS,SAAS,qBAAY;AAC3C;AACA;AACA;AACA;AACA;AACA,mBAAmB,eAAS,OAAO,cAAS;AAC5C;AACA;AACA,eAAe,sCAAsC;AACrD;AACA;AACA;AACA;AACA;AACA,+BAA+B,oBAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oBAAc;AAC1B;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,mBAAmB,eAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;AACA,eAAe,+CAA+C;AAC9D;AACA;AACA;AACA,gCAAgC,sBAAW,OAAO;AAClD;AACA,wBAAwB,sBAAgB;AACxC;AACA;AACA,YAAY,OAAO,cAAc,qBAAU;AAC3C,mBAAmB,iBAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,GAAG,uBAAuB;AACvC;AACA,mBAAmB,eAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,+BAA+B;AAC5E,6CAA6C,6BAA6B;AAC1E;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAI,cAAc;AAC1C;AACA;AACA,eAAe,qCAAqC;AACpD;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAO,qBAAqB,mBAAmB;AAC3E;AACA;AACA;AACA,oBAAoB,kBAAO,sBAAsB;AACjD,oBAAoB,kBAAO,qBAAqB,mBAAmB;AACnE;AACA;AACA,oBAAoB,kBAAO;AAC3B;AACA;AACA;AACA;AACA;AACA,eAAe,mFAAmF;AAClG;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA,6BAA6B,KAAK;AAClC,wBAAwB,kBAAO,qBAAqB,gBAAgB;AACpE,4BAA4B,SAAS;AACrC,wBAAwB,kBAAO,qBAAqB,kCAAkC;AACtF,wBAAwB,kBAAO,qBAAqB,gCAAgC;AACpF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB,kBAAO,qBAAqB,mBAAmB;AACpE;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iC;;AClLgD;AACL;AACE;AACT;AACM;AAC1C;AACA;AACA;AACO,MAAM,0BAAmB,SAAS,qBAAY;AACrD;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAAmB,OAAO,cAAS;AACtD;AACA;AACA,iCAAiC,WAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,kBAAO;AAChF;AACA;AACA,kCAAkC,SAAI,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,uBAAa;AAC3F;AACA,kCAAkC,8CAA8C,4BAA4B,UAAU,KAAK;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA,kBAAkB,gCAAgC,cAAc,KAAK,8BAA8B,UAAU,KAAK,4BAA4B,QAAQ,KAAK;AAC3J;AACA;AACA,kC;;AC9EkC;AACyD;AACxC;AACP;AACZ;AACQ;AACJ;AACE;AACI;AACI;AACe;AACb;AACoC;AAChD;AACM;AACK;AAC/C;AACA;AACA;AACO,MAAM,sBAAW,SAAS,2BAAiB;AAClD;AACA;AACA;AACA,4BAA4B,qBAAS;AACrC,gBAAgB,0BAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,qBAAS;AAC3C;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,8BAAmB,SAAS,0BAAgB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAI;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,+BAAoB,SAAS,2BAAiB;AAC3D;AACA,4BAA4B,mBAAU,8CAA8C,eAAS;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mCAAwB,SAAS,2BAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAY;AACxC;AACA,gBAAgB,oBAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,yBAAc,SAAS,2BAAiB;AACrD;AACA;AACA;AACA,0EAA0E,qBAAY;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAY;AACrB;AACA,8BAA8B,eAAS;AACvC;AACA,gCAAgC,mBAAU;AAC1C,gCAAgC,2BAAkB;AAClD;AACA;AACA;AACA,qCAAqC,uBAAa;AAClD,gCAAgC,eAAS;AACzC,gCAAgC,0BAAmB;AACnD,gCAAgC,wCAA0B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAa;AAC7B,wBAAwB,eAAS;AACjC,sEAAsE,mBAAU;AAChF;AACA;AACA,iCAAiC,uBAAa;AAC9C,iCAAiC,eAAS;AAC1C,iCAAiC,0BAAmB;AACpD,iCAAiC,wCAA0B;AAC3D;AACA;AACA;AACA,YAAY,wBAAa;AACzB;AACA;AACA;AACA;AACA,YAAY,8BAAmB;AAC/B;AACA,2BAA2B,uBAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wBAAa;AACvC;AACA;AACA,SAAS,8BAAmB;AAC5B,wBAAwB,mBAAU,kBAAkB,IAAI;AACxD;AACA;AACA,mCAAmC,eAAS;AAC5C;AACA,gBAAgB,8BAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,uCAA4B,SAAS,0BAAgB;AAClE;AACA;AACA;AACA;AACA,4BAA4B,mBAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,2CAAgC,SAAS,0BAAgB;AACtE;AACA;AACA,4CAA4C,6BAAmB;AAC/D;AACA;AACA,4BAA4B,yBAAc;AAC1C;AACA;AACA;AACA,iBAAiB,0BAAgB,wCAAwC,uBAAa,2BAA2B,qBAAS;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,qBAAU,SAAS,2BAAiB;AACjD;AACA;AACA;AACA,iFAAiF,qBAAS;AAC1F;AACA;AACA;AACA;AACA;AACA,gCAAgC,SAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAO;AACxB;AACA,4CAA4C,qBAAS;AACrD;AACA,6CAA6C,qBAAS;AACtD,0CAA0C,SAAI;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,qBAAS,IAAI,SAAI;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,0BAAe,SAAS,2BAAiB;AACtD;AACA;AACA,+EAA+E,uBAAa;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAI;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,oBAAS,SAAS,2BAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0BAAgB;AAC7C,8BAA8B,iBAAU;AACxC,8BAA8B,qBAAS;AACvC,8BAA8B,yBAAc;AAC5C;AACA;AACA;AACA,iCAAiC,WAAO;AACxC,mCAAmC,sBAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,WAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,uBAAY,SAAS,2BAAiB;AACnD;AACA;AACA;AACA,+BAA+B,SAAI,qCAAqC,mBAAU;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mBAAU;AAC3C;AACA;AACA;AACA,4CAA4C,mBAAU;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sC;;AC/ciC;AACI;AACW;AACL;AACpC,MAAM,2BAAkB;AACxB,MAAM,8BAAqB;AAClC;AACA;AACA;AACA,SAAS,kBAAS;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAY;AACrB;AACA,iCAAiC,2BAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,sBAAsB,eAAM;AAC5B;AACA,SAAS,mCAA0B;AACnC;AACA;AACA,qBAAqB,qBAAY,KAAK,uCAAuC;AAC7E,qBAAqB,qBAAY,KAAK,2CAA2C;AACjF;AACA;AACA,qBAAqB,qBAAY,KAAK,+BAA+B,IAAI,kBAAS;AAClF;AACA,qBAAqB,qBAAY,KAAK,sBAAsB,IAAI,kBAAS;AACzE,qBAA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3C;AACA;AACA,aAAa,YAAI;AACjB;AACA;AACA,6BAA6B,kBAAY;AACzC,6BAA6B,kBAAY;AACzC,gBAAgB,4BAAsB;AACtC,uBAAuB,sBAAgB,qBAAqB,sCAAgC;AAC5F;AACA;AACA;AACA;AACA;AACA,aAAa,aAAK;AAClB;AACA,aAAa,aAAK;AAClB;AACA;AACA;AACA,aAAa,cAAM;AACnB;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA,kCAAkC,EAAE,GAAG,EAAE;AACzC,iBAAiB;AACjB;AACA;AACA,aAAa,mBAAW;AACxB;AACA;AACA,aAAa,kBAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAK;AAClB;AACA,aAAa,aAAK;AAClB,aAAa,YAAI;AACjB,aAAa,cAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,eAAO;AACpB,aAAa,mBAAW;AACxB,aAAa,qBAAa;AAC1B;AACA;AACA;AACA;AACA,yDAAyD,QAAQ;AACjE;AACO,SAAS,sCAAgC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA,gBAAgB,QAAQ,CAAC,uBAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,sBAAgB;AAChC;AACA;AACA,qBAAqB,0BAAmB;AACxC,qBAAqB,0BAAmB;AACxC,yBAAyB,KAAK,KAAK,KAAK,OAAO,YAAY;AAC3D,2BAA2B,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK;AAC5D;AACA,QAAQ,uBAAW;AACnB,mBAAmB,gBAAgB;AACnC;AACA;AACA,gBAAgB;AAChB;AACA;AACA,SAAS,kBAAY;AACrB;AACA,YAAY,uBAAW;AACvB,oBAAoB,YAAY,YAAY,SAAS,kBAAY,sBAAsB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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ACA;AACA;AACA;AACA;AACO,SAAS,uBAAY;AAC5B;AACA;AACA;AACA;AACA,mBAAmB,oCAA4B;AAC/C;AACA;AACA;AACA,eAAe,8DAA8D;AAC7E,eAAe,oBAAe;AAC9B;AACA;AACA;AACO,SAAS,uBAAY;AAC5B;AACA;AACA;AACA;AACA,mBAAmB,oCAA4B;AAC/C;AACA;AACA,0BAA0B,eAAS;AACnC,mBAAmB,mBAAmB;AACtC,mBAAmB,oBAAe;AAClC;AACA;AACA;AACA;AACA,YAAY,uBAAW,uBAAuB,YAAY,yBAAyB,KAAK;AACxF;AACA;AACA;AACA;AACO,SAAS,kBAAO;AACvB;AACA,YAAY,yBAAmB;AAC/B,gBAAgB,uBAAW;AAC3B,wBAAwB,aAAa,4BAA4B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yBAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAI;AACpB;AACA;AACA;AACA,YAAY,yBAAmB;AAC/B,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,4BAAsB;AACzF;AACA;AACA;AACA;AACA,UAAU,qBAAU;AACpB,QAAQ,aAAa,KAAK,+BAAuB,KAAK,qCAA6B;AACnF,eAAe,eAAe;AAC9B,YAAY,aAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sC;;AC1QsC;AACoC;AACD;AACxC;AAC+C;AAC7B;AAChB;AACgE;AACnG;AACA;AACA;AACA;AACA;AACO,SAAS,cAAS;AACzB,6BAA6B,gBAAW;AACxC,WAAW,OAAO;AAClB,SAAS,sBAAc;AACvB;AACA;AACA;AACA;AACA;AACA,aAAa,6BAAuB;AACpC,YAAY,QAAQ,CAAC,uBAAW;AAChC;AACA;AACA;AACA,YAAY,qBAAU,eAAe,8BAAwB;AAC7D,YAAY,QAAQ,CAAC,uBAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAW;AACpB;AACA;AACA;AACA;AACA,gBAAgB,sBAAc,aAAa,iBAAS;AACpD;AACA,oBAAoB,QAAQ,CAAC,uBAAW;AACxC;AACA;AACA;AACA,2BAA2B,oCAA4B;AACvD,oBAAoB,aAAa;AACjC;AACA;AACA;AACA;AACA;AACA,kDAAkD,0CAAkC;AACpF;AACA;AACA,gDAAgD,oCAAyB;AACzE;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAc;AAC9B;AACA;AACA,qBAAqB,iBAAS;AAC9B,gBAAgB,QAAQ,CAAC,uBAAW;AACpC;AACA;AACA;AACA,qBAAqB,qBAAU,mCAAmC,0BAAiB;AACnF;AACA;AACA;AACA;AACA,gBAAgB,sBAAc;AAC9B,oBAAoB,qBAAU,cAAc,aAAS;AACrD;AACA;AACA;AACA;AACA,qBAAqB,iBAAS;AAC9B,gBAAgB,QAAQ,CAAC,uBAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAW;AAC/B;AACA,gC;;ACjGsD;AACA;AAChB;AAC0E;AAC3E;AACH;AACK;AACU;AACuB;AAC3B;AACD;AACuB;AAChC;AAC5B,SAAS,iBAAW,SAAS,cAAc,KAAK;AACvD,IAAI,oBAAc;AAClB,IAAI,uBAAgB;AACpB,uBAAuB,iDAA2C;AAClE,QAAQ,6BAAkB;AAC1B;AACA;AACA;AACA,QAAQ,0BAAe;AACvB;AACA;AACO,SAAS,oBAAc;AAC9B,QAAQ,iBAAW;AACnB,iCAAiC,wBAAkB;AACnD;AACA;AACA,iCAAiC,2BAAqB;AACtD;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAkB;AAC3B,WAAW,iBAAiB;AAC5B,WAAW,sBAAc;AACzB,gCAAgC,6BAAkB,oBAAoB;AACtE;AACA,wCAAwC,aAAQ,gBAAgB,aAAK,6BAA6B,YAAO;AACzG;AACA;AACA;AACA;AACA;AACA,0BAA0B,cAAS;AACnC,2CAA2C,wBAAc;AACzD;AACA;AACA,aAAa;AACb;AACA;AACA,KAAK,IAAI;AACT;AACA,MAAM,yBAAmB,GAAG,yBAAmB,eAAe,yBAAmB,QAAQ,yBAAmB;AAC5G,SAAS,2BAAqB;AAC9B;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,QAAQ,oBAAc;AACtB;AACA,8BAA8B,SAAI;AAClC;AACA,oGAAoG,2BAAmB;AACvH;AACA;AACA;AACA;AACA,wBAAwB,qBAAe;AACvC;AACA,8DAA8D,6BAAuB,qDAAqD,yBAAmB;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,SAAI;AAC9B;AACA;AACA;AACA,uCAAuC,wBAAc;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;AC1G+B;AACiE;AAC3C;AACP;AAChB;AACe;AACP;AACkB;AACF;AACJ;AACoB;AACvB;AACA;AACH;AAC0D;AACjD;AACJ;AACsB;AACnB;AACP;AACe;AACP;AACH;AACkB;AACxB;AACZ;AACzB,MAAM,aAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACO,SAAS,iBAAW;AAC3B;AACA;AACO,SAAS,kBAAY;AAC5B;AACA;AACO,SAAS,mBAAa;AAC7B;AACA;AACO,SAAS,kBAAY;AAC5B;AACA;AACO,MAAM,WAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAM,gBAAgB,mBAAmB;AAC9D;AACA,+DAA+D,aAAO;AACtE,yEAAyE,aAAO;AAChF,iEAAiE,aAAO;AACxE;AACA;AACA,0BAA0B,4BAAkB;AAC5C,8DAA8D,GAAG,6BAAwB;AACzF;AACA;AACA;AACA,4EAA4E;AAC5E,4FAA4F;AAC5F;AACA,2BAA2B,WAAW;AACtC,aAAa;AACb,4BAA4B,WAAK;AACjC,4BAA4B,QAAQ,YAAY,WAAW,EAAE;AAC7D;AACA,oCAAoC,UAAU,UAAU,YAAY,EAAE,aAAa,cAAS,cAAc;AAC1G;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,yBAAyB,mCAAmC,+CAA+C;AAC3G,mCAAmC;AACnC,4BAA4B;AAC5B,8BAA8B;AAC9B;AACA;AACA,QAAQ,iBAAW;AACnB;AACA;AACA,QAAQ,qBAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iBAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,WAAW,oBAAoB,cAAM;AACpD;AACA,+BAA+B,SAAI;AACnC;AACA;AACA,8BAA8B,uBAAgB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,uBAAgB;AAC7D;AACA;AACA;AACA;AACA,sCAAsC,iFAAiF,oEAAoE;AAC3L;AACA;AACA,eAAe,YAAO;AACtB;AACA;AACA;AACA;AACA;AACA,iCAAiC,UAAU,gBAAgB,cAAM;AACjE,eAAe,oBAAoB;AACnC,0BAA0B,gCAAuB;AACjD,0DAA0D,mBAAmB,wDAAwD,YAAY,KAAK;AACtJ;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA,8BAA8B,sBAAc;AAC5C;AACA,iCAAiC,2BAAkB;AACnD;AACA;AACA,8BAA8B,eAAe;AAC7C,6CAA6C,6BAAoB;AACjE;AACA;AACA;AACA;AACA,eAAe,qBAAY;AAC3B;AACA;AACA,eAAe,wBAAe;AAC9B;AACA;AACA,eAAe,4BAAmB;AAClC;AACA;AACA;AACA,wEAAwE,GAAG,WAAW,yBAAyB,cAAM;AACrH,kEAAkE,EAAE,wBAAkB,6DAA6D,UAAU,mBAAmB,EAAE,KAAK;AACvL;AACA,gBAAgB,aAAQ;AACxB;AACA,oBAAoB,aAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAY,gBAAgB,uBAAc;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kBAAY;AACxB,6BAA6B,6BAA6B;AAC1D,4BAA4B,+BAAuB;AACnD;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAiB,UAAU,yBAAa;AAC5D;AACA,mCAAmC,qBAAc;AACjD,kCAAkC,yBAAkB;AACpD;AACA,yCAAyC,kBAAO,EAAE,+BAA+B,GAAG,gBAAgB;AACpG;AACA,oCAAoC,iBAAQ;AAC5C;AACA;AACA;AACA,wBAAwB,QAAQ,sBAAsB,QAAQ;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAS,uBAAuB,sBAAc;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,oBAAc,SAAS,WAAK;AACzC;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,eAAe,kBAAO;AACtB;AACA;AACA,eAAe,eAAM;AACrB,6BAA6B,sBAAW;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,gBAAO;AACf,6BAA6B,sBAAW;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iC;;ACrc+B;AACc;AACH;AAC1C;AACA;AACA;AACO,MAAM,4BAAoB,SAAS,qBAAY;AACtD;AACA;AACA;AACA;AACA,yBAAyB,cAAS,YAAY;AAC9C;AACA;AACA;AACA;AACA,mBAAmB,4BAAoB,OAAO,cAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAI,iBAAiB;AACxD;AACA;AACA,oCAAoC,UAAU,cAAc,cAAM;AAClE,sCAAsC,8BAA8B;AACpE;AACA;AACA;AACA,mC;;AClC+C;AACQ;AACf;AACU;AACV;AACQ;AACN;AACnC,MAAM,+BAAiB,SAAS,qBAAY;AACnD;AACA;AACA;AACA;AACA;AACA,mBAAmB,+BAAiB,uBAAuB;AAC3D;AACA;AACA,eAAe,wBAAwB;AACvC,wBAAwB,0BAAmB;AAC3C;AACA;AACA;AACA;AACA,mCAAmC,sBAAc;AACjD;AACA;AACA;AACA;AACA;AACA,oBAAoB,yBAAmB,kDAAkD,eAAU;AACnG,0DAA0D;AAC1D;AACA;AACA;AACA,SAAS,IAAI;AACb,aAAa,SAAI;AACjB;AACA;AACA,mBAAmB,+BAAiB;AACpC;AACA;AACA,uBAAuB,SAAI;AAC3B;AACA;AACA,yBAAyB;AACzB;AACA;AACA,gCAAgC,SAAI,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAI;AAC5B;AACA,wBAAwB,kBAAQ,YAAY,gBAAgB;AAC5D;AACA;AACA,gDAAgD,IAAI,gBAAgB,IAAI,iBAAiB,IAAI;AAC7F;AACA;AACA,gDAAgD,IAAI;AACpD,kDAAkD,IAAI;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AAC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AqB,KAAK;AACtI;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB,gBAAgB,QAAQ,CAAC,uBAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,sGAAsG,uCAAuC,kCAAkC,KAAK;AAChO;AACA;AACA,kC;;ACrE+B;AACc;AACH;AAC1C;AACA;AACA;AACO,MAAM,8BAAqB,SAAS,qBAAY;AACvD;AACA;AACA;AACA;AACA,yBAAyB,cAAS,YAAY;AAC9C;AACA;AACA;AACA;AACA,mBAAmB,8BAAqB,OAAO,cAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAI,iBAAiB;AACzD;AACA;AACA,oCAAoC,WAAW,cAAc,cAAM;AACnE,sCAAsC,oCAAoC;AAC1E;AACA;AACA;AACA,oC;;AClC+B;AACc;AACH;AAC1C;AACA;AACA;AACO,MAAM,kCAAuB,SAAS,qBAAY;AACzD;AACA;AACA;AACA;AACA,yBAAyB,cAAS,YAAY;AAC9C;AACA;AACA;AACA;AACA,mBAAmB,kCAAuB,OAAO,cAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,SAAI,iBAAiB;AAC3D;AACA;AACA,oCAAoC,iBAAiB,cAAc,cAAM;AACzE,sCAAsC,2CAA2C;AACjF;AACA;AACA;AACA,sC;;AClCqD;AACX;AAC1C;AACA;AACA;AACO,MAAM,wBAAkB,SAAS,qBAAY;AACpD;AACA;AACA;AACA;AACA;AACA,mBAAmB,wBAAkB,OAAO,cAAS;AACrD;AACA;AACA;AACA,iCAAiC,WAAM;AACvC;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAI,iBAAiB;AACtD;AACA;AACA,eAAe,mCAAmC;AAClD,0DAA0D,qCAAqC,0BAA0B,QAAQ,KAAK,yBAAyB,KAAK,KAAK,8BAA8B,UAAU,KAAK;AACtN;AACA;AACA,iC;;AChC6C;AACH;AAC1C;AACA;AACA;AACO,MAAM,0BAAmB,SAAS,qBAAY;AACrD;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAAmB,OAAO,cAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,SAAI,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kC;;AC7BuC;AACK;AACZ;AACY;AACJ;AACS;AACb;AACE;AACc;AACH;AACN;AACD;AACF;AACE;AACE;AACE;AACR;AACuB;AAChB;AACP;AACa;AACI;AACV;AACE;AACL;AACJ;AACF;AACM;AACK;AAC/C,SAAS,qBAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAU;AACtC;AACA;AACA,sCAAsC,SAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAS;AACrC,uCAAuC,iBAAU;AACjD;AACA,kEAAkE,+DAA+D,KAAK,oCAAoC;AAC1K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,eAAS;AACrC;AACA,0CAA0C,eAAe;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAa;AACzC,4BAA4B,qBAAY;AACxC,4BAA4B,+BAAiB;AAC7C,4BAA4B,iBAAU;AACtC,4BAA4B,uBAAa;AACzC,4BAA4B,qBAAY;AACxC,4BAA4B,mBAAW;AACvC,4BAA4B,uBAAa;AACzC,4BAA4B,iBAAU;AACtC,4BAA4B,0BAAmB;AAC/C,4BAA4B,wCAA0B;AACtD,4BAA4B,sBAAiB;AAC7C,4BAA4B,4BAAoB;AAChD,4BAA4B,4BAAoB;AAChD,4BAA4B,wBAAkB;AAC9C,4BAA4B,8BAAqB;AACjD,4BAA4B,kCAAuB;AACnD,4BAA4B,yBAAc;AAC1C,4BAA4B,0BAAmB;AAC/C,4BAA4B,wBAAkB;AAC9C;AACA;AACA,4BAA4B,WAAO;AACnC,4BAA4B,qBAAY;AACxC,4BAA4B,iBAAU;AACtC,4BAA4B,eAAS;AACrC;AACA;AACA,4BAA4B,mBAAU;AACtC;AACA;AACA;AACA,4CAA4C,mBAAU;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,eAAe;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mBAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,eAAe;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,0BAAiB;AACjC;AACA,qBAAqB,qBAAY;AACjC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAgB;AAChC;AACA;AACA;AACA;AACA,qBAAqB,qBAAY;AACjC;AACA;AACA;AACA;AACA,sCAAsC,cAAc;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;AC7OoC;AACW;AACW;AACH;AACP;AACA;AACD;AACF;AACtC,SAAS,mBAAa;AAC7B,iDAAiD,uBAAW;AAC5D;AACA;AACA;AACA;AACA;AACO,SAAS,uBAAiB;AACjC,0BAA0B,sBAAc;AACxC,QAAQ,sBAAgB;AACxB;AACA,IAAI,oBAAc;AAClB,IAAI,oBAAc;AAClB;AACA,SAAS,sBAAgB;AACzB;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA,4BAA4B,wBAAiB;AAC7C,oBAAoB,gBAAa;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,4BAA4B,wBAAiB;AAC7C;AACA,uBAAuB,oBAAe;AACtC,2BAA2B,aAAQ;AACnC;AACA;AACA;AACA,sDAAsD,yBAAmB;AACzE;AACA;AACA;AACA,SAAS,yBAAmB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAc;AACvB;AACA,WAAW,QAAQ;AACnB;AACA,eAAe,yBAAyB;AACxC,gCAAgC,yBAAiB;AACjD;AACA;AACA;AACA;AACA;AACA,mCAAmC,mBAAa;AAChD,6GAA6G,yBAAmB;AAChI;AACA,iCAAiC,qBAAY,uCAAuC,eAAe;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;ACrFiG;AACX;AACtC;AACP;AACS;AACC;AACS;AACrD,SAAS,0BAAoB;AACpC,IAAI,6BAAuB;AAC3B,IAAI,sCAAgC;AACpC,IAAI,sCAAgC;AACpC;AACO,MAAM,2BAAqB,GAAG,2BAAqB;AACnD,SAAS,2BAAqB;AACrC,IAAI,6BAAuB;AAC3B;AACA;AACA;AACA;AACA,IAAI,sCAAgC;AACpC,IAAI,sCAAgC;AACpC;AACO,SAAS,6BAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sCAAgC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6BAA6B;AAClD,oBAAoB,+BAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6BAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO,SAAS,yBAAmB;AACnC,WAAW,kBAAkB;AAC7B,0BAA0B,+BAAuB;AACjD,yBAAyB,sBAAc;AACvC;AACA;AACA,+CAA+C,WAAM;AACrD;AACA;AACA,gCAAgC,qBAAe;AAC/C;AACA;AACA;AACA;AACA,SAAS,qBAAe;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uBAAiB;AAC7B,yBAAyB,gCAAyB;AAClD,gBAAgB,yBAAa,WAAW,WAAM;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kCAA2B;AAC9C;AACA;AACA;AACA;AACA,eAAe,kCAA2B;AAC1C;AACA;AACA,qBAAqB,gCAAyB;AAC9C,eAAe,WAAM;AACrB;AACA;AACA,iC;;AC7HoC;AACD;AAC+C;AAC1B;AACnB;AACP;AACe;AACU;AACR;AACZ;AACY;AACL;AACU;AACG;AACd;AACc;AACe;AACH;AAChB;AACU;AACpB;AAC2B;AACR;AACrD,SAAS,wBAAkB;AAClC,WAAW,kBAAO,sBAAsB,eAAe,kBAAO,WAAW,GAAG,4CAA4C;AACxH;AACO,MAAM,gBAAU,SAAS,oBAAc;AAC9C;AACA;AACA,qBAAqB,qBAAU;AAC/B;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B,oBAAoB,QAAQ,yBAAc;AAC1C;AACA,eAAe,eAAM;AACrB,iBAAiB,aAAQ,EAAE,WAAG,EAAE,cAAM;AACtC;AACA,gBAAgB,QAAQ,CAAC,uBAAW;AACpC;AACA;AACA;AACA,gBAAgB,QAAQ,CAAC,uBAAW;AACpC;AACA;AACA;AACA,uCAAuC,yBAAc;AACrD;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,eAAS;AACvC;AACA;AACA;AACA,QAAQ,6BAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,uBAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sBAAc;AAC5C,qCAAqC,YAAY;AACjD;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA,wCAAwC,wBAAiB;AACzD,wBAAwB,aAAQ;AAChC,8CAA8C,uBAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,6CAA6C,UAAU,KAAK,KAAK,wBAAwB;AACpJ;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,gBAAU;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yBAAyB,oBAAoB;AACjE;AACA;AACA;AACA,kDAAkD,gBAAU;AAC5D;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,sCAAsC,QAAQ,kBAAO,qBAAqB,qBAAqB;AAC/F;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAU;AAC5C;AACA,8BAA8B,kBAAO;AACrC;AACA;AACA,oCAAoC,MAAM;AAC1C;AACA;AACA;AACA,kCAAkC,+BAAuB;AACzD;AACA;AACA;AACA;AACA,wBAAwB,uBAAiB,UAAU,yBAAa;AAChE,uCAAuC,qBAAc;AACrD,sCAAsC,yBAAkB;AACxD;AACA;AACA;AACA,gDAAgD,MAAM;AACtD;AACA;AACA,4BAA4B,QAAQ,sBAAsB,QAAQ;AAClE;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,cAAc;AAC7B,eAAe,kBAAkB;AACjC;AACA,8BAA8B,sBAAc;AAC5C;AACA;AACA,6BAA6B,kBAAO;AACpC,uBAAuB,YAAY;AACnC,oBAAoB,aAAS;AAC7B,iCAAiC,kBAAO,YAAY,mBAAmB;AACvE;AACA,oBAAoB,gBAAW;AAC/B,2BAA2B,aAAa,oBAAe,EAAE;AACzD,uCAAuC,wBAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,OAAO;AAChC,uCAAuC,6BAAmB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,qBAAqB;AACrB;AACA,yDAAyD,YAAY,QAAQ,KAAK,sBAAsB,kBAAkB,KAAK;AAC/H;AACA,gBAAgB;AAChB;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA,gBAAgB,gBAAW;AAC3B,wBAAwB,wBAAkB,2BAA2B,gBAAgB;AACrF;AACA,qBAAqB,OAAO;AAC5B,wBAAwB,6BAAmB,qBAAqB,gBAAgB;AAChF;AACA,oBAAoB,kBAAO,YAAY,gBAAgB;AACvD;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA,mBAAmB,OAAO;AAC1B,2BAA2B,gBAAW,uBAAuB,OAAO;AACpE;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA,mBAAmB,2BAAkB;AACrC;AACA;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA,oCAAoC,wBAAiB;AACrD,oBAAoB,aAAQ;AAC5B;AACA,2BAA2B,2BAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA,qBAAqB,0BAAiB;AACtC;AACA;AACA;AACA,+GAA+G,4CAA4C,YAAY,QAAQ,KAAK,cAAc,QAAQ,KAAK,KAAK;AACpN;AACA,aAAa;AACb;AACA;AACA,uBAAuB,sBAAc;AACrC,uBAAuB,sBAAc;AACrC,aAAa,EAAE,uBAAuB,aAAa,KAAK,oBAAoB,UAAU,sBAAsB,EAAE,KAAK,wBAAwB,6BAAoB;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA,iC;;ACvU2C;AACe;AACZ;AACe;AACtD,SAAS,6CAA0B;AAC1C,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA,gBAAgB,gBAAW;AAC3B,uBAAuB,aAAa,oBAAe,EAAE;AACrD,yCAAyC,wCAA0B;AACnE;AACA;AACA;AACA;AACA,gCAAgC,wBAAkB,2BAA2B,cAAc;AAC3F;AACA;AACA,8BAA8B,kBAAO;AACrC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,8C;;AC5BkC;AACmG;AACpG;AACmM;AAClL;AACiB;AAChB;AACQ;AACf;AACZ;AACY;AACJ;AACS;AACb;AACE;AACc;AACH;AACN;AACkF;AACrF;AACE;AACE;AACE;AACR;AACuB;AACK;AACrB;AACP;AACO;AACM;AACI;AACR;AACL;AACJ;AACF;AACM;AACK;AACxC,SAAS,gBAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY,UAAU,YAAY;AAC9C,gBAAgB,cAAS;AACzB;AACA;AACA;AACA,iBAAiB,SAAS,UAAU,SAAS;AAC7C;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAS;AAClB;AACA;AACA;AACA;AACA,+BAA+B,iBAAU,EAAE,aAAa;AACxD;AACA;AACA;AACA,+BAA+B,gBAAU;AACzC;AACA,iBAAiB,WAAW;AAC5B,6CAA6C,cAAS,GAAG;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iBAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA,YAAY,qBAAW;AACvB,uCAAuC,uBAAa;AACpD;AACA;AACA,iBAAiB,kBAAQ;AACzB,6BAA6B,0CAA8B;AAC3D,yCAAyC,qBAAS,2BAA2B;AAC7E,uBAAuB,iBAAU;AACjC;AACA,iBAAiB,eAAK;AACtB,mCAAmC,WAAO;AAC1C;AACA;AACA,iBAAiB,oBAAU;AAC3B;AACA;AACA;AACA;AACA,2BAA2B,qBAAS,QAAQ,yBAAyB;AACrE;AACA;AACA,mCAAmC,qBAAY;AAC/C;AACA,iBAAiB,qBAAW;AAC5B,mCAAmC,uBAAa;AAChD;AACA,gBAAgB,6BAAmB;AACnC,2BAA2B,yBAAc;AACzC;AACA;AACA,iBAAiB,kBAAQ;AACzB,mCAAmC,iBAAU;AAC7C;AACA;AACA,iBAAiB,kBAAQ;AACzB,uCAAuC,0BAAmB;AAC1D;AACA;AACA,iBAAiB,yBAAe;AAChC,uCAAuC,wCAA0B;AACjE;AACA;AACA,iBAAiB,iBAAO;AACxB,mCAAmC,eAAS;AAC5C;AACA;AACA,iBAAiB,gBAAM;AACvB,uCAAuC,sBAAiB;AACxD;AACA;AACA,iBAAiB,mBAAS;AAC1B,uCAAuC,4BAAoB;AAC3D;AACA;AACA,iBAAiB,iBAAO;AACxB,uCAAuC,wBAAkB;AACzD;AACA;AACA,iBAAiB,kBAAQ;AACzB,uBAAuB,0BAAmB;AAC1C;AACA,iBAAiB,kBAAQ;AACzB,mCAAmC,iBAAU;AAC7C;AACA;AACA,iBAAiB,mBAAS;AAC1B,uCAAuC,4BAAoB;AAC3D;AACA;AACA,iBAAiB,oBAAU;AAC3B,uCAAuC,8BAAqB;AAC5D;AACA;AACA,iBAAiB,sBAAY;AAC7B,uCAAuC,kCAAuB;AAC9D;AACA;AACA,iBAAiB,iBAAO;AACxB,uCAAuC,wBAAkB;AACzD;AACA;AACA;AACA,YAAY,QAAQ,CAAC,uBAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAS;AACzB;AACA,eAAe,eAAS;AACxB,WAAW,mCAAmC;AAC9C,iGAAiG,kBAAa;AAC9G;AACA,QAAQ,WAAW;AACnB;AACA,YAAY,mBAAmB;AAC/B,uBAAuB,qBAAY;AACnC;AACA,iBAAiB,oBAAoB;AACrC,uBAAuB,uBAAa;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yBAAc;AAC7B;AACA;AACA,0CAA0C,kBAAY;AACtD,QAAQ,iBAAW,WAAW,kBAAY;AAC1C;AACA,yBAAyB,WAAO;AAChC;AACA;AAC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AACA,8BAA8B,SAAI;AAClC,oCAAoC,yBAAiB;AACrD;AACA;AACA;AACA,gCAAgC,yBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+BAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD,wBAAwB,uBAAW;AACnC;AACA;AACA;AACA;AACA,+CAA+C,qBAAe;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,yBAAmB;AAC5B;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,wBAAkB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAkB;AAC3B,uBAAuB,mCAAyB;AAChD,wCAAwC,6BAAuB;AAC/D;AACA;AACA;AACA;AACA,2BAA2B,0BAAmB;AAC9C;AACA;AACA;AACA,+BAA+B,oBAAe;AAC9C;AACA;AACA,mBAAmB,uBAAiB;AACpC,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS,qBAAU;AACnB;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,8BAA8B,uBAAW,sCAAsC,mBAAc;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2BAAgB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,gCAA0B;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAS;AAClB;AACA;AACA,8BAA8B,uBAAa;AAC3C,4BAA4B,6BAAkB;AAC9C,WAAW,eAAe;AAC1B;AACA,QAAQ,wBAAa;AACrB;AACA,wBAAwB,qBAAc;AACtC,iDAAiD,oBAAa;AAC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AACA;AACA,6BAA6B,kBAAY;AACzC,oBAAoB,mCAA0B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAA0B;AACzC;AACA;AACA;AACA,eAAe,sBAAW;AAC1B;AACA;AACA;AACA,YAAY,0BAAe;AAC3B;AACA;AACA;AACA;AACA;AACA,gC;;ACvK8B;AACoB;AACnB;AACuB;AACR;AACL;AACqB;AACJ;AACN;AACpB;AACmC;AAChC;AAC5B,MAAM,gBAAU,SAAS,WAAK;AACrC;AACA;AACA,uEAAuE,mCAAmC,oBAAoB,KAAK,oBAAoB,sBAAsB,KAAK;AAClL;AACA,gBAAgB,WAAW;AAC3B,2BAA2B,gBAAU;AACrC;AACA,qBAAqB,UAAU;AAC/B,2BAA2B,cAAS;AACpC;AACA,4BAA4B,uBAAW;AACvC,SAAS;AACT;AACA;AACA,8BAA8B,eAAS;AACvC;AACA;AACA;AACA;AACA;AACA,QAAQ,0BAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,SAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oBAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE,4BAAmB;AAC9B;AACA;AACA;AACA;AACA,SAAS,EAAE,8BAAqB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oCAA2B;AAC1C;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS,EAAE,wBAAe;AAC1B;AACA;AACA,iC;;ACpG8B;AACkD;AACzC;AACF;AACA;AACF;AAC5B,SAAS,qBAAU;AAC1B,QAAQ,WAAW;AACnB,mBAAmB,gBAAU;AAC7B;AACA,aAAa,WAAW;AACxB,mBAAmB,gBAAU;AAC7B;AACA,aAAa,UAAU;AACvB,mBAAmB,cAAS;AAC5B;AACA,aAAa,eAAe;AAC5B,mBAAmB,kBAAW;AAC9B;AACA,oBAAoB,uBAAW;AAC/B;AACA,sC;;ACrBkD;AACG;AACT;AACmB;AACjC;AACW;AAC2C;AACrD;AACW;AACS;AACA;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAO,oBAAoB;AAC3C;AACA;AACA;AACA,QAAQ,OAAO;AACf;AACA;AACA;AACA,QAAQ,4BAA4B;AACpC;AACA;AACA;AACA,uBAAuB,iBAAU,CAAC,uBAAW;AAC7C;AACA;AACA;AACA,qBAAqB,mBAAS;AAC9B;AACA;AACA;AACA,sBAAsB,qBAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yBAAgB;AACxB;AACA,uBAAuB,6BAAqB,QAAQ,6BAAqB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA,SAAS,6BAAqB;AAC9B;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,oBAAoB;AACpB;AACA,2BAA2B,kBAAS;AACpC;AACA,YAAY,QAAQ,CAAC,uBAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,CAAC,uBAAW,aAAa,+BAAuB;AACpE;AACA;AACA,4BAA4B,mBAAU;AACtC;AACA;AACA,uDAAuD,GAAG,SAAI;AAC9D;AACA;AACA,eAAe;AACf,WAAW,WAAW,IAAI,kCAAyB,WAAW,kCAAyB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,6BAAqB,yCAAyC;AACvE;AACA,oCAAoC,6BAAsB;AAC1D;AACA;AACA,IAAI,yBAAgB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,wJAAwJ,wDAAwD,wBAAwB,iCAAiC,KAAK,mCAAmC,QAAQ,KAAK,cAAc,QAAQ,KAAK,oBAAoB,UAAU,sBAAsB,EAAE,KAAK,KAAK,OAAO,8BAA8B,2BAA2B,KAAK,0GAA0G,mBAAmB,KAAK,iBAAiB,WAAW,KAAK;AACjoB;AACA,mC;;AC5J2D;AACnB;AACxC,MAAM,uCAAsB,SAAS,cAAU;AAC/C,mBAAmB,SAAS;AAC5B;AACA,mBAAmB,kDAAkD;AACrE,mBAAmB,gDAAgD,GAAG,sCAA6B;AACnG;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB;AACzE;AACA,+DAA+D,kCAAkC,YAAY,KAAK,KAAK,WAAW;AAClI;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,0BAAS,OAAO,uCAAsB;AAC5C;AACA;AACA;AACO,SAAS,kCAAiB;AACjC,WAAW,0BAAS,YAAY,SAAS;AACzC;AACA,4C;;AC3BkC;AACM;AACxC,MAAM,WAAO,GAAG,aAAG;AACyB;AACW;AACzB;AAC9B,iC;;ACNA,SAAS,eAAC,IAAI,sEAAsE,OAAO,qBAAoC,iEAAC,EAAC;AACjI;;;ACDA,IAAI,uBAAI;AACR,IAAI,0BAAO;AACX,IAAI,8BAAW;AACf,IAAI,2BAAQ;AACZ;AACA;AACA;AACA;AACA;AACA,IAAI,0BAAO;AACX,IAAI,yBAAM;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,IAAI,uBAAI;AACR,IAAI,yBAAM;AACV,IAAI,wBAAK;AACT,IAAI,2BAAQ;AACZ,IAAI,wBAAK;AACT,IAAI,6BAAU;AACd;AACA;AACA;AACA,IAAI,wBAAK;AACT;AACA;AACA;AACA,IAAI,0BAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kCAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,sBAAG;AACP,OAAO,uBAAI;AACX,UAAU,0BAAO;AACjB,cAAc,8BAAW;AACzB,WAAW,2BAAQ;AACnB,UAAU,0BAAO;AACjB,SAAS,yBAAM;AACf;AACA,OAAO,uBAAI;AACX,SAAS,yBAAM;AACf,QAAQ,wBAAK;AACb,WAAW,2BAAQ;AACnB,QAAQ,wBAAK;AACb,aAAa,6BAAU;AACvB,QAAQ,wBAAK;AACb,UAAU,0BAAO;AACjB,kBAAkB,kCAAe;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,UAAU,kBAAkB;AAC5B,WAAW,kBAAkB;AAC7B,WAAW,oCAAoC;AAC/C,WAAW,oBAAoB;AAC/B,WAAW,kBAAkB;AAC7B,YAAY,oBAAoB;AAChC,aAAa,8CAA8C;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,oBAAoB;AAC9B,WAAW,oBAAoB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,WAAW,wCAAwC;AACnD,WAAW,oBAAoB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,YAAY,sBAAsB;AAClC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,UAAU,oBAAoB;AAC9B,WAAW,oBAAoB;AAC/B,WAAW,sBAAsB;AACjC,WAAW,sBAAsB;AACjC,WAAW,oBAAoB;AAC/B,YAAY,sBAAsB;AAClC,aAAa,8BAA8B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,UAAU,oBAAoB;AAC9B,WAAW,oBAAoB;AAC/B,WAAW,sCAAsC;AACjD,WAAW,sBAAsB;AACjC,WAAW,oBAAoB;AAC/B,YAAY,sBAAsB;AAClC,aAAa,8BAA8B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,UAAU,oBAAoB;AAC9B,WAAW,oBAAoB;AAC/B,WAAW,sBAAsB;AACjC,WAAW,sBAAsB;AACjC,WAAW,oBAAoB;AAC/B,YAAY,sBAAsB;AAClC,aAAa,8BAA8B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,UAAU,oBAAoB;AAC9B,WAAW,oBAAoB;AAC/B,WAAW,sBAAsB;AACjC,WAAW,sBAAsB;AACjC,WAAW,oBAAoB;AAC/B,YAAY,sBAAsB;AAClC,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,MAAM,uBAAI;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uBAAI;AAClB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAI;AACvB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAI;AACvB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAI;AACvB;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,UAAU,oBAAoB;AAC9B,YAAY,sBAAsB;AAClC,aAAa,8BAA8B;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,oBAAoB;AAC9B,WAAW,oBAAoB;AAC/B,WAAW,sBAAsB;AACjC,WAAW,oBAAoB;AAC/B,YAAY,sBAAsB;AAClC,aAAa,sBAAsB;AACnC,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,MAAM,4BAAS,GAAG,sBAAG;;AAEgQ;;;AC/pB7N;;AAExD,IAAI,wBAAI;AACR,IAAI,2BAAO;AACX,IAAI,+BAAW;AACf,IAAI,4BAAQ;AACZ;AACA;AACA;AACA;AACA,IAAI,8BAAU;AACd;AACA;AACA;AACA,IAAI,0BAAM;AACV;AACA;AACA;AACA,IAAI,iCAAa;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,2BAAO;AACX,IAAI,wBAAI;AACR;AACA;AACA,IAAI,4BAAQ;AACZ,IAAI,wBAAI;AACR,IAAI,0BAAM;AACV,IAAI,yBAAK;AACT,IAAI,4BAAQ;AACZ,IAAI,yBAAK;AACT,IAAI,yBAAK;AACT;AACA;AACA;AACA;AACA,IAAI,2BAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,cAAc;AACjD;AACA;AACA;AACA;AACA,IAAI,mCAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gCAAY;AAChB;AACA;AACA,IAAI,uBAAG;AACP,OAAO,wBAAI;AACX,UAAU,2BAAO;AACjB,cAAc,+BAAW;AACzB,WAAW,4BAAQ;AACnB,aAAa,8BAAU;AACvB,SAAS,0BAAM;AACf,gBAAgB,iCAAa;AAC7B,UAAU,2BAAO;AACjB,OAAO,wBAAI;AACX,WAAW,4BAAQ;AACnB,OAAO,wBAAI;AACX,SAAS,0BAAM;AACf,QAAQ,yBAAK;AACb,WAAW,4BAAQ;AACnB,QAAQ,yBAAK;AACb,QAAQ,yBAAK;AACb,UAAU,2BAAO;AACjB,kBAAkB,mCAAe;AACjC,eAAe,gCAAY;AAC3B;;AAEA;AACA,IAAI,gCAAY;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,wBAAwB;AACxB;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,sBAAsB;AACtB;AACA,sBAAsB;AACtB;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,iBAAiB;AACjB;AACA,qBAAqB;AACrB;;AAEA,MAAM,yBAAK;AACX,MAAM,mCAAe;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yBAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,8BAAU;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8BAAU;AACnB,6CAA6C,sBAAsB;AACnE;AACA,SAAS,sCAAkB;AAC3B;AACA;AACA;AACA;AACA,WAAW,gCAAY,oBAAoB,yBAAK;AAChD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,wBAAM;AACf;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,+BAAW;AACpB,QAAQ,2CAAO;AACf,mBAAmB,6BAA6B,4CAAQ,UAAU,6BAAS,2BAA2B;AACtG;AACA,QAAQ,4CAAQ;AAChB;AACA,2BAA2B,eAAe,cAAc,wBAAM;AAC9D;AACA,8BAA8B,mBAAmB;AACjD;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4CAAQ;AAC5B,0BAA0B,6BAAS;AACnC;AACA,kDAAkD,iBAAiB,0BAA0B,iBAAiB;AAC9G;AACA;AACA;AACA,6BAA6B,EAAE;AAC/B;AACA;AACA;AACA,SAAS,4BAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,6BAAS;AAClB,+BAA+B,4BAAQ;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qCAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA,MAAM,2BAAO;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,EAAE,mCAAe;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sCAAkB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,mBAAmB;AACtE;AACA;AACA;AACA,4BAA4B,+BAAW;AACvC;AACA,4CAA4C,mBAAmB;AAC/D,eAAe,OAAO,GAAG,qCAAiB;AAC1C,8CAA8C,EAAE,GAAG,SAAS,EAAE;AAC9D;AACA;;AAEA,MAAM,6BAAS,GAAG,uBAAG;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,yBAAK;AACd,wBAAwB,2BAAO;AAC/B;AACA;AACA;;AAEe,iFAAK,EAAC;AAC0H;;;ACxY/I;AAAA;AAAA;AAAA;AAA6C;AACS;AACnB;AACA;AACkC;AACzB;AACM;AACZ;AACC;;AAEvC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,yBAAS;AAClB,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,SAAS,sBAAI;AACb;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI,4BAAU;AACd;AACA;AACA,yBAAyB;AACzB;AACA,wBAAwB;AACxB;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,oBAAoB;AACpB;AACA,6CAA6C;AAC7C;AACA;AACA,mBAAmB;AACnB;AACA,iBAAiB;AACjB;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,wBAAwB,EA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A;AACA;AACA;AACA;AACA;AACA,yBAAyB,eAAU;AACnC;AACA;AACA;AACA;AACA,YAAY,sBAAI;AAChB;AACA;AACA,YAAY,sBAAI;AAChB;AACA,eAAe,MAAM;AACrB;AACA;AACA,wBAAwB,sBAAI,wCAAwC,YAAY,MAAM;AACtF,4CAA4C,sBAAI,+BAA+B;AAC/E;AACA,sBAAsB,UAAU,OAAO,sBAAI,wBAAwB,KAAK;AACxE;AACA;AACA,gBAAgB,kCAAgB;AAChC;AACA;AACA;AACA;AACA,8BAA8B,2BAAO,2BAA2B;AAChE;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB,mCAAmC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,6BAAW;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,kBAAkB;AAC3E;AACA;AACA;AACA;AACA,iDAAiD,iBAAiB,GAAG,IAAI;AACzE;AACA;AACA,mCAAmC,yBAAS;AAC5C;AACA;AACA;AACA,6BAA6B;AAC7B,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAAU,CAAC,uCAAS;AACxC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAAU,CAAC,uCAAS;AACxC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAI;AACxB;AACA;AACA;AACA,8BAA8B,uCAAS;AACvC,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,KAAK;AACL;;AAEe,8GAAK,EAAC;AACiC;AACtD;;;;;;;AC9gBA,OAAO,WAAW,GAAG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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,0BAA0B;AACjD;AACA;AACA;AACA;AACA,4FAA4F;AAC5F;AACA,4CAA4C,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA,6DAA6D,0CAA0C,EAAE,IAAI;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU,iBAAiB,8BAA8B,EAAE,EAAE,EAAE;AACnG,6DAA6D,6BAA6B,EAAE,GAAG,QAAQ;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA;AACA,oCAAoC,UAAU,iBAAiB,8BAA8B,EAAE,EAAE,EAAE;AACnG,6DAA6D,8BAA8B,EAAE,GAAG,QAAQ;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA;AACA;AACA;AACA,6DAA6D,2CAA2C,EAAE,IAAI;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA,0BAA0B,UAAU;AACpC,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D,oCAAoC,yBAAyB;AAC7D,sC;;;;;;;ACphBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,GAAW;AAChC,cAAc,mBAAO,CAAC,GAAS;AAC/B,cAAc,mBAAO,CAAC,GAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;AC5vDA,eAAe,mBAAO,CAAC,EAAa;AACpC;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;ACJa;AACb,aAAa,mBAAO,CAAC,EAAW;AAChC,SAAS,mBAAO,CAAC,EAAc;AAC/B,kBAAkB,mBAAO,CAAC,EAAgB;AAC1C,cAAc,mBAAO,CAAC,EAAQ;;AAE9B;AACA;AACA;AACA;AACA,sBAAsB,aAAa;AACnC,GAAG;AACH;;;;;;;ACZA;;;;;;;ACAA,cAAc,mBAAO,CAAC,CAAW;AACjC,cAAc,mBAAO,CAAC,EAAY;AAClC,YAAY,mBAAO,CAAC,EAAU;AAC9B,aAAa,mBAAO,CAAC,GAAc;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA,UAAU,mBAAO,CAAC,EAAc;AAChC,UAAU,mBAAO,CAAC,EAAQ;AAC1B,UAAU,mBAAO,CAAC,EAAQ;;AAE1B;AACA,oEAAoE,iCAAiC;AACrG;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA,QAAQ,yBAAyB;AACjC;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6DAA6D,aAAa;AAC1E;AACA,6DAA6D,aAAa;AAC1E;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,oCAAoC,aAAa;AACjD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;;;;;;;AChfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAuC;;AAEvC;AACO;AACA;AACA;AACA;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEc;AACf,WAAW,kEAAY;AACvB;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1Ba;;AAEb;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA,oC;;;;;;;ACXa;;AAEb;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,mBAAO,CAAC,GAAe;;AAE3C;;AAEA,aAAa,mBAAO,CAAC,GAAY;;AAEjC,6BAA6B,mBAAO,CAAC,GAAyB;;AAE9D,aAAa,mBAAO,CAAC,GAAY;;AAEjC;;AAEA,eAAe,mBAAO,CAAC,GAAW;;AAElC,YAAY,mBAAO,CAAC,GAAQ;;AAE5B;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,kCAAkC,0BAA0B,0CAA0C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE,OAAO,wBAAwB,EAAE;;AAEjM,2CAA2C,kBAAkB,kCAAkC,qEAAqE,EAAE,EAAE,OAAO,kBAAkB,EAAE,YAAY;AAC/M;;;AAGA;AACA;;AAEA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;;AAEA;;AAEA,YAAY,YAAoB,uBAAuB,YAAoB;AAC3E,aAAa,YAAoB;AACjC;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS,UAAU,eAAe,EAAE,EAAE,gCAAgC;AACtE;AACA;AACA;AACA;AACA,oEAAoE,aAAa;AACjF;AACA;;AAEA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,2BAA2B;AAC3B;AACA;AACA,0BAA0B,KAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA,kCAAkC,mCAAmC;AACrE,6BAA6B,wEAAwE;AACrG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH,UAAU;AACV;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,uCAAuC;AAC3D;AACA;AACA;AACA,6BAA6B,mDAAmD;AAChF,KAAK;AACL;AACA;AACA;AACA,8BAA8B,0DAA0D;AACxF,KAAK;AACL;AACA;AACA;AACA,8BAA8B,4DAA4D;AAC1F,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC,qEAAqE;AACrE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;;;AAGxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6DAA6D;AAChF;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA,gCAAgC,2EAA2E;AAC3G,WAAW;AACX;;AAEA,qBAAqB,6EAA6E;AAClG,OAAO;AACP,qBAAqB,gFAAgF;AACrG,OAAO;AACP,qBAAqB,4EAA4E;AACjG,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA,eAAe;AACf,gBAAgB,aAAa,EAAE;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,qIAAqI;AACrI,wFAAwF;AACxF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qEAAqE,eAAe;AACpF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,6BAA6B,mCAAmC;AAChE;AACA;;AAEA;;AAEA;AACA;AACA;AACA,gDAAgD,mDAAmD;AACnG,6BAA6B,wEAAwE;AACrG,KAAK;;AAEL;AACA,2EAA2E,cAAc;AACzF,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2BAA2B,qEAAqE;AAChG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,0FAA0F,eAAe;AACzG;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;;AAEA;AACA,0FAA0F,eAAe;AACzG;AACA;;AAEA,+BAA+B;AAC/B;;AAEA;AACA;;AAEA;AACA,yFAAyF,eAAe;AACxG;AACA;;AAEA,+BAA+B;AAC/B;;AAEA;AACA,0FAA0F,eAAe;AACzG;AACA;;AAEA,+BAA+B;AAC/B;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,qBAAqB;AACnC;;AAEA;AACA;;AAEA;AACA,qEAAqE,eAAe;AACpF;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB,kBAAkB,SAAS,EAAE;AAC7B;AACA,GAAG;AACH;;AAEA;AACA,qEAAqE,eAAe;AACpF;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,GAAG;;AAEH;AACA,C;;;;;;;ACn/Ba;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uC;;;;;;ACjKA;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,cAAc,mBAAO,CAAC,EAAQ;AAC9B;AACA;AACA;AACA;AACA;;;;;;;ACRA;AACA,UAAU,mBAAO,CAAC,EAAQ;AAC1B,UAAU,mBAAO,CAAC,EAAQ;AAC1B;AACA,2BAA2B,kBAAkB,EAAE;;AAE/C;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA,cAAc;;;;;;;ACAd;AACA,UAAU,mBAAO,CAAC,EAAQ;AAC1B;AACA;AACA;AACA;;;;;;;;ACLA;AAAuC;;AAExB;AACf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV,CAAC;;AAED;AACA,mBAAmB,qEAAS;AAC5B;;;;;;;;AC7Ca;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,oBAAoB,mBAAO,CAAC,EAAW;AACvC,uBAAuB,mBAAO,CAAC,GAAc;AAC7C,iBAAiB,mBAAO,CAAC,GAAQ;AACjC,uBAAuB,mBAAO,CAAC,EAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gCAAgC,WAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,uEAAuE,eAAe;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mEAAmE,UAAU;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;;;;;;ACnHa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,oBAAoB,mBAAO,CAAC,CAAuB;AACnD,gBAAgB,mBAAO,CAAC,GAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,aAAa;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gBAAgB;AAC3C;AACA;AACA,2BAA2B,wBAAwB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wBAAwB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,gC;;;;;;;ACvSa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,OAAO,OAAO,OAAO;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;;;;;AC7CA,cAAc,mBAAO,CAAC,EAAkB;AACxC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iDAAiD,KAAK;AACtD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,qBAAqB,mBAAO,CAAC,GAA2B;AACxD,OAAO,MAAM,GAAG,mBAAO,CAAC,EAAgB;AACxC,YAAY,mBAAO,CAAC,GAAkB;AACtC,cAAc,mBAAO,CAAC,GAAmB;AACzC,eAAe,mBAAO,CAAC,EAAU;AACjC,cAAc,mBAAO,CAAC,EAAS;;;;;;;ACtI/B,gBAAgB,mBAAO,CAAC,EAAW;AACnC;AACA;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA,GAAG,IAAI;AACP;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACRA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChBA,aAAa,mBAAO,CAAC,EAAW;AAChC,WAAW,mBAAO,CAAC,EAAS;AAC5B,UAAU,mBAAO,CAAC,EAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3Ba;AACb,aAAa,mBAAO,CAAC,EAAW;AAChC,cAAc,mBAAO,CAAC,CAAW;AACjC,eAAe,mBAAO,CAAC,EAAa;AACpC,kBAAkB,mBAAO,CAAC,EAAiB;AAC3C,WAAW,mBAAO,CAAC,EAAS;AAC5B,YAAY,mBAAO,CAAC,GAAW;AAC/B,iBAAiB,mBAAO,CAAC,EAAgB;AACzC,eAAe,mBAAO,CAAC,EAAc;AACrC,YAAY,mBAAO,CAAC,EAAU;AAC9B,kBAAkB,mBAAO,CAAC,GAAgB;AAC1C,qBAAqB,mBAAO,CAAC,EAAsB;AACnD,wBAAwB,mBAAO,CAAC,GAAwB;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO,mCAAmC,gCAAgC,aAAa;AACvF,8BAA8B,mCAAmC,aAAa;AAC9E;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,qDAAqD;AACrD;AACA,kDAAkD,iBAAiB,EAAE;AACrE;AACA,wDAAwD,aAAa,EAAE,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;;;;;;ACpFA,aAAa,mBAAO,CAAC,EAAW;AAChC;;AAEA;;;;;;;ACHA,UAAU,mBAAO,CAAC,EAAQ;AAC1B,WAAW,mBAAO,CAAC,GAAc;AACjC,kBAAkB,mBAAO,CAAC,GAAkB;AAC5C,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,gBAAgB,mBAAO,CAAC,GAA4B;AACpD;AACA;AACA;AACA,uCAAuC,iBAAiB,EAAE;AAC1D;AACA;AACA;AACA;AACA;AACA,mEAAmE,gBAAgB;AACnF;AACA;AACA,GAAG,4CAA4C,gCAAgC;AAC/E;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBa;AACb,mBAAO,CAAC,GAAmB;AAC3B,eAAe,mBAAO,CAAC,EAAa;AACpC,WAAW,mBAAO,CAAC,EAAS;AAC5B,YAAY,mBAAO,CAAC,EAAU;AAC9B,cAAc,mBAAO,CAAC,EAAY;AAClC,UAAU,mBAAO,CAAC,EAAQ;AAC1B,iBAAiB,mBAAO,CAAC,GAAgB;;AAEzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,yBAAyB,4CAA4C;AACrE;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB,aAAa;AAC3D;AACA;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,kBAAkB;AAClB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,qCAAqC;AACrE;AACA;AACA,2BAA2B,gCAAgC;AAC3D;AACA;AACA;;;;;;;;AC/Fa;;AAEb,cAAc,mBAAO,CAAC,GAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBa;AACb;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA,eAAe,mBAAO,CAAC,EAAQ;AAC/B;;AAEA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA,iCAAiC,SAAS,EAAE;AAC5C,CAAC,YAAY;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS,qBAAqB;AAC3D,iCAAiC,aAAa;AAC9C;AACA,GAAG,YAAY;AACf;AACA;;;;;;;ACrBA;AACA,UAAU,mBAAO,CAAC,EAAQ;AAC1B;AACA;AACA;;;;;;;ACJA;;;;;;;ACAA;AACA;AA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B;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAEc,iEAAQ,EAAC;AACjB;;;;;;;;ACdP;AAAA;AAAqC;;AAErC,YAAY,oEAAQ;AACpB;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAEc,8DAAK,EAAC;AACd;;;;;;;;ACdP,+CAAa;;AAEb,YAAY,mBAAO,CAAC,EAAS;AAC7B,0BAA0B,mBAAO,CAAC,GAA+B;AACjE,mBAAmB,mBAAO,CAAC,GAAqB;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,GAAgB;AACtC,GAAG;AACH;AACA,cAAc,mBAAO,CAAC,GAAiB;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;;;;;;;;;ACrIa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA8C,cAAc;AAC5D,oBAAoB,mBAAO,CAAC,EAAW;AACvC,qCAAqC,mBAAO,CAAC,EAAY;AACzD,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,GAAc;AACrC,gBAAgB,mBAAO,CAAC,GAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,6CAA6C;AAC7C;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,6BAA6B;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB,yBAAyB,+BAA+B;AACxD;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,4BAA4B,6BAA6B;AACzD;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,0CAA0C;AAC9D;AACA;AACA,qBAAqB,uBAAuB,GAAG,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yCAAyC;AAC7D;AACA;AACA,qBAAqB,sBAAsB,GAAG,OAAO;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yCAAyC;AAC7D;AACA;AACA,qBAAqB,sBAAsB,GAAG,OAAO;AACrD;AACA,8BAA8B,0BAA0B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC,sBAAsB;AACtB;AACA;AACA;AACA;AACA,qC;;;;;;;ACnNA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,MAAM;AAClB;AACA,iBAAiB;;AAEjB;AACA,2BAA2B;;AAE3B;AACA,4BAA4B;;AAE5B;AACA,8BAA8B;AAC9B;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0BAA0B,YAAY;AACpD;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA,GAAG;AACH;;AAEA;AACA,kCAAkC,0DAA0D;AAC5F;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB;AACA;AACA,2CAA2C;AAC3C;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,MAAM;AACjB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,2CAA2C;AAC3C,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,sFAAsF;AACtF,GAAG;AACH,0FAA0F;AAC1F;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C,KAAK;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,UAAU;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,KAAK;AAChB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,KAAK;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ,wCAAwC,mCAAmC;AAC9F,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,UAAU;AACrB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6BAA6B;AAC7B;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;;AAEA;AACA,YAAY,OAAO;AACnB,YAAY,SAAS;AACrB;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA,EAAE;;;AAGF;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA,CAAC;;AAED;AACA,WAAW,MAAM;AACjB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO,YAAY,OAAO;AAC7C;AACA;AACA;AACA,8BAA8B;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,qEAAM,EAAC;AAC+D;AACrF;;;;;;;;AC7+BA;AACA;AACA;AACA;AACA;;AAEa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACzFA,eAAe,mBAAO,CAAC,EAAmB;AAC1C,mBAAmB,mBAAO,CAAC,GAAuB;AAClD,OAAO,IAAI;AACX,cAAc,mBAAO,CAAC,EAAkB;AACxC,kBAAkB,mBAAO,CAAC,GAAwB;AAClD,WAAW,mBAAO,CAAC,GAAiB;AACpC,WAAW,mBAAO,CAAC,GAAiB;AACpC,YAAY,mBAAO,CAAC,GAAkB;AACtC,YAAY,mBAAO,CAAC,GAAkB;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC/EA,gBAAgB,mBAAO,CAAC,EAAW;AACnC;AACA;;;;;;;ACFA,gBAAgB,mBAAO,CAAC,EAAW;AACnC;AACA;;;;;;;ACFA,gBAAgB,mBAAO,CAAC,EAAW;AACnC;AACA;;;;;;;ACFA,eAAe,mBAAO,CAAC,EAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,EAAW;AACnC;AACA;;;;;;;ACFA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;;;;;;ACtBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0C;;;;;;ACxFA;AACA,kBAAkB,mBAAO,CAAC,GAAU;AACpC,iCAAiC,QAAQ,mBAAmB,UAAU,EAAE,EAAE;AAC1E,CAAC;;;;;;;ACHD;AACA;AACA;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA,yCAAyC;;;;;;;;ACL5B;AACb,aAAa,mBAAO,CAAC,EAAW;AAChC,kBAAkB,mBAAO,CAAC,EAAgB;AAC1C,cAAc,mBAAO,CAAC,EAAY;AAClC,aAAa,mBAAO,CAAC,GAAU;AAC/B,WAAW,mBAAO,CAAC,EAAS;AAC5B,kBAAkB,mBAAO,CAAC,EAAiB;AAC3C,YAAY,mBAAO,CAAC,EAAU;AAC9B,iBAAiB,mBAAO,CAAC,EAAgB;AACzC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,eAAe,mBAAO,CAAC,EAAc;AACrC,cAAc,mBAAO,CAAC,GAAa;AACnC,WAAW,mBAAO,CAAC,EAAgB;AACnC,SAAS,mBAAO,CAAC,EAAc;AAC/B,gBAAgB,mBAAO,CAAC,GAAe;AACvC,qBAAqB,mBAAO,CAAC,EAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,QAAQ,WAAW;AACnB;AACA;AACA,QAAQ,UAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,WAAW;AACnB;AACA;AACA;AACA,QAAQ,WAAW;AACnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,mBAAmB,uBAAuB,EAAE,EAAE;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA,GAAG;AACH,yBAAyB;AACzB,GAAG;AACH,uBAAuB;AACvB,0BAA0B;AAC1B,0BAA0B;AAC1B;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,iDAAiD,iBAAiB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnRA,UAAU,mBAAO,CAAC,EAAQ;AAC1B,aAAa,mBAAO,CAAC,GAAW;AAChC,WAAW,mBAAO,CAAC,GAAS;AAC5B,UAAU,mBAAO,CAAC,GAAe;AACjC,aAAa,mBAAO,CAAC,EAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAO,CAAC,EAAQ;AACtB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnFa;AACb,SAAS,mBAAO,CAAC,GAAc;;AAE/B;AACA;AACA;AACA;AACA;;;;;;;;ACPa;;AAEb,kBAAkB,mBAAO,CAAC,GAAU;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;;;;;;;;ACzDa;AACb,uBAAuB,mBAAO,CAAC,EAAuB;AACtD,WAAW,mBAAO,CAAC,GAAc;AACjC,gBAAgB,mBAAO,CAAC,EAAc;AACtC,gBAAgB,mBAAO,CAAC,EAAe;;AAEvC;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,GAAgB;AACzC,gCAAgC;AAChC,cAAc;AACd,iBAAiB;AACjB;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;;;;;;;ACjCA;AACa;AACb,eAAe,mBAAO,CAAC,EAAc;AACrC,sBAAsB,mBAAO,CAAC,EAAsB;AACpD,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA,cAAc,mBAAO,CAAC,GAAY;AAClC,eAAe,mBAAO,CAAC,EAAQ;AAC/B,gBAAgB,mBAAO,CAAC,EAAc;AACtC,iBAAiB,mBAAO,CAAC,EAAS;AAClC;AACA;AACA;AACA;;;;;;;;ACPa;AACb,sBAAsB,mBAAO,CAAC,EAAc;AAC5C,iBAAiB,mBAAO,CAAC,EAAkB;;AAE3C;AACA;AACA;AACA;;;;;;;ACPA;AACA,gBAAgB,mBAAO,CAAC,EAAc;AACtC,eAAe,mBAAO,CAAC,EAAQ;AAC/B;;AAEA;AACA;AACA;;;;;;;ACPA,YAAY,mBAAO,CAAC,EAAQ;AAC5B;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK,YAAY;AACjB,GAAG;AACH;;;;;;;ACXA;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC,UAAU,mBAAO,CAAC,EAAQ;AAC1B,YAAY,mBAAO,CAAC,EAAQ;AAC5B;AACA;AACA;AACA;;;;;;;ACPA,sBAAsB;AACtB,eAAe,mBAAO,CAAC,GAAc;AACrC,cAAc,mBAAO,CAAC,EAAY;;AAElC;AACA;AACA;AACA;;;;;;;;ACPa;AACb,cAAc,mBAAO,CAAC,EAAY;AAClC,cAAc,mBAAO,CAAC,CAAW;AACjC,eAAe,mBAAO,CAAC,EAAa;AACpC,WAAW,mBAAO,CAAC,EAAS;AAC5B,gBAAgB,mBAAO,CAAC,EAAc;AACtC,kBAAkB,mBAAO,CAAC,GAAgB;AAC1C,qBAAqB,mBAAO,CAAC,EAAsB;AACnD,qBAAqB,mBAAO,CAAC,EAAe;AAC5C,eAAe,mBAAO,CAAC,EAAQ;AAC/B,8CAA8C;AAC9C;AACA;AACA;;AAEA,8BAA8B,aAAa;;AAE3C;AACA;AACA;AACA;AACA;AACA,yCAAyC,oCAAoC;AAC7E,6CAA6C,oCAAoC;AACjF,KAAK,4BAA4B,oCAAoC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;;;;;ACpEA,gBAAgB,mBAAO,CAAC,EAAe;AACvC,cAAc,mBAAO,CAAC,EAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACTD;AACA;AACA;AACA;AACA;;;;;;;;ACJa;AACb,gBAAgB,mBAAO,CAAC,EAAe;AACvC,cAAc,mBAAO,CAAC,EAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM;AACd;AACA;;;;;;;ACXA,eAAe,mBAAO,CAAC,EAAc;AACrC,qBAAqB,mBAAO,CAAC,GAAc;AAC3C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;ACRA;AACA;;;;;;;ACDA;AACA;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA;AACA;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CAAsC;AACtC,mDAAmD;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA,WAAW,oBAAc,CAAC,cAAM,YAAY,8BAA8B;AAC1E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX,SAAS;AACT;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;;AAEP;AACA,aAAa,MAAM;;AAEnB;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;;ACtGe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACRgC;;AAElB;AACf,uBAAuB;AACvB,0CAA0C,WAAW,EAAE;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,gCAAgC,cAAc,EAAE;AAChD;;AAEA;AACA,2EAA2E,gBAAgB,EAAE;AAC7F;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC,6BAA6B,iBAAiB,EAAE,EAAE;AACvF;;AAEA;;AAEA;AACA,kEAAkE,OAAO;AACzE,yBAAyB,OAAO;AAChC;AACA,oCAAoC,MAAM;AAC1C,oCAAoC,MAAM;AAC1C;AACA;AACA;;AAEA;AACA,CAAC;;;AC5CoC;;AAEtB;AACf,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACtB4B;AACc;;AAE5B;AACf;;AAEA;AACA;AACA,2BAA2B,IAAI;AAC/B;AACA,iBAAiB;AACjB,GAAG;AACH;AACA;;AAEA,UAAU,WAAW;;AAErB;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,gFAAgF;AAC3H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;;;;;;;ACtFa;;AAEb;AACA;AACA;;;;;;;;ACJa;;AAEb,mBAAmB,mBAAO,CAAC,GAAgB;;AAE3C;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;;;;;;;ACjBa;;AAEb,YAAY,mBAAO,CAAC,EAAY;AAChC,aAAa,mBAAO,CAAC,GAAkB;AACvC,cAAc,mBAAO,CAAC,GAAsB;AAC5C,eAAe,mBAAO,CAAC,GAAuB;AAC9C,oBAAoB,mBAAO,CAAC,GAAuB;AACnD,mBAAmB,mBAAO,CAAC,GAA2B;AACtD,sBAAsB,mBAAO,CAAC,GAA8B;AAC5D,kBAAkB,mBAAO,CAAC,GAAqB;;AAE/C;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;AAC5C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;;;;;;;AC5La;;AAEb;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzCa;;AAEb,YAAY,mBAAO,CAAC,EAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;ACrEa;;AAEb;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;;;;;;;;ACVa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA8C,cAAc;AAC5D,qCAAqC,mBAAO,CAAC,EAAY;AACzD,cAAc,mBAAO,CAAC,EAAa;AACnC,gBAAgB,mBAAO,CAAC,GAAe;AACvC,uBAAuB,mBAAO,CAAC,EAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA,iBAAiB;AACjB;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,QAAQ;AAC9B;AACA,iBAAiB;AACjB;AACA;AACA,oBAAoB;AACpB,0CAA0C,kBAAkB;AAC5D;AACA;AACA,SAAS;AACT;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,MAAM;AACxF;AACA;AACA;AACA;AACA;AACA,8BAA8B,sBAAsB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC,aAAa;AACb;AACA;AACA,wCAAwC;AACxC;AACA;AACA,wBAAwB;AACxB;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iBAAiB,mCAAmC;AACpD;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+BAA+B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,oCAAoC,WAAW;AAC/C;AACA,mCAAmC,iCAAiC;AACpE;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB,yBAAyB,+BAA+B;AACxD;AACA;AACA;AACA;AACA,aAAa;AACb,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qC;;;;;;;AC/Ma;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,gBAAgB,mBAAO,CAAC,GAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kCAAkC;AAChE;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,YAAY,MAAM;AAC/D,uBAAuB,KAAK,GAAG,IAAI;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,cAAc,yDAAyD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA,sCAAsC,qBAAqB;AAC3D;AACA;AACA;AACA,iC;;;;;;;ACxMa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;;;;;;AChBa;;AAEb;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,oC;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb,oBAAoB,mBAAO,CAAC,GAAiB;;AAE7C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,IAAI,KAAqC,EAAE,qBAsC1C;;AAED,yB;;;;;;;AC7Da;;AAEb;AACA;AACA,CAAC;AACD;AACA;;AAEA,yBAAyB,mBAAO,CAAC,GAA4B;;AAE7D;;AAEA,2BAA2B,mBAAO,CAAC,GAAuB;;AAE1D;;AAEA,0BAA0B,mBAAO,CAAC,GAA6B;;AAE/D;;AAEA,yBAAyB,mBAAO,CAAC,GAA4B;;AAE7D;;AAEA,eAAe,mBAAO,CAAC,GAAkB;;AAEzC;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iHAAiH;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,KAAqC,EAAE,wQAgF1C;;AAED;AACA;AACA;AACA,gCAAgC,0BAA0B;AAC1D,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,kBAAkB;AAC/B,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAsD,EAAE,EAE3D;AACL;AACA;AACA,uDAAuD;AACvD,OAAO;AACP;AACA,+FAA+F;AAC/F;AACA;AACA;AACA;AACA,C;;;;;;;ACjKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2C;AACP;AACD;;AAEpB;AACf,cAAc,mEAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gEAAQ,qBAAqB,yBAAyB,EAAE;AACzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,0DAAS;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;AACA;;;;;;;ACpGA,WAAW,mBAAO,CAAC,GAAM;AACzB,YAAY,mBAAO,CAAC,GAAO;AAC3B,WAAW,mBAAO,CAAC,GAAM;AACzB,YAAY,mBAAO,CAAC,GAAO;AAC3B,WAAW,mBAAO,CAAC,GAAM;AACzB,YAAY,mBAAO,CAAC,GAAO;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,+CAA+C,GAAG;AAClD;AACA;AACA;;;;;;;AC/CA,gBAAgB,mBAAO,CAAC,EAAW;AACnC;AACA;;;;;;;;ACFa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAW;AAClC,qBAAqB,mBAAO,CAAC,EAAiB;AAC9C,oBAAoB,mBAAO,CAAC,EAAgB;AAC5C,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,mBAAmB,mBAAO,CAAC,GAAc;AACzC,kBAAkB,mBAAO,CAAC,EAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C,+B;;;;;;;ACpEa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAO,CAAC,EAAW;AAClC,qBAAqB,mBAAO,CAAC,EAAiB;AAC9C,oBAAoB,mBAAO,CAAC,EAAgB;AAC5C,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,kBAAkB,mBAAO,CAAC,EAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,8BAA8B,aAAa;AAC3C,+B;;;;;;AC7DA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,mBAAO,CAAC,GAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9DA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;ACNA,6BAA6B;AAC7B,uCAAuC;;;;;;;ACDvC,kBAAkB,mBAAO,CAAC,EAAgB;AAC1C,cAAc,mBAAO,CAAC,EAAgB;AACtC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,aAAa,mBAAO,CAAC,GAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC,aAAa,mBAAO,CAAC,GAAkB;AACvC,cAAc,mBAAO,CAAC,EAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA;AACA,WAAW,mBAAO,CAAC,EAAgB;AACnC,WAAW,mBAAO,CAAC,GAAgB;AACnC,eAAe,mBAAO,CAAC,EAAc;AACrC,cAAc,mBAAO,CAAC,EAAW;AACjC;AACA;AACA;AACA;AACA;;;;;;;ACTA;AACA,gBAAgB,mBAAO,CAAC,EAAe;AACvC,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTa;AACb,kBAAkB,mBAAO,CAAC,EAAiB;AAC3C,cAAc,mBAAO,CAAC,EAAS;AAC/B,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,iBAAiB,mBAAO,CAAC,EAAgB;AACzC,YAAY,mBAAO,CAAC,GAAW;AAC/B,wBAAwB,mBAAO,CAAC,EAAkB;AAClD,WAAW,mBAAO,CAAC,EAAQ;AAC3B,eAAe,mBAAO,CAAC,EAAwB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,qBAAqB;AACrB,0BAA0B;AAC1B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;ACpFa;AACb,SAAS,mBAAO,CAAC,EAAc;AAC/B,aAAa,mBAAO,CAAC,EAAkB;AACvC,kBAAkB,mBAAO,CAAC,EAAiB;AAC3C,UAAU,mBAAO,CAAC,EAAQ;AAC1B,iBAAiB,mBAAO,CAAC,EAAgB;AACzC,YAAY,mBAAO,CAAC,GAAW;AAC/B,kBAAkB,mBAAO,CAAC,GAAgB;AAC1C,WAAW,mBAAO,CAAC,GAAc;AACjC,iBAAiB,mBAAO,CAAC,EAAgB;AACzC,kBAAkB,mBAAO,CAAC,EAAgB;AAC1C,cAAc,mBAAO,CAAC,EAAS;AAC/B,eAAe,mBAAO,CAAC,EAAwB;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,6BAA6B;AAC7B,0BAA0B;AAC1B,0BAA0B;AAC1B,qBAAqB;AACrB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,8EAA8E,OAAO;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,qBAAqB;AACrB,0BAA0B;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;;;;;;AC/IA,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,2BAA2B,mBAAO,CAAC,GAA2B;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXa;AACb;AACA,gBAAgB,mBAAO,CAAC,EAAe;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACjBa;AACb,cAAc,mBAAO,CAAC,EAAY;AAClC,aAAa,mBAAO,CAAC,EAAW;AAChC,UAAU,mBAAO,CAAC,EAAQ;AAC1B,cAAc,mBAAO,CAAC,GAAY;AAClC,cAAc,mBAAO,CAAC,CAAW;AACjC,eAAe,mBAAO,CAAC,EAAc;AACrC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,iBAAiB,mBAAO,CAAC,EAAgB;AACzC,YAAY,mBAAO,CAAC,GAAW;AAC/B,yBAAyB,mBAAO,CAAC,GAAwB;AACzD,WAAW,mBAAO,CAAC,GAAS;AAC5B,gBAAgB,mBAAO,CAAC,GAAc;AACtC,iCAAiC,mBAAO,CAAC,GAA2B;AACpE,cAAc,mBAAO,CAAC,GAAY;AAClC,gBAAgB,mBAAO,CAAC,GAAe;AACvC,qBAAqB,mBAAO,CAAC,GAAoB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA+C,EAAE,mBAAO,CAAC,EAAQ;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,mBAAmB,kCAAkC;AACrD,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,eAAe,uCAAuC;AACtD;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH,kBAAkB,yBAAyB,KAAK;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,wBAAwB;AACxB,gBAAgB;AAChB,oBAAoB;AACpB,wBAAwB;AACxB,gBAAgB;AAChB,oBAAoB;AACpB;AACA,uBAAuB,mBAAO,CAAC,EAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0DAA0D,oBAAoB;AAC9E,mBAAO,CAAC,EAAsB;AAC9B,mBAAO,CAAC,EAAgB;AACxB,UAAU,mBAAO,CAAC,EAAS;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gDAAgD,mBAAO,CAAC,GAAgB;AACxE;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,CAAC;;;;;;;AC7RD;AACA,IAAI,mBAAO,CAAC,EA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CA;;AAEA;AACA;;AAEA;AACA;AACA;;;;;;;AC7CA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,6BAA6B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;;;;;;;;;;;;;;;AChQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,yDAAS,cAAc,iEAAS;AACxE,iBAAiB,uDAAM;AACvB;AACA;AACA;AACA,SAAS;AACT;AACA,wCAAwC,sDAAU,cAAc,8DAAU;AAC1E,iBAAiB,uDAAO;AACxB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;;AAEA,YAAY,4BAA4B;AACxC;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,uDAAO,OAAO,+DAAQ;AACvC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,sDAAU,OAAO,+DAAQ;AACtC;;AAEA;AACA;AACA,mCAAmC,gEAAY,MAAM,wDAAY;AACjE;;AAEA;AACA;AACA,aAAa,wDAAY,OAAO,+DAAQ,WAAW,+DAAQ;AAC3D;;AAEA;AACA;AACA;;AAEA;AACA,aAAa,sDAAU,OAAO,+DAAQ;AACtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,gEAAY,MAAM,wDAAY;AAC9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,uDAAM,OAAO,+DAAO;AACrC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,yDAAS,OAAO,+DAAO;AACpC;;AAEA;AACA;AACA,mCAAmC,mEAAW,MAAM,2DAAW;AAC/D;;AAEA;AACA;AACA,aAAa,2DAAW,OAAO,+DAAO,WAAW,+DAAO;AACxD;;AAEA;AACA;AACA;;AAEA;AACA,aAAa,yDAAS,OAAO,+DAAO;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,mEAAW,MAAM,2DAAW;AAC5D;AACA;;A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B,QAAQ,gBAAU;AAClB,CAAC;;AAEM,SAAS,gBAAU;AAC1B;AACA,SAAS,UAAW;AACpB;;;AClCA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AC3BD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;AC1ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACxBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACxBD;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACND;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACNgC;;AAElB;AACf,mDAAmD,OAAO;AAC1D;AACA;AACA,GAAG;AACH,CAAC;;;ACPgC;AACE;;AAEnC,SAAS,mBAAY;AACrB;AACA;;AAEe;AACf,mDAAmD,OAAO;AAC1D,gCAAgC,mBAAY,2CAA2C,YAAQ;AAC/F;AACA;AACA,GAAG;AACH,CAAC;;;ACbD;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACPD;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACVc;AACf;AACA;AACA;AACA,CAAC;;;ACJD;;AAEO,IAAI,QAAK;;AAEhB;AACA,MAAM,UAAO;AACb,0BAA0B,UAAO;AACjC,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,QAAK,CAAC;AACvB,IAAI,QAAK;AACT;AACA;AACA,KAAK;AACL,MAAM,QAAK;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEe;AACf;;AAEA;AACA;AACA,6CAA6C,OAAO;AACpD,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA,CAAC;;AAEM;AACP,eAAe,QAAK;AACpB,uBAAuB,QAAK;AAC5B,EAAE,QAAK;AACP;AACA;AACA,GAAG;AACH,IAAI,QAAK;AACT;AACA;;;AC1GoC;;AAEpC,SAAS,sBAAa;AACtB,eAAe,UAAW;AAC1B;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA,SAAS,yBAAgB;AACzB;AACA,WAAW,sBAAa;AACxB;AACA;;AAEA,SAAS,yBAAgB;AACzB;AACA,WAAW,sBAAa;AACxB;AACA;;AAEe;AACf;AACA,QAAQ,yBAAgB;AACxB,QAAQ,yBAAgB;AACxB,CAAC;;;ACjCuC;AACM;AACN;AACJ;AACE;AACF;AACE;AACA;AACF;AACA;AACE;AACF;AACA;AACE;AACF;AACA;AACE;AACM;AACF;AACN;AACA;AACE;AACA;AACE;AACA;AACA;AACF;AACA;AACN;AACY;;AAErC,IAAI,cAAI;;AAER,SAAS,mBAAS;AACzB;AACA;AACA;;AAEA,SAAS,mBAAS;AAClB,aAAa,mB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0BAA0B,UAAU;AACpC;AACA;AACA;AACO,SAAS,kBAAY;AAC5B;AACA;AACO,SAAS,+BAAyB;AACzC;AACA;AACA,eAAe,qBAAU;AACzB;AACO,SAAS,oBAAc;AAC9B,0CAA0C,oBAAoB,EAAE,MAAM,KAAK;AAC3E,iBAAiB,KAAK;AACtB;AACO,SAAS,WAAK;AACrB,mDAAmD,2BAA2B,EAAE;AAChF;AACO,SAAS,mBAAa;AAC7B;AACA;AACO,SAAS,wBAAkB;AAClC,WAAW,mBAAa;AACxB;AACA,iC;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gBAAgB,EAAE;AAC5C;AACA;AACA,KAAK;AACL;AACA,0BAA0B,gBAAgB,EAAE;AAC5C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgB;AACjB,iC;;ACvCuD;AACvB;AAChC,IAAI,OAAG;AACP;AACA,iDAAiD,gCAAgC;AACjF,6BAA6B;AAC7B,sEAAsE,mBAAa;AACnF,iEAAiE,mBAAa;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,2CAA2C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,mBAAa;AACtF;AACA;AACA,iDAAiD,iCAAiC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gBAAgB,EAAE;AAC5C;AACA;AACA,KAAK;AACL;AACA,0BAA0B,gBAAgB,EAAE;AAC5C;AACA;AACA,KAAK;AACL;AACA,0BAA0B,oBAAoB,EAAE;AAChD;AACA;AACA,KAAK;AACL;AACA,0BAA0B,qBAAqB,EAAE;AACjD;AACA;AACA,KAAK;AACL;AACA,0BAA0B,eAAe,EAAE;AAC3C;AACA;AACA,KAAK;AACL;AACA,0BAA0B,eAAe,EAAE;AAC3C;AACA;AACA,KAAK;AACL;AACA,0BAA0B,4BAA4B,EAAE;AACxD;AACA;AACA,KAAK;AACL;AACA,0BAA0B,6BAA6B,EAAE;AACzD;AACA;AACA,KAAK;AACL;AACA,0BAA0B,iCAAiC,EAAE;AAC7D;AACA;AACA,KAAK;AACL;AACA,0BAA0B,YAAY,KAAK,sBAAsB,EAAE;AACnE;AACA;AACA,KAAK;AACL;AACA,0BAA0B,YAAY,KAAK,uBAAuB,EAAE;AACpE;AACA;AACA,KAAK;AACL;AACA,0BAA0B,YAAY,KAAK,yBAAyB,EAAE;AACtE;AACA;AACA,KAAK;AACL;AACA,0BAA0B,YAAY,KAAK,0BAA0B,EAAE;AACvE;AACA;AACA,KAAK;AACL;AACA;AACA,iCAAiC,wBAAwB,EAAE;AAC3D,wBAAwB,2CAA2C;AACnE;AACA;AACA;AACA,iCAAiC,wBAAwB,EAAE;AAC3D,wBAAwB,2CAA2C;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2CAA2C;AACnE;AACA;AACA,qBAAqB,kBAAY;AACjC,qBAAqB,kBAAY;AACjC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2CAA2C;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAuE;AAChG;AACA;AACA;AACA;AACA;AACA,wBAAwB,2CAA2C;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACc;AACf,+B;;ACnMkC;AACN;AAC5B,IAAI,uBAAW;AACf,IAAI,sCAAS;AACb;AACA,iDAAiD,iCAAiC;AAClF,kCAAkC,qDAAqD;AACvF;AACA;AACA,CAAC,CAAC,OAAG;AACkB;AACvB,uC;;ACX4B;AACc;AAC1C,IAAI,+BAAe;AACnB;AACA,8BAA8B,qBAAU;AACxC;AACA;AA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A;AACA,sDAAsD,qCAAqC,KAAK,uCAAuC,EAAE;AACzI,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,6DAA6D,+BAA+B;AAC5F;AACA;AACA,+EAA+E,KAAK;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA,2CAA2C,2BAAa;AACxD;AACA,sBAAsB,OAAG;AACzB;AACA;AACA,iCAAiC,GAAG,8CAA8C;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,wCAAwC;AACjF;AACA,+CAA+C,sBAAQ;AACvD,uBAAuB,oBAAc;AACrC;AACA,qDAAqD,kBAAI;AACzD,qDAAqD,kBAAI;AACzD,mBAAmB,SAAI;AACvB;AACA;AACA,kBAAkB,eAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;AACzB,yC;;ACvGkC;AACQ;AACM;AAChD,IAAI,6BAAc;AAClB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oBAAc;AAC1B;AACA;AACA;AACA,CAAC,CAAC,2BAAa;AACW;AAC1B,0C;;ACnBkC;AACQ;AACM;AAChD,IAAI,+BAAe;AACnB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,oBAAc;AAC5B;AACA;AACA,CAAC,CAAC,2BAAa;AACY;AAC3B,2C;;ACvCiC;AACjC,IAAI,mBAAS;AACb;AACA;AACA;AACA;AACA;AACA,0BAA0B,oBAAoB,EAAE;AAChD;AACA;AACA,KAAK;AACL;AACA,0BAA0B,uBAAuB,EAAE;AACnD;AACA;AACA,KAAK;AACL;AACA,sCAAsC,qBAAqB;AAC3D,wDAAwD,WAAK;AAC7D;AACA;AACA,CAAC;AACoB;AACrB,qC;;ACvBkC;AACO;AACb;AAC5B,IAAI,qBAAU;AACd,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAG;AACX,aAAa,mBAAa;AAC1B;AACA;AACA;AACA;AACA,0BAA0B,oBAAoB,EAAE;AAChD;AACA;AACA,KAAK;AACL;AACA,CAAC,CAAC,OAAG;AACiB;AACtB,sC;;ACxBA;AACA;AACA;AACA;AACA;AACA,6EAA6E,wCAAwC,EAAE;AACvH;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oBAAoB,EAAE;AAChD;AACA;AACA,KAAK;AACL;AACA,0BAA0B,0BAA0B,EAAE;AACtD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4DAA4D,sBAAsB,EAAE;AACpF;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACiC;AAClC,kD;;ACpCkC;AACY;AACJ;AAC1C,IAAI,yBAAY;AAChB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qBAAU;AAClB,aAAa,wBAAkB;AAC/B,gBAAgB,wBAAkB;AAClC;AACA;AACA;AACA;AACA,0BAA0B,oBAAoB,EAAE;AAChD;AACA;AACA,KAAK;AACL;AACA,0BAA0B,yBAAyB,EAAE;AACrD;AACA;AACA,KAAK;AACL;AACA,CAAC,CAAC,qBAAU;AACY;AACxB,wC;;AC/B8B;AACR;AACO;AACG;AACA;AACC;AACC;AACN;AACC;AACY;AACP;AACV;AACO;AACR;AACvB,iC;;ACdyD;AAClD,SAAS,qCAAmB;AACnC,uCAAuC,2BAAa;AACpD;AACO,SAAS,yCAAuB;AACvC,qBAAqB;AACrB,2BAA2B;AAC3B;AACA,6C;;ACRO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,yCAAyC,EAAE;AACrF,yCAAyC,sCAAsC,EAAE;AACjF;AACA;AACA;AACA;AACA,4C;;;;;;;;ACnBO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qC;;;;;ACTsD;AACA;AACF;AACZ;AACF;AACtC,IAAI,eAAW;AACf,SAAS,UAAM;AACf,SAAS,eAAW;AACpB;AACA;AACA,WAAW,eAAW;AACtB;AACA,SAAS,UAAM;AACf,IAAI,eAAW;AACf;AACA,SAAS,cAAU;AACnB;AACA;AACA,QAAQ,SAAS;AACjB,QAAQ,UAAM,CAAC,gBAAgB;AAC/B;AACA,QAAQ,oCAAQ;AAChB,QAAQ,UAAM,CAAC,kDAAe;AAC9B;AACA;AACA,SAAS,eAAW;AACpB,SAAS,eAAW;AACpB,QAAQ,cAAU;AAClB;AACA,SAAS,eAAW;AACpB;AACA;AACA,kDAAkD,eAAW,sDAAsD,eAAW;AAC9H,IAAI,eAAW;AACf,IAAI,eAAW;AACf,IAAI,eAAW,gEAAgE,qBAAqB,EAAE;AACtG,IAAI,eAAW,8DAA8D,oBAAoB,EAAE;AACnG,IAAI,eAAW,8BAA8B,eAAW;AACxD,IAAI,eAAW,sBAAsB,eAAW;AAChD,IAAI,eAAW,sBAAsB,eAAW;AAChD,IAAI,eAAW,4BAA4B,eAAW;AACtD;AACO,IAAI,OAAG;AACd,YAAY,UAAM;AAClB,YAAY,UAAM;AAClB,gBAAgB,cAAU;AAC1B,sBAAsB,gBAAgB;AACtC,sBAAsB,4CAAgB;AACtC,qBAAqB,0CAAe;AACpC,iBAAiB,eAAW;AAC5B,eAAe,SAAS;AACxB,cAAc,4BAAQ;AACtB;AACA,cAAU;AACV,iC;;ACtD6B;AACtB,SAAS,yBAAY;AAC5B,SAAS,OAAG;AACZ;AACA;AACA;AACA;AACA,wC;;ACP6B;AACiB;AACvC,SAAS,uCAAmB;AACnC,aAAa,OAAG;AAChB;AACA;AACA;AACA,iBAAiB,yBAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+C;;ACjBiE;AACd;AAC5C,IAAI,4BAAc;AACzB;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,4BAAc,KAAK,4BAAc,KAAK;AACzC,IAAI,kCAAoB;AACxB;AACA,iCAAiC,cAAc;AAC/C;AACA,gDAAgD,4BAAc;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC+B;AAChC,IAAI,2BAAa;AACjB;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA,2BAA2B,kCAAoB;AAC/C;AACA;AACA;AACA,2CAA2C,iCAAiC,EAAE,4BAA4B,0BAA0B,EAAE;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,4BAAc,oCAAoC,4BAAc;AAC7G,4CAA4C,4BAAc,mCAAmC,4BAAc;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,gBAAgB;AAChB;AACA;AACA,qBAAqB,yBAAY;AACjC,kBAAkB,uCAAmB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACwB;AACzB,yC;;AC7EiC;AACgC;AACqB;AACtF,IAAI,sBAAc;AAClB;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA,4BAA4B,4BAAc;AAC1C;AACA;AACA,oCAAoC,kCAAoB,iBAAiB;AACzE;AACA;AACA,CAAC;AACyB;AAC1B,IAAI,eAAO;AACX;AACA,iCAAiC,cAAc;AAC/C,uBAAuB,OAAG;AAC1B,2BAA2B,sBAAc;AACzC;AACA;AACA,kBAAkB,uCAAmB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,2BAAa,WAAW,+BAA+B;AACvE;AACA;AACA;AACA,CAAC;AACkB;AACnB,mC;;ACxCiC;AACwB;AACY;AACpC;AACG;AAC7B,SAAS,6BAAc;AAC9B;AACA;AACA,mCAAmC,2BAAa;AAChD;AACA,eAAe,qCAAmB;AAClC,iCAAiC,2BAAa;AAC9C;AACA,eAAe,qCAAmB,gCAAgC,OAAG;AACrE,iCAAiC,WAAK;AACtC,YAAY,eAAO,OAAO,eAAe;AACzC,KAAK;AACL;AACA,0C;;AClB6B;AACtB,SAAS,2BAAa;AAC7B,aAAa,OAAG;AAChB;AACA;AACA;AACA,yC;;ACN6B;AACmB;AACzC,SAAS,iCAAgB;AAChC;AACA,6BAA6B,OAAG,oBAAoB,2BAAa;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,4C;;ACzB6B;AACtB,SAAS,2BAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAG;AACzB,sCAAsC,qBAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,yC;;ACpBmD;AACtB;AACtB,SAAS,qCAAkB;AAClC,aAAa,OAAG;AAChB;AACA,mBAAmB,qBAAU;AAC7B;AACA;AACA,mBAAmB,qBAAU;AAC7B;AACA,eAAe,qBAAU;AACzB;AACA,8C;;ACZ6B;AAC+B;AACF;AACV;AACzC,SAAS,yBAAY;AAC5B;AACA,8BAA8B,OAAG;AACjC;AACA;AACA;AACA;AACA;AACO,SAAS,kCAAqB;AACrC,oBAAoB,OAAG;AACvB,0CAA0C,2BAAa;AACvD;AACA;AACA,qBAAqB,qCAAkB;AACvC,iBAAiB,yBAAY,EAAE,+BAA+B;AAC9D;AACA,QAAQ,uCAAmB;AAC3B;AACA;AACA,QAAQ,uCAAmB;AAC3B;AACA;AACA;AACA,wC;;AC3B+C;AACH;AACf;AACS;AAC/B,SAAS,uCAAmB;AACnC,WAAW,sCAAS;AACpB;AACA,eAAe,wCAAW;AAC1B;AACA;AACA,6CAA6C,OAAG;AAChD,+CAA+C,gBAAU;AACzD,kCAAkC,wBAAO,cAAc,2DAA2D,EAAE;AACpH,yCAAyC,2BAAU;AACnD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,+C;;ACtB6B;AACtB,SAAS,6BAAc;AAC9B,aAAa,OAAG;AAChB;AACA;AACA;AACA;AACA,0C;;ACP6B;AACwC;AACT;AACF;AACnD,SAAS,2BAAa;AAC7B,iCAAiC,qBAAqB;AACtD,aAAa,OAAG;AAChB;AACA;AACA;AACA,eAAe,qCAAkB;AACjC;AACA;AACA;AACA,uBAAuB,yBAAY,EAAE,sCAAsC;AAC3E,wDAAwD,kCAAqB;AAC7E;AACA;AACA;AACA,IAAI,uCAAmB;AACvB;AACA;AACA,yC;;ACtB4C;AACf;AACoB;AACmC;AAC7B;AACP;AAChD,IAAI,iBAAQ;AACZ;AACA;AACA,2CAA2C,2BAA2B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gBAAU;AAC1B;AACA;AACA;AACA;AACA,gBAAgB,gBAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,OAAG,2BAA2B,kCAAqB;AAC7F;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,mBAAmB,WAAK,mDAAmD,mDAAmD,EAAE;AAChI,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+BAAyB,EAAE,+BAA+B;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA,eAAe,wBAAO;AACtB,+BAA+B,WAAK;AACpC;AACA,qCAAqC,0BAAS;AAC9C,oCAAoC,gBAAU;AAC9C,gCAAgC,uBAAW;AAC3C;AACA,oCAAoC,yBAAQ;AAC5C;AACA;AACA;AACA,qCAAqC,OAAG;AACxC,2BAA2B,2BAAU,YAAY,2BAAa;AAC9D;AACA;AACA,aAAa;AACb,8BAA8B,yBAAQ,gCAAgC,oBAAoB,EAAE;AAC5F;AACA,SAAS;AACT;AACA;AACA,CAAC;AACmB;AACpB,oC;;ACjJ+C;AACG;AACI;AACJ;AACZ;AACQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,qBAAU;AAC1B,WAAW,sCAAS;AACpB;AACA,eAAe,wCAAW;AAC1B;AACA;AACA,0CAA0C,iBAAQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,oEAAoE;AACrH,mDAAmD,yBAAY;AAC/D;AACA,6BAA6B,6BAAc,YAAY,gBAAU,YAAY,gBAAU;AACvF;AACA;AACA;AACA;AACA;AACA,4BAA4B,gBAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,sFAAsF,QAAQ,6BAAc,WAAW,iCAAgB,QAAQ,EAAE;AACjJ;AACA;AACA;AACA,8CAA8C,iBAAQ;AACtD;AACA,SAAS;AACT,KAAK;AACL;AACA,sC;;ACvD+C;AACU;AAC5B;AACiB;AACc;AACA;AAClB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAY;AAC5B,WAAW,sCAAS;AACpB;AACA,eAAe,wCAAW;AAC1B;AACA;AACA,6BAA6B,OAAG;AAChC;AACA;AACA,yCAAyC,qBAAU;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,uCAAmB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uCAAmB;AAC7C,2DAA2D,uBAAuB,2BAAa;AAC/F;AACA,8BAA8B,EAAE;AAChC,6CAA6C,4DAA4D,EAAE;AAC3G;AACA;AACA,0CAA0C,yBAAY,EAAE,+BAA+B;AACvF,4BAA4B,uCAAmB;AAC/C;AACA;AACA,yBAAyB;AACzB;AACA,SAAS;AACT,KAAK;AACL;AACA,wC;;ACzD+C;AACH;AACa;AACP;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,qCAAkB;AAClC,WAAW,sCAAS;AACpB,eAAe,wCAAW;AAC1B,iBAAiB,gBAAU,kBAAkB,gBAAU;AACvD;AACA;AACA,gBAAgB,gBAAU;AAC1B;AACA;AACA,kCAAkC,wBAAO;AACzC,qDAAqD,gBAAU;AAC/D,+DAA+D,uBAAuB,2BAAa;AACnG;AACA,8BAA8B,EAAE;AAChC,6CAA6C,oDAAoD,EAAE;AACnG;AACA;AACA,+BAA+B,2BAAU;AACzC,qBAAqB;AACrB;AACA,iBAAiB;AACjB,SAAS;AACT,KAAK;AACL;AACA,8C;;ACtC+C;AAClB;AACtB,SAAS,yBAAY;AAC5B,WAAW,sCAAS;AACpB;AACA,eAAe,wCAAW;AAC1B;AACA;AACA,4BAA4B,OAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,wC;;ACpB+C;AACC;AACF;AACvC,SAAS,qBAAU;AAC1B,WAAW,sCAAS;AACpB;AACA,eAAe,wCAAW;AAC1B;AACA,6CAA6C,yBAAY;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,2BAAa;AACvD;AACA,SAAS;AACT,KAAK;AACL;AACA,sC;;ACtB+C;AACD;AACvC,SAAS,mBAAS;AACzB,WAAW,sCAAS;AACpB,eAAe,wCAAW;AAC1B;AACA,6CAA6C,yBAAY;AACzD;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,qC;;ACZ+C;AACD;AACvC,SAAS,+BAAe;AAC/B,WAAW,sCAAS;AACpB;AACA,eAAe,wCAAW;AAC1B;AACA;AACA;AACA,yCAAyC,yBAAY;AACrD;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,2C;;AChBO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,UAAU,EAAE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wC;;AC3B+C;AACH;AACU;AACd;AACjC,SAAS,2BAAa;AAC7B,WAAW,sCAAS;AACpB;AACA,eAAe,wCAAW;AAC1B;AACA;AACA,yBAAyB,YAAY;AACrC,yCAAyC,mBAAS;AAClD;AACA;AACA,0CAA0C,sBAAK;AAC/C;AACA,SAAS;AACT,KAAK;AACL;AACA,yC;;ACnB0D;AACnD,SAAS,+BAAe;AAC/B,wCAAwC,4BAA4B;AACpE;AACA,UAAU,qCAAkB;AAC5B;AACA;AACA;AACA,YAAY;AACZ;AACA,2C;;ACVmC;AACH;AACD;AACA;AACM;AACR;AACD;AACM;AACH;AACO;AACD;AACC;AACN;AACC;AACD;AACA;AACE;AACP;AACI;AACF;AAC7B,iC;;ACpB+C;AACH;AACS;AACf;AACV;AAC5B,IAAI,+BAAa;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,qBAAqB,EAAE;AACjD;AACA;AACA,KAAK;AACL;AACA,0BAA0B,4BAA4B,EAAE;AACxD;AACA;AACA,KAAK;AACL;AACA,0BAA0B,sBAAsB,EAAE;AAClD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,4DAA4D,gCAAgC,4BAAW,CAAC,EAAE;AAC1G;AACA;AACA,4DAA4D,kCAAkC,4BAAW,EAAE,EAAE;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,yBAAyB,0BAAS;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA,0CAA0C,yBAAyB;AACnE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,0CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,6CAA6C,2BAAa;AAC1D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,mCAAmC,OAAG;AACtC,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;AAClC,mCAAmC,mCAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,yC;;AClBO;AACP;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,iD;;ACPsF;AACd;AACjE,SAAS,mCAAiB;AACjC,6BAA6B,mDAAyB;AACtD,4BAA4B,qBAAqB;AACjD,qCAAqC,gEAA8B;AACnE;AACA,sCAAsC,sBAAsB;AAC5D;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,sCAAsC,sBAAsB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,6C;;AC9BuD;AACC;AACjD,SAAS,qDAA0B;AAC1C;AACA,mCAAmC,mCAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0BAA0B;AAC9B,YAAY;AACZ;AACA,sD;;ACd0D;AACd;AACR;AACa;AACd;AACQ;AACK;AAC0B;AAC1E,IAAI,yCAAoB;AACxB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAO;AACtB;AACA;AACA,6BAA6B,mBAAS,2BAA2B,0BAAS;AAC1E,sBAAsB,sBAAW;AACjC,kBAAkB,sBAAW;AAC7B,kBAAkB,sBAAW;AAC7B,kBAAkB,sBAAW;AAC7B,kBAAkB,2BAAU;AAC5B;AACA,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,6CAA6C,qBAAU;AACvD;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,qDAA0B;AACzC;AACA;AACA,eAAe,2BAAa;AAC5B;AACA;AACA,CAAC,CAAC,+BAAa;AACiB;AAChC,gD;;ACvD4C;AACrC,SAAS,uCAAmB;AACnC,WAAW,wBAAO;AAClB,eAAe,uBAAM,CAAC,0BAAS;AAC/B,KAAK;AACL;AACA,+C;;ACN0E;AACnE,SAAS,yCAAa;AAC7B;AACA,aAAa,qBAAqB;AAClC,0BAA0B,6CAAsB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,yC;;ACdkF;AAC3E,SAAS,mEAA0B;AAC1C;AACA,6BAA6B,mDAAyB;AACtD;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,IAAI,0BAA0B;AAC9B,YAAY;AACZ;AACA,sD;;ACfO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,YAAY;AACZ;AACA,gC;;ACTkC;AACU;AACwB;AAClC;AACe;AACD;AAC0B;AAC9B;AAC5C,IAAI,2BAAa;AACjB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAO;AACtB,sDAAsD,iBAAQ;AAC9D;AACA;AACA,mBAAmB,uCAAmB;AACtC,SAAS;AACT;AACA;AACA,0CAA0C,yBAAyB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yCAAa;AAC5B;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA,eAAe,mEAA0B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,+BAAa;AACU;AACzB,yC;;ACjEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wCAAwC,UAAU,yDAAyD,EAAE,EAAE;AAC/G,qCAAqC,wCAAwC,EAAE;AAC/E;AACA;AACA,CAAC;AAC0B;AAC3B,2C;;ACpB0D;AACd;AACR;AACgD;AACrB;AACX;AACpD,IAAI,mCAAiB;AACrB,IAAI,sCAAS;AACb;AACA,8CAA8C,4BAA4B,yCAAoB,GAAG;AACjG;AACA;AACA;AACA;AACA,eAAe,wBAAO,cAAc,QAAQ,2BAAU,sBAAsB,EAAE;AAC9E;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,6CAA6C,qBAAU;AACvD;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA,iDAAiD,qBAAU;AAC3D;AACA;AACA;AACA;AACA;AACA,yDAAyD,2BAAU,wBAAwB,QAAQ,sCAAS;AAC5G;AACA,uCAAuC,wCAAW;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B,EAAE,EAAE;AACjC;AACA;AACA;AACA;AACA,0DAA0D,YAAY,eAAe,eAAe,EAAE;AACtG;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2BAAa;AACc;AAC7B,6C;;AC7EoC;AACF;AAClC,iC;;ACFuE;AAChE,SAAS,yCAAqB;AACrC,yCAAyC,eAAe;AACxD;AACO,SAAS,6CAAyB;AACzC,qBAAqB;AACrB,2BAA2B;AAC3B;AACA,+C;;ACRmC;AACoB;AACc;AACI;AACxC;AACe;AACzC,SAAS,uCAAmB;AACnC,mCAAmC,qBAAqB;AACxD;AACA;AACA,gCAAgC,eAAe;AAC/C;AACA,eAAe,yCAAqB;AACpC;AACA,0HAA0H;AAC1H;AACA;AACA,8DAA8D,yCAAyC,EAAE;AACzG,qBAAqB,qCAAmB;AACxC;AACA,sCAAsC,KAAK;AAC3C,gCAAgC,2BAAa,uCAAuC,iCAAiC,WAAK,yBAAyB,EAAE;AACrJ;AACA,KAAK;AACL;AACA,+C;;ACzByD;AACA;AACC;AACnD,SAAS,qCAAmB;AACnC,WAAW,qCAAmB;AAC9B,uCAAuC,2BAAa;AACpD,gDAAgD,2BAAa;AAC7D,yCAAyC,2BAAa;AACtD;AACO,SAAS,yCAAuB;AACvC;AACA;AACA;AACA;AACA,0BAA0B,2BAAa;AACvC;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,6C;;ACtByD;AACI;AACI;AACI;AACzB;AAC5C,IAAI,0CAAwB;AAC5B;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmC;AACpC,IAAI,mCAAiB;AACrB;AACA,iCAAiC,cAAc;AAC/C;AACA,2BAA2B,0CAAwB;AACnD;AACA;AACA,kBAAkB,uCAAmB;AACrC;AACA,uDAAuD,+BAAe;AACtE;AACA;AACA,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AACtB,SAAS,mCAAiB;AACjC;AACA;AACA,qCAAqC,2BAAa;AAClD;AACA,eAAe,qCAAmB;AAClC;AACA,sIAAsI;AACtI;AACA,YAAY,mCAAiB;AAC7B,KAAK;AACL;AACA,6C;;ACjE8B;AACG;AACK;AACZ;AACU;AACJ;AAChC,iC;;ACN+G;AAC9E;AACjC,SAAS,+BAAiB;AAC1B,4BAA4B,iDAAwB;AACpD,qCAAqC,mEAAiC;AACtE;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oCAAa;AAC7B;AACA,aAAa,qBAAqB;AAClC,aAAa,+BAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAK;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,yC;;ACtDmH;AAC3C;AACvC;AACjC,SAAS,4CAAiB;AAC1B,6BAA6B,mDAAyB;AACtD,4BAA4B,qBAAqB;AACjD,qCAAqC,gEAA8B;AACnE;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,8DAA0B;AAC1C;AACA,aAAa,4CAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAK;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0BAA0B;AAC9B,YAAY,UAAU,yEAAyE;AAC/F;AACA,sD;;AClD0D;AACd;AACO;AACf;AACa;AACd;AACF;AACe;AAC0B;AAC1E,SAAS,iBAAI;AACb,WAAW,uBAAM,CAAC,0BAAS;AAC3B;AACA,SAAS,2BAAc;AACvB,qCAAqC,wBAAwB;AAC7D,gCAAgC,wBAAO;AACvC,UAAU,6CAAsB;AAChC,UAAU,6CAAsB,CAAC,wBAAO;AACxC,UAAU,2BAAU;AACpB,UAAU,uBAAM,MAAM,iBAAI;AAC1B;AACA;AACA,SAAS,sBAAS;AAClB,cAAc,6CAAsB,CAAC,wBAAO;AAC5C,UAAU,6CAAsB,CAAC,wBAAO;AACxC,UAAU,6CAAsB,CAAC,wBAAO;AACxC,UAAU,uBAAM;AAChB;AACA;AACA,IAAI,yBAAY;AAChB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAO;AACtB;AACA;AACA,6BAA6B,mBAAS,2BAA2B,0BAAS;AAC1E,sBAAsB,wBAAO,CAAC,iBAAI;AAClC,kBAAkB,2BAAc;AAChC,kBAAkB,2BAAc;AAChC,YAAY,WAAK;AACjB,sBAAsB,sBAAS;AAC/B,aAAa;AACb,kBAAkB,2BAAc;AAChC,kBAAkB,wBAAO,CAAC,6CAAsB;AAChD;AACA,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,6CAA6C,qBAAU;AACvD;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,8DAA0B;AACzC;AACA;AACA,eAAe,oCAAa;AAC5B;AACA;AACA,CAAC,CAAC,+BAAa;AACS;AACxB,wC;;ACjF0E;AACnE,SAAS,wCAAa;AAC7B;AACA,aAAa,qBAAqB;AAClC,0BAA0B,6CAAsB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,MAAM,2BAA2B;AAClD;AACA;AACA,yC;;ACfkF;AAC3E,SAAS,kEAA0B;AAC1C;AACA,6BAA6B,mDAAyB;AACtD;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0BAA0B;AAC9B,YAAY;AACZ;AACA,sD;;AClBO;AACP;AACA;AACA;AACA,CAAC,wBAAwB;AACzB,iC;;ACL0D;AACd;AACwB;AACT;AACH;AACR;AAC0B;AACzC;AACgB;AACH;AAC9C,IAAI,yBAAY;AAChB,IAAI,sCAAS;AACb;AACA,8CAA8C,4BAA4B,yBAAY,IAAI;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAO;AACtB,sDAAsD,iBAAQ;AAC9D;AACA;AACA,yBAAyB,2BAAU;AACnC,sBAAsB,uCAAmB;AACzC,yBAAyB,uCAAmB;AAC5C,oBAAoB;AACpB,SAAS;AACT;AACA;AACA;AACA,eAAe,wBAAO;AACtB;AACA,oBAAoB,mBAAmB,2BAAU;AACjD,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,6CAA6C,qBAAU;AACvD;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA,iDAAiD,qBAAU;AAC3D;AACA;AACA;AACA;AACA;AACA,+BAA+B,2BAAU;AACzC,kCAAkC,2BAAU;AAC5C,gFAAgF;AAChF;AACA;AACA,yBAAyB,EAAE,EAAE;AAC7B;AACA;AACA,uCAAuC,sCAAS;AAChD;AACA,2CAA2C,wCAAW;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,MAAM,QAAQ,MAAM;AACtF;AACA;AACA;AACA,uEAAuE,iEAAiE;AACxI;AACA,qCAAqC;AACrC,iCAAiC;AACjC,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,0CAA0C,yBAAyB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wCAAa;AAC5B;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA,eAAe,kEAA0B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,+BAAa;AACS;AACxB,wC;;AC/I+B;AACP;AACxB,iC;;ACF0D;AACd;AACT;AAC0B;AACzB;AAC2B;AAC7B;AAClC,IAAI,2CAAqB;AACzB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,eAAe,wBAAO;AACtB;AACA,uBAAuB,yBAAQ;AAC/B,oBAAoB,wBAAO;AAC3B,oBAAoB,wBAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,8CAA8C,cAAc,EAAE,EAAE;AACnH,mDAAmD,8CAA8C,cAAc,EAAE,EAAE;AACnH;AACA,qBAAqB,wBAAO;AAC5B,qBAAqB,yBAAQ;AAC7B;AACA,aAAa;AACb,qBAAqB,yBAAQ;AAC7B;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,wBAAO;AACtB;AACA;AACA;AACA,yBAAyB,+BAA+B;AACxD,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,6CAA6C,qBAAU;AACvD;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA,iDAAiD,qBAAU;AAC3D;AACA;AACA,0CAA0C,wBAAO,cAAc,QAAQ,2BAAU,+BAA+B,EAAE;AAClH,kHAAkH,QAAQ,sCAAS;AACnI;AACA,uCAAuC,wCAAW;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,6FAA6F,QAAQ,YAAM,IAAI,EAAE;AACjH,6FAA6F,SAAS,YAAM,IAAI,EAAE;AAClH,sEAAsE,+BAAe,wCAAwC,YAAY,KAAK,yBAAyB,EAAE;AACzK;AACA;AACA,iDAAiD;AACjD;AACA,iCAAiC;AACjC,6BAA6B,EAAE,EAAE;AACjC;AACA;AACA,8DAA8D,oBAAoB,EAAE;AACpF;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2BAAa;AACkB;AACjC,iD;;ACjHkC;AACkD;AACpB;AAChE,IAAI,mCAAiB;AACrB,IAAI,sCAAS;AACb;AACA,8CAA8C,4BAA4B,yCAAoB,GAAG;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2CAAqB;AACM;AAC7B,6C;;AClBuD;AACC;AACjD,SAAS,6DAA8B;AAC9C;AACA,mCAAmC,mCAAiB;AACpD;AACA;AACA;AACA;AACA;AACA,IAAI,0BAA0B;AAC9B,YAAY;AACZ;AACA,0D;;ACbkD;AACM;AACjD,SAAS,mCAAiB;AACjC;AACA,aAAa,qBAAqB;AAClC,mCAAmC,mCAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,6C;;ACjB0D;AACd;AACR;AACa;AACd;AACQ;AACuC;AAC1B;AACxD,IAAI,iDAAwB;AAC5B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAO;AACtB;AACA;AACA,6BAA6B,mBAAS,2BAA2B,0BAAS;AAC1E,sBAAsB,sBAAW;AACjC,kBAAkB,sBAAW;AAC7B,kBAAkB,sBAAW;AAC7B,kBAAkB,2BAAU;AAC5B;AACA,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,6CAA6C,qBAAU;AACvD;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,6DAA8B;AAC7C;AACA;AACA,eAAe,mCAAiB;AAChC;AACA;AACA,CAAC,CAAC,+BAAa;AACqB;AACpC,oD;;ACtDkC;AAC0D;AAC5B;AAChE,IAAI,2CAAqB;AACzB,IAAI,sCAAS;AACb;AACA,8CAA8C,4BAA4B,iDAAwB,GAAG;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2CAAqB;AACU;AACjC,iD;;AClBkC;AACsB;AACpB;AACI;AACxC,IAAI,+BAAe;AACnB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,CAAC,CAAC,mCAAiB;AACQ;AAC3B,iC;;ACZ4C;AACrC,SAAS,gBAAK;AACrB,WAAW,uBAAM,CAAC,uBAAM;AACxB;AACA,sC;;ACJ4C;AACP;AACrC,SAAS,sCAAS;AAClB,6BAA6B,kBAAkB;AAC/C;AACA,cAAc,0BAAS;AACvB,UAAU,uBAAM;AAChB,UAAU,gBAAK;AACf,sBAAsB,wBAAO;AAC7B;AACO,SAAS,cAAI;AACpB,WAAW,sCAAS;AACpB;AACO,SAAS,oBAAU;AAC1B,WAAW,sCAAS;AACpB;AACO,SAAS,kBAAQ;AACxB,WAAW,sCAAS;AACpB;AACA,qC;;ACnB4C;AACM;AACf;AACnC,SAAS,kDAAiB;AAC1B;AACA;AACA;AACA,YAAY,aAAO;AACnB;AACA;AACA,eAAe,wBAAO,cAAc,QAAQ,6BAAY,CAAC,4BAAW,sEAAsE,EAAE;AAC5I;AACA;AACA;AACA,mBAAmB,4BAAW;AAC9B,4BAA4B,uCAAuC,GAAG,oCAAoC;AAC1G,gBAAgB;AAChB;AACA;AACA,sBAAsB,4BAAW;AACjC,qBAAqB,4BAAW;AAChC,4BAA4B,uCAAuC,GAAG,sCAAsC;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gCAAgC,gBAAgB;AAChD;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,8CAAa;AAC7B,aAAa,qBAAqB;AAClC;AACA,aAAa,kDAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAO,cAAc,QAAQ,6BAAY,CAAC,4BAAW,iDAAiD,EAAE;AACrH,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,yC;;ACvFkF;AAC5C;AACtC,SAAS,4CAAiB;AAC1B,6BAA6B,mDAAyB;AACtD;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ,+BAA+B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wEAA0B;AAC1C;AACA,aAAa,4CAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sCAAsC;AAC9D,SAAS,gBAAU;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0BAA0B;AAC9B,YAAY;AACZ;AACA,sD;;ACtEuC;AACK;AACa;AAClD,SAAS,sBAAQ;AACxB,cAAc,cAAI;AAClB,UAAU,oBAAU;AACpB,UAAU,uBAAM;AAChB,UAAU,wBAAO;AACjB;AACA;AACO,SAAS,0BAAY;AAC5B,cAAc,kBAAQ;AACtB,UAAU,oBAAU;AACpB,iBAAiB,2BAAU;AAC3B,gBAAgB,yBAAQ;AACxB;AACA;AACA;AACA,wBAAwB,2CAAc;AACtC;AACA,qBAAqB,yBAAQ;AAC7B,cAAc,0BAAS;AACvB,wBAAwB,2CAAc;AACtC;AACA,qBAAqB,yBAAQ;AAC7B,cAAc,0BAAS;AACvB;AACA,qBAAqB,0BAAS;AAC9B,UAAU,uBAAM;AAChB,UAAU,wBAAO;AACjB;AACA;AACA,yC;;AChC0D;AACd;AACR;AACa;AACd;AACI;AACS;AAC0B;AACjB;AACzD,IAAI,qCAAkB;AACtB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAO;AACtB;AACA;AACA,6BAA6B,mBAAS,2BAA2B,0BAAS;AAC1E,sBAAsB,kBAAQ;AAC9B,kBAAkB,2BAAU;AAC5B,kBAAkB,sBAAQ;AAC1B,kBAAkB,sBAAQ;AAC1B,kBAAkB,sBAAQ;AAC1B,kBAAkB,0BAAY;AAC9B,kBAAkB,sBAAQ;AAC1B,kBAAkB,sBAAQ;AAC1B,kBAAkB,sBAAQ;AAC1B,kBAAkB,0BAAY;AAC9B,kBAAkB,sBAAQ;AAC1B,kBAAkB,sBAAQ;AAC1B,kBAAkB,0BAAY;AAC9B,kBAAkB,sBAAQ;AAC1B,kBAAkB,sBAAQ;AAC1B,kBAAkB,0BAAY;AAC9B;AACA,iCAAiC,0BAAS;AAC1C;AACA,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,6CAA6C,qBAAU;AACvD;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA,iDAAiD,qBAAU;AAC3D;AACA;AACA,gDAAgD,wBAAO,cAAc,QAAQ,2BAAU,+BAA+B,EAAE;AACxH,iGAAiG,iBAAiB,EAAE;AACpH;AACA;AACA,oEAAoE,oBAAoB,EAAE;AAC1F;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,wEAA0B;AACzC;AACA;AACA,eAAe,8CAAa;AAC5B;AACA;AACA,CAAC,CAAC,+BAAa;AACe;AAC9B,8C;;AC1F0D;AACrB;AAC9B,SAAS,2CAAwB;AACxC,kBAAkB,qCAAkB;AACpC;AACA;AACA;AACA,iC;;ACPO;AACP,qBAAqB;AACrB,2BAA2B;AAC3B;AACA,8C;;ACJO;AACP;AACA;AACO;AACP,qBAAqB;AACrB,2BAA2B;AAC3B;AACA,mC;;ACP+C;AACD;AACvC,SAAS,uBAAY;AAC5B,8BAA8B,MAAM,2BAA2B,MAAM;AACrE,WAAW,wBAAkB;AAC7B;AACO,SAAS,2BAAgB;AAChC,qBAAqB;AACrB,2BAA2B;AAC3B;AACA,sC;;ACVqC;AACD;AACE;AACF;AACV;AACG;AAC7B,iC;;ACNA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,+BAA+B,EAAE;AAC1F;AACA;AACA;AACA,yFAAyF,+BAA+B,EAAE;AAC1H;AACA;AACA;AACA;AACA,0BAA0B,0BAA0B,EAAE;AACtD;AACA;AACA,KAAK;AACL;AACA,0BAA0B,0BAA0B,EAAE;AACtD;AACA;AACA,KAAK;AACL;AACA,0BAA0B,2BAA2B,EAAE;AACvD;AACA;AACA,KAAK;AACL;AACA,0BAA0B,8BAA8B,EAAE;AAC1D;AACA;AACA,KAAK;AACL;AACA,0BAA0B,yBAAyB,EAAE;AACrD;AACA;AACA,KAAK;AACL;AACA,CAAC;AACuB;AACxB,wC;;ACxD4C;AACM;AAClD,SAAS,8CAAiB;AAC1B;AACA,sBAAsB,4BAAW;AACjC,+BAA+B,4BAAW;AAC1C,gCAAgC,4BAAW;AAC3C,8BAA8B,4BAAW;AACzC,kCAAkC,4BAAW;AAC7C,4BAA4B,uCAAuC,GAAG,gDAAgD,GAAG,iDAAiD,GAAG,+CAA+C,GAAG,mDAAmD;AAClR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,4BAAW;AACjC,mBAAmB,4BAAW;AAC9B,4BAA4B,uCAAuC,GAAG,mFAAmF;AACzJ,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,0CAAa;AAC7B;AACA,aAAa,qBAAqB;AAClC,aAAa,8CAAiB;AAC9B;AACA;AACA,oBAAoB,4BAAW;AAC/B;AACA;AACA;AACA,wBAAwB,sCAAsC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yC;;AC9JkF;AAC5C;AACtC,SAAS,2DAAiB;AAC1B,6BAA6B,mDAAyB;AACtD;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oEAA0B;AAC1C;AACA,aAAa,2DAAiB;AAC9B;AACA,wBAAwB,wEAAwE;AAChG,SAAS,gBAAU;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0BAA0B;AAC9B,YAAY;AACZ;AACA,sD;;ACnG4C;AACrC,SAAS,qCAAkB;AAClC,WAAW,wBAAO;AAClB,kBAAkB,0BAAS;AAC3B,cAAc,uBAAM;AACpB,eAAe,+BAAc;AAC7B,KAAK;AACL;AACA,8C;;ACR4C;AACc;AAC1D,IAAI,mBAAO;AACX,SAAS,8BAAkB;AAC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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4BAA4B,EAAE;AACxD;AACA;AACA,KAAK;AACL;AACA,0BAA0B,yBAAyB,EAAE;AACrD;AACA;AACA,KAAK;AACL;AACA,CAAC;AACgC;AACjC,iD;;AC1B0D;AACd;AACV;AACuB;AACrB;AACa;AACD;AAC0B;AAC9B;AACY;AACZ;AACQ;AACY;AAChE,IAAI,6BAAc;AAClB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAO;AACtB;AACA,oBAAoB,uBAAM,CAAC,uBAAM,cAAc,0BAAS,yBAAyB,0BAAS;AAC1F,2BAA2B,uBAAW;AACtC,qBAAqB,+BAAe;AACpC,mBAAmB,uBAAW;AAC9B,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,6CAA6C,qBAAU;AACvD;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,iCAAiC,cAAc;AAC/C,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,iCAAiC,qBAAqB;AACtD,6CAA6C,qBAAU;AACvD;AACA;AACA;AACA;AACA;AACA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kDAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,mBAAmB,EAAE;AACvE;AACA;AACA;AACA,kDAAkD,mBAAmB,EAAE;AACvE,uCAAuC,2BAAa,sBAAsB,SAAI;AAC9E;AACA;AACA,6BAA6B;AAC7B,yBAAyB;AACzB;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,oEAA0B;AACzC;AACA;AACA,eAAe,0CAAa;AAC5B;AACA;AACA,CAAC,CAAC,+BAAa;AACW;AAC1B,0C;;AC3GkC;AACgB;AACjB;AACO;AACjC,SAAS,mCAAoB;AACpC,kBAAkB,6BAAc;AAChC;AACA;AACA;AACO,SAAS,qCAAsB;AACtC,WAAW,mCAAoB;AAC/B;AACA;AACA,IAAI,+BAAgB;AACpB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,CAAC,CAAC,6BAAc;AACY;AAC5B,iC;;ACrBmC;AAC5B,IAAI,mBAAa;AACjB,IAAI,iBAAW;AACtB,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb;AACO,IAAI,2BAAqB;AAChC,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb;AACO,IAAI,wBAAkB;AACtB,IAAI,wBAAkB;AACtB,IAAI,uCAAiC;AAC5C,iC;;ACnBA,+BAA+B,gCAAgC;AACxD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,8BAA8B,EAAE;AAC/E;AACA;AACA;AACA;AACA,6CAA6C,gBAAgB,EAAE,sBAAsB,uCAAuC,EAAE;AAC9H,+DAA+D,uBAAuB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kC;;AC3B4C;AACrC,SAAS,WAAK;AACrB,WAAW,wBAAO;AAClB,kBAAkB,uBAAM,IAAI,0BAAS;AACrC,eAAe,uBAAM,CAAC,wBAAO,CAAC,uBAAM;AACpC;AACA,KAAK;AACL;AACA,iC;;ACR4C;AACZ;AACzB,SAAS,mCAAiB;AACjC,WAAW,wBAAO;AAClB,kBAAkB,uBAAM;AACxB,cAAc,0BAAS;AACvB,cAAc,uBAAM;AACpB,cAAc,uBAAM;AACpB,cAAc,uBAAM;AACpB,eAAe,WAAK;AACpB,KAAK;AACL;AACA,6C;;ACZ4C;AACZ;AACzB,SAAS,wDAAsB;AACtC,WAAW,wBAAO;AAClB,kBAAkB,uBAAM;AACxB,cAAc,mCAAkB;AAChC,cAAc,uBAAM;AACpB,eAAe,WAAK;AACpB,KAAK;AACL;AACA,kD;;ACV4C;AACS;AAC2C;AACxB;AACxE,SAAS,0CAAiB;AAC1B,4BAA4B,iDAAwB;AACpD;AACA,kBAAkB,4BAAW;AAC7B,sBAAsB,4BAAW;AACjC,4BAA4B,mCAAmC,GAAG,uCAAuC;AACzG,gBAAgB;AAChB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA,qCAAqC,mEAAiC;AACtE;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,sCAAa;AAC7B,aAAa,qBAAqB;AAClC;AACA,aAAa,0CAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,yC;;AC9DkF;AACW;AACb;AAChF,SAAS,uDAAiB;AAC1B,6BAA6B,mDAAyB;AACtD;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA,qCAAqC,gEAA8B;AACnE;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gEAA0B;AAC1C;AACA,aAAa,uDAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0BAA0B;AAC9B,YAAY;AACZ;AACA,sD;;AC7DO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AACjD;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wBAAwB,EAAE;AACpD;AACA;AACA,KAAK;AACL;AACA,0BAA0B,6BAA6B,EAAE;AACzD;AACA;AACA,KAAK;AACL;AACA,CAAC;AAC4B;AAC7B,6C;;ACjCoE;AACxB;AACS;AACQ;AACvB;AACF;AACa;AAChB;AAC4B;AAChB;AACH;AACc;AACU;AAClB;AAC0B;AAC1C;AACwB;AACxD,IAAI,6BAAc;AAClB,IAAI,sCAAS;AACb;AACA;AACA,QAAQ,cAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,kBAAkB,mCAAiB;AACnC,cAAc,2BAAU;AACxB,cAAc,mCAAiB;AAC/B,cAAc,2BAAU;AACxB,cAAc,mCAAiB;AAC/B,cAAc,2BAAU;AACxB,cAAc,mCAAiB;AAC/B,cAAc,2BAAU;AACxB,cAAc,mCAAiB;AAC/B,cAAc,2BAAU;AACxB,cAAc,mCAAiB;AAC/B,cAAc,2BAAU;AACxB,cAAc,mCAAiB;AAC/B,cAAc,mCAAiB;AAC/B,eAAe,mBAAS;AACxB;AACA;AACA;AACA,cAAc,WAAK,CAAC,mBAAS;AAC7B,cAAc,wDAAsB;AACpC,cAAc,2BAAU;AACxB,cAAc,wDAAsB;AACpC,cAAc,2BAAU;AACxB,cAAc,wDAAsB;AACpC,cAAc,2BAAU;AACxB,cAAc,wDAAsB;AACpC,cAAc,2BAAU;AACxB,cAAc,wDAAsB;AACpC,cAAc,2BAAU;AACxB,cAAc,wDAAsB;AACpC,cAAc,2BAAU;AACxB,6BAA6B,wDAAsB;AACnD,6BAA6B,wDAAsB;AACnD,eAAe,mBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAO;AACtB;AACA;AACA,kBAAkB,mBAAS;AAC3B;AACA,0CAA0C,0BAAS;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,6CAA6C,qBAAU;AACvD;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,uCAAuC,oBAAoB;AAC3D,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,iCAAiC,iBAAiB;AAClD,6CAA6C,qBAAU;AACvD;AACA;AACA;AACA;AACA;AACA,+BAA+B,wBAAO,cAAc,QAAQ,2BAAU,sBAAsB,EAAE;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB,EAAE;AAC9E,6DAA6D,kBAAkB,EAAE;AACjF,kEAAkE,uBAAuB,EAAE;AAC3F,iEAAiE,wCAAwC,EAAE;AAC3G,kCAAkC,mCAAiB,2BAA2B,+BAA+B,EAAE;AAC/G;AACA,uCAAuC,+BAAe;AACtD,yBAAyB;AACzB;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,gEAA0B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAa;AAC5B;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wBAAO;AACpC;AACA;AACA;AACA;AACA,kCAAkC,2BAAU;AAC5C,kCAAkC,0BAAS;AAC3C;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA,sCAAsC,OAAO;AAC7C,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,qCAAqC,qCAAQ,EAAE,UAAU,uBAAW,+FAA+F;AACnK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,yCAAyC,EAAE;AACjG,mEAAmE;AACnE;AACA;AACA,6BAA6B,EAAE,EAAE;AACjC,8DAA8D,sDAAsD,EAAE;AACtH;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,+BAAa;AACW;AAC1B,0C;;AChR0D;AACf;AAC6G;AACtG;AAClD,IAAI,qBAAU;AACd,IAAI,sCAAS;AACb;AACA,4CAA4C,2BAA2B;AACvE;AACA,qCAAqC;AACrC;AACA,0BAA0B,mBAAa;AACvC;AACA,SAAS;AACT;AACA,yBAAyB,2BAAqB;AAC9C,yBAAyB,wBAAkB;AAC3C;AACA;AACA,yBAAyB,iBAAW;AACpC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mFAAmF,YAAY,2BAAa,8BAA8B,iDAAiD,EAAE,EAAE;AAC/L;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,yCAAyC,uCAAiC,GAAG,wBAAkB;AAC/F;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6BAAc;AACM;AACtB,sC;;AC7D0C;AACN;AACX;AACH;AACf,SAAS,2BAAgB;AAChC,wCAAwC,2BAA2B;AACnE,kBAAkB,qBAAU;AAC5B;AACA;AACA;AACA,iC;;ACVkC;AACgB;AAClD,IAAI,+CAAuB;AAC3B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,iBAAiB;AACgB;AACnC,mD;;ACZ+C;AAC/C,IAAI,6BAAc;AAClB;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AACyB;AAC1B,0C;;AC3B+C;AACH;AACc;AACW;AAC9D,SAAS,8DAAgC;AAChD,yCAAyC;AACzC;AACA;AACA,MAAM;AACN,WAAW,sCAAS;AACpB;AACA,eAAe,wCAAW;AAC1B;AACA;AACA;AACA,+BAA+B,qCAAmB;AAClD;AACA;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mC,iBAAQ;AAC3C,qBAAqB;AACrB;AACA,gDAAgD,sDAAsD,EAAE;AACxG,iEAAiE,oBAAoB,EAAE;AACvF;AACA;AACA;AACA;AACA;AACA,qCAAqC,mCAAiB;AACtD;AACA,oEAAoE,2BAA2B,EAAE;AACjG,qEAAqE,4BAA4B,EAAE;AACnG;AACA;AACA;AACA,2CAA2C,KAAK;AAChD,6BAA6B;AAC7B,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,SAAS;AACT,KAAK;AACL;AACA,kC;;AC7E0D;AACd;AACH;AACgB;AACE;AACvB;AAC4C;AAC/B;AACC;AACb;AACW;AAC0B;AACpB;AACR;AACF;AACV;AACA;AACA;AAClC,IAAI,WAAK;AACT,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,uCAAuC,oBAAoB;AAC3D,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,wBAAO;AAC3C,mCAAmC,6BAAc,CAAC,8BAAa,CAAC,2BAAU;AAC1E,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY;AAC7C,gDAAgD,uBAAW;AAC3D;AACA,wCAAwC,gBAAgB;AACxD,yEAAyE,SAAS;AAClF,yBAAyB;AACzB;AACA;AACA,qEAAqE,QAAQ,gBAAgB,yBAAyB,EAAE;AACxH;AACA,6CAA6C,aAAM;AACnD;AACA;AACA;AACA;AACA,4DAA4D,4BAA4B;AACxF;AACA;AACA;AACA;AACA;AACA,6CAA6C,aAAM;AACnD;AACA;AACA;AACA;AACA,4DAA4D,4BAA4B;AACxF;AACA;AACA;AACA,6CAA6C,aAAM;AACnD;AACA;AACA;AACA,sEAAsE,QAAQ,yCAAuB,CAAC,yCAAuB,GAAG,MAAM,2BAAa,uBAAuB,SAAI;AAC9K;AACA;AACA,yBAAyB,QAAQ,6BAAc,qCAAqC,mBAAmB,KAAK,6BAA6B,KAAK,yBAAyB,EAAE,IAAI,uCAAuC,GAAG,EAAE;AACzN,wDAAwD,iCAAiC;AACzF;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,uCAAuC,oBAAoB;AAC3D,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,6CAA6C,qBAAU;AACvD;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,uCAAuC,oBAAoB;AAC3D,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,6CAA6C,qBAAU;AACvD;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,2DAA0B;AACzC;AACA;AACA,eAAe,iCAAa;AAC5B;AACA;AACA,CAAC,CAAC,+BAAa;AACE;AACjB,iC;;ACxJmC;AAC5B,IAAI,oCAAa;AACjB,IAAI,kCAAW;AACtB,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb;AACO,IAAI,cAAQ;AACnB,iC;;ACV0D;AACf;AACmB;AACC;AAC/D,IAAI,iCAAgB;AACpB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,0BAA0B,oCAAa;AACvC;AACA,qBAAqB,kCAAW;AAChC,qBAAqB,cAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mFAAmF,YAAY,2BAAa,8BAA8B,iDAAiD,EAAE,EAAE;AAC/L;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6BAAc;AACY;AAC5B,4C;;ACjD4D;AACe;AACF;AACQ;AACH;AACvC;AAC2B;AACM;AAC7B;AACpC,IAAI,SAAI;AACf,wBAAwB,6BAAc;AACtC,0BAA0B,iCAAgB;AAC1C,oBAAoB,qBAAU;AAC9B,eAAe,WAAK;AACpB,2BAA2B,mCAAiB;AAC5C,+BAA+B,2CAAqB;AACpD,4BAA4B,qCAAkB;AAC9C,2BAA2B,mCAAiB;AAC5C,sBAAsB,yBAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAI,mBAAc;AACzB,WAAW,SAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAI,qBAAgB;AAC3B,WAAW,SAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAI,eAAU;AACrB,WAAW,SAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAI,UAAK;AAChB,WAAW,SAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAI,wBAAmB;AAC9B,WAAW,SAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAI,4BAAuB;AAClC,WAAW,SAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAI,0BAAqB;AAChC,WAAW,SAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAI,6BAAwB;AACnC,WAAW,SAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAI,wBAAmB;AAC9B,WAAW,SAAI;AACf;AACO,IAAI,4BAAuB,mBAAmB,QAAQ,SAAI,0BAA0B;AACpF,IAAI,8BAAyB,mBAAmB,QAAQ,SAAI,4BAA4B;AACxF,IAAI,mBAAc,mBAAmB,QAAQ,SAAI,iBAAiB;AAClE,IAAI,wBAAmB,mBAAmB,QAAQ,SAAI,sBAAsB;AAC5E,IAAI,0BAAqB,mBAAmB,QAAQ,SAAI,6BAA6B;AACrF,IAAI,8BAAyB,mBAAmB,QAAQ,SAAI,iCAAiC;AAC7F,IAAI,6BAAwB,mBAAmB,QAAQ,SAAI,8BAA8B;AACzF,IAAI,4BAAuB,mBAAmB,QAAQ,SAAI,6BAA6B;AACvF,IAAI,uBAAkB,mBAAmB,QAAQ,SAAI,wBAAwB;AACpF;AACO,IAAI,2BAAsB,GAAG,4BAAuB;AACpD,IAAI,gBAAW,GAAG,mBAAc;AAChC,IAAI,oBAAe,GAAG,wBAAmB;AAChD,gC;;ACjI0D;AACmB;AAC3B;AAC6D;AACO;AACxF;AACsK;AACpM,IAAI,yDAA8B;AAClC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6BAAc;AAC0B;AAC1C,IAAI,wDAA6B;AACjC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,6CAA6C,8DAAgC,8CAA8C,QAAQ,sCAAS;AAC5I,uCAAuC,wCAAW;AAClD;AACA,4GAA4G,QAAQ,SAAI,4CAA4C,EAAE;AACtK;AACA;AACA,iCAAiC;AACjC,6BAA6B,EAAE,EAAE;AACjC;AACA;AACA,4FAA4F,QAAQ,6CAAyB,yCAAyC,EAAE;AACxK;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,kDAA0B;AAC7C;AACA;AACA,CAAC,CAAC,yDAA8B;AACS;AACzC,IAAI,2DAAgC;AACpC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,+DAAiC,4CAA4C,QAAQ,SAAI,4CAA4C,EAAE;AACpL;AACA;AACA,8CAA8C,6CAAyB;AACvE;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,qDAA6B;AAChD;AACA;AACA,CAAC,CAAC,yDAA8B;AACY;AAC5C,IAAI,yEAA8C;AAClD,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,mBAAmB,mEAA2C;AAC9D;AACA;AACA,mBAAmB,yDAA6B;AAChD;AACA;AACA,CAAC,CAAC,wDAA6B;AAC2B;AAC1D,IAAI,4EAAiD;AACrD,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,mBAAmB,sEAA8C;AACjE;AACA;AACA,mBAAmB,2DAA+B;AAClD;AACA;AACA,CAAC,CAAC,2DAAgC;AAC2B;AAC7D,sD;;AChH0D;AACL;AACM;AACT;AAC6D;AACO;AACxF;AACqL;AACnN,IAAI,mDAA2B;AAC/B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6BAAc;AACuB;AACvC,IAAI,kDAA0B;AAC9B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,6CAA6C,8DAAgC,8CAA8C,QAAQ,sCAAS;AAC5I,uCAAuC,wCAAW;AAClD;AACA,4GAA4G,QAAQ,SAAI,wCAAwC,EAAE;AAClK;AACA;AACA,iCAAiC;AACjC,6BAA6B,EAAE,EAAE;AACjC;AACA;AACA;AACA;AACA,uCAAuC,aAAa,CAAC,2BAAgB;AACrE,6BAA6B;AAC7B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,wDAA6B;AAChD;AACA;AACA,CAAC,CAAC,mDAA2B;AACS;AACtC,IAAI,qDAA6B;AACjC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,+DAAiC,4CAA4C,QAAQ,SAAI,wCAAwC,EAAE;AAChL;AACA;AACA,8CAA8C,aAAa,CAAC,2BAAgB;AAC5E;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,2DAAgC;AACnD;AACA;AACA,CAAC,CAAC,mDAA2B;AACY;AACzC,IAAI,mEAA2C;AAC/C,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,mBAAmB,yEAA8C;AACjE;AACA;AACA,mBAAmB,yDAA6B;AAChD;AACA;AACA,CAAC,CAAC,kDAA0B;AAC2B;AACvD,IAAI,sEAA8C;AAClD,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,mBAAmB,4EAAiD;AACpE;AACA;AACA,mBAAmB,2DAA+B;AAClD;AACA;AACA,CAAC,CAAC,qDAA6B;AAC2B;AAC1D,mD;;ACpH0D;AACiB;AACzB;AACoE;AACxF;AAC2G;AACS;AAClJ,IAAI,0DAA8B;AAClC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6BAAc;AAC0B;AAC1C,IAAI,yDAA6B;AACjC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,6CAA6C,8DAAgC,8CAA8C;AAC3H,uCAAuC,SAAI;AAC3C,6BAA6B,GAAG,EAAE,iCAAiC,4CAA4C,yBAAyB,EAAE,EAAE;AAC5I;AACA;AACA,wFAAwF,QAAQ,wBAAwB,+BAA+B,EAAE;AACzJ;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,yEAA8C;AACjE;AACA;AACA,mBAAmB,mEAA2C;AAC9D;AACA;AACA,CAAC,CAAC,0DAA8B;AACS;AACzC,IAAI,2DAA+B;AACnC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,+DAAiC,4CAA4C,QAAQ,SAAI,gDAAgD,EAAE,iCAAiC,4CAA4C,yBAAyB,EAAE,EAAE;AAClS;AACA;AACA,8CAA8C,wBAAwB;AACtE;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,4EAAiD;AACpE;AACA;AACA,mBAAmB,sEAA8C;AACjE;AACA;AACA,CAAC,CAAC,0DAA8B;AACW;AAC3C,uD;;ACnF0D;AACd;AACc;AACe;AACvB;AAC6D;AACjF;AAC2G;AACS;AAClJ,IAAI,oDAA2B;AAC/B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAI;AACtB,kBAAkB,SAAI;AACtB,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC,CAAC,6BAAc;AACuB;AACvC,IAAI,mDAA0B;AAC9B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,uEAAuE,sBAAsB,EAAE;AAC/F,oDAAoD,0BAAS;AAC7D,6CAA6C,qCAAkB;AAC/D;AACA;AACA;AACA,iDAAiD,yBAAY;AAC7D;AACA;AACA;AACA;AACA;AACA,oFAAoF,gDAAgD,EAAE;AACtI;AACA;AACA,oDAAoD,qBAAqB,0BAAS,gBAAgB,EAAE;AACpG;AACA,uCAAuC,yCAAuB;AAC9D,6BAA6B;AAC7B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,yEAA8C;AACjE;AACA;AACA,mBAAmB,mEAA2C;AAC9D;AACA;AACA,mBAAmB,yDAA6B;AAChD;AACA;AACA,CAAC,CAAC,oDAA2B;AACS;AACtC,IAAI,sDAA6B;AACjC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,0BAAS;AAC7D,6CAA6C,qCAAkB;AAC/D;AACA;AACA;AACA,iDAAiD,yBAAY;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB,0BAAS,gBAAgB,EAAE;AACpG,8CAA8C,yCAAuB;AACrE;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,4EAAiD;AACpE;AACA;AACA,mBAAmB,sEAA8C;AACjE;AACA;AACA,mBAAmB,2DAA+B;AAClD;AACA;AACA,CAAC,CAAC,oDAA2B;AACY;AACzC,oD;;AChI0D;AACe;AACpB;AAC2B;AACM;AACpC;AACA;AACqD;AACzE;AACwE;AACS;AAC/G,IAAI,oCAAmB;AACvB,IAAI,sCAAS;AACb;AACA,iCAAiC,eAAe,qBAAqB,GAAG;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,C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8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0C;;;;;;;AC1Oa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA,8CAA8C,cAAc;AAC5D,SAAS,mBAAO,CAAC,CAAuB;AACxC,cAAc,mBAAO,CAAC,GAAwB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,wBAAwB,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,cAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,iC;;;;;;;AC3Qa;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,GAAS;AAC/B;AACA,iC;;;;;;ACJA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sH;;;;;;ACRA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,+G;;;;;;ACRA;AACA;AACA;;AAEA,gH;;;;;;ACJA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B,+BAA+B;AAC1D;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA,qH;;;;;;AC9BA;AACA;AACA;;AAEA,+G;;;;;;;ACJa;;AAEb;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;;;;;;;ACVa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1Ba;;AAEb,aAAa,mBAAO,CAAC,GAAU;;AAE/B;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;ACxDa;;AAEb,UAAU,mBAAO,CAAC,GAAsB;;AAExC;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACxGa;;AAEb,YAAY,mBAAO,CAAC,EAAY;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;;;;;;ACnEa;;AAEb,YAAY,mBAAO,CAAC,EAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,eAAe;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;ACpDa;;AAEb;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACba;;AAEb;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACba;;AAEb,oBAAoB,mBAAO,CAAC,GAA0B;AACtD,kBAAkB,mBAAO,CAAC,GAAwB;;AAElD;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBa;;AAEb,YAAY,mBAAO,CAAC,EAAY;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0CAA0C;AAC1C,SAAS;;AAET;AACA,4DAA4D,wBAAwB;AACpF;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,kCAAkC;AAClC,+BAA+B,aAAa,EAAE;AAC9C;AACA;AACA,KAAK;AACL;;;;;;;;ACpDa;;AAEb,kBAAkB,mBAAO,CAAC,GAAe;;AAEzC;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBa;;AAEb,YAAY,mBAAO,CAAC,EAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;ACXa;;AAEb,YAAY,mBAAO,CAAC,EAAY;AAChC,eAAe,mBAAO,CAAC,GAAe;;AAEtC;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;ACrBa;;AAEb,YAAY,mBAAO,CAAC,EAAY;AAChC,oBAAoB,mBAAO,CAAC,GAAiB;AAC7C,eAAe,mBAAO,CAAC,GAAoB;AAC3C,eAAe,mBAAO,CAAC,GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;;;;;;;ACjFa;;AAEb,YAAY,mBAAO,CAAC,EAAY;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;ACrDa;;AAEb,YAAY,mBAAO,CAAC,EAAY;AAChC,eAAe,mBAAO,CAAC,GAAqB;AAC5C,yBAAyB,mBAAO,CAAC,GAAsB;AACvD,sBAAsB,mBAAO,CAAC,GAAmB;AACjD,kBAAkB,mBAAO,CAAC,GAAe;AACzC,gBAAgB,mBAAO,CAAC,GAAsB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA,yBAAyB;AACzB,KAAK;AACL;AACA,CAAC;;AAED;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED;;;;;;;;ACnJa;;AAEb,YAAY,mBAAO,CAAC,EAAS;AAC7B,WAAW,mBAAO,CAAC,GAAgB;AACnC,YAAY,mBAAO,CAAC,GAAc;AAClC,kBAAkB,mBAAO,CAAC,GAAoB;AAC9C,eAAe,mBAAO,CAAC,GAAY;;AAEnC;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,eAAe,mBAAO,CAAC,GAAiB;AACxC,oBAAoB,mBAAO,CAAC,GAAsB;AAClD,iBAAiB,mBAAO,CAAC,GAAmB;;AAE5C;AACA;AACA;AACA;AACA,eAAe,mBAAO,CAAC,GAAkB;;AAEzC;AACA,qBAAqB,mBAAO,CAAC,GAAwB;;AAErD;;AAEA;AACA;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa;AACb,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,kBAAkB;AACnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE,KAA0B,oBAAoB,SAAE;AAClD;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;ACjvBa;AACb;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA,mC;;;;;;;ACNa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,oBAAoB,mBAAO,CAAC,GAAqB;AACjD,uBAAuB,mBAAO,CAAC,EAAwB;AACvD,eAAe,mBAAO,CAAC,GAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,qBAAqB;AACtE,KAAK;AACL;AACA;AACA,kC;;;;;;;ACnDa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,uBAAuB,mBAAO,CAAC,EAAwB;AACvD,gBAAgB,mBAAO,CAAC,GAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA,mCAAmC,gCAAgC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA;AACA;AACA,wCAAwC,kBAAkB;AAC1D,KAAK;AACL;AACA;AACA,mC;;;;;;;AC3Ea;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,oBAAoB,mBAAO,CAAC,GAAqB;AACjD,uBAAuB,mBAAO,CAAC,EAAwB;AACvD,gBAAgB,mBAAO,CAAC,GAAiB;AACzC,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,GAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iDAAiD;AACxE,uBAAuB,iCAAiC;AACxD;AACA,IAAI;AACJ;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,kBAAkB;AACnD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iDAAiD;AACxE,uBAAuB,iCAAiC;AACxD;AACA,IAAI;AACJ;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gCAAgC;AAC3E;AACA;AACA;AACA;AACA;AACA,kEAAkE,wCAAwC;AAC1G,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,kBAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kCAAkC,EAAE,GAAG,EAAE;AACjD;AACA;AACA;AACA,4BAA4B,OAAO,EAAE,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,iC;;;;;;;ACpMa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,oBAAoB,mBAAO,CAAC,GAAqB;AACjD,uBAAuB,mBAAO,CAAC,EAAwB;AACvD,cAAc,mBAAO,CAAC,EAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iDAAiD;AACxE,uBAAuB,iCAAiC;AACxD;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iDAAiD;AACxE,uBAAuB,iCAAiC;AACxD;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,GAAG,uCAAuC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,iBAAiB;AAC/E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iDAAiD;AACxE,uBAAuB,iCAAiC;AACxD;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,wBAAwB;AAC9D;AACA;AACA;AACA,2EAA2E,sBAAsB;AACjG;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mC;;;;;;;AC/Ra;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA8C,cAAc;AAC5D,qCAAqC,mBAAO,CAAC,EAAY;AACzD,cAAc,mBAAO,CAAC,EAAa;AACnC,gBAAgB,mBAAO,CAAC,GAAe;AACvC,uBAAuB,mBAAO,CAAC,EAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA,iBAAiB;AACjB;AACA,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,MAAM;AACjF,mEAAmE,MAAM,qBAAqB;AAC9F;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB,yBAAyB,+BAA+B;AACxD;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uC;;;;;;;ACnKa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA8C,cAAc;AAC5D,wBAAwB,mBAAO,CAAC,CAAuB;AACvD,qCAAqC,mBAAO,CAAC,EAAY;AACzD,cAAc,mBAAO,CAAC,EAAa;AACnC,gBAAgB,mBAAO,CAAC,GAAe;AACvC,uBAAuB,mBAAO,CAAC,EAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAU;AAC5B;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,2CAA2C;AAC3C;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,eAAe;AAC5C,2CAA2C,iBAAiB,EAAE,cAAc,EAAE,IAAI;AAClF,iCAAiC,eAAe;AAChD,+CAA+C,iBAAiB,EAAE,cAAc,EAAE,IAAI;AACtF;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA,6BAA6B,yBAAyB;AACtD,2CAA2C,iBAAiB,EAAE,cAAc,EAAE,IAAI;AAClF,iCAAiC,8BAA8B;AAC/D,+CAA+C,iBAAiB,EAAE,cAAc,EAAE,IAAI;AACtF;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB,yBAAyB,+BAA+B;AACxD;AACA;AACA;AACA,iBAAiB;AACjB,0BAA0B,+CAA+C;AACzE,aAAa;AACb;AACA,qBAAqB,mBAAmB;AACxC,qBAAqB,kCAAkC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA,6DAA6D,cAAc;AAC3E;AACA;AACA;AACA;AACA;AACA,6DAA6D,cAAc;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,eAAe,2BAA2B;AACvF;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8FAA8F,cAAc,gBAAgB,gBAAgB;AAC5I;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,cAAc;AAC3F,iBAAiB,SAAS;AAC1B;AACA;AACA,6EAA6E,cAAc,kCAAkC,SAAS;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mC;;;;;;;ACtSa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA8C,cAAc;AAC5D,qCAAqC,mBAAO,CAAC,EAAY;AACzD,cAAc,mBAAO,CAAC,EAAa;AACnC,uBAAuB,mBAAO,CAAC,EAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAU;AAC5B;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,SAAS;AACT;AACA,mDAAmD;AACnD;AACA,wCAAwC;AACxC;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C,oDAAoD,EAAE;AACtD;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD,6DAA6D,EAAE;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB,yBAAyB,+BAA+B;AACxD;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uBAAuB;AACrD,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,8BAA8B,uBAAuB;AACrD,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA,yBAAyB,mCAAmC;AAC5D;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,sCAAsC,4BAA4B;AAClE,yBAAyB;AACzB;AACA,6BAA6B,sCAAsC;AACnE,6BAA6B,2CAA2C;AACxE,6BAA6B,2CAA2C;AACxE;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mCAAmC;AACxD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,yBAAyB,sCAAsC;AAC/D,yBAAyB,2CAA2C;AACpE,yBAAyB,2CAA2C;AACpE;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,yBAAyB,uCAAuC;AAChE;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4C;;;;;;;AC9Pa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,iBAAiB,mBAAO,CAAC,GAAQ;AACjC,iBAAiB,mBAAO,CAAC,GAAQ;AACjC;AACA;AACA;AACA;AACA;AACA,eAAe,mCAAmC;AAClD;AACA,qDAAqD,8EAA8E;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,mCAAmC,eAAe,SAAS,cAAc;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAsC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,iCAAiC,eAAe,SAAS,qEAAqE;AAC9H;AACA;AACA,gC;;;;;;;ACnEa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,iBAAiB,mBAAO,CAAC,GAAQ;AACjC,iBAAiB,mBAAO,CAAC,GAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAwB;AACvC,4CAA4C;AAC5C,eAAe,iBAAiB;AAChC,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,mCAAmC,eAAe,aAAa,uEAAuE;AACtI,+BAA+B,eAAe,WAAW,wCAAwC;AACjG,+BAA+B,eAAe,cAAc,+CAA+C;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mC;;;;;;;AChFa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,iBAAiB,mBAAO,CAAC,GAAQ;AACjC,iBAAiB,mBAAO,CAAC,GAAQ;AACjC,kBAAkB,mBAAO,CAAC,GAAW;AACrC,eAAe,mBAAO,CAAC,GAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA,uBAAuB,eAAe;AACtC;AACA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA,uBAAuB,yCAAyC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,UAAU;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kCAAkC;AACjD,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,wCAAwC,aAAa;AACrD,0CAA0C,iBAAiB,MAAM,WAAW;AAC5E;AACA;AACA,sDAAsD;AACtD,mCAAmC,eAAe,cAAc,GAAG,SAAS,mEAAmE;AAC/I,uCAAuC,uHAAuH;AAC9J,qCAAqC,sFAAsF;AAC3H,+BAA+B,eAAe,uBAAuB,kBAAkB,4EAA4E,8MAA8M;AACjX;AACA;AACA;AACA;AACA,WAAW,gDAAgD;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,+BAA+B,eAAe,aAAa,kBAAkB;AAC7E,8BAA8B,eAAe,oBAAoB,+BAA+B;AAChG,8BAA8B,eAAe,oBAAoB,GAAG,WAAW,0BAA0B;AACzG;AACA,iC;;;;;;;AC5Na;;AAEb;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;ACrEA;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe,iFAAkB;;;;;;;;AClBpB;;AAEb;AACA;AACA,CAAC;AACD;;AAEA,0BAA0B,mBAAO,CAAC,GAAsB;;AAExD;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA,oC;;;;;;;AChBa;;AAEb;AACA;AACA,CAAC;AACD;;AAEA,yBAAyB,mBAAO,CAAC,GAAuC;;AAExE;;AAEA,uBAAuB,mBAAO,CAAC,GAAqC;;AAEpE;;AAEA,wBAAwB,mBAAO,CAAC,GAA8B;;AAE9D;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,UAAU;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oC;;;;;;;AC5Fa;;AAEb;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,oC;;;;;;;AChCa;;AAEb;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,oC;;;;;;;ACXa;;AAEb;AACA;AACA,CAAC;AACD;;AAEA,uBAAuB,mBAAO,CAAC,GAAqC;;AAEpE;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,oC;;;;;;;ACtBa;;AAEb;AACA;AACA,CAAC;AACD;;AAEA,uBAAuB,mBAAO,CAAC,GAAqC;;AAEpE;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,oC;;;;;;;ACxBa;;AAEb;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;;;;;;ACtCa;;AAEb;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;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A,cAAc;AACd;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,C;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mC;;;;;;;AC1Ba;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;;AAEA,2B;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb,gBAAgB,mBAAO,CAAC,GAAa;;AAErC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;;AAEA,oC;;;;;;;ACnCa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+B;;;;;;;ACnCa;;AAEb;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8B;;;;;;;ACzJa;;AAEb;AACA;AACA,CAAC;;AAED,mBAAmB,mBAAO,CAAC,GAAe;;AAE1C;;AAEA,eAAe,mBAAO,CAAC,GAAkB;;AAEzC;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,WAAW,kBAAkB;AAC7B,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA,QAAQ,KAAqC,EAAE,2CAqB1C;AACL;AACA;AACA;AACA;;AAEA,sC;;;;;;;ACzFa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,0B;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb,eAAe,mBAAO,CAAC,GAAY;;AAEnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;;AAEA,mC;;;;;;;ACpCa;;AAEb;AACA;AACA,CAAC;AACD;;AAEA,oBAAoB,mBAAO,CAAC,GAAe;;AAE3C;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,kCAAkC,0BAA0B,0CAA0C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE,OAAO,wBAAwB,EAAE;;AAEjM;;AAEA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;;AAEA;AACA;;AAEA,yBAAyB,uBAAuB,EAAE;AAClD;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,iCAAiC;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,YAAoB,uBAAuB,YAAoB,CAAC;AAC5E,aAAa,YAAoB;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mFAAmF;AACnF;AACA;AACA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gBAAgB;AACrD;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,4DAA4D;AAC5D;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,Y;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,U;AACA,Q;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB;AAC5E;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC,E;;;;;;;ACvOD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqD;AACZ;AACE;;AAE5B;AACf;AACA,qBAAqB,+DAAQ;;AAE7B;AACA,0DAA0D,gEAAM;AAChE;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,wDAAS;AACzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB,cAAc,YAAY,gEAAQ;AACzD;;AAEA;AACA;AACA;;AAEA,SAAS,iEAAgB;AACzB;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAyC;AACL;AACE;AACL;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf,gBAAgB,sEAAU;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oEAAoE,0DAAM;AAC1E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE,0DAAS;;AAEX,SAAS,oEAAS;AAClB;;;;;;;AC9DA,cAAc,mBAAO,CAAC,EAAqB;AAC3C,mBAAmB,mBAAO,CAAC,GAA0B;AACrD,OAAO,MAAM;AACb,kBAAkB,mBAAO,CAAC,GAA2B;AACrD,gBAAgB,mBAAO,CAAC,EAAyB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC;AACtC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7NA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,GAA2B;AACrD,gBAAgB,mBAAO,CAAC,EAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI;AAC3B;AACA,uBAAuB,IAAI;AAC3B;AACA,qBAAqB,IAAI,KAAK,IAAI;AAClC;AACA;AACA;AACA;AACA;;;;;;;AC3CA,cAAc,mBAAO,CAAC,EAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,GAAW;AACnC;AACA;AACA;;;;;;;ACHA;AACA,gBAAgB,mBAAO,CAAC,GAAW;AACnC;AACA;;;;;;;ACHA,cAAc,mBAAO,CAAC,EAAkB;AACxC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;ACVA,eAAe,mBAAO,CAAC,EAAmB;AAC1C,cAAc,mBAAO,CAAC,EAAkB;AACxC,WAAW,mBAAO,CAAC,GAAiB;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,oBAAoB;AACvE;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;AC3DA,eAAe,mBAAO,CAAC,EAAmB;AAC1C,cAAc,mBAAO,CAAC,EAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;ACvBA,eAAe,mBAAO,CAAC,EAAmB;AAC1C,cAAc,mBAAO,CAAC,EAAkB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;ACxBA,cAAc,mBAAO,CAAC,EAAkB;;AAExC;AACA;AACA;AACA;;AAEA;;;;;;;;ACPY;AACZ;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;;;;;;;;ACPY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,yCAAyC,OAAO;AAChD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qCAAqC,iBAAiB;AACtD;AACA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD,iBAAiB;AACpE;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,0BAA0B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,0BAA0B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,iBAAiB;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,iBAAiB;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA,+BAA+B,iBAAiB;AAChD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qCAAqC,iBAAiB;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qCAAqC,iBAAiB;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,6BAA6B;AAClE;AACA;AACA,QAAQ,2BAA2B;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,2BAA2B;AAC1E;AACA;AACA,QAAQ,6BAA6B;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC,8BAA8B;AACnE;AACA;;AAEA;AACA,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,EAAE,mBAAO,CAAC,GAAe;AACzB,CAAC;;;;;;;;ACzaW;;AAEZ;AACA,gBAAgB,mBAAO,CAAC,GAAS;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,2BAA2B;;AAE3B,iBAAiB;AACjB,oBAAoB;;AAEpB;AACA;AACA,0CAA0C,iBAAiB;AAC3D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,iBAAiB;AAC3D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7UA,eAAe,mBAAO,CAAC,EAAmB;AAC1C,cAAc,mBAAO,CAAC,EAAS;AAC/B,OAAO,MAAM,GAAG,mBAAO,CAAC,EAAgB;;AAExC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS,GAAG,gBAAgB,GAAG,gBAAgB;AACjE;AACA;;;;;;;AClDA,qBAAqB,mBAAO,CAAC,GAAiB;AAC9C;AACA;;;;;;;ACFA,qBAAqB,mBAAO,CAAC,GAAiB;AAC9C;AACA;;;;;;;ACFA,gBAAgB,mBAAO,CAAC,EAAW;AACnC;AACA;;;;;;;ACFA,gBAAgB,mBAAO,CAAC,EAAW;AACnC;AACA;;;;;;;ACFA,cAAc,mBAAO,CAAC,EAAS;AAC/B;AACA;AACA;AACA;AACA;;;;;;;ACLA,eAAe,mBAAO,CAAC,EAAmB;AAC1C;AACA;;;;;;;ACFA,eAAe,mBAAO,CAAC,EAAmB;AAC1C;AACA;;;;;;;ACFA,eAAe,mBAAO,CAAC,EAAmB;AAC1C;AACA;;;;;;;ACFA,cAAc,mBAAO,CAAC,EAAS;AAC/B,WAAW,mBAAO,CAAC,GAAM;;AAEzB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA,eAAe,mBAAO,CAAC,EAAmB;;AAE1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;ACdA,cAAc,mBAAO,CAAC,EAAS;AAC/B;AACA;AACA;AACA;AACA;;;;;;;ACLA,cAAc,mBAAO,CAAC,EAAS;AAC/B;AACA;AACA;AACA;AACA;;;;;;;;ACLa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA8C,cAAc;AAC5D,qCAAqC,mBAAO,CAAC,EAAY;AACzD,cAAc,mBAAO,CAAC,EAAa;AACnC,uBAAuB,mBAAO,CAAC,EAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA,MAAM,sBAAsB;AAC5B,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAC7B;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,UAAU,6BAA6B;AACvC;AACA;AACA;AACA,SAAS;AACT;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+BAA+B;AAC9C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB,yBAAyB,+BAA+B;AACxD;AACA;AACA;AACA;AACA,aAAa;AACb,qBAAqB,qCAAqC;AAC1D;AACA;AACA;AACA,aAAa;AACb;AACA,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;;;;;;ACzJa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAU;AACjC,oBAAoB,mBAAO,CAAC,GAAe;AAC3C,eAAe,mBAAO,CAAC,EAAU;AACjC,oBAAoB,mBAAO,CAAC,EAAe;AAC3C;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,4BAA4B,iBAAiB;AAC7C,8BAA8B,mBAAmB;AACjD,+CAA+C;AAC/C,yBAAyB;AACzB;AACA;AACA;AACA,UAAU,8CAA8C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA;AACA;AACA;AACA,UAAU,6CAA6C;AACvD;AACA;AACA,uCAAuC,yBAAyB,EAAE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc,gBAAgB,YAAY;AACtE;AACA;AACA;AACA;AACA,UAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mC;;;;;;;ACtWa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAO,CAAC,GAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0C;;;;;;;AC1Ca;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAW;AAClC,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,WAAW,mBAAO,CAAC,EAAS;AAC5B,uBAAuB,mBAAO,CAAC,GAAkB;AACjD,kBAAkB,mBAAO,CAAC,EAAa;AACvC;AACA;AACA;AACA;AACA;AACA,qCAAqC,wBAAwB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mDAAmD;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D,uBAAuB,EAAE;AACzB,6EAA6E;AAC7E,uBAAuB,EAAE;AACzB,2EAA2E;AAC3E,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,2CAA2C;AACxF,oCAAoC,yBAAyB;AAC7D,qC;;;;;;;AC9Ga;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,GAAqB;AAC/C,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA,qC;;;;;;;ACvBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAW;AAClC,qBAAqB,mBAAO,CAAC,EAAiB;AAC9C,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,kBAAkB,mBAAO,CAAC,EAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,kDAAkD;AAC5D;AACA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,kBAAkB;AAClB;AACA;AACA,8BAA8B,aAAa;AAC3C,+B;;;;;;;AC5Da;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,YAAY,mBAAO,CAAC,GAAe;AACnC,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA,+B;;;;;;;ACvBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAW;AAClC,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,WAAW,mBAAO,CAAC,EAAS;AAC5B,kBAAkB,mBAAO,CAAC,EAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,UAAU,8CAA8C;AACxD;AACA;AACA;AACA,6CAA6C,UAAU,EAAE;AACzD;AACA,sDAAsD;AACtD,oDAAoD,EAAE;AACtD;AACA,8DAA8D;AAC9D,iCAAiC,EAAE;AACnC,KAAK;AACL;AACA;AACA;AACA,iBAAiB;AACjB,6DAA6D,oCAAoC,EAAE,GAAG,QAAQ;AAC9G;AACA,oCAAoC,yBAAyB;AAC7D,qC;;;;;;;AC1Da;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,kBAAkB,mBAAO,CAAC,GAAqB;AAC/C,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA,qC;;;;;;;ACvBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAW;AAClC,qBAAqB,mBAAO,CAAC,EAAiB;AAC9C,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,kBAAkB,mBAAO,CAAC,EAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA,6BAA6B,aAAa;AAC1C,8BAA8B,cAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,iBAAiB;AACjB;AACA;AACA;AACA,iCAAiC,mBAAmB;AACpD,mC;;;;;;;AC3Da;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,gBAAgB,mBAAO,CAAC,GAAmB;AAC3C,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA,6BAA6B,aAAa;AAC1C,8BAA8B,cAAc;AAC5C;AACA;AACA,mC;;;;;;;ACzBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAW;AAClC,qBAAqB,mBAAO,CAAC,EAAiB;AAC9C,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,WAAW,mBAAO,CAAC,EAAS;AAC5B,kBAAkB,mBAAO,CAAC,EAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,UAAU,sDAAsD;AAChE;AACA;AACA;AACA,sDAAsD;AACtD,oDAAoD,EAAE;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,iBAAiB;AACjB;AACA;AACA,+BAA+B,eAAe;AAC9C,gC;;;;;;;AC/Da;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,aAAa,mBAAO,CAAC,GAAgB;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA,gC;;;;;;;ACvBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAW;AAClC,qBAAqB,mBAAO,CAAC,EAAiB;AAC9C,oBAAoB,mBAAO,CAAC,EAAgB;AAC5C,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,uBAAuB,mBAAO,CAAC,GAAkB;AACjD,kBAAkB,mBAAO,CAAC,EAAa;AACvC,mBAAmB,mBAAO,CAAC,EAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,oCAAoC;AACpE,gCAAgC,oCAAoC;AACpE,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,4CAA4C,yCAAyC;AACrF,8C;;;;;;;AC7Ea;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,2BAA2B,mBAAO,CAAC,GAA8B;AACjE,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA,8C;;;;;;;ACvBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,WAAW,mBAAO,CAAC,EAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,uDAAuD,uFAAuF,EAAE;AAChJ;AACA;AACA,uBAAuB,UAAU;AACjC,mFAAmF;AACnF;AACA,+DAA+D,EAAE;AACjE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA,uC;;;;;;;AC9Ca;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAW;AAClC,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,aAAa,mBAAO,CAAC,EAAS;AAC9B,aAAa,mBAAO,CAAC,EAAS;AAC9B,oBAAoB,mBAAO,CAAC,GAAe;AAC3C,kBAAkB,mBAAO,CAAC,EAAa;AACvC,mBAAmB,mBAAO,CAAC,EAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,sDAAsD;AAChE;AACA,0BAA0B,UAAU;AACpC,oDAAoD,6CAA6C,EAAE;AACnG;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,4EAA4E,gBAAgB,EAAE;AAC9F;AACA;AACA;AACA;AACA,6CAA6C,mBAAmB,EAAE;AAClE;AACA;AACA;AACA,4CAA4C,gBAAgB,EAAE;AAC9D;AACA;AACA,kDAAkD,gBAAgB,EAAE;AACpE;AACA,4CAA4C,qBAAqB,UAAU,GAAG,EAAE;AAChF;AACA;AACA,gBAAgB;AAChB,6DAA6D,uCAAuC,EAAE;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,UAAU,sDAAsD;AAChE;AACA,0BAA0B,UAAU;AACpC;AACA;AACA;AACA;AACA,2EAA2E,wDAAwD,EAAE;AACrI;AACA;AACA;AACA;AACA,iFAAiF,cAAc,EAAE,gBAAgB,sEAAsE,EAAE;AACzL;AACA;AACA,6BAA6B,UAAU,kBAAkB,iCAAiC,EAAE,EAAE,EAAE;AAChG,6DAA6D,4CAA4C,EAAE,GAAG,SAAS;AACvH;AACA,iCAAiC,mBAAmB;AACpD,mCAAmC,uBAAuB;AAC1D,mCAAmC,uBAAuB;AAC1D,mCAAmC,uBAAuB;AAC1D,mCAAmC,uBAAuB;AAC1D,gCAAgC,iBAAiB;AACjD,wC;;;;;;;ACjPa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,WAAW,mBAAO,CAAC,EAAS;AAC5B;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA,+CAA+C,oBAAoB,EAAE;AACrE;AACA;AACA;AACA;AACA,gDAAgD,UAAU,EAAE;AAC5D;AACA;AACA;AACA;AACA,+DAA+D;AAC/D,+DAA+D,EAAE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA,kCAAkC,0BAA0B,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA,wCAAwC,kBAAkB,EAAE;AAC5D,+BAA+B,oBAAoB,EAAE;AACrD,2BAA2B,aAAa,EAAE;AAC1C;AACA;AACA;AACA;AACA,gCAAgC,UAAU;AAC1C;AACA;AACA;AACA;AACA;AACA,qC;;;;;;;ACxGa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAW;AAClC,eAAe,mBAAO,CAAC,EAAW;AAClC,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,WAAW,mBAAO,CAAC,EAAS;AAC5B,kBAAkB,mBAAO,CAAC,GAAa;AACvC,qBAAqB,mBAAO,CAAC,GAAgB;AAC7C,kBAAkB,mBAAO,CAAC,EAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,kDAAkD;AAC5D;AACA;AACA;AACA,oEAAoE,yEAAyE,EAAE;AAC/I;AACA,gBAAgB,iBAAiB,6BAA6B,EAAE;AAChE;AACA,iBAAiB;AACjB,6DAA6D,mCAAmC,EAAE,GAAG,QAAQ;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,kDAAkD;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,kDAAkD;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB,mBAAmB,EAAE;AACtD;AACA,iBAAiB;AACjB,6DAA6D,gCAAgC,EAAE,GAAG,QAAQ;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,sDAAsD;AAChE;AACA,0BAA0B,UAAU;AACpC;AACA,mDAAmD,+CAA+C,EAAE;AACpG;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,6CAA6C,EAAE;AAC1F;AACA;AACA,KAAK;AACL;AACA,oDAAoD,gEAAgE,EAAE;AACtH,KAAK;AACL,qDAAqD,2BAA2B,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,kDAAkD;AAC5D;AACA;AACA,kDAAkD,cAAc,EAAE;AAClE,+DAA+D,oGAAoG,EAAE;AACrK,iEAAiE,8GAA8G,EAAE;AACjL,uDAAuD;AACvD,kFAAkF,EAAE;AACpF;AACA,gBAAgB,kBAAkB,6CAA6C,EAAE;AACjF;AACA,6DAA6D,sDAAsD,EAAE,GAAG,SAAS;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,kDAAkD;AAC5D;AACA;AACA,+DAA+D,wFAAwF,EAAE;AACzJ,oEAAoE,uGAAuG,EAAE;AAC7K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,sBAAsB,iKAAiK,EAAE;AAC9L;AACA,gBAAgB,kBAAkB,gDAAgD,EAAE;AACpF;AACA,6DAA6D,yDAAyD,EAAE,GAAG,SAAS;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,sDAAsD;AAChE;AACA,0BAA0B,UAAU;AACpC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB,gCAAgC,EAAE;AACnE;AACA,iBAAiB;AACjB,6DAA6D,kCAAkC,EAAE,GAAG,QAAQ;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,0CAA0C;AACpD;AACA,0BAA0B,UAAU;AACpC,+BAA+B,mBAAmB;AAClD,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAyB,6CAA6C,EAAE;AACxF;AACA,kEAAkE,oEAAoE,EAAE,GAAG,uBAAuB;AAClK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,kDAAkD;AAC5D;AACA,0BAA0B,UAAU;AACpC;AACA;AACA,8CAA8C,6CAA6C,EAAE;AAC7F;AACA;AACA;AACA,yDAAyD,iFAAiF,EAAE;AAC5I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,kDAAkD;AAC5D;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA,2DAA2D,6KAA6K,EAAE;AAC1O,0DAA0D,+KAA+K,EAAE;AAC3O,2EAA2E,2JAA2J,EAAE;AACxO,6DAA6D,wDAAwD,EAAE,GAAG,SAAS;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,kDAAkD;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,qGAAqG,EAAE;AAC3K,4DAA4D,+DAA+D,EAAE;AAC7H,4DAA4D,+DAA+D,EAAE;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kBAAkB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA,yCAAyC,mCAAmC;AAC5E,+BAA+B,eAAe;AAC9C,iCAAiC,mBAAmB;AACpD,uCAAuC,+BAA+B;AACtE,qCAAqC,2BAA2B;AAChE,kCAAkC,qBAAqB;AACvD,yCAAyC,mCAAmC;AAC5E,kCAAkC,qBAAqB;AACvD,gCAAgC,iBAAiB;AACjD,kCAAkC,qBAAqB;AACvD;AACA,qC;;;;;;;AC5jBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA,kBAAkB,mBAAO,CAAC,GAAkB;AAC5C;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sC;;;;;;;ACrCa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA,8CAA8C,cAAc;AAC5D,mBAAmB,mBAAO,CAAC,GAAwB;AACnD,eAAe,mBAAO,CAAC,EAAW;AAClC,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,aAAa,mBAAO,CAAC,EAAS;AAC9B,uBAAuB,mBAAO,CAAC,GAAkB;AACjD,kBAAkB,mBAAO,CAAC,EAAa;AACvC,mBAAmB,mBAAO,CAAC,EAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,6CAA6C;AACvD;AACA;AACA,6DAA6D,+BAA+B,EAAE,GAAG,SAAS;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA,6DAA6D,mCAAmC,EAAE,GAAG,eAAe;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA,6DAA6D,kCAAkC,EAAE,GAAG,iBAAiB;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,yEAAyE,EAAE;AACnJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qDAAqD,EAAE;AAC5F,6BAA6B,0CAA0C,EAAE;AACzE,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,yCAAyC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,qCAAqC,2BAA2B;AAChE,qCAAqC,2BAA2B;AAChE,oCAAoC,yBAAyB;AAC7D,qCAAqC,2BAA2B;AAChE,gCAAgC,iBAAiB;AACjD;AACA,uC;;;;;;;ACrOa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,oBAAoB,mBAAO,CAAC,EAAgB;AAC5C,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,YAAY,mBAAO,CAAC,GAAO;AAC3B,oBAAoB,mBAAO,CAAC,GAAe;AAC3C,kBAAkB,mBAAO,CAAC,EAAa;AACvC,mBAAmB,mBAAO,CAAC,EAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D,sC;;;;;;;ACnEa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,mBAAmB,mBAAO,CAAC,GAAsB;AACjD,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA,sC;;;;;;;ACvBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAW;AAClC,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,WAAW,mBAAO,CAAC,EAAS;AAC5B,kBAAkB,mBAAO,CAAC,EAAa;AACvC,mBAAmB,mBAAO,CAAC,EAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA,gBAAgB,iBAAiB,iBAAiB,EAAE;AACpD;AACA;AACA;AACA,6DAA6D,wBAAwB,EAAE,GAAG,QAAQ;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,mCAAmC,EAAE;AACvE;AACA,6DAA6D,yBAAyB,EAAE,GAAG,SAAS;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,mCAAmC,EAAE;AACvE;AACA,6DAA6D,0BAA0B,EAAE,GAAG,SAAS;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA,gBAAgB,kBAAkB,mCAAmC,EAAE;AACvE;AACA,6DAA6D,yBAAyB,EAAE,GAAG,SAAS;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,mCAAmC,EAAE;AACvE;AACA,6DAA6D,0BAA0B,EAAE,GAAG,SAAS;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,mCAAmC,EAAE;AACvE;AACA,6DAA6D,0BAA0B,EAAE,GAAG,SAAS;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,mCAAmC,EAAE;AACvE;AACA,6DAA6D,6BAA6B,EAAE,GAAG,SAAS;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,mCAAmC,EAAE;AACvE;AACA,6DAA6D,0BAA0B,EAAE,GAAG,SAAS;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA,gBAAgB,iBAAiB,+BAA+B,EAAE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,QAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,yBAAyB,EAAE;AAC7D;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB,6BAA6B,EAAE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,QAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,0BAA0B,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,2CAA2C,EAAE;AAC/E;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB,yCAAyC,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,QAAQ,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,kCAAkC,EAAE;AACtE;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA,iEAAiE,+BAA+B,EAAE,GAAG,SAAS;AAC9G;AACA;AACA;AACA,gBAAgB,iBAAiB,sCAAsC,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,QAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA,6DAA6D;AAC7D,8DAA8D,EAAE;AAChE;AACA;AACA;AACA,4BAA4B;AAC5B,qFAAqF,EAAE;AACvF;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK,GAAG,QAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB,qDAAqD,EAAE;AACxF;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,QAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,mCAAmC,EAAE;AACvE;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,6BAA6B,EAAE;AACjE;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB,mCAAmC,EAAE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,QAAQ,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB,yCAAyC,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,QAAQ,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,kCAAkC,EAAE;AACtE;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA,6BAA6B,+EAA+E;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,6CAA6C,EAAE;AACjF;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,0CAA0C,EAAE;AAC9E;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,0CAA0C,EAAE;AAC9E;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB,6DAA6D,EAAE;AAChG;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,QAAQ,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA,6BAA6B,+EAA+E;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,0DAA0D,EAAE;AAC9F;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,kEAAkE,EAAE;AACtG;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA,6EAA6E,oDAAoD,EAAE;AACnI;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,oEAAoE;AACjG;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA,2BAA2B,aAAa;AACxC;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,mCAAmC,EAAE;AACvE;AACA,6DAA6D,gCAAgC,EAAE,GAAG,SAAS;AAC3G;AACA,8BAA8B,aAAa;AAC3C,+BAA+B,eAAe;AAC9C,gCAAgC,iBAAiB;AACjD,+BAA+B,eAAe;AAC9C,gCAAgC,iBAAiB;AACjD,+BAA+B,eAAe;AAC9C,gCAAgC,iBAAiB;AACjD,+BAA+B,eAAe;AAC9C,sCAAsC,6BAA6B;AACnE,8BAA8B,aAAa;AAC3C,+BAA+B,eAAe;AAC9C,8BAA8B,aAAa;AAC3C,8BAA8B,aAAa;AAC3C,gCAAgC,iBAAiB;AACjD,gCAAgC,iBAAiB;AACjD,8BAA8B,aAAa;AAC3C,gCAAgC,iBAAiB;AACjD,qCAAqC,2BAA2B;AAChE,8BAA8B,aAAa;AAC3C,qCAAqC,2BAA2B;AAChE,gCAAgC,iBAAiB;AACjD,gCAAgC,iBAAiB;AACjD,kCAAkC,qBAAqB;AACvD,+BAA+B,eAAe;AAC9C,gCAAgC,iBAAiB;AACjD,gCAAgC,iBAAiB;AACjD,mCAAmC,uBAAuB;AAC1D,8BAA8B,aAAa;AAC3C,+BAA+B,eAAe;AAC9C,mCAAmC,uBAAuB;AAC1D,+BAA+B,eAAe;AAC9C,+BAA+B,eAAe;AAC9C,8BAA8B,aAAa;AAC3C,+BAA+B,eAAe;AAC9C,qC;;;;;;;ACv1Ba;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAO,CAAC,EAAW;AAClC,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,WAAW,mBAAO,CAAC,EAAS;AAC5B,kBAAkB,mBAAO,CAAC,EAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA;AACA;AACA;AACA;AACA,6DAA6D,sCAAsC,EAAE,GAAG,6BAA6B;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA;AACA,6DAA6D,6BAA6B,EAAE,GAAG,iBAAiB;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA;AACA,6DAA6D,6BAA6B,EAAE,GAAG,iBAAiB;AAChH;AACA,kCAAkC,qBAAqB;AACvD,+BAA+B,eAAe;AAC9C,+BAA+B,eAAe;AAC9C,uC;;;;;;;ACtFa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAW;AAClC,oBAAoB,mBAAO,CAAC,EAAgB;AAC5C,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,WAAW,mBAAO,CAAC,EAAS;AAC5B,YAAY,mBAAO,CAAC,GAAO;AAC3B,qBAAqB,mBAAO,CAAC,GAAkB;AAC/C,kBAAkB,mBAAO,CAAC,EAAa;AACvC,mBAAmB,mBAAO,CAAC,EAAc;AACzC,kBAAkB,mBAAO,CAAC,GAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA,6DAA6D,iCAAiC,EAAE,GAAG,eAAe;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,oBAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,eAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,eAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,iBAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2CAA2C;AAC3E,gCAAgC,yCAAyC;AACzE,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,eAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8CAA8C;AAC9E,gCAAgC,sCAAsC;AACtE,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,eAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG,iBAAiB;AACzB;AACA,oCAAoC,yBAAyB;AAC7D,gCAAgC,iBAAiB;AACjD,oCAAoC,yBAAyB;AAC7D,mCAAmC,uBAAuB;AAC1D,kCAAkC,qBAAqB;AACvD,wCAAwC,iCAAiC;AACzE,kCAAkC,qBAAqB;AACvD,wCAAwC,iCAAiC;AACzE,8BAA8B,aAAa;AAC3C,oCAAoC,yBAAyB;AAC7D,8BAA8B,aAAa;AAC3C,oCAAoC,yBAAyB;AAC7D,8BAA8B,aAAa;AAC3C,oCAAoC,yBAAyB;AAC7D,kDAAkD,qDAAqD;AACvG,8BAA8B,aAAa;AAC3C,oCAAoC,yBAAyB;AAC7D,sC;;;;;;;AC3lBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,YAAY,mBAAO,CAAC,GAAe;AACnC,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA,+B;;;;;;;ACvBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAW;AAClC,qBAAqB,mBAAO,CAAC,EAAiB;AAC9C,wBAAwB,mBAAO,CAAC,EAAoB;AACpD,kBAAkB,mBAAO,CAAC,EAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,kDAAkD;AAC5D;AACA;AACA;AACA,iCAAiC,gCAAgC,EAAE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uBAAuB,EAAE,uBAAuB,eAAe,EAAE;AAC1G;AACA;AACA;AACA,sCAAsC,kCAAkC;AACxE;AACA,kCAAkC,UAAU,iBAAiB,+BAA+B,EAAE,EAAE,EAAE;AAClG,kBAAkB;AAClB,iBAAiB;AACjB;AACA;AACA,sCAAsC,6BAA6B;AACnE,wC;;;;;;;ACzEa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,qBAAqB,mBAAO,CAAC,GAAwB;AACrD,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA,wC;;;;;;;ACvBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,2CAA2C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kDAAkD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;;;;;;AC/Ea;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,aAAa,mBAAO,CAAC,EAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,mBAAmB,EAAE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA,2BAA2B,aAAa;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,eAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,4CAA4C,EAAE;AACjG;AACA;AACA;AACA,8CAA8C,gFAAgF,EAAE;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,4CAA4C,EAAE;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gCAAgC;AACvD;AACA;AACA;AACA;AACA;AACA,uDAAuD,UAAU;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA,yC;;;;;;;ACtKa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,WAAW,mBAAO,CAAC,EAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA,4DAA4D,uCAAuC,EAAE;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,oCAAoC,EAAE;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,QAAQ;AACjD;AACA;AACA;AACA;AACA,gC;;;;;;;AC/Ja;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,WAAW,mBAAO,CAAC,EAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,oC;;;;;;;AC9Fa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2C;;;;;;;ACxHa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,GAAe;AACnC,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA,+B;;;;;;;ACvBa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAO,CAAC,GAAO;AACf,mBAAO,CAAC,GAAgB;AACxB,mBAAO,CAAC,GAAO;AACf,mBAAO,CAAC,GAAc;AACtB,mBAAO,CAAC,GAAsB;AAC9B,mBAAO,CAAC,GAAQ;AAChB,mBAAO,CAAC,GAAW;AACnB,mBAAO,CAAC,GAAa;AACrB,mBAAO,CAAC,GAAO;AACf,mBAAO,CAAC,GAAa;AACrB,oD;;;;;;AC5BA,e;;;;;;ACAA,e;;;;;;ACAA,e;;;;;;ACAA,e;;;;;;ACAA,e;;;;;;ACAA,e;;;;;;ACAA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,sBAAsB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;;;;ACzLD,iBAAiB;;AAEjB;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;;ACpFY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACrJA,uBAAuB;AACvB;AACA;AACA;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA,eAAe,mBAAO,CAAC,GAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA,eAAe,mBAAO,CAAC,GAAc;AACrC,eAAe,mBAAO,CAAC,GAAW;AAClC;AACA;AACA;AACA;AACA;;;;;;;ACNA,kBAAkB,mBAAO,CAAC,GAAgB,MAAM,mBAAO,CAAC,GAAU;AAClE,+BAA+B,mBAAO,CAAC,GAAe,gBAAgB,mBAAmB,UAAU,EAAE,EAAE;AACvG,CAAC;;;;;;;ACFD,eAAe,mBAAO,CAAC,GAAc;AACrC;AACA;AACA;AACA;;;;;;;ACJA,eAAe,mBAAO,CAAC,GAAc;AACrC,qBAAqB,mBAAO,CAAC,GAAmB;AAChD,kBAAkB,mBAAO,CAAC,GAAiB;AAC3C;;AAEA,YAAY,mBAAO,CAAC,GAAgB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;AACA;AACA;;;;;;;ACfA,SAAS,mBAAO,CAAC,GAAc;AAC/B,iBAAiB,mBAAO,CAAC,GAAkB;AAC3C,iBAAiB,mBAAO,CAAC,GAAgB;AACzC;AACA,CAAC;AACD;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;;;;;;;ACHA;AACA,gBAAgB,mBAAO,CAAC,GAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnBA,aAAa,mBAAO,CAAC,GAAW;AAChC,WAAW,mBAAO,CAAC,GAAS;AAC5B,UAAU,mBAAO,CAAC,GAAQ;AAC1B,WAAW,mBAAO,CAAC,GAAS;AAC5B,UAAU,mBAAO,CAAC,GAAQ;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,kFAAkF;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,eAAe;AACf,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB;;;;;;;AC7DA;AACA,cAAc,mBAAO,CAAC,GAAW;;AAEjC,oBAAoB,SAAS,mBAAO,CAAC,GAAW,GAAG;;;;;;;ACHnD,mBAAO,CAAC,GAAuB;AAC/B,iBAAiB,mBAAO,CAAC,GAAkB;;;;;;;ACD3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa;AACb,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,kBAAkB;AACnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE,KAA0B,oBAAoB,SAAE;AAClD;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;ACjvBA,iBAAiB,mBAAO,CAAC,GAAsB;AAC/C,cAAc,mBAAO,CAAC,EAAgB;AACtC,eAAe,mBAAO,CAAC,EAAa;AACpC,aAAa,mBAAO,CAAC,EAAW;AAChC,W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AK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uCAAuC,sBAAsB,EAAE;AAC/D;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;ACpEa;;AAEb,eAAe,mBAAO,CAAC,GAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,yBAAyB,mBAAO,CAAC,GAAwB;AACzD,yBAAyB,mBAAO,CAAC,GAAyB;AAC1D,eAAe,mBAAO,CAAC,EAAc;AACrC,qBAAqB,mBAAO,CAAC,GAAyB;AACtD,iBAAiB,mBAAO,CAAC,GAAgB;AACzC,YAAY,mBAAO,CAAC,EAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,yBAAyB,EAAE;;AAEhE;AACA,mBAAO,CAAC,GAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACrIY;;AAEb,eAAe,mBAAO,CAAC,EAAc;AACrC,gBAAgB,mBAAO,CAAC,GAAe;AACvC,iBAAiB,mBAAO,CAAC,GAAyB;;AAElD;AACA,mBAAO,CAAC,GAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;AC9BY;;AAEb,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,yBAAyB,mBAAO,CAAC,GAAyB;AAC1D,iBAAiB,mBAAO,CAAC,GAAyB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAO,CAAC,GAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;ACrHY;;AAEb,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,yBAAyB,mBAAO,CAAC,GAAyB;AAC1D,iBAAiB,mBAAO,CAAC,GAAyB;;AAElD;AACA,mBAAO,CAAC,GAAe;AACvB;AACA;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CA,cAAc,mBAAO,CAAC,CAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACRD;AACA,cAAc,mBAAO,CAAC,CAAW;;AAEjC,8BAA8B,YAAY,mBAAO,CAAC,GAAe,GAAG;;;;;;;ACHpE;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,gBAAgB,mBAAO,CAAC,EAAW;;AAEnC;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACRD;AACA,cAAc,mBAAO,CAAC,CAAW;;AAEjC,8BAA8B,4BAA4B;;;;;;;;ACH7C;AACb,cAAc,mBAAO,CAAC,CAAW;AACjC,aAAa,mBAAO,CAAC,EAAU;AAC/B,mBAAmB,mBAAO,CAAC,GAAmB;AAC9C;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA,sBAAsB;AACtB,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACjBY;AACb,cAAc,mBAAO,CAAC,CAAW;AACjC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,mBAAmB,mBAAO,CAAC,GAAmB;AAC9C,aAAa,mBAAO,CAAC,GAAkB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAO,CAAC,EAAU;AACxB;AACA,kBAAkB;AAClB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;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BAAO,CAAC,GAAa;AACnC,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,kBAAkB,mBAAO,CAAC,EAAiB;AAC3C,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,cAAc,mBAAO,CAAC,EAAkB;AACxC,cAAc,mBAAO,CAAC,GAAoB;AAC1C,YAAY,mBAAO,CAAC,EAAgB;AACpC,YAAY,mBAAO,CAAC,GAAgB;AACpC,UAAU,mBAAO,CAAC,EAAc;AAChC,YAAY,mBAAO,CAAC,EAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB,sBAAsB,uBAAuB,WAAW,IAAI;AAC5D,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,KAAK;AACL;AACA,sBAAsB,mCAAmC;AACzD,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,gCAAgC;AAChG;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,EAAE,mBAAO,CAAC,EAAgB;AAC1B,EAAE,mBAAO,CAAC,GAAe;AACzB;;AAEA,sBAAsB,mBAAO,CAAC,EAAY;AAC1C;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0DAA0D,k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","file":"ml5.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ml5\"] = factory();\n\telse\n\t\troot[\"ml5\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 581);\n","/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nvar t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(e,n)};function e(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}function n(t,e,n,r){return new(n||(n=Promise))((function(o,a){function i(t){try{u(r.next(t))}catch(t){a(t)}}function s(t){try{u(r.throw(t))}catch(t){a(t)}}function u(t){t.done?o(t.value):new n((function(e){e(t.value)})).then(i,s)}u((r=r.apply(t,e||[])).next())}))}function r(t,e){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError(\"Generator is already executing.\");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=e.call(t,i)}catch(t){a=[6,t],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}}var o=function(){function t(t){this.global=t,this.flags={},this.flagRegistry={},this.urlFlags={},this.populateURLFlags()}return t.prototype.setPlatform=function(t,e){null!=this.platform&&console.warn(\"Platform \"+this.platformName+\" has already been set. Overwriting the platform with \"+e+\".\"),this.platformName=t,this.platform=e},t.prototype.registerFlag=function(t,e,n){if(this.flagRegistry[t]={evaluationFn:e,setHook:n},null!=this.urlFlags[t]){var r=this.urlFlags[t];console.warn(\"Setting feature override from URL \"+t+\": \"+r+\".\"),this.set(t,r)}},t.prototype.get=function(t){return t in this.flags?this.flags[t]:(this.flags[t]=this.evaluateFlag(t),this.flags[t])},t.prototype.getNumber=function(t){return this.get(t)},t.prototype.getBool=function(t){return this.get(t)},t.prototype.getFlags=function(){return this.flags},Object.defineProperty(t.prototype,\"features\",{get:function(){return this.flags},enumerable:!0,configurable:!0}),t.prototype.set=function(t,e){if(null==this.flagRegistry[t])throw new Error(\"Cannot set flag \"+t+\" as it has not been registered.\");this.flags[t]=e,null!=this.flagRegistry[t].setHook&&this.flagRegistry[t].setHook(e)},t.prototype.evaluateFlag=function(t){if(null==this.flagRegistry[t])throw new Error(\"Cannot evaluate flag '\"+t+\"': no evaluation function found.\");return this.flagRegistry[t].evaluationFn()},t.prototype.setFlags=function(t){this.flags=Object.assign({},t)},t.prototype.reset=function(){this.flags={},this.urlFlags={},this.populateURLFlags()},t.prototype.populateURLFlags=function(){var t=this;if(void 0!==this.global&&void 0!==this.global.location&&void 0!==this.global.location.search){var e,n,r=(e=this.global.location.search,n={},e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return a(n,e[0],e[1]),e.join(\"=\")})),n);if(\"tfjsflags\"in r)r.tfjsflags.split(\",\").forEach((function(e){var n=e.split(\":\"),r=n[0],o=n[1];t.urlFlags[r]=function(t,e){if(\"true\"===(e=e.toLowerCase())||\"false\"===e)return\"true\"===e;if(\"\"+ +e===e)return+e;throw new Error(\"Could not parse value flag value \"+e+\" for flag \"+t+\".\")}(r,o)}))}},t}();function a(t,e,n){t[decodeURIComponent(e)]=decodeURIComponent(n||\"\")}function i(){return s}var s=null;var u=new Map,c=new Map;function l(t,e){var n=m(t,e);return u.get(n)}function h(t){return c.get(t)}function f(t){for(var e=u.entries(),n=[];;){var r=e.next(),o=r.done,a=r.value;if(o)break;var i=a[0],s=a[1];i.split(\"_\")[0]===t&&n.push(s)}return n}function d(t){var e=t.kernelName,n=t.backendName,r=m(e,n);if(u.has(r))throw new Error(\"The kernel '\"+e+\"' for backend '\"+n+\"' is already registered\");u.set(r,t)}function p(t){var e=t.kernelName;c.has(e)&&console.warn(\"Overriding the gradient for '\"+e+\"'\"),c.set(e,t)}function v(t,e){var n=m(t,e);if(!u.has(n))throw new Error(\"The kernel '\"+t+\"' for backend '\"+e+\"' is not registered\");u.delete(n)}function g(t){if(!c.has(t))throw new Error(\"The gradient '\"+t+\"' for backend is not registered\");c.delete(t)}function m(t,e){return e+\"_\"+t}function y(t){for(var e=t.length,n=0,r=0;e>0;)r=Math.random()*e|0,n=t[--e],t[e]=t[r],t[r]=n}function x(t,e,n){return Math.max(t,Math.min(e,n))}function b(t){return t%2==0?t:t+1}function w(t){for(var e=0,n=0;n<t.length;n++)e+=t[n];return e}function C(t,e){if(!t)throw new Error(\"string\"==typeof e?e:e())}function E(t,e,n){void 0===n&&(n=\"\"),C(S(t,e),(function(){return n+\" Shapes \"+t+\" and \"+e+\" must match\"}))}function R(t){C(null!=t,(function(){return\"The input to the tensor constructor must be a non-null value.\"}))}function I(t,e,n){if(void 0===e&&(e=[]),void 0===n&&(n=!1),null==e&&(e=[]),Array.isArray(t)||V(t)&&!n)for(var r=0;r<t.length;++r)I(t[r],e,n);else e.push(t);return e}function k(t){if(0===t.length)return 1;for(var e=t[0],n=1;n<t.length;n++)e*=t[n];return e}function S(t,e){if(t===e)return!0;if(null==t||null==e)return!1;if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}function A(t){return t%1==0}function T(t){if(null!=Math.tanh)return Math.tanh(t);if(t===1/0)return 1;if(t===-1/0)return-1;var e=Math.exp(2*t);return(e-1)/(e+1)}function D(t){var e=Math.ceil(Math.sqrt(t));return[e,Math.ceil(t/e)]}function N(t,e){return e<=t.length?t:t+\" \".repeat(e-t.length)}function F(t,e,n){return void 0===e&&(e=function(t){return 0}),new Promise((function(r,o){var a=0,i=function(){if(t())r();else{a++;var s=e(a);null!=n&&a>=n?o():setTimeout(i,s)}};i()}))}function _(t,e){for(var n=1,r=-1,o=0;o<t.length;++o)if(t[o]>=0)n*=t[o];else if(-1===t[o]){if(-1!==r)throw Error(\"Shapes can only have 1 implicit size. Found -1 at dim \"+r+\" and dim \"+o);r=o}else if(t[o]<0)throw Error(\"Shapes can not be < 0. Found \"+t[o]+\" at dim \"+o);if(-1===r){if(e>0&&e!==n)throw Error(\"Size(\"+e+\") must match the product of shape \"+t);return t}if(0===n)throw Error(\"Cannot infer the missing size in [\"+t+\"] when there are 0 elements\");if(e%n!=0)throw Error(\"The implicit shape can't be a fractional number. Got \"+e+\" / \"+n);var a=t.slice();return a[r]=e/n,a}function O(t,e){var n=e.length;return C((t=null==t?e.map((function(t,e){return e})):[].concat(t)).every((function(t){return t>=-n&&t<n})),(function(){return\"All values in axis param must be in range [-\"+n+\", \"+n+\") but got axis \"+t})),C(t.every((function(t){return A(t)})),(function(){return\"All values in axis param must be integers but got axis \"+t})),t.map((function(t){return t<0?n+t:t}))}function M(t,e){for(var n=[],r=[],o=null!=e&&Array.isArray(e)&&0===e.length,a=null==e||o?null:O(e,t).sort(),i=0,s=0;s<t.length;++s){if(null!=a){if(a[i]===s&&1!==t[s])throw new Error(\"Can't squeeze axis \"+s+\" since its dim '\"+t[s]+\"' is not 1\");(null==a[i]||a[i]>s)&&1===t[s]&&(n.push(t[s]),r.push(s)),a[i]<=s&&i++}1!==t[s]&&(n.push(t[s]),r.push(s))}return{newShape:n,keptDims:r}}function B(t,e){var n=null;if(null==t||\"float32\"===t)n=new Float32Array(e);else if(\"int32\"===t)n=new Int32Array(e);else{if(\"bool\"!==t)throw new Error(\"Unknown data type \"+t);n=new Uint8Array(e)}return n}function P(t,e){var n=null;if(null==t||\"float32\"===t)n=new Float32Array(e);else if(\"int32\"===t)n=new Int32Array(e);else if(\"bool\"===t)n=new Uint8Array(e);else{if(\"string\"!==t)throw new Error(\"Unknown data type \"+t);n=new Array(e)}return n}function L(t,e){for(var n=0;n<t.length;n++){var r=t[n];if(isNaN(r)||!isFinite(r))throw Error(\"A tensor of type \"+e+\" being uploaded contains \"+r+\".\")}}function W(t){return\"bool\"===t||\"complex64\"===t||\"float32\"===t||\"int32\"===t||\"string\"===t}function U(t,e){return\"complex64\"!==e&&((\"float32\"!==e||\"complex64\"===t)&&((\"int32\"!==e||\"float32\"===t||\"complex64\"===t)&&(\"bool\"!==e||\"bool\"!==t)))}function V(t){return t instanceof Float32Array||t instanceof Int32Array||t instanceof Uint8Array}function z(t){if(\"float32\"===t||\"int32\"===t)return 4;if(\"complex64\"===t)return 8;if(\"bool\"===t)return 1;throw new Error(\"Unknown dtype \"+t)}function G(t){if(null==t)return 0;var e=0;return t.forEach((function(t){return e+=t.length})),e}function H(t){return\"string\"==typeof t||t instanceof String}function q(t){return\"boolean\"==typeof t}function K(t){return\"number\"==typeof t}function j(t){return Array.isArray(t)?j(t[0]):t instanceof Float32Array?\"float32\":t instanceof Int32Array||t instanceof Uint8Array?\"int32\":K(t)?\"float32\":H(t)?\"string\":q(t)?\"bool\":\"float32\"}function X(t){return!!(t&&t.constructor&&t.call&&t.apply)}function Y(t,e){for(var n=e;n<t;++n)if(t%n==0)return n;return t}function $(t){var e=t.length;if(e<2)return[];var n=new Array(e-1);n[e-2]=t[e-1];for(var r=e-3;r>=0;--r)n[r]=n[r+1]*t[r+1];return n}function Q(t,e,n){if(\"string\"===e)throw new Error(\"Cannot convert a string[] to a TypedArray\");if(Array.isArray(t)&&(t=I(t)),n&&L(t,e),function(t,e){return t instanceof Float32Array&&\"float32\"===e||t instanceof Int32Array&&\"int32\"===e||t instanceof Uint8Array&&\"bool\"===e}(t,e))return t;if(null==e||\"float32\"===e||\"complex64\"===e)return new Float32Array(t);if(\"int32\"===e)return new Int32Array(t);if(\"bool\"===e){for(var r=new Uint8Array(t.length),o=0;o<r.length;++o)0!==Math.round(t[o])&&(r[o]=1);return r}throw new Error(\"Unknown data type \"+e)}function J(t,e){if(0===t.length)return e[0];var n=t.reduce((function(t,e){return t*e}));if(0===n)return[];if(n!==e.length)throw new Error(\"[\"+t+\"] does not match the input size.\");return function t(e,n,r){var o=new Array;if(1===n.length)for(var a=n[0],i=0;i<a;i++)o[i]=r[e+i];else{a=n[0];var s=n.slice(1),u=s.reduce((function(t,e){return t*e}));for(i=0;i<a;i++)o[i]=t(e+i*u,s,r)}return o}(0,t,e)}function Z(t,e){for(var n=tt(t,e),r=0;r<n.length;r++)n[r]=1;return n}function tt(t,e){if(null==e||\"float32\"===e||\"complex64\"===e)return new Float32Array(t);if(\"int32\"===e)return new Int32Array(t);if(\"bool\"===e)return new Uint8Array(t);throw new Error(\"Unknown data type \"+e)}function et(){return i().platform.now()}function nt(t){t.forEach((function(e){C(Number.isInteger(e)&&e>=0,(function(){return\"Tensor must have a shape comprised of positive integers but got shape [\"+t+\"].\"}))}))}function rt(t,e){return void 0===e&&(e=\"utf-8\"),e=e||\"utf-8\",i().platform.encode(t,e)}function ot(t,e){return void 0===e&&(e=\"utf-8\"),e=e||\"utf-8\",i().platform.decode(t,e)}function at(t,e,n){if(0===e)return 0;if(1===e)return t[0];for(var r=t[t.length-1],o=0;o<t.length-1;++o)r+=n[o]*t[o];return r}function it(t,e,n){if(0===e)return[];if(1===e)return[t];for(var r=new Array(e),o=0;o<r.length-1;++o)r[o]=Math.floor(t/n[o]),t-=r[o]*n[o];return r[r.length-1]=t,r}var st=Object.freeze({shuffle:y,clamp:x,nearestLargerEven:b,sum:w,randUniform:function(t,e){var n=Math.random();return e*n+(1-n)*t},distSquared:function(t,e){for(var n=0,r=0;r<t.length;r++){var o=Number(t[r])-Number(e[r]);n+=o*o}return n},assert:C,assertShapesMatch:E,assertNonNull:R,flatten:I,sizeFromShape:k,isScalarShape:function(t){return 0===t.length},arraysEqual:S,isInt:A,tanh:T,sizeToSquarishShape:D,createShuffledIndices:function(t){for(var e=new Uint32Array(t),n=0;n<t;++n)e[n]=n;return y(e),e},rightPad:N,repeatedTry:F,inferFromImplicitShape:_,parseAxisParam:O,squeezeShape:M,getTypedArrayFromDType:B,getArrayFromDType:P,checkConversionForErrors:L,isValidDtype:W,hasEncodingLoss:U,isTypedArray:V,bytesPerElement:z,bytesFromStringArray:G,isString:H,isBoolean:q,isNumber:K,inferDtype:j,isFunction:X,nearestDivisor:Y,computeStrides:$,toTypedArray:Q,toNestedArray:J,makeOnesTypedArray:Z,makeZerosTypedArray:tt,now:et,assertNonNegativeIntegerDimensions:nt,fetch:function(t,e){return i().platform.fetch(t,e)},encodeString:rt,decodeString:ot,locToIndex:at,indexToLoc:it}),ut=function(){function t(t,e){this.backendTimer=t,this.logger=e,null==e&&(this.logger=new ct)}return t.prototype.profileKernel=function(t,e,n){var r,o=this,a=this.backendTimer.time((function(){r=n()}));return r.forEach((function(n){n.data().then((function(r){!function(t,e,n){if(\"float32\"!==e)return!1;for(var r=0;r<t.length;r++){var o=t[r];if(isNaN(o)||!isFinite(o))return console.warn(\"Found \"+o+\" in the result of '\"+n+\"'\"),!0}}(r,n.dtype,t),a.then((function(a){var i=\"\";null!=a.getExtraProfileInfo&&(i=a.getExtraProfileInfo()),o.logger.logKernelProfile(t,n,r,a.kernelMs,e,i)}))}))})),r},t}();var ct=function(){function t(){}return t.prototype.logKernelProfile=function(t,e,n,r,o,a){var i=\"number\"==typeof r?N(r+\"ms\",9):r.error,s=N(t,25),u=e.rank,c=e.size,l=N(e.shape.toString(),14),h=\"\";for(var f in o){var d=o[f].shape||e.shape,p=d.length;h+=f+\": \"+p+\"D \"+(p>0?d:\"\")+\" \"}console.log(\"%c\"+s+\"\\t%c\"+i+\"\\t%c\"+u+\"D \"+l+\"\\t%c\"+c+\"\\t%c\"+h+\"\\t%c\"+a,\"font-weight:bold\",\"color:red\",\"color:blue\",\"color: orange\",\"color: green\",\"color: steelblue\")},t}();var lt=20,ht=3,ft=7;function dt(t,e,n,r){var o=$(e),a=function(t,e,n,r){var o=k(e),a=r[r.length-1],i=new Array(a).fill(0),s=e.length,u=\"complex64\"===n?gt(t):t;if(s>1)for(var c=0;c<o/a;c++)for(var l=c*a,h=0;h<a;h++)i[h]=Math.max(i[h],pt(u[l+h],0,n).length);return i}(t,e,n,o),i=e.length,s=function t(e,n,r,o,a,i){void 0===i&&(i=!0);var s=\"complex64\"===r?2:1,u=n[0],c=n.length;if(0===c){return\"complex64\"===r?[pt(gt(e)[0],0,r)]:\"bool\"===r?[vt(e[0])]:[e[0].toString()]}if(1===c){if(u>lt){var l=ht*s,h=Array.from(e.slice(0,l)),f=Array.from(e.slice((u-ht)*s,u*s));return\"complex64\"===r&&(h=gt(h),f=gt(f)),[\"[\"+h.map((function(t,e){return pt(t,a[e],r)})).join(\", \")+\", ..., \"+f.map((function(t,e){return pt(t,a[u-ht+e],r)})).join(\", \")+\"]\"]}return[\"[\"+(\"complex64\"===r?gt(e):Array.from(e)).map((function(t,e){return pt(t,a[e],r)})).join(\", \")+\"]\"]}var d=n.slice(1),p=o.slice(1),v=o[0]*s,g=[];if(u>lt){for(var m=0;m<ht;m++){var y=(x=m*v)+v;g.push.apply(g,t(e.slice(x,y),d,r,p,a,!1))}g.push(\"...\");for(m=u-ht;m<u;m++){y=(x=m*v)+v;g.push.apply(g,t(e.slice(x,y),d,r,p,a,m===u-1))}}else for(m=0;m<u;m++){var x;y=(x=m*v)+v;g.push.apply(g,t(e.slice(x,y),d,r,p,a,m===u-1))}var b=2===c?\",\":\"\";g[0]=\"[\"+g[0]+b;for(m=1;m<g.length-1;m++)g[m]=\" \"+g[m]+b;var w=\",\\n\";for(m=2;m<c;m++)w+=\"\\n\";return g[g.length-1]=\" \"+g[g.length-1]+\"]\"+(i?\"\":w),g}(t,e,n,o,a),u=[\"Tensor\"];return r&&(u.push(\"  dtype: \"+n),u.push(\"  rank: \"+i),u.push(\"  shape: [\"+e+\"]\"),u.push(\"  values:\")),u.push(s.map((function(t){return\"    \"+t})).join(\"\\n\")),u.join(\"\\n\")}function pt(t,e,n){return N(Array.isArray(t)?parseFloat(t[0].toFixed(ft))+\" + \"+parseFloat(t[1].toFixed(ft))+\"j\":H(t)?\"'\"+t+\"'\":\"bool\"===n?vt(t):parseFloat(t.toFixed(ft)).toString(),e)}function vt(t){return 0===t?\"false\":\"true\"}function gt(t){for(var e=[],n=0;n<t.length;n+=2)e.push([t[n],t[n+1]]);return e}var mt=function(){function t(t,e,n){var r=this;if(this.dtype=e,this.shape=t.slice(),this.size=k(t),null!=n){var o=n.length;C(o===this.size,(function(){return\"Length of values '\"+o+\"' does not match the size inferred by the shape '\"+r.size+\"'.\"}))}if(\"complex64\"===e)throw new Error(\"complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).\");this.values=n||P(e,this.size),this.strides=$(t)}return t.prototype.set=function(t){for(var e=this,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];0===n.length&&(n=[0]),C(n.length===this.rank,(function(){return\"The number of provided coordinates (\"+n.length+\") must match the rank (\"+e.rank+\")\"}));var o=this.locToIndex(n);this.values[o]=t},t.prototype.get=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];0===t.length&&(t=[0]);for(var n=0,r=0,o=t;r<o.length;r++){var a=o[r];if(a<0||a>=this.shape[n]){var i=\"Requested out of range element at \"+t+\".   Buffer shape=\"+this.shape;throw new Error(i)}n++}for(var s=t[t.length-1],u=0;u<t.length-1;++u)s+=this.strides[u]*t[u];return this.values[s]},t.prototype.locToIndex=function(t){if(0===this.rank)return 0;if(1===this.rank)return t[0];for(var e=t[t.length-1],n=0;n<t.length-1;++n)e+=this.strides[n]*t[n];return e},t.prototype.indexToLoc=function(t){if(0===this.rank)return[];if(1===this.rank)return[t];for(var e=new Array(this.shape.length),n=0;n<e.length-1;++n)e[n]=Math.floor(t/this.strides[n]),t-=e[n]*this.strides[n];return e[e.length-1]=t,e},Object.defineProperty(t.prototype,\"rank\",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),t.prototype.toTensor=function(){return yt().makeTensor(this.values,this.shape,this.dtype)},t}(),yt=null,xt=null,bt=null;var wt=function(){function t(t,e,n,r){this.kept=!1,this.isDisposedInternal=!1,this.shape=t.slice(),this.dtype=e||\"float32\",this.size=k(t),this.strides=$(t),this.dataId=n,this.id=r,this.rankType=this.rank<5?this.rank.toString():\"higher\"}return t.prototype.flatten=function(){return this.throwIfDisposed(),this.as1D()},t.prototype.asScalar=function(){return this.throwIfDisposed(),C(1===this.size,(function(){return\"The array must have only 1 element.\"})),this.reshape([])},t.prototype.as1D=function(){return this.throwIfDisposed(),this.reshape([this.size])},t.prototype.as2D=function(t,e){return this.throwIfDisposed(),this.reshape([t,e])},t.prototype.as3D=function(t,e,n){return this.throwIfDisposed(),this.reshape([t,e,n])},t.prototype.as4D=function(t,e,n,r){return this.throwIfDisposed(),this.reshape([t,e,n,r])},t.prototype.as5D=function(t,e,n,r,o){return this.throwIfDisposed(),this.reshape([t,e,n,r,o])},t.prototype.asType=function(t){return this.throwIfDisposed(),xt.cast(this,t)},Object.defineProperty(t.prototype,\"rank\",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),t.prototype.buffer=function(){return n(this,void 0,void 0,(function(){var t;return r(this,(function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,xt.buffer(this.shape,this.dtype,t)]}}))}))},t.prototype.bufferSync=function(){return xt.buffer(this.shape,this.dtype,this.dataSync())},t.prototype.array=function(){return n(this,void 0,void 0,(function(){var t;return r(this,(function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,J(this.shape,t)]}}))}))},t.prototype.arraySync=function(){return J(this.shape,this.dataSync())},t.prototype.data=function(){return n(this,void 0,void 0,(function(){var t,e;return r(this,(function(n){switch(n.label){case 0:return this.throwIfDisposed(),t=yt().read(this.dataId),\"string\"!==this.dtype?[3,2]:[4,t];case 1:e=n.sent();try{return[2,e.map((function(t){return ot(t)}))]}catch(t){throw new Error(\"Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().\")}n.label=2;case 2:return[2,t]}}))}))},t.prototype.dataSync=function(){this.throwIfDisposed();var t=yt().readSync(this.dataId);if(\"string\"===this.dtype)try{return t.map((function(t){return ot(t)}))}catch(t){throw new Error(\"Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().\")}return t},t.prototype.bytes=function(){return n(this,void 0,void 0,(function(){var t;return r(this,(function(e){switch(e.label){case 0:return this.throwIfDisposed(),[4,yt().read(this.dataId)];case 1:return t=e.sent(),\"string\"===this.dtype?[2,t]:[2,new Uint8Array(t.buffer)]}}))}))},t.prototype.dispose=function(){this.isDisposed||(yt().disposeTensor(this),this.isDisposedInternal=!0)},Object.defineProperty(t.prototype,\"isDisposed\",{get:function(){return this.isDisposedInternal},enumerable:!0,configurable:!0}),t.prototype.throwIfDisposed=function(){if(this.isDisposed)throw new Error(\"Tensor is disposed.\")},t.prototype.toFloat=function(){return this.asType(\"float32\")},t.prototype.toInt=function(){return this.asType(\"int32\")},t.prototype.toBool=function(){return this.asType(\"bool\")},t.prototype.print=function(t){return void 0===t&&(t=!1),xt.print(this,t)},t.prototype.reshape=function(t){return this.throwIfDisposed(),xt.reshape(this,t)},t.prototype.reshapeAs=function(t){return this.throwIfDisposed(),this.reshape(t.shape)},t.prototype.expandDims=function(t){return void 0===t&&(t=0),xt.expandDims(this,t)},t.prototype.cumsum=function(t,e,n){return void 0===t&&(t=0),void 0===e&&(e=!1),void 0===n&&(n=!1),xt.cumsum(this,t,e,n)},t.prototype.squeeze=function(t){return this.throwIfDisposed(),xt.squeeze(this,t)},t.prototype.clone=function(){return this.throwIfDisposed(),xt.clone(this)},t.prototype.toString=function(t){return void 0===t&&(t=!1),dt(this.dataSync(),this.shape,this.dtype,t)},t.prototype.gather=function(t,e){return void 0===e&&(e=0),this.throwIfDisposed(),xt.gather(this,t,e)},t.prototype.matMul=function(t,e,n){return void 0===e&&(e=!1),void 0===n&&(n=!1),this.throwIfDisposed(),xt.matMul(this,t,e,n)},t.prototype.dot=function(t){return this.throwIfDisposed(),xt.dot(this,t)},t.prototype.norm=function(t,e,n){return void 0===t&&(t=\"euclidean\"),void 0===e&&(e=null),void 0===n&&(n=!1),this.throwIfDisposed(),xt.norm(this,t,e,n)},t.prototype.slice=function(t,e){return this.throwIfDisposed(),xt.slice(this,t,e)},t.prototype.reverse=function(t){return this.throwIfDisposed(),xt.reverse(this,t)},t.prototype.concat=function(e,n){return void 0===n&&(n=0),this.throwIfDisposed(),e instanceof t&&(e=[e]),xt.concat([this].concat(e),n)},t.prototype.split=function(t,e){return void 0===e&&(e=0),this.throwIfDisposed(),xt.split(this,t,e)},t.prototype.stack=function(t,e){return void 0===e&&(e=0),xt.stack([this,t],e)},t.prototype.unstack=function(t){return void 0===t&&(t=0),xt.unstack(this,t)},t.prototype.batchNormalization=function(t,e,n,r,o){return void 0===n&&(n=.001),bt(\"tf.batchNormalization() is going away. Use tf.batchNorm() instead, and note the positional argument change of scale, offset, and varianceEpsilon\"),this.batchNorm(t,e,o,r,n)},t.prototype.all=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.all(this,t,e)},t.prototype.any=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.any(this,t,e)},t.prototype.logSumExp=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.logSumExp(this,t,e)},t.prototype.sum=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.sum(this,t,e)},t.prototype.prod=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.prod(this,t,e)},t.prototype.mean=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.mean(this,t,e)},t.prototype.min=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.min(this,t,e)},t.prototype.max=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.max(this,t,e)},t.prototype.argMin=function(t){return void 0===t&&(t=null),this.throwIfDisposed(),xt.argMin(this,t)},t.prototype.argMax=function(t){return void 0===t&&(t=null),this.throwIfDisposed(),xt.argMax(this,t)},t.prototype.cast=function(t){return this.throwIfDisposed(),xt.cast(this,t)},t.prototype.addStrict=function(t){return this.throwIfDisposed(),xt.addStrict(this,t)},t.prototype.atan2=function(t){return this.throwIfDisposed(),xt.atan2(this,t)},t.prototype.sub=function(t){return this.throwIfDisposed(),xt.sub(this,t)},t.prototype.subStrict=function(t){return this.throwIfDisposed(),xt.subStrict(this,t)},t.prototype.pow=function(t){return this.throwIfDisposed(),xt.pow(this,t)},t.prototype.powStrict=function(t){return this.throwIfDisposed(),xt.powStrict(this,t)},t.prototype.mul=function(t){return this.throwIfDisposed(),xt.mul(this,t)},t.prototype.mulStrict=function(t){return this.throwIfDisposed(),xt.mulStrict(this,t)},t.prototype.floorDiv=function(t){return this.throwIfDisposed(),xt.floorDiv(this,t)},t.prototype.divStrict=function(t){return this.throwIfDisposed(),xt.divStrict(this,t)},t.prototype.minimum=function(t){return this.throwIfDisposed(),xt.minimum(this,t)},t.prototype.minimumStrict=function(t){return this.throwIfDisposed(),xt.minimumStrict(this,t)},t.prototype.maximum=function(t){return this.throwIfDisposed(),xt.maximum(this,t)},t.prototype.maximumStrict=function(t){return this.throwIfDisposed(),xt.maximumStrict(this,t)},t.prototype.mod=function(t){return this.throwIfDisposed(),xt.mod(this,t)},t.prototype.modStrict=function(t){return this.throwIfDisposed(),xt.modStrict(this,t)},t.prototype.squaredDifferenceStrict=function(t){return this.throwIfDisposed(),xt.squaredDifferenceStrict(this,t)},t.prototype.notEqual=function(t){return this.throwIfDisposed(),xt.notEqual(this,t)},t.prototype.notEqualStrict=function(t){return this.throwIfDisposed(),xt.notEqualStrict(this,t)},t.prototype.less=function(t){return this.throwIfDisposed(),xt.less(this,t)},t.prototype.lessStrict=function(t){return this.throwIfDisposed(),xt.lessStrict(this,t)},t.prototype.equal=function(t){return this.throwIfDisposed(),xt.equal(this,t)},t.prototype.equalStrict=function(t){return this.throwIfDisposed(),xt.equalStrict(this,t)},t.prototype.lessEqual=function(t){return this.throwIfDisposed(),xt.lessEqual(this,t)},t.prototype.lessEqualStrict=function(t){return this.throwIfDisposed(),xt.lessEqualStrict(this,t)},t.prototype.greater=function(t){return this.throwIfDisposed(),xt.greater(this,t)},t.prototype.greaterStrict=function(t){return this.throwIfDisposed(),xt.greaterStrict(this,t)},t.prototype.greaterEqual=function(t){return this.throwIfDisposed(),xt.greaterEqual(this,t)},t.prototype.greaterEqualStrict=function(t){return this.throwIfDisposed(),xt.greaterEqualStrict(this,t)},t.prototype.logicalAnd=function(t){return this.throwIfDisposed(),xt.logicalAnd(this,t)},t.prototype.logicalOr=function(t){return this.throwIfDisposed(),xt.logicalOr(this,t)},t.prototype.logicalNot=function(){return this.throwIfDisposed(),xt.logicalNot(this)},t.prototype.logicalXor=function(t){return this.throwIfDisposed(),xt.logicalXor(this,t)},t.prototype.where=function(t,e){return this.throwIfDisposed(),xt.where(t,this,e)},t.prototype.neg=function(){return this.throwIfDisposed(),xt.neg(this)},t.prototype.ceil=function(){return this.throwIfDisposed(),xt.ceil(this)},t.prototype.floor=function(){return this.throwIfDisposed(),xt.floor(this)},t.prototype.sign=function(){return this.throwIfDisposed(),xt.sign(this)},t.prototype.isNaN=function(){return this.throwIfDisposed(),xt.isNaN(this)},t.prototype.isInf=function(){return this.throwIfDisposed(),xt.isInf(this)},t.prototype.isFinite=function(){return this.throwIfDisposed(),xt.isFinite(this)},t.prototype.exp=function(){return this.throwIfDisposed(),xt.exp(this)},t.prototype.expm1=function(){return this.throwIfDisposed(),xt.expm1(this)},t.prototype.log=function(){return this.throwIfDisposed(),xt.log(this)},t.prototype.log1p=function(){return this.throwIfDisposed(),xt.log1p(this)},t.prototype.sqrt=function(){return this.throwIfDisposed(),xt.sqrt(this)},t.prototype.rsqrt=function(){return this.throwIfDisposed(),xt.rsqrt(this)},t.prototype.square=function(){return this.throwIfDisposed(),xt.square(this)},t.prototype.reciprocal=function(){return this.throwIfDisposed(),xt.reciprocal(this)},t.prototype.abs=function(){return this.throwIfDisposed(),xt.abs(this)},t.prototype.clipByValue=function(t,e){return this.throwIfDisposed(),xt.clipByValue(this,t,e)},t.prototype.relu=function(){return this.throwIfDisposed(),xt.relu(this)},t.prototype.relu6=function(){return this.throwIfDisposed(),xt.relu6(this)},t.prototype.elu=function(){return this.throwIfDisposed(),xt.elu(this)},t.prototype.selu=function(){return this.throwIfDisposed(),xt.selu(this)},t.prototype.leakyRelu=function(t){return void 0===t&&(t=.2),this.throwIfDisposed(),xt.leakyRelu(this,t)},t.prototype.prelu=function(t){return this.throwIfDisposed(),xt.prelu(this,t)},t.prototype.sigmoid=function(){return this.throwIfDisposed(),xt.sigmoid(this)},t.prototype.logSigmoid=function(){return this.throwIfDisposed(),xt.logSigmoid(this)},t.prototype.softplus=function(){return this.throwIfDisposed(),xt.softplus(this)},t.prototype.zerosLike=function(){return this.throwIfDisposed(),xt.zerosLike(this)},t.prototype.onesLike=function(){return this.throwIfDisposed(),xt.onesLike(this)},t.prototype.sin=function(){return this.throwIfDisposed(),xt.sin(this)},t.prototype.cos=function(){return this.throwIfDisposed(),xt.cos(this)},t.prototype.tan=function(){return this.throwIfDisposed(),xt.tan(this)},t.prototype.asin=function(){return this.throwIfDisposed(),xt.asin(this)},t.prototype.acos=function(){return this.throwIfDisposed(),xt.acos(this)},t.prototype.atan=function(){return this.throwIfDisposed(),xt.atan(this)},t.prototype.sinh=function(){return this.throwIfDisposed(),xt.sinh(this)},t.prototype.cosh=function(){return this.throwIfDisposed(),xt.cosh(this)},t.prototype.tanh=function(){return this.throwIfDisposed(),xt.tanh(this)},t.prototype.asinh=function(){return this.throwIfDisposed(),xt.asinh(this)},t.prototype.acosh=function(){return this.throwIfDisposed(),xt.acosh(this)},t.prototype.atanh=function(){return this.throwIfDisposed(),xt.atanh(this)},t.prototype.erf=function(){return this.throwIfDisposed(),xt.erf(this)},t.prototype.round=function(){return this.throwIfDisposed(),xt.round(this)},t.prototype.step=function(t){return void 0===t&&(t=0),this.throwIfDisposed(),xt.step(this,t)},t.prototype.softmax=function(t){return void 0===t&&(t=-1),this.throwIfDisposed(),xt.softmax(this,t)},t.prototype.logSoftmax=function(t){return void 0===t&&(t=-1),this.throwIfDisposed(),xt.logSoftmax(this,t)},t.prototype.resizeBilinear=function(t,e){return void 0===e&&(e=!1),this.throwIfDisposed(),xt.image.resizeBilinear(this,t,e)},t.prototype.resizeNearestNeighbor=function(t,e){return void 0===e&&(e=!1),this.throwIfDisposed(),xt.image.resizeNearestNeighbor(this,t,e)},t.prototype.conv1d=function(t,e,n,r,o,a){return void 0===r&&(r=\"NWC\"),void 0===o&&(o=1),this.throwIfDisposed(),xt.conv1d(this,t,e,n,r,o,a)},t.prototype.conv2d=function(t,e,n,r,o,a){return void 0===r&&(r=\"NHWC\"),void 0===o&&(o=[1,1]),this.throwIfDisposed(),xt.conv2d(this,t,e,n,r,o,a)},t.prototype.conv2dTranspose=function(t,e,n,r,o){return this.throwIfDisposed(),xt.conv2dTranspose(this,t,e,n,r,o)},t.prototype.depthwiseConv2D=function(t,e,n,r,o,a){return void 0===r&&(r=\"NHWC\"),void 0===o&&(o=[1,1]),this.throwIfDisposed(),xt.depthwiseConv2d(this,t,e,n,r,o,a)},t.prototype.separableConv2d=function(t,e,n,r,o,a){return void 0===o&&(o=[1,1]),void 0===a&&(a=\"NHWC\"),this.throwIfDisposed(),xt.separableConv2d(this,t,e,n,r,o,a)},t.prototype.avgPool=function(t,e,n,r){return this.throwIfDisposed(),xt.avgPool(this,t,e,n,r)},t.prototype.maxPool=function(t,e,n,r){return this.throwIfDisposed(),xt.maxPool(this,t,e,n,r)},t.prototype.localResponseNormalization=function(t,e,n,r){return void 0===t&&(t=5),void 0===e&&(e=1),void 0===n&&(n=1),void 0===r&&(r=.5),xt.localResponseNormalization(this,t,e,n,r)},t.prototype.pool=function(t,e,n,r,o){return this.throwIfDisposed(),xt.pool(this,t,e,n,r,o)},t.prototype.variable=function(t,e,n){return void 0===t&&(t=!0),this.throwIfDisposed(),yt().makeVariable(this,t,e,n)},t.prototype.unsortedSegmentSum=function(t,e){return this.throwIfDisposed(),xt.unsortedSegmentSum(this,t,e)},t.prototype.batchToSpaceND=function(t,e){return this.throwIfDisposed(),xt.batchToSpaceND(this,t,e)},t.prototype.spaceToBatchND=function(t,e){return this.throwIfDisposed(),xt.spaceToBatchND(this,t,e)},t.prototype.topk=function(t,e){return void 0===t&&(t=1),void 0===e&&(e=!0),this.throwIfDisposed(),xt.topk(this,t,e)},t.prototype.stridedSlice=function(t,e,n,r,o,a,i,s){return void 0===r&&(r=0),void 0===o&&(o=0),void 0===a&&(a=0),void 0===i&&(i=0),void 0===s&&(s=0),this.throwIfDisposed(),xt.stridedSlice(this,t,e,n,r,o,a,i,s)},t.prototype.depthToSpace=function(t,e){return this.throwIfDisposed(),xt.depthToSpace(this,t,e)},t.prototype.fft=function(){return this.throwIfDisposed(),xt.spectral.fft(this)},t.prototype.ifft=function(){return this.throwIfDisposed(),xt.spectral.ifft(this)},t.prototype.rfft=function(){return this.throwIfDisposed(),xt.spectral.rfft(this)},t.prototype.irfft=function(){return this.throwIfDisposed(),xt.spectral.irfft(this)},t}();Object.defineProperty(wt,Symbol.hasInstance,{value:function(t){return!!t&&null!=t.dataId&&null!=t.shape&&null!=t.dtype}});var Ct,Et,Rt,It,kt,St=function(t){function n(e,n,r,o){var a=t.call(this,e.shape,e.dtype,e.dataId,o)||this;return a.trainable=n,a.name=r,a}return e(n,t),n.prototype.assign=function(t){if(t.dtype!==this.dtype)throw new Error(\"dtype of the new value (\"+t.dtype+\") and previous value (\"+this.dtype+\") must match\");if(!S(t.shape,this.shape))throw new Error(\"shape of the new value (\"+t.shape+\") and previous value (\"+this.shape+\") must match\");yt().disposeTensor(this),this.dataId=t.dataId,yt().incRef(this,null)},n.prototype.dispose=function(){yt().disposeVariable(this),this.isDisposedInternal=!0},n}(wt);Object.defineProperty(St,Symbol.hasInstance,{value:function(t){return t instanceof wt&&null!=t.assign&&t.assign instanceof Function}}),function(t){t.R0=\"R0\",t.R1=\"R1\",t.R2=\"R2\",t.R3=\"R3\",t.R4=\"R4\",t.R5=\"R5\",t.R6=\"R6\"}(Ct||(Ct={})),function(t){t.float32=\"float32\",t.int32=\"int32\",t.bool=\"int32\",t.complex64=\"complex64\"}(Et||(Et={})),function(t){t.float32=\"float32\",t.int32=\"int32\",t.bool=\"bool\",t.complex64=\"complex64\"}(Rt||(Rt={})),function(t){t.float32=\"float32\",t.int32=\"float32\",t.bool=\"float32\",t.complex64=\"complex64\"}(It||(It={})),function(t){t.float32=\"complex64\",t.int32=\"complex64\",t.bool=\"complex64\",t.complex64=\"complex64\"}(kt||(kt={}));var At={float32:It,int32:Et,bool:Rt,complex64:kt};function Tt(t,e){if(\"string\"===t||\"string\"===e){if(\"string\"===t&&\"string\"===e)return\"string\";throw new Error(\"Can not upcast \"+t+\" with \"+e)}return At[t][e]}function Dt(t){return Tt(t,\"int32\")}function Nt(t,e){if(t.dtype===e.dtype)return[t,e];var n=Tt(t.dtype,e.dtype);return[t.cast(n),e.cast(n)]}function Ft(t,e){C(t.dtype===e.dtype,(function(){return\"The dtypes of the first(\"+t.dtype+\") and second(\"+e.dtype+\") input must match\"}))}function _t(t){var e=[];return function t(e,n,r){if(null==e)return;if(e instanceof wt)return void n.push(e);if(o=e,!Array.isArray(o)&&\"object\"!=typeof o)return;var o;var a=e;for(var i in a){var s=a[i];r.has(s)||(r.add(s),t(s,n,r))}}(t,e,new Set),e}var Ot,Mt=Object.freeze({makeTypesMatch:Nt,assertTypesMatch:Ft,isTensorInList:function(t,e){return e.some((function(e){return e.id===t.id}))},getTensorsInContainer:_t}),Bt=function(){function t(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}return t.prototype.dispose=function(){for(var t in this.registeredVariables)this.registeredVariables[t].dispose()},t}(),Pt=function(){function t(t){this.ENV=t,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new Bt}return t.prototype.ready=function(){return n(this,void 0,void 0,(function(){var t,e,n;return r(this,(function(r){switch(r.label){case 0:if(null!=this.pendingBackendInit)return[2,this.pendingBackendInit.then((function(){}))];if(null!=this.backendInstance)return[2];t=this.getSortedBackends(),e=0,r.label=1;case 1:return e<t.length?(n=t[e],[4,this.initializeBackend(n).success]):[3,5];case 2:return r.sent()?[4,this.setBackend(n)]:[3,4];case 3:return r.sent(),[2];case 4:return e++,[3,1];case 5:throw new Error(\"Could not initialize any backends, all backend initializations failed.\")}}))}))},Object.defineProperty(t.prototype,\"backend\",{get:function(){if(null!=this.pendingBackendInit)throw new Error(\"Backend '\"+this.backendName+\"' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods\");if(null==this.backendInstance){var t=this.initializeBackendsAndReturnBest(),e=t.name;if(t.asyncInit)throw new Error(\"The highest priority backend '\"+e+\"' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods\");this.setBackend(e)}return this.backendInstance},enumerable:!0,configurable:!0}),t.prototype.backendNames=function(){return Object.keys(this.registryFactory)},t.prototype.findBackend=function(t){if(!(t in this.registry)){if(!(t in this.registryFactory))return null;if(this.initializeBackend(t).asyncInit)return null}return this.registry[t]},t.prototype.findBackendFactory=function(t){return t in this.registryFactory?this.registryFactory[t].factory:null},t.prototype.registerBackend=function(t,e,n){return void 0===n&&(n=1),t in this.registryFactory?(console.warn(t+\" backend was already registered. Reusing existing backend factory.\"),!1):(this.registryFactory[t]={factory:e,priority:n},!0)},t.prototype.setBackend=function(t){return n(this,void 0,void 0,(function(){var e,n,o;return r(this,(function(r){switch(r.label){case 0:if(null==this.registryFactory[t])throw new Error(\"Backend name '\"+t+\"' not found in registry\");return this.backendName=t,null!=this.registry[t]?[3,4]:(this.backendInstance=null,e=this.initializeBackend(t),n=e.success,e.asyncInit?[4,n]:[3,2]);case 1:return o=r.sent(),[3,3];case 2:o=n,r.label=3;case 3:if(!o)return[2,!1];r.label=4;case 4:return this.backendInstance=this.registry[t],this.setupRegisteredKernels(),this.profiler=new ut(this.backendInstance),[2,!0]}}))}))},t.prototype.setupRegisteredKernels=function(){var t=this;f(this.backendName).forEach((function(e){null!=e.setupFunc&&e.setupFunc(t.backendInstance)}))},t.prototype.disposeRegisteredKernels=function(t){var e=this;f(t).forEach((function(n){null!=n.disposeFunc&&n.disposeFunc(e.registry[t])}))},t.prototype.initializeBackend=function(t){var e=this,n=this.registryFactory[t];if(null==n)throw new Error(\"Cannot initialize backend \"+t+\", no registration found.\");try{var r=n.factory();if(Promise.resolve(r)===r){var o=++this.pendingBackendInitId,a=r.then((function(n){return!(o<e.pendingBackendInitId)&&(e.registry[t]=n,e.pendingBackendInit=null,!0)})).catch((function(n){return!(o<e.pendingBackendInitId)&&(e.pendingBackendInit=null,console.warn(\"Initialization of backend \"+t+\" failed\"),console.warn(n.stack||n.message),!1)}));return this.pendingBackendInit=a,{success:a,asyncInit:!0}}return this.registry[t]=r,{success:!0,asyncInit:!1}}catch(e){return console.warn(\"Initialization of backend \"+t+\" failed\"),console.warn(e.stack||e.message),{success:!1,asyncInit:!1}}},t.prototype.removeBackend=function(t){if(!(t in this.registryFactory))throw new Error(t+\" backend not found in registry\");this.backendName===t&&null!=this.pendingBackendInit&&this.pendingBackendInitId++,t in this.registry&&(this.disposeRegisteredKernels(t),this.registry[t].dispose(),delete this.registry[t]),delete this.registryFactory[t],this.backendName===t&&(this.pendingBackendInit=null,this.backendName=null,this.backendInstance=null)},t.prototype.getSortedBackends=function(){var t=this;if(0===Object.keys(this.registryFactory).length)throw new Error(\"No backend found in registry.\");return Object.keys(this.registryFactory).sort((function(e,n){return t.registryFactory[n].priority-t.registryFactory[e].priority}))},t.prototype.initializeBackendsAndReturnBest=function(){for(var t=this.getSortedBackends(),e=0;e<t.length;e++){var n=t[e],r=this.initializeBackend(n),o=r.success,a=r.asyncInit;if(a||o)return{name:n,asyncInit:a}}throw new Error(\"Could not initialize any backends, all backend initializations failed.\")},t.prototype.moveData=function(t,e){var n=this.state.tensorInfo.get(e),r=n.backend,o=this.readSync(e);r.disposeData(e),n.backend=t,t.move(e,o,n.shape,n.dtype),this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack[this.state.numDataMovesStack.length-1]++},t.prototype.tidy=function(t,e){var n,r=this,o=null;if(null==e){if(\"function\"!=typeof t)throw new Error(\"Please provide a function to tidy()\");e=t}else{if(\"string\"!=typeof t&&!(t instanceof String))throw new Error(\"When calling with two arguments, the first argument to tidy() must be a string\");if(\"function\"!=typeof e)throw new Error(\"When calling with two arguments, the 2nd argument to tidy() must be a function\");o=t}return this.scopedRun((function(){return r.startScope(o)}),(function(){return r.endScope(n)}),(function(){return(n=e())instanceof Promise&&console.error(\"Cannot return a Promise inside of tidy.\"),n}))},t.prototype.scopedRun=function(t,e,n){t();try{var r=n();return e(),r}catch(t){throw e(),t}},t.prototype.nextTensorId=function(){return t.nextTensorId++},t.prototype.nextVariableId=function(){return t.nextVariableId++},t.prototype.clone=function(t){var e=this.makeTensorFromDataId(t.dataId,t.shape,t.dtype),n={x:t};return this.addTapeNode(this.state.activeScope.name,n,[e],(function(t){return{x:function(){return t.toFloat()}}}),[],{}),e},t.prototype.runKernel=function(t,e,n,r,o){return this.runKernelFunc(null,e,null,t,n,r,o)},t.prototype.shouldCheckForMemLeaks=function(){return this.ENV.getBool(\"IS_TEST\")},t.prototype.checkKernelForMemLeak=function(t,e,n){var r=this.backend.numDataIds(),o=0;n.forEach((function(t){o+=\"complex64\"===t.dtype?3:1}));var a=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=r-e-o-a;if(i>0)throw new Error(\"Backend '\"+this.backendName+\"' has an internal memory leak (\"+i+\" data ids) after running '\"+t+\"'\")},t.prototype.runKernelFunc=function(t,e,n,r,o,a,i){var s,u=this,c=[],h=this.isTapeOn();null==r&&(r=null!=this.state.activeScope?this.state.activeScope.name:\"\");var f,d=this.state.numBytes,p=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);var v,g=l(r,this.backendName);if(null!=g)f=function(){var t=u.backend.numDataIds();v=g.kernelFunc({inputs:e,attrs:o,backend:u.backend});var n=Array.isArray(v)?v:[v];u.shouldCheckForMemLeaks()&&u.checkKernelForMemLeak(r,t,n);var s=n.map((function(t){var e=t.dataId,n=t.shape,r=t.dtype;return u.makeTensorFromDataId(e,n,r)}));if(h){var l=u.getTensorsForGradient(r,e,s);if(null==l){null==i&&(i=[]);var f=s.filter((function(t,e){return i[e]}));l=(a||[]).slice().concat(f)}c=u.saveTensorsForBackwardMode(l)}return s};else{var m=function(t){h&&(c=t.map((function(t){return u.keep(u.clone(t))})))};f=function(){var e=u.backend.numDataIds();v=u.tidy((function(){return t(u.backend,m)}));var n=Array.isArray(v)?v:[v];return u.shouldCheckForMemLeaks()&&u.checkKernelForMemLeak(r,e,n),n}}return this.scopedRun((function(){return u.state.kernelDepth++}),(function(){return u.state.kernelDepth--}),(function(){s=u.ENV.getBool(\"DEBUG\")?u.profiler.profileKernel(r,e,(function(){return f()})):f()})),h&&this.addTapeNode(r,e,s,n,c,o),this.state.profiling&&this.state.activeProfile.kernels.push({name:r,bytesAdded:this.state.numBytes-d,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-p,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(e).map((function(t){return e[t].shape})),outputShapes:s.map((function(t){return t.shape}))}),Array.isArray(v)?s:s[0]},t.prototype.saveTensorsForBackwardMode=function(t){var e=this;return t.map((function(t){return e.keep(e.clone(t))}))},t.prototype.getTensorsForGradient=function(t,e,n){var r=h(t);if(null!=r){var o=r.inputsToSave||[],a=r.outputsToSave||[],i=void 0;r.saveAllInputs?(C(Array.isArray(e),(function(){return\"saveAllInputs is true, expected inputs to be an array.\"})),i=Object.keys(e).map((function(t){return e[t]}))):i=o.map((function(t){return e[t]}));var s=n.filter((function(t,e){return a[e]}));return i.concat(s)}return null},t.prototype.makeTensor=function(t,e,n,r){if(null==t)throw new Error(\"Values passed to engine.makeTensor() are null\");n=n||\"float32\",r=r||this.backend;var o=t;\"string\"===n&&H(t[0])&&(o=t.map((function(t){return rt(t)})));var a=r.write(o,e,n),i=new wt(e,n,a,this.nextTensorId());if(this.incRef(i,r),\"string\"===n){var s=this.state.tensorInfo.get(a),u=G(o);this.state.numBytes+=u-s.bytes,s.bytes=u}return i},t.prototype.makeTensorFromDataId=function(t,e,n,r){var o=new wt(e,n=n||\"float32\",t,this.nextTensorId());return this.incRef(o,r),o},t.prototype.makeVariable=function(t,e,n,r){void 0===e&&(e=!0),n=n||this.nextVariableId().toString(),null!=r&&r!==t.dtype&&(t=t.asType(r));var o=new St(t,e,n,this.nextTensorId());if(null!=this.state.registeredVariables[o.name])throw new Error(\"Variable with name \"+o.name+\" was already registered\");return this.state.registeredVariables[o.name]=o,this.incRef(o,this.backend),o},t.prototype.incRef=function(t,e){var n=this.state.tensorInfo.has(t.dataId)?this.state.tensorInfo.get(t.dataId).refCount:0;if(this.state.numTensors++,\"string\"===t.dtype&&this.state.numStringTensors++,0===n){this.state.numDataBuffers++;var r=0;\"complex64\"!==t.dtype&&\"string\"!==t.dtype&&(r=t.size*z(t.dtype)),this.state.tensorInfo.set(t.dataId,{backend:e||this.backend,dtype:t.dtype,shape:t.shape,bytes:r,refCount:0}),this.state.numBytes+=r}this.state.tensorInfo.get(t.dataId).refCount++,t instanceof St||this.track(t)},t.prototype.disposeTensor=function(t){if(this.state.tensorInfo.has(t.dataId)){this.state.numTensors--,\"string\"===t.dtype&&this.state.numStringTensors--;var e=this.state.tensorInfo.get(t.dataId);e.refCount<=1?(\"complex64\"!==t.dtype&&(this.state.numBytes-=e.bytes),this.state.numDataBuffers--,e.backend.disposeData(t.dataId),this.state.tensorInfo.delete(t.dataId)):this.state.tensorInfo.get(t.dataId).refCount--}},t.prototype.disposeVariables=function(){for(var t in this.state.registeredVariables){var e=this.state.registeredVariables[t];this.disposeVariable(e)}},t.prototype.disposeVariable=function(t){this.disposeTensor(t),null!=this.state.registeredVariables[t.name]&&delete this.state.registeredVariables[t.name]},t.prototype.memory=function(){var t=this.backend.memory();return t.numTensors=this.state.numTensors,t.numDataBuffers=this.state.numDataBuffers,t.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(t.unreliable=!0,null==t.reasons&&(t.reasons=[]),t.reasons.push(\"Memory usage by string tensors is approximate (2 bytes per character)\")),t},t.prototype.profile=function(t){return n(this,void 0,void 0,(function(){var e,n;return r(this,(function(r){return this.state.profiling=!0,e=this.state.numBytes,n=this.state.numTensors,this.state.activeProfile.kernels=[],this.state.activeProfile.result=t(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max.apply(Math,this.state.activeProfile.kernels.map((function(t){return t.totalBytesSnapshot}))),this.state.activeProfile.newBytes=this.state.numBytes-e,this.state.activeProfile.newTensors=this.state.numTensors-n,[2,this.state.activeProfile]}))}))},t.prototype.isTapeOn=function(){return this.state.gradientDepth>0&&0===this.state.kernelDepth},t.prototype.addTapeNode=function(t,e,n,r,o,a){var i=this,s={id:this.state.nextTapeNodeId++,kernelName:t,inputs:e,outputs:n,saved:o},u=h(t);null!=u&&(r=u.gradFunc),null!=r&&(s.gradient=function(t){return t=t.map((function(t,e){if(null==t){var r=n[e],o=tt(r.size,r.dtype);return i.makeTensor(o,r.shape,r.dtype)}return t})),r(t.length>1?t:t[0],o,a)}),this.state.activeTape.push(s)},t.prototype.keep=function(t){return t.kept=!0,t},t.prototype.startTape=function(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++},t.prototype.endTape=function(){this.state.gradientDepth--},t.prototype.startScope=function(t){var e={track:[],name:\"unnamed scope\",id:this.state.nextScopeId++};t&&(e.name=t),this.state.scopeStack.push(e),this.state.activeScope=e},t.prototype.endScope=function(t){for(var e=this,n=_t(t),r=new Set(n.map((function(t){return t.id}))),o=0;o<this.state.activeScope.track.length;o++){var a=this.state.activeScope.track[o];a.kept||r.has(a.id)||a.dispose()}var i=this.state.scopeStack.pop();this.state.activeScope=0===this.state.scopeStack.length?null:this.state.scopeStack[this.state.scopeStack.length-1],n.forEach((function(t){t.kept||t.scopeId!==i.id||e.track(t)}))},t.prototype.gradients=function(t,e,n,r){var o=this;if(void 0===r&&(r=!1),C(e.length>0,(function(){return\"gradients() received an empty list of xs.\"})),null!=n&&\"float32\"!==n.dtype)throw new Error(\"dy must have 'float32' dtype, but has '\"+n.dtype+\"'\");var a=this.scopedRun((function(){return o.startTape()}),(function(){return o.endTape()}),(function(){return o.tidy(\"forward\",t)}));C(a instanceof wt,(function(){return\"The result y returned by f() must be a tensor.\"}));var i=function(t,e,n){for(var r={},o={},a=0;a<e.length;a++)r[e[a].id]=!0;for(a=0;a<t.length;a++){var i=(p=t[a]).inputs;for(var s in i){for(var u=i[s],c=!1,l=0;l<e.length;l++)if(r[u.id]){p.outputs.forEach((function(t){return r[t.id]=!0})),c=!0,o[p.id]=!0;break}if(c)break}}var h={};h[n.id]=!0;var f={};for(a=t.length-1;a>=0;a--)for(i=(p=t[a]).inputs,l=0;l<p.outputs.length;l++)if(h[p.outputs[l].id]){for(var s in i)h[i[s].id]=!0,f[p.id]=!0;break}var d=[];for(a=0;a<t.length;a++){var p;if(o[(p=t[a]).id]&&f[p.id]){var v={};for(var s in p.inputs){var g=p.inputs[s];r[g.id]&&(v[s]=g)}var m=Object.assign({},p);m.inputs=v,m.outputs=p.outputs,d.push(m)}}return d}(this.state.activeTape,e,a);if(!r&&0===i.length&&e.length>0)throw new Error(\"Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.\");return this.tidy(\"backward\",(function(){var t,r,s={};s[a.id]=null==n?(t=a.shape,r=Z(k(t),\"float32\"),Lt.makeTensor(r,t,\"float32\")):n,function(t,e,n){for(var r=function(r){var o=e[r],a=[];if(o.outputs.forEach((function(e){var n=t[e.id];null!=n?a.push(n):a.push(null)})),null==o.gradient)throw new Error(\"Cannot compute gradient: gradient function not found for \"+o.kernelName+\".\");var i=o.gradient(a),s=function(e){if(!(e in i))throw new Error(\"Cannot backprop through input \"+e+\". Available gradients found: \"+Object.keys(i)+\".\");var r=n((function(){return i[e]()}));if(\"float32\"!==r.dtype)throw new Error(\"Error in gradient for op \"+o.kernelName+\". The gradient of input \"+e+\" must have 'float32' dtype, but has '\"+r.dtype+\"'\");var a=o.inputs[e];if(!S(r.shape,a.shape))throw new Error(\"Error in gradient for op \"+o.kernelName+\". The gradient of input '\"+e+\"' has shape '\"+r.shape+\"', which does not match the shape of the input '\"+a.shape+\"'\");if(null==t[a.id])t[a.id]=r;else{var s=t[a.id];t[a.id]=s.add(r),s.dispose()}};for(var u in o.inputs)s(u)},o=e.length-1;o>=0;o--)r(o)}(s,i,(function(t){return o.tidy(t)}));var u=e.map((function(t){return s[t.id]}));return 0===o.state.gradientDepth&&(o.state.activeTape.forEach((function(t){for(var e=0,n=t.saved;e<n.length;e++){n[e].dispose()}})),o.state.activeTape=null),{value:a,grads:u}}))},t.prototype.customGrad=function(t){var e=this;return C(X(t),(function(){return\"The f passed in customGrad(f) must be a function.\"})),function(){for(var n,r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];C(r.every((function(t){return t instanceof wt})),(function(){return\"The args passed in customGrad(f)(x1, x2,...) must all be tensors\"}));var a={};return r.forEach((function(t,e){a[e]=t})),e.runKernelFunc((function(e,o){return C((n=t.apply(void 0,r.concat([o]))).value instanceof wt,(function(){return\"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor\"})),C(X(n.gradFunc),(function(){return\"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function.\"})),n.value}),a,(function(t,e){var o=n.gradFunc(t,e),a=Array.isArray(o)?o:[o];C(a.length===r.length,(function(){return\"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...).\"})),C(a.every((function(t){return t instanceof wt})),(function(){return\"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.\"}));var i={};return a.forEach((function(t,e){i[e]=function(){return t}})),i}))}},t.prototype.readSync=function(t){return this.state.tensorInfo.get(t).backend.readSync(t)},t.prototype.read=function(t){return this.state.tensorInfo.get(t).backend.read(t)},t.prototype.time=function(t){return n(this,void 0,void 0,(function(){var e,n;return r(this,(function(r){switch(r.label){case 0:return e=et(),[4,this.backend.time(t)];case 1:return(n=r.sent()).wallMs=et()-e,[2,n]}}))}))},t.prototype.track=function(t){return null!=this.state.activeScope&&(t.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(t)),t},Object.defineProperty(t.prototype,\"registeredVariables\",{get:function(){return this.state.registeredVariables},enumerable:!0,configurable:!0}),t.prototype.reset=function(){for(var t in this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new Bt,this.registry)this.disposeRegisteredKernels(t),this.registry[t].dispose(),delete this.registry[t];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null},t.nextTensorId=0,t.nextVariableId=0,t}();var Lt=function(){var t=function(){if(null==Ot){var t=void 0;if(\"undefined\"!=typeof window)t=window;else if(\"undefined\"!=typeof global)t=global;else if(\"undefined\"!=typeof process)t=process;else{if(\"undefined\"==typeof self)throw new Error(\"Could not find a global object\");t=self}Ot=t}return Ot}();if(null==t._tfengine){var e=new o(t);t._tfengine=new Pt(e)}return function(t){s=t}(t._tfengine.ENV),yt=function(){return t._tfengine},t._tfengine}();function Wt(){return\"undefined\"!=typeof window&&null!=window.document||\"undefined\"!=typeof WorkerGlobalScope}var Ut=i();Ut.registerFlag(\"DEBUG\",(function(){return!1}),(function(t){t&&console.warn(\"Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.\")})),Ut.registerFlag(\"IS_BROWSER\",(function(){return Wt()})),Ut.registerFlag(\"IS_NODE\",(function(){return\"undefined\"!=typeof process&&void 0!==process.versions&&void 0!==process.versions.node})),Ut.registerFlag(\"IS_CHROME\",(function(){return\"undefined\"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)})),Ut.registerFlag(\"PROD\",(function(){return!1})),Ut.registerFlag(\"TENSORLIKE_CHECK_SHAPE_CONSISTENCY\",(function(){return Ut.getBool(\"DEBUG\")})),Ut.registerFlag(\"DEPRECATION_WARNINGS_ENABLED\",(function(){return!0})),Ut.registerFlag(\"IS_TEST\",(function(){return!1}));var Vt,zt,Gt,Ht={},qt={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function Kt(t,e){Ht[t]=e}function jt(t){t in Ht||(Ht[t]=function(t){if(1!==t&&2!==t)throw new Error(\"Cannot get WebGL rendering context, WebGL is disabled.\");var e=function(t){if(\"undefined\"!=typeof OffscreenCanvas&&2===t)return new OffscreenCanvas(300,150);if(\"undefined\"!=typeof document)return document.createElement(\"canvas\");throw new Error(\"Cannot create a canvas in this context\")}(t);if(e.addEventListener(\"webglcontextlost\",(function(e){e.preventDefault(),delete Ht[t]}),!1),1===t)return e.getContext(\"webgl\",qt)||e.getContext(\"experimental-webgl\",qt);return e.getContext(\"webgl2\",qt)}(t));var e=Ht[t];return e.isContextLost()?(delete Ht[t],jt(t)):(e.disable(e.DEPTH_TEST),e.disable(e.STENCIL_TEST),e.disable(e.BLEND),e.disable(e.DITHER),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SAMPLE_COVERAGE),e.enable(e.SCISSOR_TEST),e.enable(e.CULL_FACE),e.cullFace(e.BACK),Ht[t])}function Xt(t,e){return[e,t]}function Yt(t){var e=k(t);return D(Math.ceil(e/4))}function $t(t,e){return[Math.max(1,Math.ceil(e/2)),Math.max(1,Math.ceil(t/2))]}function Qt(t,e){var n,r,o,a,s,u,c,l,h,f=t;return 2===i().getNumber(\"WEBGL_VERSION\")?(n=f.R32F,r=f.R16F,o=f.RGBA16F,a=f.RGBA32F,s=f.RED,u=4,c=1,l=f.HALF_FLOAT,h=f.FLOAT):(n=t.RGBA,r=t.RGBA,o=t.RGBA,a=f.RGBA,s=t.RGBA,u=4,c=4,l=null!=e?e.HALF_FLOAT_OES:null,h=t.FLOAT),{internalFormatFloat:n,internalFormatHalfFloat:r,internalFormatPackedHalfFloat:o,internalFormatPackedFloat:a,textureFormatFloat:s,downloadTextureFormat:t.RGBA,downloadUnpackNumChannels:u,defaultNumChannels:c,textureTypeHalfFloat:l,textureTypeFloat:h}}function Jt(t,e,n){var r=n();return e&&function(t){var e=t.getError();if(e!==t.NO_ERROR)throw new Error(\"WebGL Error: \"+ne(t,e))}(t),r}!function(t){t[t.DENSE=0]=\"DENSE\",t[t.SHARED_BATCH=1]=\"SHARED_BATCH\"}(Vt||(Vt={})),function(t){t[t.RENDER=0]=\"RENDER\",t[t.UPLOAD=1]=\"UPLOAD\",t[t.PIXELS=2]=\"PIXELS\",t[t.DOWNLOAD=3]=\"DOWNLOAD\"}(zt||(zt={})),function(t){t[t.UNPACKED_FLOAT16=0]=\"UNPACKED_FLOAT16\",t[t.UNPACKED_FLOAT32=1]=\"UNPACKED_FLOAT32\",t[t.PACKED_4X1_UNSIGNED_BYTE=2]=\"PACKED_4X1_UNSIGNED_BYTE\",t[t.PACKED_2X2_FLOAT32=3]=\"PACKED_2X2_FLOAT32\",t[t.PACKED_2X2_FLOAT16=4]=\"PACKED_2X2_FLOAT16\"}(Gt||(Gt={}));var Zt=5.96e-8,te=65504;function ee(t){return!!(i().getBool(\"WEBGL_RENDER_FLOAT32_ENABLED\")||0===t||Zt<Math.abs(t)&&Math.abs(t)<te)}function ne(t,e){switch(e){case t.NO_ERROR:return\"NO_ERROR\";case t.INVALID_ENUM:return\"INVALID_ENUM\";case t.INVALID_VALUE:return\"INVALID_VALUE\";case t.INVALID_OPERATION:return\"INVALID_OPERATION\";case t.INVALID_FRAMEBUFFER_OPERATION:return\"INVALID_FRAMEBUFFER_OPERATION\";case t.OUT_OF_MEMORY:return\"OUT_OF_MEMORY\";case t.CONTEXT_LOST_WEBGL:return\"CONTEXT_LOST_WEBGL\";default:return\"Unknown error code \"+e}}function re(t,e,n){return ke(t,e,(function(){return t.getExtension(n)}),'Extension \"'+n+'\" not supported on this browser.')}function oe(t,e,n){var r=ke(t,e,(function(){return t.createShader(t.VERTEX_SHADER)}),\"Unable to create vertex WebGLShader.\");if(Jt(t,e,(function(){return t.shaderSource(r,n)})),Jt(t,e,(function(){return t.compileShader(r)})),!1===t.getShaderParameter(r,t.COMPILE_STATUS))throw console.log(t.getShaderInfoLog(r)),new Error(\"Failed to compile vertex shader.\");return r}function ae(t,e,n){var r=ke(t,e,(function(){return t.createShader(t.FRAGMENT_SHADER)}),\"Unable to create fragment WebGLShader.\");if(Jt(t,e,(function(){return t.shaderSource(r,n)})),Jt(t,e,(function(){return t.compileShader(r)})),!1===t.getShaderParameter(r,t.COMPILE_STATUS))throw function(t,e){var n=ue.exec(e);if(null==n)return console.log(\"Couldn't parse line number in error: \"+e),void console.log(t);for(var r=+n[1],o=t.split(\"\\n\"),a=o.length.toString().length+2,i=o.map((function(t,e){return N((e+1).toString(),a)+t})),s=0,u=0;u<i.length;u++)s=Math.max(i[u].length,s);var c=i.slice(0,r-1),l=i.slice(r-1,r),h=i.slice(r);console.log(c.join(\"\\n\")),console.log(e.split(\"\\n\")[0]),console.log(\"%c \"+N(l[0],s),\"border:1px solid red; background-color:#e3d2d2; color:#a61717\"),console.log(h.join(\"\\n\"))}(n,t.getShaderInfoLog(r)),new Error(\"Failed to compile fragment shader.\");return r}var ie,se,ue=/ERROR: [0-9]+:([0-9]+):/g;function ce(t,e){return ke(t,e,(function(){return t.createProgram()}),\"Unable to create WebGLProgram.\")}function le(t,e,n){if(Jt(t,e,(function(){return t.linkProgram(n)})),!1===t.getProgramParameter(n,t.LINK_STATUS))throw console.log(t.getProgramInfoLog(n)),new Error(\"Failed to link vertex and fragment shaders.\")}function he(t,e,n){if(Jt(t,e,(function(){return t.validateProgram(n)})),!1===t.getProgramParameter(n,t.VALIDATE_STATUS))throw console.log(t.getProgramInfoLog(n)),new Error(\"Shader program validation failed.\")}function fe(t,e,n){var r=ke(t,e,(function(){return t.createBuffer()}),\"Unable to create WebGLBuffer\");return Jt(t,e,(function(){return t.bindBuffer(t.ARRAY_BUFFER,r)})),Jt(t,e,(function(){return t.bufferData(t.ARRAY_BUFFER,n,t.STATIC_DRAW)})),r}function de(t,e,n){var r=ke(t,e,(function(){return t.createBuffer()}),\"Unable to create WebGLBuffer\");return Jt(t,e,(function(){return t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,r)})),Jt(t,e,(function(){return t.bufferData(t.ELEMENT_ARRAY_BUFFER,n,t.STATIC_DRAW)})),r}function pe(t,e){return ke(t,e,(function(){return t.createTexture()}),\"Unable to create WebGLTexture.\")}function ve(t,e){var n=i().getNumber(\"WEBGL_MAX_TEXTURE_SIZE\");if(t<=0||e<=0){var r=\"[\"+t+\"x\"+e+\"]\";throw new Error(\"Requested texture size \"+r+\" is invalid.\")}if(t>n||e>n){r=\"[\"+t+\"x\"+e+\"]\";throw new Error(\"Requested texture size \"+r+\" greater than WebGL maximum on this browser / GPU \"+(\"[\"+n+\"x\"+n+\"]\")+\".\")}}function ge(t,e){return ke(t,e,(function(){return t.createFramebuffer()}),\"Unable to create WebGLFramebuffer.\")}function me(t,e,n,r,o,a,i,s){var u=t.getAttribLocation(n,r);return-1!==u&&(Jt(t,e,(function(){return t.bindBuffer(t.ARRAY_BUFFER,o)})),Jt(t,e,(function(){return t.vertexAttribPointer(u,a,t.FLOAT,!1,i,s)})),Jt(t,e,(function(){return t.enableVertexAttribArray(u)})),!0)}function ye(t,e,n,r){Se(t,r),Jt(t,e,(function(){return t.activeTexture(t.TEXTURE0+r)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)}))}function xe(t,e,n,r){return ke(t,e,(function(){return t.getUniformLocation(n,r)}),'uniform \"'+r+'\" not present in program.')}function be(t,e,n){return t.getUniformLocation(e,n)}function we(t,e,n,r,o,a){Jt(t,e,(function(){return ye(t,e,r,a)})),Jt(t,e,(function(){return t.uniform1i(o,a)}))}function Ce(t,e,n,r){Jt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,r)})),Jt(t,e,(function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,n,0)}))}function Ee(t,e,n){Jt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,n)})),Jt(t,e,(function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,null,0)}))}function Re(t){var e=t.checkFramebufferStatus(t.FRAMEBUFFER);if(e!==t.FRAMEBUFFER_COMPLETE)throw new Error(\"Error binding framebuffer: \"+Ie(t,e))}function Ie(t,e){switch(e){case t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return\"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\";case t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return\"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\";case t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return\"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\";case t.FRAMEBUFFER_UNSUPPORTED:return\"FRAMEBUFFER_UNSUPPORTED\";default:return\"unknown error \"+e}}function ke(t,e,n,r){var o=Jt(t,e,(function(){return n()}));if(null==o)throw new Error(r);return o}function Se(t,e){var n=t.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=e+t.TEXTURE0;if(r<t.TEXTURE0||r>n)throw new Error(\"textureUnit must be in \"+(\"[gl.TEXTURE0, gl.TEXTURE\"+n+\"]\")+\".\")}function Ae(t,e){return void 0===e&&(e=2),k(t.slice(0,t.length-e))}function Te(t){if(0===t.length)throw Error(\"Cannot get rows and columns of an empty shape array.\");return[t.length>1?t[t.length-2]:1,t[t.length-1]]}function De(t){var e=[1,1,1];return 0===t.length||1===t.length&&1===t[0]||(e=[Ae(t)].concat(Te(t))),e}function Ne(t,e){var n;void 0===e&&(e=!1);var r=i().getNumber(\"WEBGL_MAX_TEXTURE_SIZE\");if(e&&(r*=2,1===(t=t.map((function(e,n){return n>=t.length-2?b(t[n]):t[n]}))).length&&(t=[2,t[0]])),2!==t.length){var o=M(t);t=o.newShape}var a=k(t);if(t.length<=1&&a<=r)return[1,a];if(2===t.length&&t[0]<=r&&t[1]<=r)return t;if(3===t.length&&t[0]*t[1]<=r&&t[2]<=r)return[t[0]*t[1],t[2]];if(3===t.length&&t[0]<=r&&t[1]*t[2]<=r)return[t[0],t[1]*t[2]];if(4===t.length&&t[0]*t[1]*t[2]<=r&&t[3]<=r)return[t[0]*t[1]*t[2],t[3]];if(4===t.length&&t[0]<=r&&t[1]*t[2]*t[3]<=r)return[t[0],t[1]*t[2]*t[3]];if(e){var s=Ae(t),u=2,c=2;return t.length&&(u=(n=Te(t))[0],c=n[1]),D(a=s*(u/2)*(c/2)).map((function(t){return 2*t}))}return D(a)}function Fe(t){return t%2==0}function _e(t,e){if(S(t=t.slice(-2),e=e.slice(-2)))return!0;if(!t.length||!e.length)return!0;if(0===t[0]||0===t[1]||0===e[0]||0===e[1])return!0;if(t.length!==e.length){var n=t.slice(-1)[0],r=e.slice(-1)[0];if(n===r)return!0;if(Fe(n)&&Fe(r)&&(1===t[0]||1===e[0]))return!0}return t[1]===e[1]&&Fe(t[0])&&Fe(e[0])}function Oe(t){if(null==ie){var e=jt(t);ie=e.getParameter(e.MAX_TEXTURE_SIZE)}return ie}function Me(t){if(null==se){var e=jt(t);se=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,se)}function Be(t){if(0===t)return 0;var e=jt(t);return Pe(e,\"EXT_disjoint_timer_query_webgl2\")&&2===t?2:Pe(e,\"EXT_disjoint_timer_query\")?1:0}function Pe(t,e){return null!=t.getExtension(e)}function Le(t){try{if(null!=jt(t))return!0}catch(t){return!1}return!1}function We(t){if(0===t)return!1;var e=jt(t);if(1===t){if(!Pe(e,\"OES_texture_float\"))return!1}else if(!Pe(e,\"EXT_color_buffer_float\"))return!1;return Ve(e)}function Ue(t){if(0===t)return!1;var e=jt(t);if(1!==t){if(Pe(e,\"EXT_color_buffer_float\"))return Ve(e);if(Pe(e,\"EXT_color_buffer_half_float\")){var n=e.getExtension(\"EXT_color_buffer_half_float\");return function(t,e){var n=Qt(t,e),r=t.createTexture();t.bindTexture(t.TEXTURE_2D,r);t.texImage2D(t.TEXTURE_2D,0,n.internalFormatHalfFloat,1,1,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);var o=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,o),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0);var a=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(r),t.deleteFramebuffer(o),a}(e,n)}return!1}return!!Pe(e,\"OES_texture_float\")&&(!!Pe(e,\"WEBGL_color_buffer_float\")&&Ve(e))}function Ve(t){var e=Qt(t),n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n);t.texImage2D(t.TEXTURE_2D,0,e.internalFormatFloat,1,1,0,e.textureFormatFloat,e.textureTypeFloat,null);var r=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,n,0);var o=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(n),t.deleteFramebuffer(r),o}function ze(t){return 2===t&&null!=jt(t).fenceSync}var Ge=Object.freeze({callAndCheck:Jt,canBeRepresented:ee,getWebGLErrorMessage:ne,getExtensionOrThrow:re,createVertexShader:oe,createFragmentShader:ae,createProgram:ce,linkProgram:le,validateProgram:he,createStaticVertexBuffer:fe,createStaticIndexBuffer:de,getNumChannels:function(){return 2===i().getNumber(\"WEBGL_VERSION\")?1:4},createTexture:pe,validateTextureSize:ve,createFramebuffer:ge,bindVertexBufferToProgramAttribute:me,bindTextureUnit:ye,unbindTextureUnit:function(t,e,n){Se(t,n),Jt(t,e,(function(){return t.activeTexture(t.TEXTURE0+n)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}))},getProgramUniformLocationOrThrow:xe,getProgramUniformLocation:be,bindTextureToProgramUniformSampler:we,bindCanvasToFramebuffer:function(t,e){Jt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,null)})),Jt(t,e,(function(){return t.viewport(0,0,t.canvas.width,t.canvas.height)})),Jt(t,e,(function(){return t.scissor(0,0,t.canvas.width,t.canvas.height)}))},bindColorTextureToFramebuffer:Ce,unbindColorTextureFromFramebuffer:Ee,validateFramebuffer:Re,getFramebufferErrorMessage:Ie,getBatchDim:Ae,getRowsCols:Te,getShapeAs3D:De,getTextureShapeFromLogicalShape:Ne,isReshapeFree:_e,getWebGLMaxTextureSize:Oe,resetMaxTextureSize:function(){ie=null},resetMaxTexturesInShader:function(){se=null},getMaxTexturesInShader:Me,getWebGLDisjointQueryTimerVersion:Be,hasExtension:Pe,isWebGLVersionEnabled:Le,isCapableOfRenderingToFloatTexture:We,isDownloadFloatTextureEnabled:Ue,isWebGLFenceEnabled:ze}),He=i();function qe(){i().set(\"PROD\",!0)}function Ke(){i().set(\"DEBUG\",!0)}function je(){i().set(\"DEPRECATION_WARNINGS_ENABLED\",!1),console.warn(\"TensorFlow.js deprecation warnings have been disabled.\")}function Xe(t){i().getBool(\"DEPRECATION_WARNINGS_ENABLED\")&&console.warn(t+\" You can disable deprecation warnings with tf.disableDeprecationWarnings().\")}function Ye(){Lt.disposeVariables()}function $e(){return Lt}function Qe(){return Lt.memory()}function Je(t){return Lt.profile(t)}function Ze(t,e){return Lt.tidy(t,e)}function tn(t){_t(t).forEach((function(t){return t.dispose()}))}function en(t){return Lt.keep(t)}function nn(t){return Lt.time(t)}function rn(t){return Lt.setBackend(t)}function on(){return Lt.ready()}function an(){return Lt.backendName}function sn(t){Lt.removeBackend(t)}function un(t){return Lt.findBackend(t)}function cn(t){return Lt.findBackendFactory(t)}function ln(t,e,n){return void 0===n&&(n=1),Lt.registerBackend(t,e,n)}function hn(){return Lt.backend}function fn(t,e){i().setPlatform(t,e)}function dn(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];i().getBool(\"IS_TEST\")||console.warn.apply(console,t)}function pn(t,e){var n=t;if(V(t))return\"string\"===e?[]:[t.length];if(!Array.isArray(t))return[];for(var r=[];Array.isArray(n)||V(n)&&\"string\"!==e;)r.push(n.length),n=n[0];return Array.isArray(t)&&i().getBool(\"TENSORLIKE_CHECK_SHAPE_CONSISTENCY\")&&function t(e,n,r){if(r=r||[],!Array.isArray(e)&&!V(e))return void C(0===n.length,(function(){return\"Element arr[\"+r.join(\"][\")+\"] is a primitive, but should be an array/TypedArray of \"+n[0]+\" elements\"}));C(n.length>0,(function(){return\"Element arr[\"+r.join(\"][\")+\"] should be a primitive, but is an array of \"+e.length+\" elements\"})),C(e.length===n[0],(function(){return\"Element arr[\"+r.join(\"][\")+\"] should have \"+n[0]+\" elements, but has \"+e.length+\" elements\"}));for(var o=n.slice(1),a=0;a<e.length;++a)t(e[a],o,r.concat(a))}(t,r,[]),r}function vn(t,e,n,r){if(null!=t&&(\"numeric\"!==t&&t!==e||\"numeric\"===t&&\"string\"===e))throw new Error(\"Argument '\"+n+\"' passed to '\"+r+\"' must be \"+t+\" tensor, but got \"+e+\" tensor\")}function gn(t,e,n,r){if(void 0===r&&(r=\"numeric\"),t instanceof wt)return vn(r,t.dtype,e,n),t;var o=j(t);if(\"string\"!==o&&[\"bool\",\"int32\",\"float32\"].indexOf(r)>=0&&(o=r),vn(r,o,e,n),null==t||!V(t)&&!Array.isArray(t)&&\"number\"!=typeof t&&\"boolean\"!=typeof t&&\"string\"!=typeof t){var a=null==t?\"null\":t.constructor.name;throw new Error(\"Argument '\"+e+\"' passed to '\"+n+\"' must be a Tensor or TensorLike, but got '\"+a+\"'\")}var s=pn(t,o);V(t)||Array.isArray(t)||(t=[t]);var u=\"string\"!==o?Q(t,o,i().getBool(\"DEBUG\")):I(t,[],!0);return Lt.makeTensor(u,s,o)}function mn(t,e,n,r){if(void 0===r&&(r=\"numeric\"),!Array.isArray(t))throw new Error(\"Argument \"+e+\" passed to \"+n+\" must be a `Tensor[]` or `TensorLike[]`\");return t.map((function(t,r){return gn(t,e+\"[\"+r+\"]\",n)}),r)}function yn(t,e){for(var n=0;n<t.length;++n)if(t[t.length-n-1]!==e-1-n)return!1;return!0}function xn(t,e,n){for(var r=t.length+e.length,o=[],a=0,i=0,s=0;s<r;s++)-1===n.indexOf(s)?o.push(t[a++]):o.push(e[i++]);return o}function bn(t,e){for(var n=[],r=t.length,o=0;o<r;o++)-1===e.indexOf(o)&&n.push(t[o]);return[n,e.map((function(e){return t[e]}))]}function wn(t,e){return xn(t,e.map((function(t){return 1})),e)}function Cn(t,e,n){C(yn(e,n),(function(){return t+\" supports only inner-most axes for now. Got axes \"+e+\" and rank-\"+n+\" input.\"}))}function En(t,e){if(yn(t,e))return null;for(var n=[],r=0;r<e;++r)-1===t.indexOf(r)&&n.push(r);return t.forEach((function(t){return n.push(t)})),n}function Rn(t){return t.map((function(t,e){return[e,t]})).sort((function(t,e){return t[1]-e[1]})).map((function(t){return t[0]}))}function In(t,e){for(var n=[],r=e-t;r<e;++r)n.push(r);return n}function kn(t,e){var n=t[0].length;t.forEach((function(t,e){C(t.length===n,(function(){return\"Error in concat\"+n+\"D: rank of tensors[\"+e+\"] must be the same as the rank of the rest (\"+n+\")\"}))})),C(e>=0&&e<n,(function(){return\"Error in concat\"+n+\"D: axis must be between 0 and \"+(n-1)+\".\"}));var r=t[0];t.forEach((function(t,o){for(var a=0;a<n;a++)C(a===e||t[a]===r[a],(function(){return\"Error in concat\"+n+\"D: Shape of tensors[\"+o+\"] (\"+t+\") does not match the shape of the rest (\"+r+\") along the non-concatenated axis \"+o+\".\"}))}))}function Sn(t,e){for(var n=t[0].slice(),r=1;r<t.length;r++)n[e]+=t[r][e];return n}function An(t){var e=Object.keys(t);if(1!==e.length)throw new Error(\"Please provide an object with a single key (operation name) mapping to a function. Got an object with \"+e.length+\" keys.\");var n=e[0],r=t[n];n.endsWith(\"_\")&&(n=n.substring(0,n.length-1));var o=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];Lt.startScope(n);try{var o=r.apply(void 0,t);return o instanceof Promise&&console.error(\"Cannot return a Promise inside of tidy.\"),Lt.endScope(o),o}catch(t){throw Lt.endScope(null),t}};return Object.defineProperty(o,\"name\",{value:n,configurable:!0}),o}He.registerFlag(\"HAS_WEBGL\",(function(){return He.getNumber(\"WEBGL_VERSION\")>0})),He.registerFlag(\"WEBGL_VERSION\",(function(){return Le(2)?2:Le(1)?1:0})),He.registerFlag(\"WEBGL_BUFFER_SUPPORTED\",(function(){return 2===He.get(\"WEBGL_VERSION\")})),He.registerFlag(\"WEBGL_CPU_FORWARD\",(function(){return!0})),He.registerFlag(\"WEBGL_FORCE_F16_TEXTURES\",(function(){return!1})),He.registerFlag(\"WEBGL_PACK\",(function(){return He.getBool(\"HAS_WEBGL\")})),He.registerFlag(\"WEBGL_PACK_NORMALIZATION\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_PACK_CLIP\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_PACK_DEPTHWISECONV\",(function(){return!1})),He.registerFlag(\"WEBGL_PACK_BINARY_OPERATIONS\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_PACK_UNARY_OPERATIONS\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_PACK_ARRAY_OPERATIONS\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_PACK_IMAGE_OPERATIONS\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_PACK_REDUCE\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_LAZILY_UNPACK\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_CONV_IM2COL\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_MAX_TEXTURE_SIZE\",(function(){return Oe(He.getNumber(\"WEBGL_VERSION\"))})),He.registerFlag(\"WEBGL_MAX_TEXTURES_IN_SHADER\",(function(){return Me(He.getNumber(\"WEBGL_VERSION\"))})),He.registerFlag(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\",(function(){var t=He.getNumber(\"WEBGL_VERSION\");return 0===t?0:Be(t)})),He.registerFlag(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\",(function(){return He.getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\")>0&&(t=navigator.userAgent||navigator.vendor||window.opera,!(/(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|xda|xiino/i.test(t)||/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(t.substr(0,4))));var t})),He.registerFlag(\"WEBGL_RENDER_FLOAT32_CAPABLE\",(function(){return We(He.getNumber(\"WEBGL_VERSION\"))})),He.registerFlag(\"WEBGL_RENDER_FLOAT32_ENABLED\",(function(){return!He.getBool(\"WEBGL_FORCE_F16_TEXTURES\")&&He.getBool(\"WEBGL_RENDER_FLOAT32_CAPABLE\")})),He.registerFlag(\"WEBGL_DOWNLOAD_FLOAT_ENABLED\",(function(){return Ue(He.getNumber(\"WEBGL_VERSION\"))})),He.registerFlag(\"WEBGL_FENCE_API_ENABLED\",(function(){return ze(He.getNumber(\"WEBGL_VERSION\"))})),He.registerFlag(\"WEBGL_SIZE_UPLOAD_UNIFORM\",(function(){return He.getBool(\"WEBGL_RENDER_FLOAT32_ENABLED\")?4:0})),bt=Xe;var Tn=An({complex_:function(t,e){var n=gn(t,\"real\",\"complex\"),r=gn(e,\"imag\",\"complex\");return E(n.shape,r.shape,\"real and imag shapes, \"+n.shape+\" and \"+r.shape+\", must match in call to tf.complex().\"),Lt.runKernelFunc((function(t){return t.complex(n,r)}),{$real:n,$imag:r})}}),Dn=An({real_:function(t){var e=gn(t,\"input\",\"real\");return Lt.runKernelFunc((function(t){return t.real(e)}),{$input:e})}}),Nn=An({imag_:function(t){var e=gn(t,\"input\",\"imag\");return Lt.runKernelFunc((function(t){return t.imag(e)}),{$input:e})}});function Fn(t,e,n){return _n(t,e,pn(t,n),n)}function _n(t,e,n,r){if(null==r&&(r=j(t)),\"complex64\"===r)throw new Error(\"Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).\");if(!V(t)&&!Array.isArray(t)&&\"number\"!=typeof t&&\"boolean\"!=typeof t&&\"string\"!=typeof t)throw new Error(\"values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray\");if(null!=e){nt(e);var o=k(e),a=k(n);C(o===a,(function(){return\"Based on the provided shape, [\"+e+\"], the tensor should have \"+o+\" values but has \"+a}));for(var s=0;s<n.length;++s){var u=n[s],c=s!==n.length-1||u!==k(e.slice(s));C(n[s]===e[s]||!c,(function(){return\"Error creating a new Tensor. Inferred shape (\"+n+\") does not match the provided shape (\"+e+\"). \"}))}}return V(t)||Array.isArray(t)||(t=[t]),e=e||n,t=\"string\"!==r?Q(t,r,i().getBool(\"DEBUG\")):I(t,[],!0),Lt.makeTensor(t,e,r)}function On(t,e){if((V(t)&&\"string\"!==e||Array.isArray(t))&&\"complex64\"!==e)throw new Error(\"Error creating a new Scalar: value must be a primitive (number|boolean|string)\");if(\"string\"===e&&V(t)&&!(t instanceof Uint8Array))throw new Error(\"When making a scalar from encoded string, the value must be `Uint8Array`.\");return _n(t,[],[],e)}function Mn(t,e){R(t);var n=pn(t,e);if(1!==n.length)throw new Error(\"tensor1d() requires values to be a flat/TypedArray\");return _n(t,null,n,e)}function Bn(t,e,n){if(R(t),null!=e&&2!==e.length)throw new Error(\"tensor2d() requires shape to have two numbers\");var r=pn(t,n);if(2!==r.length&&1!==r.length)throw new Error(\"tensor2d() requires values to be number[][] or flat/TypedArray\");if(1===r.length&&null==e)throw new Error(\"tensor2d() requires shape to be provided when `values` are a flat/TypedArray\");return _n(t,e,r,n)}function Pn(t,e,n){if(R(t),null!=e&&3!==e.length)throw new Error(\"tensor3d() requires shape to have three numbers\");var r=pn(t,n);if(3!==r.length&&1!==r.length)throw new Error(\"tensor3d() requires values to be number[][][] or flat/TypedArray\");if(1===r.length&&null==e)throw new Error(\"tensor3d() requires shape to be provided when `values` are a flat array\");return _n(t,e,r,n)}function Ln(t,e,n){if(R(t),null!=e&&4!==e.length)throw new Error(\"tensor4d() requires shape to have four numbers\");var r=pn(t,n);if(4!==r.length&&1!==r.length)throw new Error(\"tensor4d() requires values to be number[][][][] or flat/TypedArray\");if(1===r.length&&null==e)throw new Error(\"tensor4d() requires shape to be provided when `values` are a flat array\");return _n(t,e,r,n)}function Wn(t,e,n){if(R(t),null!=e&&5!==e.length)throw new Error(\"tensor5d() requires shape to have five numbers\");var r=pn(t,n);if(5!==r.length&&1!==r.length)throw new Error(\"tensor5d() requires values to be number[][][][][] or flat/TypedArray\");if(1===r.length&&null==e)throw new Error(\"tensor5d() requires shape to be provided when `values` are a flat array\");return _n(t,e,r,n)}function Un(t,e,n){if(R(t),null!=e&&6!==e.length)throw new Error(\"tensor6d() requires shape to have six numbers\");var r=pn(t,n);if(6!==r.length&&1!==r.length)throw new Error(\"tensor6d() requires values to be number[][][][][][] or flat/TypedArray\");if(1===r.length&&null==e)throw new Error(\"tensor6d() requires shape to be provided when `values` are a flat array\");return _n(t,e=e||r,r,n)}function Vn(t,e,n,r){return void 0===e&&(e=!0),Lt.makeVariable(t,e,n,r)}function zn(t,e){if(void 0===e&&(e=\"float32\"),\"complex64\"===e){var n=zn(t,\"float32\"),r=Gn(t,\"float32\");return Tn(n,r)}var o=Z(k(t),e);return Lt.makeTensor(o,t,e)}function Gn(t,e){if(void 0===e&&(e=\"float32\"),\"complex64\"===e){var n=Gn(t,\"float32\"),r=Gn(t,\"float32\");return Tn(n,r)}var o=tt(k(t),e);return Lt.makeTensor(o,t,e)}function Hn(t,e,n){return Lt.runKernelFunc((function(r){return r.fill(t,e,n)}),{})}function qn(t,e,n){if(n<=0)throw new Error(\"The number of values should be positive.\");return Lt.runKernelFunc((function(r){return r.linspace(t,e,n)}),{})}function Kn(t,e,n,r){if(void 0===n&&(n=1),void 0===r&&(r=\"float32\"),0===n)throw new Error(\"Cannot have a step of zero\");if(t===e||t<e&&n<0||e<t&&n>1)return Gn([0],r);var o=tt(Math.abs(Math.ceil((e-t)/n)),r);e<t&&1===n&&(n=-1),o[0]=t;for(var a=1;a<o.length;a++)o[a]=o[a-1]+n;return Mn(o,r)}var jn=An({onesLike_:function(t){var e=gn(t,\"x\",\"onesLike\");if(\"complex64\"===e.dtype){var n=jn(Dn(e)),r=Xn(Nn(e));return Tn(n,r)}return Lt.runKernelFunc((function(t){return t.onesLike(e)}),{x:e},(function(t,e){return{x:function(){return Xn(t)}}}),\"OnesLike\")}}),Xn=An({zerosLike_:function(t){var e=gn(t,\"x\",\"zerosLike\");return Lt.runKernelFunc((function(t){return t.zerosLike(e)}),{x:e},(function(t,e){return{x:function(){return Xn(t)}}}),\"ZerosLike\")}});var Yn=An({concat_:function(t,e){void 0===e&&(e=0),C(t.length>=1,(function(){return\"Pass at least one tensor to concat\"}));var n=mn(t,\"tensors\",\"concat\");\"complex64\"===n[0].dtype&&n.forEach((function(t){if(\"complex64\"!==t.dtype)throw new Error(\"Cannot concatenate complex64 tensors with a tensor\\n          with dtype \"+t.dtype+\". \")})),e=O(e,n[0].shape)[0];var r=Sn(n.map((function(t){return t.shape})),e);if(0===k(r))return Fn([],r);if(1===(n=n.filter((function(t){return t.size>0}))).length)return n[0];var o=n.map((function(t){return t.shape}));kn(o,e);var a=n,i={axis:e};return Lt.runKernelFunc((function(t){return t.concat(n,e)}),a,(function(t){var n=o.map((function(t){return t[e]}));return tr(t,n,e).map((function(t){return function(){return t}}))}),\"Concat\",i)}}),$n=An({concat1d_:function(t){return Yn(t,0)}}),Qn=An({concat2d_:function(t,e){return Yn(t,e)}}),Jn=An({concat3d_:function(t,e){return Yn(t,e)}}),Zn=An({concat4d_:function(t,e){return Yn(t,e)}}),tr=An({split_:function(t,e,n){void 0===n&&(n=0);var r,o=gn(t,\"x\",\"split\");return n=O(n,o.shape)[0],\"number\"==typeof e?(C(o.shape[n]%e==0,(function(){return\"Number of splits must evenly divide the axis.\"})),r=new Array(e).fill(o.shape[n]/e)):(C(o.shape[n]===e.reduce((function(t,e){return t+e})),(function(){return\"The sum of sizes must match the size of the axis dimension.\"})),r=e),Lt.runKernelFunc((function(t){return t.split(o,r,n)}),{$x:o},(function(t){return{$x:function(){return Yn(t,n)}}}))}});function er(t,e,n){return void 0===e&&(e=\"float32\"),e=e||\"float32\",nt(t),new mt(t,e,n)}function nr(t,e){void 0===e&&(e=!1),console.log(t.toString(e))}var rr=An({batchToSpaceND_:function(t,e,n){var r=gn(t,\"x\",\"batchToSpaceND\"),o=e.reduce((function(t,e){return t*e}));return C(r.rank>=1+e.length,(function(){return\"input rank is \"+r.rank+\" but should be > than blockShape.length \"+e.length})),C(n.length===e.length,(function(){return\"crops.length is \"+n.length+\" but should be equal to blockShape.length  \"+e.length})),C(r.shape[0]%o==0,(function(){return\"input tensor batch is \"+r.shape[0]+\" but is not divisible by the product of the elements of blockShape \"+e.join(\" * \")+\" === \"+o})),Lt.runKernelFunc((function(t){return t.batchToSpaceND(r,e,n)}),{$x:r},(function(t){return{$x:function(){return t.spaceToBatchND(e,n)}}}))}}),or=An({cast_:function(t,e){var n=gn(t,\"x\",\"cast\");if(!W(e))throw new Error(\"Failed to cast to unknown dtype \"+e);if(\"string\"===e&&\"string\"!==n.dtype||\"string\"!==e&&\"string\"===n.dtype)throw new Error(\"Only strings can be casted to strings\");var r={dtype:e};return Lt.runKernelFunc((function(t){return t.cast(n,e)}),{x:n},(function(t){return{x:function(){return t.clone()}}}),\"Cast\",r)}}),ar=An({cumsum_:function(t,e,n,r){void 0===e&&(e=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var o=gn(t,\"x\",\"cumsum\"),a=En([e|=0],o.rank),i=o;null!=a&&(i=o.transpose(a));var s=In(1,o.rank)[0],u=Lt.runKernelFunc((function(t){return t.cumsum(i,s,n,r)}),{permutedX:i},(function(t){return{permutedX:function(){return t.cumsum(e,n,!r)}}}));return null!=a&&(u=u.transpose(a)),u}}),ir=An({depthToSpace_:function(t,e,n){void 0===n&&(n=\"NHWC\");var r=gn(t,\"x\",\"depthToSpace\"),o=\"NHWC\"===n?r.shape[1]:r.shape[2],a=\"NHWC\"===n?r.shape[2]:r.shape[3],i=\"NHWC\"===n?r.shape[3]:r.shape[1];return C(o*e>=0,(function(){return\"Negative dimension size caused by overflow when multiplying\\n      \"+o+\" and \"+e+\"  for depthToSpace with input shape\\n      \"+r.shape})),C(a*e>=0,(function(){return\"Negative dimension size caused by overflow when multiplying\\n      \"+a+\" and \"+e+\" for depthToSpace with input shape\\n          \"+r.shape})),C(i%(e*e)==0,(function(){return\"Dimension size must be evenly divisible by \"+e*e+\" but is \"+i+\" for depthToSpace with input shape \"+r.shape})),Lt.runKernelFunc((function(t){return t.depthToSpace(r,e,n)}),{$x:r})}}),sr=An({expandDims_:function(t,e){void 0===e&&(e=0);var n=gn(t,\"x\",\"expandDims\",null);C(e<=n.rank,(function(){return\"Axis must be <= rank of the tensor\"}));var r=n.shape.slice();return e<0&&(C(-(n.rank+1)<=e,(function(){return\"Axis must be in the interval [\"+-(n.rank+1)+\", \"+n.rank+\"]\"})),e=n.rank+e+1),r.splice(e,0,1),ur(n,r)}}),ur=An({reshape_:function(t,e){var n=gn(t,\"x\",\"reshape\",null);e=_(e,n.size),C(n.size===k(e),(function(){return\"new shape and old shape must have the same number of elements.\"}));var r={shape:e};return Lt.runKernelFunc((function(t){return t.reshape(n,e)}),{x:n},(function(t){return{x:function(){return t.reshape(n.shape)}}}),\"Reshape\",r)}}),cr=An({spaceToBatchND_:function(t,e,n){var r=gn(t,\"x\",\"spaceToBatchND\");return C(r.rank>=1+e.length,(function(){return\"input rank \"+r.rank+\" should be > than [blockShape] \"+e.length})),C(n.length===e.length,(function(){return\"paddings.shape[0] \"+n.length+\" must be equal to [blockShape] \"+e.length})),C(r.shape.reduce((function(t,r,o){return o>0&&o<=e.length?t&&(r+n[o-1][0]+n[o-1][1])%e[o-1]==0:t}),!0),(function(){return\"input spatial dimensions \"+r.shape.slice(1)+\" with paddings \"+n.toString()+\" must be divisible by blockShapes \"+e.toString()})),Lt.runKernelFunc((function(t){return t.spaceToBatchND(r,e,n)}),{$x:r},(function(t){return{$x:function(){return t.batchToSpaceND(e,n)}}}))}}),lr=An({squeeze_:function(t,e){var n=gn(t,\"x\",\"squeeze\");return ur(n,M(n.shape,e).newShape)}}),hr=An({stack_:function(t,e){void 0===e&&(e=0);var n=mn(t,\"tensors\",\"stack\");if(C(n.length>=1,(function(){return\"Pass at least one tensor to tf.stack\"})),1===n.length)return n[0].expandDims(e);var r=n[0].rank,o=n[0].shape,a=n[0].dtype;C(e<=r,(function(){return\"Axis must be <= rank of the tensor\"})),n.forEach((function(t){E(o,t.shape,\"All tensors passed to stack must have matching shapes\")})),n.forEach((function(t){C(a===t.dtype,(function(){return\"All tensors passed to stack must have matching dtypes\"}))}));var i=n.map((function(t){return t.expandDims(e)}));return Yn(i,e)}}),fr=An({unstack_:function(t,e){void 0===e&&(e=0),e=e||0;var n=gn(t,\"x\",\"unstack\");C(e>=-n.shape.length&&e<n.shape.length,(function(){return\"Axis = \"+e+\" is not in [-\"+n.shape.length+\", \"+n.shape.length+\")\"})),e<0&&(e+=n.shape.length);var r={axis:e};return Lt.runKernelFunc((function(t){return t.unstack(n,e)}),{x:n},(function(t){return{x:function(){return hr(t,e)}}}),\"Unpack\",r)}}),dr=function(t,e){return n(this,void 0,void 0,(function(){var n,o,a,i,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:return n=gn(t,\"x\",\"setdiff1d\"),o=gn(e,\"y\",\"setdiff1d\"),C(n.dtype===o.dtype,(function(){return\"x and y should have the same dtype, but got x (\"+n.dtype+\") and y (\"+o.dtype+\").\"})),C(1===n.rank,(function(){return\"x should be 1D tensor, but got x (\"+n.shape+\").\"})),C(1===o.rank,(function(){return\"y should be 1D tensor, but got y (\"+o.shape+\").\"})),[4,n.data()];case 1:return a=r.sent(),[4,o.data()];case 2:for(i=r.sent(),s=new Set(i),u=0,h=0;h<a.length;h++)s.has(a[h])||u++;for(c=new mt([u],n.dtype),l=new mt([u],\"int32\"),h=0,f=0;h<a.length;h++)s.has(a[h])||(c.values[f]=a[h],l.values[f]=h,f++);return[2,[c.toTensor(),l.toTensor()]]}}))}))};function pr(t,e,n,r){void 0===r&&(r=!0);var o=[];if(r)(o=o.concat(e.slice(0))).push(t[0]/n),o=o.concat(t.slice(1));else{o=o.concat(t[0]);for(var a=e.length,i=0;i<a;++i)o=o.concat([t[i+1]/e[i],e[i]]);o=o.concat(t.slice(a+1))}return o}function vr(t,e,n){void 0===n&&(n=!0);var r=[];if(n){r.push(e);for(var o=e+1;o<t;++o)o<=2*e?(r.push(o),r.push(o-(e+1))):r.push(o)}else{var a=[],i=[];for(o=1;o<t;++o)o>=2*e+1||o%2==1?i.push(o):a.push(o);r.push.apply(r,a),r.push(0),r.push.apply(r,i)}return r}function gr(t,e,n,r){void 0===r&&(r=!0);var o=[];r?o.push(t[0]/n):o.push(t[0]*n);for(var a=1;a<t.length;++a)a<=e.length?r?o.push(e[a-1]*t[a]):o.push(t[a]/e[a-1]):o.push(t[a]);return o}function mr(t,e){for(var n=[0],r=0;r<e;++r)n.push(t[r][0]);return n}function yr(t,e,n){for(var r=t.slice(0,1),o=0;o<n;++o)r.push(t[o+1]-e[o][0]-e[o][1]);return r}var xr=\"Add\",br=\"AddN\",wr=\"Div\",Cr=\"FusedBatchNorm\",Er=\"SquaredDifference\",Rr=\"Square\",Ir=\"Transpose\",kr=\"NonMaxSuppressionV5\",Sr=\"BroadcastTo\",Ar=\"OneHot\",Tr=\"Identity\",Dr=\"Tile\",Nr=\"PadV2\",Fr=\"FromPixels\",_r=\"MaxPoolWithArgmax\";var Or=An({add_:function(t,e){var n,r=gn(t,\"a\",\"add\"),o=gn(e,\"b\",\"add\");n=Nt(r,o),r=n[0],o=n[1];var a={a:r,b:o};return Lt.runKernelFunc((function(t,e){var n=t.add(r,o);return e([r,o]),n}),a,null,xr)}});function Mr(t,e){for(var n=t.length,r=[],o=0;o<n;o++){var a=n-1-o,i=t[a]||1;(e[e.length-1-o]||1)>1&&1===i&&r.unshift(a)}return r}function Br(t,e){for(var n=[],r=0;r<e.length;r++){var o=t[t.length-r-1],a=e.length-r-1,i=e[a];(null==o||1===o&&i>1)&&n.unshift(a)}return n}function Pr(t,e){for(var n=[],r=Math.max(t.length,e.length),o=0;o<r;o++){var a=t[t.length-o-1];null==a&&(a=1);var i=e[e.length-o-1];if(null==i&&(i=1),1===a)n.unshift(i);else if(1===i)n.unshift(a);else{if(a!==i)throw Error(\"Operands could not be broadcast together with shapes \"+t+\" and \"+e+\".\");n.unshift(a)}}return n}var Lr=An({abs_:function(t){var e=gn(t,\"x\",\"abs\");return\"complex64\"===e.dtype?Lt.runKernelFunc((function(t){return t.complexAbs(e)}),{$x:e}):Lt.runKernelFunc((function(t,n){var r=t.abs(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.mul(n.toFloat().step(-1))}}}),\"Abs\")}}),Wr=An({acos_:function(t){var e=gn(t,\"x\",\"acos\");return Lt.runKernelFunc((function(t,n){var r=t.acos(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(On(1).sub(n.toFloat().square()).sqrt()).neg()}}}))}}),Ur=An({acosh_:function(t){var e=gn(t,\"x\",\"acosh\");return Lt.runKernelFunc((function(t,n){var r=t.acosh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(n.toFloat().square().sub(1).sqrt())}}}))}}),Vr=An({asin_:function(t){var e=gn(t,\"x\",\"asin\");return Lt.runKernelFunc((function(t,n){var r=t.asin(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(On(1).sub(n.toFloat().square()).sqrt())}}}))}}),zr=An({asinh_:function(t){var e=gn(t,\"x\",\"asinh\");return Lt.runKernelFunc((function(t,n){var r=t.asinh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(On(1).add(n.toFloat().square()).sqrt())}}}))}}),Gr=An({atan_:function(t){var e=gn(t,\"x\",\"atan\");return Lt.runKernelFunc((function(t,n){var r=t.atan(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.toFloat().square().add(1))}}}))}}),Hr=An({atanh_:function(t){var e=gn(t,\"x\",\"atanh\");return Lt.runKernelFunc((function(t,n){var r=t.atanh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(On(1).sub(n.toFloat().square()))}}}))}}),qr=An({ceil_:function(t){var e=gn(t,\"x\",\"ceil\");return Lt.runKernelFunc((function(t){return t.ceil(e)}),{$x:e},(function(t){return{$x:function(){return Xn(t)}}}))}}),Kr=An({clipByValue_:function(t,e,n){var r=gn(t,\"x\",\"clipByValue\");C(e<=n,(function(){return\"Error in clip: min (\"+e+\") must be less than or equal to max (\"+n+\").\"}));var o=[r],a={min:e,max:n};return Lt.runKernelFunc((function(t,o){var a=t.clip(r,e,n);return o([r]),a}),{x:r},(function(t,r){var o=r[0];return{x:function(){return t.where(o.greaterEqual(e).logicalAnd(o.lessEqual(n)),Xn(t))}}}),\"ClipByValue\",a,o)}}),jr=An({cos_:function(t){var e=gn(t,\"x\",\"cos\"),n=[e];return Lt.runKernelFunc((function(t,n){var r=t.cos(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return n.toFloat().sin().neg().mul(t)}}}),\"Cos\",{},n)}}),Xr=An({cosh_:function(t){var e=gn(t,\"x\",\"cosh\");return Lt.runKernelFunc((function(t,n){var r=t.cosh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return n.toFloat().sinh().mulStrict(t)}}}))}}),Yr=An({erf_:function(t){var e=gn(t,\"x\",\"erf\");return C(\"int32\"===e.dtype||\"float32\"===e.dtype,(function(){return\"Input dtype must be `int32` or `float32`.\"})),\"int32\"===e.dtype&&(e=e.toFloat()),Lt.runKernelFunc((function(t,n){var r=t.erf(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.square().neg().exp().mul(2/Math.sqrt(Math.PI)))}}}))}}),$r=An({exp_:function(t){var e=gn(t,\"x\",\"exp\");return Lt.runKernelFunc((function(t,n){var r=t.exp(e);return n([r]),r}),{x:e},(function(t,e){return{x:function(){return t.mulStrict(e[0])}}}),\"Exp\",{},[],[!0])}}),Qr=An({expm1_:function(t){var e=gn(t,\"x\",\"expm1\");return Lt.runKernelFunc((function(t,n){var r=t.expm1(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.exp())}}}))}}),Jr=An({floor_:function(t){var e=gn(t,\"x\",\"floor\");return Lt.runKernelFunc((function(t){return t.floor(e)}),{$x:e},(function(t){return{$x:function(){return Xn(t)}}}))}}),Zr=An({log_:function(t){var e=gn(t,\"x\",\"log\"),n=[e];return Lt.runKernelFunc((function(t,n){var r=t.log(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.div(n.toFloat())}}}),\"Log\",{},n)}}),to=An({log1p_:function(t){var e=gn(t,\"x\",\"log1p\");return Lt.runKernelFunc((function(t,n){var r=t.log1p(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.add(1))}}}))}}),eo=An({logSigmoid_:function(t){var e=gn(t,\"x\",\"logSigmoid\");return Lt.runKernelFunc((function(t,n){var r=t.softplus(e.neg()).neg();return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.neg().sigmoid())}}}))}}),no=An({neg_:function(t){var e=gn(t,\"x\",\"neg\"),n=[e];return Lt.runKernelFunc((function(t){return t.neg(e)}),{x:e},(function(t){return{x:function(){return t.neg()}}}),\"Neg\",{},n)}}),ro=An({reciprocal_:function(t){var e=gn(t,\"x\",\"reciprocal\");return Lt.runKernelFunc((function(t,n){var r=t.reciprocal(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.square().neg())}}}))}}),oo=An({round_:function(t){var e=gn(t,\"x\",\"round\");return Lt.runKernelFunc((function(t){return t.round(e)}),{$x:e},(function(t){return{$x:function(){return Xn(t)}}}))}}),ao=An({rsqrt_:function(t){var e=gn(t,\"x\",\"rsqrt\"),n=[e];return Lt.runKernelFunc((function(t,n){var r=t.rsqrt(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.div(n.pow(1.5).mul(2)).neg()}}}),\"Rsqrt\",{},n)}}),io=An({sigmoid_:function(t){var e=gn(t,\"x\",\"sigmoid\");return Lt.runKernelFunc((function(t,n){var r=t.sigmoid(e);return n([r]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.mul(n.mul(On(1).sub(n)))}}}),\"Sigmoid\")}}),so=An({sign_:function(t){var e=gn(t,\"x\",\"sign\");return Lt.runKernelFunc((function(t){return t.sign(e)}),{$x:e},(function(t){return{$x:function(){return Xn(t)}}}))}}),uo=An({isNaN_:function(t){var e=gn(t,\"x\",\"isNaN\");return Lt.runKernelFunc((function(t){return t.isNaN(e)}),{$x:e},(function(t){return{$x:function(){return Xn(t)}}}))}}),co=An({isInf_:function(t){var e=gn(t,\"x\",\"isInf\");return Lt.runKernelFunc((function(t){return t.isInf(e)}),{$x:e},(function(t){return{$x:function(){return Xn(t)}}}))}}),lo=An({isFinite_:function(t){var e=gn(t,\"x\",\"isFinite\");return Lt.runKernelFunc((function(t){return t.isFinite(e)}),{$x:e},(function(t){return{$x:function(){return Xn(t)}}}))}}),ho=An({sin_:function(t){var e=gn(t,\"x\",\"sin\"),n=[e];return Lt.runKernelFunc((function(t,n){var r=t.sin(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return n.toFloat().cos().mul(t)}}}),\"Sin\",{},n)}}),fo=An({sinh_:function(t){var e=gn(t,\"x\",\"sinh\");return Lt.runKernelFunc((function(t,n){var r=t.sinh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return n.toFloat().cosh().mulStrict(t)}}}))}}),po=An({softplus_:function(t){var e=gn(t,\"x\",\"softplus\");return Lt.runKernelFunc((function(t,n){var r=t.softplus(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.sigmoid())}}}))}}),vo=An({sqrt_:function(t){var e=gn(t,\"x\",\"sqrt\");return Lt.runKernelFunc((function(t,n){var r=t.sqrt(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.toFloat().sqrt().mul(2))}}}))}}),go=An({step_:function(t,e){void 0===e&&(e=0);var n=gn(t,\"x\",\"step\");return Lt.runKernelFunc((function(t){return t.step(n,e)}),{$x:n},(function(t){return{$x:function(){return Xn(t)}}}))}}),mo=An({tan_:function(t){var e=gn(t,\"x\",\"tan\");return Lt.runKernelFunc((function(t,n){var r=t.tan(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.cos().square())}}}))}}),yo=An({tanh_:function(t){var e=gn(t,\"x\",\"tanh\");return Lt.runKernelFunc((function(t,n){var r=t.tanh(e);return n([r]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return On(1).sub(n.square()).mulStrict(t)}}}),\"Tanh\",{},null,[!0])}});var xo=An({addStrict_:function(t,e){var n=gn(t,\"a\",\"addStrict\"),r=gn(e,\"b\",\"addStrict\");return E(n.shape,r.shape,\"Error in addStrict: \"),n.add(r)}}),bo=An({atan2_:function(t,e){var n,r=gn(t,\"a\",\"atan2\"),o=gn(e,\"b\",\"atan2\");n=Nt(r,o),r=n[0],o=n[1];var a=Pr(r.shape,o.shape);return Lt.runKernelFunc((function(t,e){var n=t.atan2(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return{$a:function(){var e=Or(n.square(),r.square()),o=t.mul(r.div(e)),i=Br(n.shape,a);return i.length>0&&(o=o.sum(i)),o.reshape(n.shape)},$b:function(){var e=Or(n.square(),r.square()),o=no(t.mul(n.div(e))),i=Br(r.shape,a);return i.length>0&&(o=o.sum(i)),o.reshape(r.shape)}}}))}}),wo=An({divStrict_:function(t,e){var n=gn(t,\"a\",\"div\"),r=gn(e,\"b\",\"div\");return E(n.shape,r.shape,\"Error in divideStrict: \"),n.div(r)}}),Co=An({floorDiv_:function(t,e){var n,r=gn(t,\"a\",\"floorDiv\"),o=gn(e,\"b\",\"floorDiv\");n=Nt(r,o),r=n[0],o=n[1];var a=Pr(r.shape,o.shape);return Lt.runKernelFunc((function(t,e){var n=t.floorDiv(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){var e=t.div(r.toFloat()),o=Br(n.shape,a);return o.length>0?e.sum(o).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),o=Br(r.shape,a);o.length>0&&(e=e.sum(o).reshape(r.shape));var i=r.square();return e.div(i.toFloat()).neg()}}}),\"FloorDiv\")}}),Eo=An({maximum_:function(t,e){var n,r=gn(t,\"a\",\"maximum\"),o=gn(e,\"b\",\"maximum\");return n=Nt(r,o),r=n[0],o=n[1],\"bool\"===r.dtype&&(r=r.toInt(),o=o.toInt()),Pr(r.shape,o.shape),Lt.runKernelFunc((function(t,e){var n=t.maximum(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){return t.mul(n.greaterEqual(r).toFloat())},b:function(){return t.mul(n.less(r).toFloat())}}}),\"Maximum\")}}),Ro=An({maximumStrict_:function(t,e){var n=gn(t,\"a\",\"maximumStrict\"),r=gn(e,\"b\",\"maximumStrict\");return E(n.shape,r.shape,\"Error in maximumStrict: \"),n.maximum(r)}}),Io=An({minimum_:function(t,e){var n,r=gn(t,\"a\",\"minimum\"),o=gn(e,\"b\",\"minimum\");return n=Nt(r,o),r=n[0],o=n[1],\"bool\"===r.dtype&&(r=r.toInt(),o=o.toInt()),Pr(r.shape,o.shape),Lt.runKernelFunc((function(t,e){var n=t.minimum(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){return t.mul(n.lessEqual(r).toFloat())},b:function(){return t.mul(n.greater(r).toFloat())}}}),\"Minimum\")}}),ko=An({minimumStrict_:function(t,e){var n=gn(t,\"a\",\"minimumStrict\"),r=gn(e,\"b\",\"minimumStrict\");return E(n.shape,r.shape,\"Error in minimumStrict: \"),n.minimum(r)}}),So=An({mod_:function(t,e){var n,r=gn(t,\"a\",\"mod\"),o=gn(e,\"b\",\"mod\");n=Nt(r,o),r=n[0],o=n[1];var a=Pr(r.shape,o.shape);return Lt.runKernelFunc((function(t,e){var n=t.mod(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return{$a:function(){var e=Br(n.shape,a);return e.length>0?t.sum(e).reshape(n.shape):t},$b:function(){var e=t.mul(n.div(r).floor().neg()),o=Br(r.shape,a);return o.length>0?e.sum(o).reshape(r.shape):e}}}))}}),Ao=An({modStrict_:function(t,e){var n=gn(t,\"a\",\"modStrict\"),r=gn(e,\"b\",\"modStrict\");return E(n.shape,r.shape,\"Error in modStrict: \"),n.mod(r)}}),To=An({mul_:function(t,e){var n,r=gn(t,\"a\",\"mul\"),o=gn(e,\"b\",\"mul\");n=Nt(r,o),r=n[0],o=n[1];var a=Pr(r.shape,o.shape);return Lt.runKernelFunc((function(t,e){var n=t.multiply(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){var e=t.mul(r.toFloat()),o=Br(n.shape,a);return o.length>0?e.sum(o).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),o=Br(r.shape,a);return o.length>0?e.sum(o).reshape(r.shape):e}}}),\"Mul\")}}),Do=An({mulStrict_:function(t,e){var n=gn(t,\"a\",\"mul\"),r=gn(e,\"b\",\"mul\");return E(n.shape,r.shape,\"Error in multiplyStrict: \"),n.mul(r)}}),No=An({pow_:function(t,e){var n,r=gn(t,\"base\",\"pow\"),o=gn(e,\"exp\",\"pow\");n=Nt(r,o),r=n[0],o=n[1];var a=Pr(r.shape,o.shape),i=[r,o];return Lt.runKernelFunc((function(t,e){var n=t.pow(r,o);return e([r,o,n]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1],o=e[2];return{a:function(){var e=r.toFloat(),o=t.mul(e.mul(n.pow(e.sub(On(1))))),i=Br(n.shape,a);return i.length>0&&(o=o.sum(i)),o.reshape(n.shape)},b:function(){var e=n.greater(0),i=n.log().where(e,Xn(n)),s=t.mul(o.mul(i)),u=Br(r.shape,a);return u.length>0&&(s=s.sum(u)),s.reshape(r.shape)}}}),\"Pow\",{},i,[!0])}}),Fo=An({powStrict_:function(t,e){return E(t.shape,e.shape,\"Error in powStrict: \"),t.pow(e)}}),_o=An({squaredDifferenceStrict_:function(t,e){var n=gn(t,\"a\",\"squaredDifferenceStrict\"),r=gn(e,\"b\",\"squaredDifferenceStrict\");return E(n.shape,r.shape,\"Error in squaredDifferenceStrict: \"),n.squaredDifference(r)}}),Oo=An({sub_:function(t,e){var n,r=gn(t,\"a\",\"sub\"),o=gn(e,\"b\",\"sub\");n=Nt(r,o),r=n[0],o=n[1];var a=Pr(r.shape,o.shape);return Lt.runKernelFunc((function(t){return t.subtract(r,o)}),{a:r,b:o},(function(t){return{a:function(){var e=t,n=Br(r.shape,a);return n.length>0&&(e=e.sum(n)),e.reshape(r.shape)},b:function(){var e=t,n=Br(o.shape,a);return n.length>0&&(e=e.sum(n)),e.neg().reshape(o.shape)}}}),\"Sub\")}}),Mo=An({subStrict_:function(t,e){var n=gn(t,\"a\",\"subStrict\"),r=gn(e,\"b\",\"subStrict\");return E(n.shape,r.shape,\"Error in subStrict: \"),n.sub(r)}});var Bo=An({div_:function(t,e){var n,r=gn(t,\"a\",\"div\"),o=gn(e,\"b\",\"div\");if(n=Nt(r,o),r=n[0],o=n[1],\"int32\"===r.dtype&&\"int32\"===o.dtype)return Co(r,o);var a={a:r,b:o};return Lt.runKernelFunc((function(t,e){var n=t.realDivide(r,o);return e([r,o]),n}),a,null,wr,{})}});function Po(t,e){if(t.rank<1)throw new Error(\"tf.gatherND() expects the input to be rank 1 or higher, but the rank was \"+t.rank+\".\");if(e.rank<1)throw new Error(\"tf.gatherND() expects the indices to be rank 1 or higher, but the rank was \"+e.rank+\".\");if(\"int32\"!==e.dtype)throw new Error(\"tf.gatherND() expects the indices to be int32 type, but the dtype was \"+e.dtype+\".\");if(e.shape[e.rank-1]>t.rank)throw new Error(\"index innermost dimension length must be <= tensor rank; saw: \"+e.shape[e.rank-1]+\" vs. \"+t.rank);if(0===t.size)throw new Error(\"Requested more than 0 entries, but input is empty. Input shape: \"+t.shape+\".\");for(var n=e.shape,r=n[n.length-1],o=1,a=0;a<n.length-1;++a)o*=n[a];var i=t.shape,s=n.slice();s.pop();var u=1;for(a=r;a<t.rank;++a)u*=i[a],s.push(i[a]);var c=$(t.shape).map((function(t){return t/u})).concat([1]).slice(0,r);return[s,o,u,c]}var Lo=Object.freeze({prepareAndValidate:Po}),Wo=30;function Uo(t){return t<=Wo?t:Y(t,Math.floor(Math.sqrt(t)))}function Vo(t,e,n){var r=e.rank>1?e.shape[e.rank-1]:1,o=e.rank>1?e.rank-1:1,a=\"Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: \"+n.shape+\", indices.shape: \"+e.shape+\", shape: \"+t+\", sliceDim: \"+r+\", and batchDim: \"+o+\".\";if(n.rank<o)throw new Error(a+\" update.rank < \"+o+\". \");if(t.length<r+(n.rank-o))throw new Error(a+\" Output shape length < \"+(r+(n.rank-o)));if(n.rank!==o+t.length-r)throw new Error(a+\" update.rank != \"+(o+t.length-r));for(var i=0;i<o;++i)if(n.shape[i]!==e.shape[i])throw new Error(a+\" updates.shape[\"+i+\"] (\"+n.shape[i]+\") != indices.shape[\"+i+\"] (\"+e.shape[i]+\").\");for(i=0;i<n.rank-o;++i)if(n.shape[i+o]!==t[i+r])throw new Error(a+\" updates.shape[\"+(i+o)+\"] (\"+n.shape[i+o]+\") != shape[\"+(i+o)+\"] (\"+t[i+o]+\")\")}function zo(t,e,n){if(e.rank<1)throw new Error(\"tf.scatterND() expects the indices to be rank 1 or higher, but the rank was \"+e.rank+\".\");if(t.rank<1)throw new Error(\"tf.scatterND() expects the updates to be rank 1 or higher, but the rank was \"+t.rank+\".\");if(\"int32\"!==e.dtype)throw new Error(\"The dtype of 'indices' should be int32, but got dtype: \"+e.dtype);if(n.length<1)throw new Error(\"Output rank must be greater or equal to 1, but got shape: \"+n);if(0===n.length){if(0===e.size)throw new Error(\"Indices specified for empty output. indices shape: \"+e.shape);if(0===t.size)throw new Error(\"Updates specified for empty output. updates shape: \"+t.shape)}Vo(n,e,t)}function Go(t,e,n){for(var r=e.shape.length,o=r>1?e.shape[r-1]:1,a=n.length,i=1,s=o;s<a;++s)i*=n[s];var u=o<1?1:o;return{sliceRank:o,numUpdates:k(e.shape)/u,sliceSize:i,strides:$(n.slice(0,o)).concat([1]),outputSize:k(n)}}var Ho=Object.freeze({validateUpdateShape:Vo,validateInput:zo,calculateShapes:Go});function qo(t,e,n){C(t.rank===e.length,(function(){return\"Error in slice\"+t.rank+\"D: Length of begin \"+e+\" must match the rank of the array (\"+t.rank+\").\"})),C(t.rank===n.length,(function(){return\"Error in slice\"+t.rank+\"D: Length of size \"+n+\" must match the rank of the array (\"+t.rank+\").\"}));for(var r=function(r){C(e[r]+n[r]<=t.shape[r],(function(){return\"Error in slice\"+t.rank+\"D: begin[\"+r+\"] + size[\"+r+\"] (\"+(e[r]+n[r])+\") would overflow input.shape[\"+r+\"] (\"+t.shape[r]+\")\"}))},o=0;o<t.rank;++o)r(o)}function Ko(t){for(var e=[],n=0;t>0;)1&t&&e.push(n),t/=2,n++;return e}function jo(t,e,n){for(var r=[],o=0;o<t.length;o++)r[o]=Math.ceil((e[o]-t[o])/n[o]);return r}function Xo(t,e,n,r,o){var a=e[o],i=n[o]||1;(t&1<<o||null==a)&&(a=i>0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var s=r[o];return a<0&&(a+=s),a=x(0,a,s-1)}function Yo(t,e,n,r,o){var a=e[o],i=n[o]||1;(t&1<<o||null==a)&&(a=i>0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var s=r[o];return a<0&&(a+=s),a=i>0?x(0,a,s):x(-1,a,s-1)}function $o(t,e,n){for(var r=n.length,o=0;o<n.length;o++)if(n[o]>1){r=o;break}for(o=r+1;o<n.length;o++)if(e[o]>0||n[o]!==t[o])return!1;return!0}function Qo(t,e){for(var n=t.length>0?t[t.length-1]:1,r=0;r<t.length-1;r++)n+=t[r]*e[r];return n}var Jo=Object.freeze({assertParamsValid:qo,maskToAxes:Ko,computeOutShape:jo,startForAxis:Xo,stopForAxis:Yo,isSliceContinous:$o,computeFlatOffset:Qo});function Zo(t){return C(X(t),(function(){return\"The f passed in grad(f) must be a function\"})),function(e,n){var r=gn(e,\"x\",\"tf.grad\",null),o=null!=n?gn(n,\"dy\",\"tf.grad\"):null;return Lt.tidy((function(){var e=Lt.gradients((function(){return t(r)}),[r],o),n=e.value,a=e.grads;return null!=o&&E(n.shape,o.shape,\"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)\"),aa(a),a[0]}))}}function ta(t){return C(X(t),(function(){return\"The f passed in grads(f) must be a function\"})),function(e,n){C(Array.isArray(e),(function(){return\"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s\"}));var r=mn(e,\"args\",\"tf.grads\",null),o=null!=n?gn(n,\"dy\",\"tf.grads\"):null;return Lt.tidy((function(){var e=Lt.gradients((function(){return t.apply(void 0,r)}),r,o),n=e.value,a=e.grads;return null!=o&&E(n.shape,o.shape,\"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])\"),aa(a),a}))}}function ea(t){return C(X(t),(function(){return\"The f passed in valueAndGrad(f) must be a function\"})),function(e,n){C(e instanceof wt,(function(){return\"The x passed in valueAndGrad(f)(x) must be a tensor\"})),C(null==n||n instanceof wt,(function(){return\"The dy passed in valueAndGrad(f)(x, dy) must be a tensor\"}));var r=Lt.gradients((function(){return t(e)}),[e],n),o=r.grads,a=r.value;return aa(o),{grad:o[0],value:a}}}function na(t){return C(X(t),(function(){return\"The f passed in valueAndGrads(f) must be a function\"})),function(e,n){C(Array.isArray(e)&&e.every((function(t){return t instanceof wt})),(function(){return\"The args passed in valueAndGrads(f)(args) must be array of tensors\"})),C(null==n||n instanceof wt,(function(){return\"The dy passed in valueAndGrads(f)(args, dy) must be a tensor\"}));var r=Lt.gradients((function(){return t.apply(void 0,e)}),e,n);return null!=n&&E(r.value.shape,n.shape,\"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])\"),aa(r.grads),r}}function ra(t,e){C(X(t),(function(){return\"The f passed in variableGrads(f) must be a function\"})),C(null==e||Array.isArray(e)&&e.every((function(t){return t instanceof St})),(function(){return\"The varList passed in variableGrads(f, varList) must be an array of variables\"}));var n=null!=e;if(!n)for(var r in e=[],Lt.registeredVariables)e.push(Lt.registeredVariables[r]);var o=n?e.filter((function(t){return!t.trainable})):null,a=e.length;C((e=e.filter((function(t){return t.trainable}))).length>0,(function(){return\"variableGrads() expects at least one of the input variables to be trainable, but none of the \"+a+\" variables is trainable.\"}));var i=Lt.gradients(t,e,null,!0),s=i.value,u=i.grads;C(u.some((function(t){return null!=t})),(function(){return\"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize().\"})),C(0===s.rank,(function(){return\"The f passed in variableGrads(f) must return a scalar, but it returned a rank-\"+s.rank+\" tensor\"}));var c={};return e.forEach((function(t,e){null!=u[e]&&(c[t.name]=u[e])})),null!=o&&o.forEach((function(t){return c[t.name]=null})),{value:s,grads:c}}function oa(t){return Lt.customGrad(t)}function aa(t){if(t.filter((function(t){return null==t})).length>0)throw new Error(\"Cannot compute gradient of y=f(x) with respect to x. Make sure that\\n    the f you passed encloses all operations that lead from x to y.\")}var ia=An({softmax_:function(t,e){void 0===e&&(e=-1);var n=gn(t,\"logits\",\"softmax\",\"float32\");if(-1===e&&(e=n.rank-1),e!==n.rank-1)throw Error(\"Softmax along a non-last dimension is not yet supported. Logits was rank \"+n.rank+\" and dim was \"+e);return Lt.runKernelFunc((function(t,r){var o=t.softmax(n,e);return r([o]),o}),{logits:n},(function(t,n){var r=n[0],o=t.mul(r);return{logits:function(){return o.sub(o.sum([e],!0).mul(r))}}}),\"Softmax\",{dim:e},[],[!0])}}),sa=An({logSoftmax_:function(t,e){void 0===e&&(e=-1);var n=gn(t,\"logits\",\"logSoftmax\");if(-1===e&&(e=n.rank-1),e!==n.rank-1)throw Error(\"Log Softmax along a non-last dimension is not yet supported. Logits was rank \"+n.rank+\" and axis was \"+e);return oa((function(t,n){var r=t.max(e,!0),o=t.sub(r),a=o.toFloat().sub(o.exp().sum(e,!0).log());n([a]);return{value:a,gradFunc:function(t,n){var r=n[0].exp();return t.sub(t.sum(e,!0).mul(r))}}}))(n)}});var ua=An({transpose_:function(t,e){var n=gn(t,\"x\",\"transpose\");if(null==e&&(e=n.shape.map((function(t,e){return e})).reverse()),C(n.rank===e.length,(function(){return\"Error in transpose: rank of input \"+n.rank+\" must match length of perm \"+e+\".\"})),e.forEach((function(t){C(t>=0&&t<n.rank,(function(){return\"All entries in 'perm' must be between 0 and \"+(n.rank-1)+\" but got \"+e}))})),n.rank<=1)return n.clone();var r={perm:e};return Lt.runKernelFunc((function(t){return t.transpose(n,e)}),{x:n},null,\"Transpose\",r)}}),ca=function(){function t(t,e){this.backend=t,this.dataMover=e,this.data=new WeakMap,this.dataIdsCount=0}return t.prototype.get=function(t){return this.data.has(t)||this.dataMover.moveData(this.backend,t),this.data.get(t)},t.prototype.set=function(t,e){this.dataIdsCount++,this.data.set(t,e)},t.prototype.has=function(t){return this.data.has(t)},t.prototype.delete=function(t){return this.dataIdsCount--,this.data.delete(t)},t.prototype.numDataIds=function(){return this.dataIdsCount},t}(),la=function(){function t(){}return t.prototype.time=function(t){return ha(\"time\")},t.prototype.read=function(t){return ha(\"read\")},t.prototype.readSync=function(t){return ha(\"readSync\")},t.prototype.numDataIds=function(){return ha(\"numDataIds\")},t.prototype.disposeData=function(t){return ha(\"disposeData\")},t.prototype.write=function(t,e,n){return ha(\"write\")},t.prototype.move=function(t,e,n,r){return ha(\"move\")},t.prototype.memory=function(){return ha(\"memory\")},t.prototype.floatPrecision=function(){return ha(\"floatPrecision\")},t.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},t.prototype.batchMatMul=function(t,e,n,r){return ha(\"batchMatMul\")},t.prototype.fusedBatchMatMul=function(t){t.a,t.b,t.transposeA,t.transposeB,t.bias,t.activation,t.preluActivationWeights;return ha(\"fusedBatchMatMul\")},t.prototype.slice=function(t,e,n){return ha(\"slice\")},t.prototype.stridedSlice=function(t,e,n,r){return ha(\"stridedSlice\")},t.prototype.unstack=function(t,e){return ha(\"unstack\")},t.prototype.reverse=function(t,e){return ha(\"reverse\")},t.prototype.concat=function(t,e){return ha(\"concat\")},t.prototype.neg=function(t){return ha(\"neg\")},t.prototype.add=function(t,e){return ha(\"add\")},t.prototype.addN=function(t){return ha(\"addN\")},t.prototype.subtract=function(t,e){return ha(\"subtract\")},t.prototype.multiply=function(t,e){return ha(\"multiply\")},t.prototype.realDivide=function(t,e){return ha(\"realDivide\")},t.prototype.floorDiv=function(t,e){return ha(\"floorDiv\")},t.prototype.sum=function(t,e){return ha(\"sum\")},t.prototype.prod=function(t,e){return ha(\"prod\")},t.prototype.unsortedSegmentSum=function(t,e,n){return ha(\"unsortedSegmentSum\")},t.prototype.argMin=function(t,e){return ha(\"argMin\")},t.prototype.argMax=function(t,e){return ha(\"argMax\")},t.prototype.equal=function(t,e){return ha(\"equal\")},t.prototype.notEqual=function(t,e){return ha(\"notEqual\")},t.prototype.less=function(t,e){return ha(\"less\")},t.prototype.lessEqual=function(t,e){return ha(\"lessEqual\")},t.prototype.greater=function(t,e){return ha(\"greater\")},t.prototype.greaterEqual=function(t,e){return ha(\"greaterEqual\")},t.prototype.logicalNot=function(t){return ha(\"logicalNot\")},t.prototype.logicalAnd=function(t,e){return ha(\"logicalAnd\")},t.prototype.logicalOr=function(t,e){return ha(\"logicalOr\")},t.prototype.where=function(t){return ha(\"where\")},t.prototype.select=function(t,e,n){return ha(\"select\")},t.prototype.topk=function(t,e,n){return ha(\"topk\")},t.prototype.min=function(t,e){return ha(\"min\")},t.prototype.minimum=function(t,e){return ha(\"minimum\")},t.prototype.mod=function(t,e){return ha(\"mod\")},t.prototype.max=function(t,e){return ha(\"max\")},t.prototype.maximum=function(t,e){return ha(\"maximum\")},t.prototype.all=function(t,e){return ha(\"all\")},t.prototype.any=function(t,e){return ha(\"any\")},t.prototype.squaredDifference=function(t,e){return ha(\"squaredDifference\")},t.prototype.ceil=function(t){return ha(\"ceil\")},t.prototype.floor=function(t){return ha(\"floor\")},t.prototype.round=function(t){return ha(\"round\")},t.prototype.sign=function(t){return ha(\"sign\")},t.prototype.isNaN=function(t){return ha(\"isNaN\")},t.prototype.isInf=function(t){return ha(\"isInf\")},t.prototype.isFinite=function(t){return ha(\"isFinite\")},t.prototype.pow=function(t,e){return ha(\"pow\")},t.prototype.exp=function(t){return ha(\"exp\")},t.prototype.expm1=function(t){return ha(\"expm1\")},t.prototype.softmax=function(t,e){return ha(\"softmax\")},t.prototype.log=function(t){return ha(\"log\")},t.prototype.log1p=function(t){return ha(\"log1p\")},t.prototype.sqrt=function(t){return ha(\"sqrt\")},t.prototype.rsqrt=function(t){return ha(\"rsqrt\")},t.prototype.square=function(t){return ha(\"square\")},t.prototype.reciprocal=function(t){return ha(\"reciprocal\")},t.prototype.relu=function(t){return ha(\"relu\")},t.prototype.relu6=function(t){return ha(\"relu6\")},t.prototype.prelu=function(t,e){return ha(\"prelu\")},t.prototype.elu=function(t){return ha(\"elu\")},t.prototype.eluDer=function(t,e){return ha(\"eluDer\")},t.prototype.selu=function(t){return ha(\"selu\")},t.prototype.int=function(t){return ha(\"int\")},t.prototype.clip=function(t,e,n){return ha(\"clip\")},t.prototype.abs=function(t){return ha(\"abs\")},t.prototype.complexAbs=function(t){return ha(\"complexAbs\")},t.prototype.sigmoid=function(t){return ha(\"sigmoid\")},t.prototype.softplus=function(t){return ha(\"softplus\")},t.prototype.sin=function(t){return ha(\"sin\")},t.prototype.cos=function(t){return ha(\"cos\")},t.prototype.tan=function(t){return ha(\"tan\")},t.prototype.asin=function(t){return ha(\"asin\")},t.prototype.acos=function(t){return ha(\"acos\")},t.prototype.atan=function(t){return ha(\"atan\")},t.prototype.atan2=function(t,e){return ha(\"atan2\")},t.prototype.sinh=function(t){return ha(\"sinh\")},t.prototype.cosh=function(t){return ha(\"cosh\")},t.prototype.tanh=function(t){return ha(\"tanh\")},t.prototype.asinh=function(t){return ha(\"asinh\")},t.prototype.acosh=function(t){return ha(\"acosh\")},t.prototype.atanh=function(t){return ha(\"atanh\")},t.prototype.erf=function(t){return ha(\"erf\")},t.prototype.step=function(t,e){return ha(\"step\")},t.prototype.fusedConv2d=function(t){t.input,t.filter,t.convInfo,t.bias,t.activation,t.preluActivationWeights;return ha(\"fusedConv2d\")},t.prototype.conv2d=function(t,e,n){return ha(\"conv2d\")},t.prototype.conv2dDerInput=function(t,e,n){return ha(\"conv2dDerInput\")},t.prototype.conv2dDerFilter=function(t,e,n){return ha(\"conv2dDerFilter\")},t.prototype.fusedDepthwiseConv2D=function(t){t.input,t.filter,t.convInfo,t.bias,t.activation,t.preluActivationWeights;return ha(\"fusedDepthwiseConv2D\")},t.prototype.depthwiseConv2D=function(t,e,n){return ha(\"depthwiseConv2D\")},t.prototype.depthwiseConv2DDerInput=function(t,e,n){return ha(\"depthwiseConv2DDerInput\")},t.prototype.depthwiseConv2DDerFilter=function(t,e,n){return ha(\"depthwiseConv2DDerFilter\")},t.prototype.conv3d=function(t,e,n){return ha(\"conv3d\")},t.prototype.conv3dDerInput=function(t,e,n){return ha(\"conv3dDerInput\")},t.prototype.conv3dDerFilter=function(t,e,n){return ha(\"conv3dDerFilter\")},t.prototype.maxPool=function(t,e){return ha(\"maxPool\")},t.prototype.maxPoolBackprop=function(t,e,n,r){return ha(\"maxPoolBackprop\")},t.prototype.avgPool=function(t,e){return ha(\"avgPool\")},t.prototype.avgPoolBackprop=function(t,e,n){return ha(\"avgPoolBackprop\")},t.prototype.avgPool3d=function(t,e){return ha(\"avgPool3d\")},t.prototype.avgPool3dBackprop=function(t,e,n){return ha(\"avgPool3dBackprop\")},t.prototype.maxPool3d=function(t,e){return ha(\"maxPool3d\")},t.prototype.maxPool3dBackprop=function(t,e,n,r){return ha(\"maxPool3dBackprop\")},t.prototype.reshape=function(t,e){return ha(\"reshape\")},t.prototype.cast=function(t,e){return ha(\"cast\")},t.prototype.tile=function(t,e){return ha(\"tile\")},t.prototype.pad=function(t,e,n){return ha(\"pad\")},t.prototype.transpose=function(t,e){return ha(\"transpose\")},t.prototype.gather=function(t,e,n){return ha(\"gather\")},t.prototype.gatherND=function(t,e){return ha(\"gatherND\")},t.prototype.scatterND=function(t,e,n){return ha(\"scatterND\")},t.prototype.batchToSpaceND=function(t,e,n){return ha(\"batchToSpaceND\")},t.prototype.spaceToBatchND=function(t,e,n){return ha(\"spaceToBatchND\")},t.prototype.resizeBilinear=function(t,e,n,r){return ha(\"resizeBilinear\")},t.prototype.resizeBilinearBackprop=function(t,e,n){return ha(\"resizeBilinearBackprop\")},t.prototype.resizeNearestNeighbor=function(t,e,n,r){return ha(\"resizeNearestNeighbor\")},t.prototype.resizeNearestNeighborBackprop=function(t,e,n){return ha(\"resizeNearestNeighborBackprop\")},t.prototype.batchNormalization=function(t,e,n,r,o,a){return ha(\"batchNormalization\")},t.prototype.localResponseNormalization4D=function(t,e,n,r,o){return ha(\"localResponseNormalization4D\")},t.prototype.LRNGrad=function(t,e,n,r,o,a,i){return ha(\"LRNGrad\")},t.prototype.multinomial=function(t,e,n,r){return ha(\"multinomial\")},t.prototype.oneHot=function(t,e,n,r){return ha(\"oneHot\")},t.prototype.cumsum=function(t,e,n,r){return ha(\"cumsum\")},t.prototype.nonMaxSuppression=function(t,e,n,r,o){return ha(\"nonMaxSuppression\")},t.prototype.fft=function(t){return ha(\"fft\")},t.prototype.ifft=function(t){return ha(\"ifft\")},t.prototype.complex=function(t,e){return ha(\"complex\")},t.prototype.real=function(t){return ha(\"real\")},t.prototype.imag=function(t){return ha(\"imag\")},t.prototype.cropAndResize=function(t,e,n,r,o,a){return ha(\"cropAndResize\")},t.prototype.depthToSpace=function(t,e,n){return ha(\"depthToSpace\")},t.prototype.split=function(t,e,n){return ha(\"split\")},t.prototype.sparseToDense=function(t,e,n,r){return ha(\"sparseToDense\")},t.prototype.diag=function(t){return ha(\"diag\")},t.prototype.fill=function(t,e,n){return ha(\"fill\")},t.prototype.onesLike=function(t){return ha(\"onesLike\")},t.prototype.zerosLike=function(t){return ha(\"zerosLike\")},t.prototype.linspace=function(t,e,n){return ha(\"linspace\")},t.prototype.dispose=function(){return ha(\"dispose\")},t}();function ha(t){throw new Error(\"'\"+t+\"' not yet implemented or not found in the registry. Did you forget to import the kernel?\")}function fa(t,e,n,r,o,a,i){void 0===i&&(i=\"channelsLast\");var s,u=ma(e),c=u[0],l=u[1];if(\"channelsLast\"===i)s=[c,l,t[3],t[3]];else{if(\"channelsFirst\"!==i)throw new Error(\"Unknown dataFormat \"+i);s=[c,l,t[1],t[1]]}return pa(t,s,n,r,o,a,!1,i)}function da(t,e,n,r,o,a,i){void 0===i&&(i=\"NDHWC\");var s,u,c=ya(e),l=c[0],h=c[1],f=c[2];if(\"NDHWC\"===i)u=\"channelsLast\",s=[l,h,f,t[4],t[4]];else{if(\"NCDHW\"!==i)throw new Error(\"Unknown dataFormat \"+i);u=\"channelsFirst\",s=[l,h,f,t[1],t[1]]}return va(t,s,n,r,o,!1,u,a)}function pa(t,e,n,r,o,a,i,s){void 0===i&&(i=!1),void 0===s&&(s=\"channelsLast\");var u=[-1,-1,-1,-1],c=u[0],l=u[1],h=u[2],f=u[3];if(\"channelsLast\"===s)c=t[0],l=t[1],h=t[2],f=t[3];else{if(\"channelsFirst\"!==s)throw new Error(\"Unknown dataFormat \"+s);c=t[0],f=t[1],l=t[2],h=t[3]}var d,p=e[0],v=e[1],g=e[3],m=ma(n),y=m[0],x=m[1],b=ma(r),w=b[0],E=b[1],R=xa(p,w),I=xa(v,E),k=function(t,e,n,r,o,a,i,s){var u,c,l;if(\"number\"==typeof t){u={top:t,bottom:t,left:t,right:t,type:0===t?\"VALID\":\"NUMBER\"};var h=function(t,e,n,r,o){null==r&&(r=ga(t,e,n));var a=t[0],i=t[1],s=ba((a-e+2*r)/n+1,o);C(A(s),(function(){return\"The output # of rows (\"+s+\") must be an integer. Change the stride and/or zero pad parameters\"}));var u=ba((i-e+2*r)/n+1,o);return C(A(u),(function(){return\"The output # of columns (\"+u+\") must be an integer. Change the stride and/or zero pad parameters\"})),[s,u]}([e,n],a,r,t,s);c=h[0],l=h[1]}else if(\"same\"===t){c=Math.ceil(e/r),l=Math.ceil(n/o);var f=Math.max(0,(c-1)*r+a-e),d=Math.max(0,(l-1)*o+i-n),p=Math.floor(f/2),v=f-p,g=Math.floor(d/2);u={top:p,bottom:v,left:g,right:d-g,type:\"SAME\"}}else{if(\"valid\"!==t)throw Error(\"Unknown padding parameter: \"+t);u={top:0,bottom:0,left:0,right:0,type:\"VALID\"},c=Math.ceil((e-a+1)/r),l=Math.ceil((n-i+1)/o)}return{padInfo:u,outHeight:c,outWidth:l}}(o,l,h,y,x,R,I,a),S=k.padInfo,T=k.outHeight,D=k.outWidth,N=i?g*f:g;return\"channelsFirst\"===s?d=[c,N,T,D]:\"channelsLast\"===s&&(d=[c,T,D,N]),{batchSize:c,dataFormat:s,inHeight:l,inWidth:h,inChannels:f,outHeight:T,outWidth:D,outChannels:N,padInfo:S,strideHeight:y,strideWidth:x,filterHeight:p,filterWidth:v,effectiveFilterHeight:R,effectiveFilterWidth:I,dilationHeight:w,dilationWidth:E,inShape:t,outShape:d,filterShape:e}}function va(t,e,n,r,o,a,i,s){void 0===a&&(a=!1),void 0===i&&(i=\"channelsLast\");var u=[-1,-1,-1,-1,-1],c=u[0],l=u[1],h=u[2],f=u[3],d=u[4];if(\"channelsLast\"===i)c=t[0],l=t[1],h=t[2],f=t[3],d=t[4];else{if(\"channelsFirst\"!==i)throw new Error(\"Unknown dataFormat \"+i);c=t[0],d=t[1],l=t[2],h=t[3],f=t[4]}var p,v=e[0],g=e[1],m=e[2],y=e[4],x=ya(n),b=x[0],w=x[1],E=x[2],R=ya(r),I=R[0],k=R[1],S=R[2],T=xa(v,I),D=xa(g,k),N=xa(m,S),F=function(t,e,n,r,o,a,i,s,u,c,l){var h,f,d,p;if(\"number\"==typeof t){h={top:t,bottom:t,left:t,right:t,front:t,back:t,type:0===t?\"VALID\":\"NUMBER\"};var v=function(t,e,n,r,o,a){null==o&&(o=ga(t,e,r));var i=t[0],s=t[1],u=t[2],c=ba((i-e+2*o)/r+1,a);C(A(c),(function(){return\"The output # of depths (\"+c+\") must be an integer. Change the stride and/or zero pad parameters\"}));var l=ba((s-e+2*o)/r+1,a);C(A(l),(function(){return\"The output # of rows (\"+l+\") must be an integer. Change the stride and/or zero pad parameters\"}));var h=ba((u-e+2*o)/r+1,a);return C(A(h),(function(){return\"The output # of columns (\"+h+\") must be an integer. Change the stride and/or zero pad parameters\"})),[c,l,h,n]}([e,n,r,1],s,1,o,t,l);f=v[0],d=v[1],p=v[2]}else if(\"same\"===t){f=Math.ceil(e/o),d=Math.ceil(n/a),p=Math.ceil(r/i);var g=(f-1)*o+s-e,m=(d-1)*a+u-n,y=(p-1)*i+c-r,x=Math.floor(g/2),b=g-x,w=Math.floor(m/2),E=m-w,R=Math.floor(y/2);h={top:w,bottom:E,left:R,right:y-R,front:x,back:b,type:\"SAME\"}}else{if(\"valid\"!==t)throw Error(\"Unknown padding parameter: \"+t);h={top:0,bottom:0,left:0,right:0,front:0,back:0,type:\"VALID\"},f=Math.ceil((e-s+1)/o),d=Math.ceil((n-u+1)/a),p=Math.ceil((r-c+1)/i)}return{padInfo:h,outDepth:f,outHeight:d,outWidth:p}}(o,l,h,f,b,w,E,T,D,N,s),_=F.padInfo,O=F.outDepth,M=F.outHeight,B=F.outWidth,P=a?y*d:y;return\"channelsFirst\"===i?p=[c,P,O,M,B]:\"channelsLast\"===i&&(p=[c,O,M,B,P]),{batchSize:c,dataFormat:i,inDepth:l,inHeight:h,inWidth:f,inChannels:d,outDepth:O,outHeight:M,outWidth:B,outChannels:P,padInfo:_,strideDepth:b,strideHeight:w,strideWidth:E,filterDepth:v,filterHeight:g,filterWidth:m,effectiveFilterDepth:T,effectiveFilterHeight:D,effectiveFilterWidth:N,dilationDepth:I,dilationHeight:k,dilationWidth:S,inShape:t,outShape:p,filterShape:e}}function ga(t,e,n,r){void 0===r&&(r=1);var o=xa(e,r);return Math.floor((t[0]*(n-1)-n+o)/2)}function ma(t){return\"number\"==typeof t?[t,t,t]:2===t.length?[t[0],t[1],1]:t}function ya(t){return\"number\"==typeof t?[t,t,t]:t}function xa(t,e){return e<=1?t:t+(t-1)*(e-1)}function ba(t,e){if(!e)return t;switch(e){case\"round\":return Math.round(t);case\"ceil\":return Math.ceil(t);case\"floor\":return Math.floor(t);default:throw new Error(\"Unknown roundingMode \"+e)}}function wa(t){var e=ma(t),n=e[0],r=e[1],o=e[2];return 1===n&&1===r&&1===o}function Ca(t,e){return wa(t)||wa(e)}function Ea(t){if(\"NHWC\"===t)return\"channelsLast\";if(\"NCHW\"===t)return\"channelsFirst\";throw new Error(\"Unknown dataFormat \"+t)}function Ra(t,e,n){if(\"complex64\"===e){if(\"complex64\"===t.dtype)return t.clone();var r=Gn(t.shape),o=t.toFloat(),a=n.complex(o,r);return r.dispose(),o.dispose(),a}if(!U(t.dtype,e))return Lt.makeTensorFromDataId(t.dataId,t.shape,e);if(\"complex64\"===t.dtype){var i=n.real(t);a=i.cast(e);return i.dispose(),a}if(\"int32\"===e)return n.int(t);if(\"bool\"===e){var s=On(0,t.dtype);a=n.notEqual(t,s);return s.dispose(),a}throw new Error(\"Error in Cast: failed to cast \"+t.dtype+\" to \"+e)}function Ia(t,e){return Lt.makeTensorFromDataId(t.dataId,e,t.dtype)}function ka(t,e,n){var r=(e-t)/(n-1),o=tt(n,\"float32\");o[0]=t;for(var a=1;a<o.length;a++)o[a]=o[a-1]+r;return Mn(o,\"float32\")}var Sa=Object.freeze({castTensor:Ra,reshapeTensor:Ia,linspaceImpl:ka,upcastType:Tt,axesAreInnerMostDims:yn,combineLocations:xn,computeOutAndReduceShapes:bn,expandShapeToKeepDim:wn,assertAxesAreInnerMostDims:Cn,getAxesPermutation:En,getUndoAxesPermutation:Rn,getInnerMostAxes:In,getBroadcastDims:Mr,getReductionAxes:Br,assertAndGetBroadcastShape:Pr,assertParamsConsistent:kn,computeOutShape:Sn,computePool2DInfo:fa,computePool3DInfo:da,computeConv2DInfo:pa,computeConv3DInfo:va,computeDefaultPad:ga,tupleValuesAreOne:wa,eitherStridesOrDilationsAreOne:Ca,convertConv2DDataFormat:Ea,PARALLELIZE_THRESHOLD:Wo,computeOptimalWindowSize:Uo});function Aa(t,e){if(t.length!==e.length)throw new Error(\"Cannot merge real and imag arrays of different lengths. real:\"+t.length+\", imag: \"+e.length+\".\");for(var n=new Float32Array(2*t.length),r=0;r<n.length;r+=2)n[r]=t[r/2],n[r+1]=e[r/2];return n}function Ta(t,e){return{real:t[2*e],imag:t[2*e+1]}}function Da(t,e,n,r){t[2*r]=e,t[2*r+1]=n}function Na(t,e,n){var r=(n?2:-2)*Math.PI*(t/e);return{real:Math.cos(r),imag:Math.sin(r)}}function Fa(t,e,n){var r=function(t,e,n){return function(t,e,n){var r=0,o=t.length,a=0,i=!1;for(;r<o;){var s=n(e,t[a=r+(o-r>>>1)]);s>0?r=a+1:(o=a,i=!s)}return i?r:-r-1}(t,e,n||_a)}(t,e,n),o=r<0?-(r+1):r;t.splice(o,0,e)}function _a(t,e){return t>e?1:t<e?-1:0}function Oa(t,e,n,r,o){return Ba(t,e,n,r,o,0).selectedIndices}function Ma(t,e,n,r,o,a){var i=Ba(t,e,n,r,o,a,!0);return i.numValidOutputs.dispose(),{selectedIndices:i.selectedIndices,selectedScores:i.selectedScores}}function Ba(t,e,n,r,o,a,i,s){void 0===i&&(i=!1),void 0===s&&(s=!1);for(var u=Array.from(e).map((function(t,e){return{score:t,boxIndex:e,suppressBeginIndex:0}})).filter((function(t){return t.score>o})).sort(Wa),c=a>0?-.5/a:0,l=[],h=[];l.length<n&&u.length>0;){var f=u.pop(),d=f.score,p=f.boxIndex,v=f.suppressBeginIndex;if(d<o)break;for(var g=!1,m=l.length-1;m>=v;--m){var y=Pa(t,p,l[m]);if(y>=r){g=!0;break}if(f.score=f.score*La(r,c,y),f.score<=o)break}f.suppressBeginIndex=l.length,g||(f.score===d?(l.push(p),h.push(f.score)):f.score>o&&Fa(u,f,Wa))}var x=l.length;return s&&(l.fill(0,x),h.fill(0,x)),{selectedIndices:Mn(l,\"int32\"),selectedScores:Mn(h,\"float32\"),numValidOutputs:On(x,\"int32\")}}function Pa(t,e,n){var r=t.subarray(4*e,4*e+4),o=t.subarray(4*n,4*n+4),a=Math.min(r[0],r[2]),i=Math.min(r[1],r[3]),s=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),c=Math.min(o[0],o[2]),l=Math.min(o[1],o[3]),h=Math.max(o[0],o[2]),f=Math.max(o[1],o[3]),d=(s-a)*(u-i),p=(h-c)*(f-l);if(d<=0||p<=0)return 0;var v=Math.max(a,c),g=Math.max(i,l),m=Math.min(s,h),y=Math.min(u,f),x=Math.max(m-v,0)*Math.max(y-g,0);return x/(d+p-x)}function La(t,e,n){var r=Math.exp(e*n*n);return n<=t?r:0}function Wa(t,e){return t.score-e.score||t.score===e.score&&e.boxIndex-t.boxIndex}function Ua(t,e,n){var r=new Array(t.rank).fill(0),o=t.shape.slice();return e.map((function(e){o[n]=e;var a=t.slice(r,o);return r[n]+=e,a}))}function Va(t,e){for(var n=new Array(t.rank),r=0;r<n.length;r++)n[r]=t.shape[r]*e[r];var o=er(n,t.dtype);for(r=0;r<o.values.length;++r){for(var a=o.indexToLoc(r),i=new Array(t.rank),s=0;s<i.length;s++)i[s]=a[s]%t.shape[s];var u=t.locToIndex(i);o.values[r]=t.values[u]}return o.toTensor()}function za(t,e,n,r,o){for(var a=e[e.length-1],i=[t.length/a,a],s=i[0],u=i[1],c=B(n,s*r),l=B(\"int32\",s*r),h=0;h<s;h++){for(var f=h*u,d=t.subarray(f,f+u),p=[],v=0;v<d.length;v++)p.push({value:d[v],index:v});p.sort((function(t,e){return e.value-t.value}));var g=h*r,m=c.subarray(g,g+r),y=l.subarray(g,g+r);for(v=0;v<r;v++)m[v]=p[v].value,y[v]=p[v].index}var x=e.slice();return x[x.length-1]=r,[Fn(c,x,n),Fn(l,x,\"int32\")]}function Ga(t,e){for(var n=[],r=0;r<e.length;r++)e[r]&&n.push(r);var o=er(t,\"int32\"),a=er([n.length,t.length],\"int32\");for(r=0;r<n.length;r++){var i=o.indexToLoc(n[r]),s=r*t.length;a.values.set(i,s)}return a.toTensor()}var Ha=function(t,e){this.outputShape=[],this.outputShape=t,this.variableNames=e.map((function(t,e){return\"T\"+e}));var n=[];this.variableNames.forEach((function(t){n.push(\"float v\"+t+\" = get\"+t+\"AtOutCoords();\")}));var r=this.variableNames.map((function(t){return\"v\"+t})).join(\" + \");this.userCode=\"\\n      void main() {\\n        \"+n.join(\"\\n        \")+\"\\n\\n        float result = \"+r+\";\\n        setOutput(result);\\n      }\\n    \"},qa=function(t,e){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.variableNames=e.map((function(t,e){return\"T\"+e}));var n=[];this.variableNames.forEach((function(t){n.push(\"vec4 v\"+t+\" = get\"+t+\"AtOutCoords();\")}));var r=this.variableNames.map((function(t){return\"v\"+t})).join(\" + \");this.userCode=\"\\n      void main() {\\n        \"+n.join(\"\\n        \")+\"\\n\\n        vec4 result = \"+r+\";\\n        setOutput(result);\\n      }\\n    \"},Ka=function(t,e,n){this.variableNames=[\"A\"];var r=t.windowSize,o=t.batchSize,a=t.inSize,i=Math.ceil(a/r);n||this.variableNames.push(\"bestIndicesA\"),this.outputShape=[o,i];var s=\"max\"===e?\">\":\"<\",u=n?\"inOffset + i;\":\"round(getBestIndicesA(batch, inOffset + i));\";this.userCode=\"\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int outIdx = coords[1];\\n        int inOffset = outIdx * \"+r+\";\\n\\n        int bestIndex = inOffset;\\n        float bestValue = getA(batch, bestIndex);\\n\\n        for (int i = 0; i < \"+r+\"; i++) {\\n          int inIdx = \"+u+\";\\n          float candidate = getA(batch, inIdx);\\n          if (candidate \"+s+\" bestValue) {\\n            bestValue = candidate;\\n            bestIndex = inIdx;\\n          }\\n        }\\n        setOutput(float(bestIndex));\\n      }\\n    \"};function ja(t,e){return[\"x\",\"y\",\"z\",\"w\",\"u\",\"v\"].slice(0,e).map((function(e){return t+\".\"+e}))}function Xa(t,e){return 1===e?[t]:ja(t,e)}function Ya(){var t,e,n,r,o,a,s,u,c,l;return 2===i().getNumber(\"WEBGL_VERSION\")?(t=\"#version 300 es\",e=\"in\",n=\"out\",r=\"in\",o=\"texture\",a=\"outputColor\",s=\"out vec4 outputColor;\",u=\"\\n      bool isnan_custom(float val) {\\n        return (val > 0.0 || val < 0.0) ? false : val != 0.0;\\n      }\\n\\n      bvec4 isnan_custom(vec4 val) {\\n        return bvec4(isnan_custom(val.x),\\n          isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w));\\n      }\\n\\n      #define isnan(value) isnan_custom(value)\\n    \",c=\"\",l=\"\\n      #define round(value) newRound(value)\\n      int newRound(float value) {\\n        return int(floor(value + 0.5));\\n      }\\n\\n      ivec4 newRound(vec4 value) {\\n        return ivec4(floor(value + vec4(0.5)));\\n      }\\n    \"):(t=\"\",e=\"attribute\",n=\"varying\",r=\"varying\",o=\"texture2D\",a=\"gl_FragColor\",s=\"\",u=\"\\n      #define isnan(value) isnan_custom(value)\\n      bool isnan_custom(float val) {\\n        return (val > 0. || val < 1. || val == 0.) ? false : true;\\n      }\\n      bvec4 isnan_custom(vec4 val) {\\n        return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));\\n      }\\n    \",c=\"\\n      uniform float INFINITY;\\n\\n      bool isinf(float val) {\\n        return abs(val) == INFINITY;\\n      }\\n      bvec4 isinf(vec4 val) {\\n        return equal(abs(val), vec4(INFINITY));\\n      }\\n    \",l=\"\\n      int round(float value) {\\n        return int(floor(value + 0.5));\\n      }\\n\\n      ivec4 round(vec4 value) {\\n        return ivec4(floor(value + vec4(0.5)));\\n      }\\n    \"),{version:t,attribute:e,varyingVs:n,varyingFs:r,texture2D:o,output:a,defineOutput:s,defineSpecialNaN:u,defineSpecialInf:c,defineRound:l}}function $a(t,e,n){void 0===n&&(n=\"index\");var r=$(e);return r.map((function(e,o){return\"int \"+t[o]+\" = \"+n+\" / \"+e+\"; \"+(o===r.length-1?\"int \"+t[o+1]+\" = \"+n+\" - \"+t[o]+\" * \"+e:\"index -= \"+t[o]+\" * \"+e)+\";\"})).join(\"\")}function Qa(t){var e=$(t).map((function(t){return t.toString()}));return\"\\n  int getFlatIndex(ivec3 coords) {\\n    return coords.x * \"+e[0]+\" + coords.y * \"+e[1]+\" + coords.z;\\n  }\\n\"}var Ja=\"\\n  const float FLOAT_MAX = 1.70141184e38;\\n  const float FLOAT_MIN = 1.17549435e-38;\\n\\n  lowp vec4 encode_float(highp float v) {\\n    if (isnan(v)) {\\n      return vec4(255, 255, 255, 255);\\n    }\\n\\n    highp float av = abs(v);\\n\\n    if(av < FLOAT_MIN) {\\n      return vec4(0.0, 0.0, 0.0, 0.0);\\n    } else if(v > FLOAT_MAX) {\\n      return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\\n    } else if(v < -FLOAT_MAX) {\\n      return vec4(0.0, 0.0,  128.0, 255.0) / 255.0;\\n    }\\n\\n    highp vec4 c = vec4(0,0,0,0);\\n\\n    highp float e = floor(log2(av));\\n    highp float m = exp2(fract(log2(av))) - 1.0;\\n\\n    c[2] = floor(128.0 * m);\\n    m -= c[2] / 128.0;\\n    c[1] = floor(32768.0 * m);\\n    m -= c[1] / 32768.0;\\n    c[0] = floor(8388608.0 * m);\\n\\n    highp float ebias = e + 127.0;\\n    c[3] = floor(ebias / 2.0);\\n    ebias -= c[3] * 2.0;\\n    c[2] += floor(ebias) * 128.0;\\n\\n    c[3] += 128.0 * step(0.0, -v);\\n\\n    return c / 255.0;\\n  }\\n\";function Za(t,e,n,r){var o=[];t.forEach((function(t){var e=k(t.shapeInfo.logicalShape);t.shapeInfo.isUniform?o.push(\"uniform float \"+t.name+(e>1?\"[\"+e+\"]\":\"\")+\";\"):(o.push(\"uniform sampler2D \"+t.name+\";\"),o.push(\"uniform int offset\"+t.name+\";\"))}));var a,i,s=o.join(\"\\n\"),u=t.map((function(t){return function(t,e,n){void 0===n&&(n=!1);var r=\"\";r+=n?ei(t):ti(t);var o=t.shapeInfo.logicalShape,a=e.logicalShape;o.length<=a.length&&(r+=n?function(t,e){var n,r=t.name,o=r.charAt(0).toUpperCase()+r.slice(1),a=\"get\"+o+\"AtOutCoords\",i=t.shapeInfo.logicalShape.length,s=e.logicalShape.length,u=Mr(t.shapeInfo.logicalShape,e.logicalShape),c=ui(s),l=s-i,h=[\"x\",\"y\",\"z\",\"w\",\"u\",\"v\"];n=0===i?\"\":s<2&&u.length>=1?\"coords = 0;\":u.map((function(t){return\"coords.\"+h[t+l]+\" = 0;\"})).join(\"\\n\");var f=\"\";f=s<2&&i>0?\"coords\":t.shapeInfo.logicalShape.map((function(t,e){return\"coords.\"+h[e+l]})).join(\", \");var d=\"return outputValue;\",p=1===k(t.shapeInfo.logicalShape),v=1===k(e.logicalShape);if(1!==i||p||v){if(p&&!v)d=1===s?\"\\n        return vec4(outputValue.x, outputValue.x, 0., 0.);\\n      \":\"\\n        return vec4(outputValue.x);\\n      \";else if(u.length){var g=i-2,m=i-1;u.indexOf(g)>-1&&u.indexOf(m)>-1?d=\"return vec4(outputValue.x);\":u.indexOf(g)>-1?d=\"return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);\":u.indexOf(m)>-1&&(d=\"return vec4(outputValue.xx, outputValue.zz);\")}}else d=\"\\n      return vec4(outputValue.xy, outputValue.xy);\\n    \";return\"\\n    vec4 \"+a+\"() {\\n      \"+c+\" coords = getOutputCoords();\\n      \"+n+\"\\n      vec4 outputValue = get\"+o+\"(\"+f+\");\\n      \"+d+\"\\n    }\\n  \"}(t,e):function(t,e){var n=t.name,r=n.charAt(0).toUpperCase()+n.slice(1),o=\"get\"+r+\"AtOutCoords\",a=e.texShape,i=t.shapeInfo.texShape,s=t.shapeInfo.logicalShape.length,u=e.logicalShape.length;if(!t.shapeInfo.isUniform&&s===u&&null==t.shapeInfo.flatOffset&&S(i,a))return\"\\n      float \"+o+\"() {\\n        return sampleTexture(\"+n+\", resultUV);\\n      }\\n    \";var c,l=ui(u),h=Mr(t.shapeInfo.logicalShape,e.logicalShape),f=u-s,d=[\"x\",\"y\",\"z\",\"w\",\"u\",\"v\"];c=0===s?\"\":u<2&&h.length>=1?\"coords = 0;\":h.map((function(t){return\"coords.\"+d[t+f]+\" = 0;\"})).join(\"\\n\");var p=\"\";p=u<2&&s>0?\"coords\":t.shapeInfo.logicalShape.map((function(t,e){return\"coords.\"+d[e+f]})).join(\", \");return\"\\n    float \"+o+\"() {\\n      \"+l+\" coords = getOutputCoords();\\n      \"+c+\"\\n      return get\"+r+\"(\"+p+\");\\n    }\\n  \"}(t,e));return r}(t,e,r)})).join(\"\\n\"),c=e.texShape,l=Ya(),h=function(t){return\"\\n    float sampleTexture(sampler2D textureSampler, vec2 uv) {\\n      return \"+t.texture2D+\"(textureSampler, uv).r;\\n    }\\n  \"}(l),f=function(t){return t.version+\"\\n    precision highp float;\\n    precision highp int;\\n    precision highp sampler2D;\\n    \"+t.varyingFs+\" vec2 resultUV;\\n    \"+t.defineOutput+\"\\n    const vec2 halfCR = vec2(0.5, 0.5);\\n\\n    struct ivec5\\n    {\\n      int x;\\n      int y;\\n      int z;\\n      int w;\\n      int u;\\n    };\\n\\n    struct ivec6\\n    {\\n      int x;\\n      int y;\\n      int z;\\n      int w;\\n      int u;\\n      int v;\\n    };\\n\\n    uniform float NAN;\\n    \"+t.defineSpecialNaN+\"\\n    \"+t.defineSpecialInf+\"\\n    \"+t.defineRound+\"\\n\\n    int imod(int x, int y) {\\n      return x - y * (x / y);\\n    }\\n\\n    int idiv(int a, int b, float sign) {\\n      int res = a / b;\\n      int mod = imod(a, b);\\n      if (sign < 0. && mod != 0) {\\n        res -= 1;\\n      }\\n      return res;\\n    }\\n\\n    //Based on the work of Dave Hoskins\\n    //https://www.shadertoy.com/view/4djSRW\\n    #define HASHSCALE1 443.8975\\n    float random(float seed){\\n      vec2 p = resultUV * seed;\\n      vec3 p3  = fract(vec3(p.xyx) * HASHSCALE1);\\n      p3 += dot(p3, p3.yzx + 19.19);\\n      return fract((p3.x + p3.y) * p3.z);\\n    }\\n\\n    \"+ni+\"\\n    \"+ri+\"\\n    \"+oi+\"\\n  \"}(l);return e.isPacked?(a=function(t,e){switch(t.length){case 0:return\"\\n    int getOutputCoords() {\\n      return 0;\\n    }\\n  \";case 1:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];if(1===n[0])return\"\\n      int getOutputCoords() {\\n        return 2 * int(resultUV.x * \"+n[1]+\".0);\\n      }\\n    \";if(1===n[1])return\"\\n      int getOutputCoords() {\\n        return 2 * int(resultUV.y * \"+n[0]+\".0);\\n      }\\n    \";return\"\\n    int getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\"+n[0]+\", \"+n[1]+\"));\\n      return 2 * (resTexRC.x * \"+n[1]+\" + resTexRC.y);\\n    }\\n  \"}(0,e);case 2:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];if(S(t,e))return\"\\n      ivec2 getOutputCoords() {\\n        return 2 * ivec2(resultUV.yx * vec2(\"+n[0]+\", \"+n[1]+\"));\\n      }\\n    \";var r=Math.ceil(t[1]/2);return\"\\n    ivec2 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\"+n[0]+\", \"+n[1]+\"));\\n\\n      int index = resTexRC.x * \"+n[1]+\" + resTexRC.y;\\n      int r = 2 * (index / \"+r+\");\\n      int c = imod(index, \"+r+\") * 2;\\n\\n      return ivec2(r, c);\\n    }\\n  \"}(t,e);case 3:return n=t,r=e,o=[Math.ceil(r[0]/2),Math.ceil(r[1]/2)],a=Math.ceil(n[2]/2),i=a*Math.ceil(n[1]/2),\"\\n    ivec3 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\"+o[0]+\", \"+o[1]+\"));\\n      int index = resTexRC.x * \"+o[1]+\" + resTexRC.y;\\n\\n      int b = index / \"+i+\";\\n      index -= b * \"+i+\";\\n\\n      int r = 2 * (index / \"+a+\");\\n      int c = imod(index, \"+a+\") * 2;\\n\\n      return ivec3(b, r, c);\\n    }\\n  \";default:return function(t,e){for(var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)],r=Math.ceil(t[t.length-1]/2),o=r*Math.ceil(t[t.length-2]/2),a=o,i=\"\",s=\"b, r, c\",u=2;u<t.length-1;u++)a*=t[t.length-u-1],i=\"\\n      int b\"+u+\" = index / \"+a+\";\\n      index -= b\"+u+\" * \"+a+\";\\n    \"+i,s=\"b\"+u+\", \"+s;return\"\\n    ivec\"+t.length+\" getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\"+n[0]+\", \"+n[1]+\"));\\n      int index = resTexRC.x * \"+n[1]+\" + resTexRC.y;\\n\\n      \"+i+\"\\n\\n      int b = index / \"+o+\";\\n      index -= b * \"+o+\";\\n\\n      int r = 2 * (index / \"+r+\");\\n      int c = imod(index, \"+r+\") * 2;\\n\\n      return ivec\"+t.length+\"(\"+s+\");\\n    }\\n  \"}(t,e)}var n,r,o,a,i}(e.logicalShape,c),i=function(t){return\"\\n    void setOutput(vec4 val) {\\n      \"+t.output+\" = val;\\n    }\\n  \"}(l)):(a=function(t,e){switch(t.length){case 0:return\"\\n    int getOutputCoords() {\\n      return 0;\\n    }\\n  \";case 1:return function(t,e){if(1===e[0])return\"\\n      int getOutputCoords() {\\n        return int(resultUV.x * \"+e[1]+\".0);\\n      }\\n    \";if(1===e[1])return\"\\n      int getOutputCoords() {\\n        return int(resultUV.y * \"+e[0]+\".0);\\n      }\\n    \";return\"\\n    int getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\"+e[0]+\", \"+e[1]+\"));\\n      return resTexRC.x * \"+e[1]+\" + resTexRC.y;\\n    }\\n  \"}(0,e);case 2:return function(t,e){if(S(t,e))return\"\\n      ivec2 getOutputCoords() {\\n        return ivec2(resultUV.yx * vec2(\"+e[0]+\", \"+e[1]+\"));\\n      }\\n    \";if(1===t[1])return\"\\n      ivec2 getOutputCoords() {\\n        ivec2 resTexRC = ivec2(resultUV.yx *\\n                               vec2(\"+e[0]+\", \"+e[1]+\"));\\n        int index = resTexRC.x * \"+e[1]+\" + resTexRC.y;\\n        return ivec2(index, 0);\\n      }\\n    \";if(1===t[0])return\"\\n      ivec2 getOutputCoords() {\\n        ivec2 resTexRC = ivec2(resultUV.yx *\\n                               vec2(\"+e[0]+\", \"+e[1]+\"));\\n        int index = resTexRC.x * \"+e[1]+\" + resTexRC.y;\\n        return ivec2(0, index);\\n      }\\n    \";return\"\\n    ivec2 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\"+e[0]+\", \"+e[1]+\"));\\n      int index = resTexRC.x * \"+e[1]+\" + resTexRC.y;\\n      int r = index / \"+t[1]+\";\\n      int c = index - r * \"+t[1]+\";\\n      return ivec2(r, c);\\n    }\\n  \"}(t,e);case 3:return n=e,r=$a([\"r\",\"c\",\"d\"],t),\"\\n    ivec3 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\"+n[0]+\", \"+n[1]+\"));\\n      int index = resTexRC.x * \"+n[1]+\" + resTexRC.y;\\n      \"+r+\"\\n      return ivec3(r, c, d);\\n    }\\n  \";case 4:return function(t,e){var n=$a([\"r\",\"c\",\"d\",\"d2\"],t);return\"\\n    ivec4 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n        vec2(\"+e[0]+\", \"+e[1]+\"));\\n      int index = resTexRC.x * \"+e[1]+\" + resTexRC.y;\\n      \"+n+\"\\n      return ivec4(r, c, d, d2);\\n    }\\n  \"}(t,e);case 5:return function(t,e){var n=$a([\"r\",\"c\",\"d\",\"d2\",\"d3\"],t);return\"\\n    ivec5 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx * vec2(\"+e[0]+\",\\n                             \"+e[1]+\"));\\n\\n      int index = resTexRC.x * \"+e[1]+\" + resTexRC.y;\\n\\n      \"+n+\"\\n\\n      ivec5 outShape = ivec5(r, c, d, d2, d3);\\n      return outShape;\\n    }\\n  \"}(t,e);case 6:return function(t,e){var n=$a([\"r\",\"c\",\"d\",\"d2\",\"d3\",\"d4\"],t);return\"\\n    ivec6 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n        vec2(\"+e[0]+\", \"+e[1]+\"));\\n      int index = resTexRC.x * \"+e[1]+\" + resTexRC.y;\\n\\n      \"+n+\"\\n\\n      ivec6 result = ivec6(r, c, d, d2, d3, d4);\\n      return result;\\n    }\\n  \"}(t,e);default:throw new Error(t.length+\"-D output sampling is not yet supported\")}var n,r}(e.logicalShape,c),i=function(t){return\"\\n    void setOutput(float val) {\\n      \"+t.output+\" = vec4(val, 0, 0, 0);\\n    }\\n  \"}(l)),r&&(f+=ai),[f,h,i,s,a,u,n].join(\"\\n\")}function ti(t){var e=t.shapeInfo.logicalShape;switch(e.length){case 0:return function(t){var e=t.name,n=\"get\"+e.charAt(0).toUpperCase()+e.slice(1);if(t.shapeInfo.isUniform)return\"float \"+n+\"() {return \"+e+\";}\";var r=t.shapeInfo.texShape,o=r[0],a=r[1];if(1===o&&1===a)return\"\\n      float \"+n+\"() {\\n        return sampleTexture(\"+e+\", halfCR);\\n      }\\n    \";var i=t.shapeInfo.texShape,s=i[0],u=i[1],c=ii(e);return\"\\n    float \"+n+\"() {\\n      vec2 uv = uvFromFlat(\"+s+\", \"+u+\", \"+c+\");\\n      return sampleTexture(\"+e+\", uv);\\n    }\\n  \"}(t);case 1:return function(t){var e=t.name,n=\"get\"+e.charAt(0).toUpperCase()+e.slice(1);if(t.shapeInfo.isUniform)return\"\\n      float \"+n+\"(int index) {\\n        \"+si(t)+\"\\n      }\\n    \";var r=t.shapeInfo.texShape,o=r[0],a=r[1];if(1===a&&1===o)return\"\\n      float \"+n+\"(int index) {\\n        return sampleTexture(\"+e+\", halfCR);\\n      }\\n    \";var i=ii(e);if(1===a)return\"\\n      float \"+n+\"(int index) {\\n        vec2 uv = vec2(0.5, (float(index + \"+i+\") + 0.5) / \"+o+\".0);\\n        return sampleTexture(\"+e+\", uv);\\n      }\\n    \";if(1===o)return\"\\n      float \"+n+\"(int index) {\\n        vec2 uv = vec2((float(index + \"+i+\") + 0.5) / \"+a+\".0, 0.5);\\n        return sampleTexture(\"+e+\", uv);\\n      }\\n    \";return\"\\n    float \"+n+\"(int index) {\\n      vec2 uv = uvFromFlat(\"+o+\", \"+a+\", index + \"+i+\");\\n      return sampleTexture(\"+e+\", uv);\\n    }\\n  \"}(t);case 2:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r=\"get\"+n.charAt(0).toUpperCase()+n.slice(1),o=t.shapeInfo.texShape;if(null!=o&&S(e,o)){var a=o[0],i=o[1];return\"\\n    float \"+r+\"(int row, int col) {\\n      vec2 uv = (vec2(col, row) + halfCR) / vec2(\"+i+\".0, \"+a+\".0);\\n      return sampleTexture(\"+n+\", uv);\\n    }\\n  \"}var s=M(e),u=s.newShape,c=s.keptDims,l=u;if(l.length<e.length){var h=ci(t,l);return\"\\n      \"+ti(h)+\"\\n      float \"+r+\"(int row, int col) {\\n        return \"+r+\"(\"+li([\"row\",\"col\"],c)+\");\\n      }\\n    \"}if(t.shapeInfo.isUniform)return\"\\n      float \"+r+\"(int row, int col) {\\n        int index = round(dot(vec2(row, col), vec2(\"+e[1]+\", 1)));\\n        \"+si(t)+\"\\n      }\\n    \";var f=o[0],d=o[1],p=ii(n);if(1===d)return\"\\n    float \"+r+\"(int row, int col) {\\n      float index = dot(vec3(row, col, \"+p+\"), vec3(\"+e[1]+\", 1, 1));\\n      vec2 uv = vec2(0.5, (index + 0.5) / \"+f+\".0);\\n      return sampleTexture(\"+n+\", uv);\\n    }\\n  \";if(1===f)return\"\\n    float \"+r+\"(int row, int col) {\\n      float index = dot(vec3(row, col, \"+p+\"), vec3(\"+e[1]+\", 1, 1));\\n      vec2 uv = vec2((index + 0.5) / \"+d+\".0, 0.5);\\n      return sampleTexture(\"+n+\", uv);\\n    }\\n  \";return\"\\n  float \"+r+\"(int row, int col) {\\n    // Explicitly use integer operations as dot() only works on floats.\\n    int index = row * \"+e[1]+\" + col + \"+p+\";\\n    vec2 uv = uvFromFlat(\"+f+\", \"+d+\", index);\\n    return sampleTexture(\"+n+\", uv);\\n  }\\n\"}(t);case 3:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r=\"get\"+n.charAt(0).toUpperCase()+n.slice(1),o=e[1]*e[2],a=e[2],i=M(e),s=i.newShape,u=i.keptDims,c=s;if(c.length<e.length){var l=ci(t,c);return\"\\n        \"+ti(l)+\"\\n        float \"+r+\"(int row, int col, int depth) {\\n          return \"+r+\"(\"+li([\"row\",\"col\",\"depth\"],u)+\");\\n        }\\n      \"}if(t.shapeInfo.isUniform)return\"\\n      float \"+r+\"(int row, int col, int depth) {\\n        int index = round(dot(vec3(row, col, depth),\\n                          vec3(\"+o+\", \"+a+\", 1)));\\n        \"+si(t)+\"\\n      }\\n    \";var h=t.shapeInfo.texShape,f=h[0],d=h[1],p=t.shapeInfo.flatOffset;if(d===o&&null==p)return\"\\n        float \"+r+\"(int row, int col, int depth) {\\n          float texR = float(row);\\n          float texC = dot(vec2(col, depth), vec2(\"+a+\", 1));\\n          vec2 uv = (vec2(texC, texR) + halfCR) /\\n                     vec2(\"+d+\".0, \"+f+\".0);\\n          return sampleTexture(\"+n+\", uv);\\n        }\\n      \";if(d===a&&null==p)return\"\\n    float \"+r+\"(int row, int col, int depth) {\\n      float texR = dot(vec2(row, col), vec2(\"+e[1]+\", 1));\\n      float texC = float(depth);\\n      vec2 uv = (vec2(texC, texR) + halfCR) / vec2(\"+d+\".0, \"+f+\".0);\\n      return sampleTexture(\"+n+\", uv);\\n    }\\n  \";var v=ii(n);return\"\\n      float \"+r+\"(int row, int col, int depth) {\\n        // Explicitly use integer operations as dot() only works on floats.\\n        int index = row * \"+o+\" + col * \"+a+\" + depth + \"+v+\";\\n        vec2 uv = uvFromFlat(\"+f+\", \"+d+\", index);\\n        return sampleTexture(\"+n+\", uv);\\n      }\\n  \"}(t);case 4:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r=\"get\"+n.charAt(0).toUpperCase()+n.slice(1),o=e[3],a=e[2]*o,i=e[1]*a,s=M(e),u=s.newShape,c=s.keptDims;if(u.length<e.length){var l=ci(t,u);return\"\\n      \"+ti(l)+\"\\n      float \"+r+\"(int row, int col, int depth, int depth2) {\\n        return \"+r+\"(\"+li([\"row\",\"col\",\"depth\",\"depth2\"],c)+\");\\n      }\\n    \"}if(t.shapeInfo.isUniform)return\"\\n      float \"+r+\"(int row, int col, int depth, int depth2) {\\n        int index = round(dot(vec4(row, col, depth, depth2),\\n                          vec4(\"+i+\", \"+a+\", \"+o+\", 1)));\\n        \"+si(t)+\"\\n      }\\n    \";var h=t.shapeInfo.flatOffset,f=t.shapeInfo.texShape,d=f[0],p=f[1];if(p===i&&null==h)return\"\\n      float \"+r+\"(int row, int col, int depth, int depth2) {\\n        float texR = float(row);\\n        float texC =\\n            dot(vec3(col, depth, depth2),\\n                vec3(\"+a+\", \"+o+\", 1));\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                   vec2(\"+p+\".0, \"+d+\".0);\\n        return sampleTexture(\"+n+\", uv);\\n      }\\n    \";if(p===o&&null==h)return\"\\n      float \"+r+\"(int row, int col, int depth, int depth2) {\\n        float texR = dot(vec3(row, col, depth),\\n                         vec3(\"+e[1]*e[2]+\", \"+e[2]+\", 1));\\n        float texC = float(depth2);\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                  vec2(\"+p+\".0, \"+d+\".0);\\n        return sampleTexture(\"+n+\", uv);\\n      }\\n    \";var v=ii(n);return\"\\n    float \"+r+\"(int row, int col, int depth, int depth2) {\\n      // Explicitly use integer operations as dot() only works on floats.\\n      int index = row * \"+i+\" + col * \"+a+\" +\\n          depth * \"+o+\" + depth2;\\n      vec2 uv = uvFromFlat(\"+d+\", \"+p+\", index + \"+v+\");\\n      return sampleTexture(\"+n+\", uv);\\n    }\\n  \"}(t);case 5:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r=\"get\"+n.charAt(0).toUpperCase()+n.slice(1),o=e[4],a=e[3]*o,i=e[2]*a,s=e[1]*i,u=M(e),c=u.newShape,l=u.keptDims;if(c.length<e.length){var h=ci(t,c);return\"\\n      \"+ti(h)+\"\\n      float \"+r+\"(int row, int col, int depth, int depth2, int depth3) {\\n        return \"+r+\"(\"+li([\"row\",\"col\",\"depth\",\"depth2\",\"depth3\"],l)+\");\\n      }\\n    \"}if(t.shapeInfo.isUniform)return\"\\n      float \"+r+\"(int row, int col, int depth, int depth2, int depth3) {\\n        float index = dot(\\n          vec4(row, col, depth, depth2),\\n          vec4(\"+s+\", \"+i+\", \"+a+\", \"+o+\")) +\\n          depth3;\\n        \"+si(t)+\"\\n      }\\n    \";var f=t.shapeInfo.flatOffset,d=t.shapeInfo.texShape,p=d[0],v=d[1];if(v===s&&null==f)return\"\\n      float \"+r+\"(int row, int col, int depth, int depth2, int depth3) {\\n        int texR = row;\\n        float texC = dot(vec4(col, depth, depth2, depth3),\\n                         vec4(\"+i+\", \"+a+\", \"+o+\", 1));\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                   vec2(\"+v+\".0, \"+p+\".0);\\n        return sampleTexture(\"+n+\", uv);\\n      }\\n    \";if(v===o&&null==f)return\"\\n      float \"+r+\"(int row, int col, int depth, int depth2, int depth3) {\\n        float texR = dot(\\n          vec4(row, col, depth, depth2),\\n          vec4(\"+e[1]*e[2]*e[3]+\",\\n               \"+e[2]*e[3]+\", \"+e[3]+\", 1));\\n        int texC = depth3;\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                  vec2(\"+v+\".0, \"+p+\".0);\\n        return sampleTexture(\"+n+\", uv);\\n      }\\n    \";var g=ii(n);return\"\\n    float \"+r+\"(int row, int col, int depth, int depth2, int depth3) {\\n      // Explicitly use integer operations as dot() only works on floats.\\n      int index = row * \"+s+\" + col * \"+i+\" + depth * \"+a+\" +\\n          depth2 * \"+o+\" + depth3 + \"+g+\";\\n      vec2 uv = uvFromFlat(\"+p+\", \"+v+\", index);\\n      return sampleTexture(\"+n+\", uv);\\n    }\\n  \"}(t);case 6:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r=\"get\"+n.charAt(0).toUpperCase()+n.slice(1),o=M(e),a=o.newShape,i=o.keptDims;if(a.length<e.length){var s=ci(t,a);return\"\\n      \"+ti(s)+\"\\n      float \"+r+\"(int row, int col, int depth,\\n                    int depth2, int depth3, int depth4) {\\n        return \"+r+\"(\"+li([\"row\",\"col\",\"depth\",\"depth2\",\"depth3\",\"depth4\"],i)+\");\\n      }\\n    \"}var u=e[5],c=e[4]*u,l=e[3]*c,h=e[2]*l,f=e[1]*h;if(t.shapeInfo.isUniform)return\"\\n      float \"+r+\"(int row, int col, int depth,\\n                  int depth2, int depth3, int depth4) {\\n        int index = round(dot(\\n          vec4(row, col, depth, depth2),\\n          vec4(\"+f+\", \"+h+\", \"+l+\", \"+c+\")) +\\n          dot(\\n            vec2(depth3, depth4),\\n            vec2(\"+u+\", 1)));\\n        \"+si(t)+\"\\n      }\\n    \";var d=t.shapeInfo.flatOffset,p=t.shapeInfo.texShape,v=p[0],g=p[1];if(g===f&&null==d)return\"\\n      float \"+r+\"(int row, int col, int depth,\\n                    int depth2, int depth3, int depth4) {\\n        int texR = row;\\n        float texC = dot(vec4(col, depth, depth2, depth3),\\n          vec4(\"+h+\", \"+l+\", \"+c+\", \"+u+\")) +\\n               float(depth4);\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                   vec2(\"+g+\".0, \"+v+\".0);\\n        return sampleTexture(\"+n+\", uv);\\n      }\\n    \";if(g===u&&null==d)return\"\\n      float \"+r+\"(int row, int col, int depth,\\n                    int depth2, int depth3, int depth4) {\\n        float texR = dot(vec4(row, col, depth, depth2),\\n          vec4(\"+e[1]*e[2]*e[3]*e[4]+\",\\n               \"+e[2]*e[3]*e[4]+\",\\n               \"+e[3]*e[4]+\",\\n               \"+e[4]+\")) + float(depth3);\\n        int texC = depth4;\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                  vec2(\"+g+\".0, \"+v+\".0);\\n        return sampleTexture(\"+n+\", uv);\\n      }\\n    \";var m=ii(n);return\"\\n    float \"+r+\"(int row, int col, int depth,\\n                  int depth2, int depth3, int depth4) {\\n      // Explicitly use integer operations as dot() only works on floats.\\n      int index = row * \"+f+\" + col * \"+h+\" + depth * \"+l+\" +\\n          depth2 * \"+c+\" + depth3 * \"+u+\" + depth4 + \"+m+\";\\n      vec2 uv = uvFromFlat(\"+v+\", \"+g+\", index);\\n      return sampleTexture(\"+n+\", uv);\\n    }\\n  \"}(t);default:throw new Error(e.length+\"-D input sampling is not yet supported\")}}function ei(t){var e,n,r;switch(t.shapeInfo.logicalShape.length){case 0:return e=t.name,n=\"get\"+e.charAt(0).toUpperCase()+e.slice(1),r=Ya(),\"\\n    vec4 \"+n+\"() {\\n      return \"+r.texture2D+\"(\"+e+\", halfCR);\\n    }\\n  \";case 1:return function(t){var e=t.name,n=\"get\"+e.charAt(0).toUpperCase()+e.slice(1),r=t.shapeInfo.texShape,o=[Math.ceil(r[0]/2),Math.ceil(r[1]/2)],a=Ya();return\"\\n    vec4 \"+n+\"(int index) {\\n      vec2 uv = packedUVfrom1D(\\n        \"+o[0]+\", \"+o[1]+\", index);\\n      return \"+a.texture2D+\"(\"+e+\", uv);\\n    }\\n  \"}(t);case 2:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r=\"get\"+n.charAt(0).toUpperCase()+n.slice(1),o=t.shapeInfo.texShape,a=o[0],i=o[1],s=Ya();if(null!=o&&S(e,o))return\"\\n      vec4 \"+r+\"(int row, int col) {\\n        vec2 uv = (vec2(col, row) + halfCR) / vec2(\"+i+\".0, \"+a+\".0);\\n\\n        return \"+s.texture2D+\"(\"+n+\", uv);\\n      }\\n    \";var u=[Math.ceil(o[0]/2),Math.ceil(o[1]/2)],c=Math.ceil(e[1]/2);return\"\\n    vec4 \"+r+\"(int row, int col) {\\n      vec2 uv = packedUVfrom2D(\"+c+\", \"+u[0]+\", \"+u[1]+\", row, col);\\n      return \"+s.texture2D+\"(\"+n+\", uv);\\n    }\\n  \"}(t);case 3:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r=\"get\"+n.charAt(0).toUpperCase()+n.slice(1),o=t.shapeInfo.texShape,a=[Math.ceil(o[0]/2),Math.ceil(o[1]/2)];if(1===e[0]){var i=e.slice(1),s=ci(t,i);return\"\\n        \"+ei(s)+\"\\n        vec4 \"+r+\"(int b, int row, int col) {\\n          return \"+r+\"(\"+li([\"b\",\"row\",\"col\"],[1,2])+\");\\n        }\\n      \"}var u=a[0],c=a[1],l=Math.ceil(e[2]/2),h=l*Math.ceil(e[1]/2),f=Ya();return\"\\n    vec4 \"+r+\"(int b, int row, int col) {\\n      vec2 uv = packedUVfrom3D(\\n        \"+u+\", \"+c+\", \"+h+\", \"+l+\", b, row, col);\\n      return \"+f.texture2D+\"(\"+n+\", uv);\\n    }\\n  \"}(t);default:return function(t){for(var e=t.shapeInfo.logicalShape,n=e.length,r=t.name,o=\"get\"+r.charAt(0).toUpperCase()+r.slice(1),a=t.shapeInfo.texShape,i=[Math.ceil(a[0]/2),Math.ceil(a[1]/2)],s=i[0],u=i[1],c=Math.ceil(e[n-1]/2),l=c*Math.ceil(e[n-2]/2),h=\"int b, int row, int col\",f=\"b * \"+l+\" + (row / 2) * \"+c+\" + (col / 2)\",d=2;d<n-1;d++)h=\"int b\"+d+\", \"+h,l*=e[n-d-1],f=\"b\"+d+\" * \"+l+\" + \"+f;var p=Ya();return\"\\n    vec4 \"+o+\"(\"+h+\") {\\n      int index = \"+f+\";\\n      int texR = index / \"+u+\";\\n      int texC = index - texR * \"+u+\";\\n      vec2 uv = (vec2(texC, texR) + halfCR) / vec2(\"+u+\", \"+s+\");\\n      return \"+p.texture2D+\"(\"+r+\", uv);\\n    }\\n  \"}(t)}}var ni=\"\\nvec2 uvFromFlat(int texNumR, int texNumC, int index) {\\n  int texR = index / texNumC;\\n  int texC = index - texR * texNumC;\\n  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\\n}\\nvec2 packedUVfrom1D(int texNumR, int texNumC, int index) {\\n  int texelIndex = index / 2;\\n  int texR = texelIndex / texNumC;\\n  int texC = texelIndex - texR * texNumC;\\n  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\\n}\\n\",ri=\"\\nvec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR,\\n  int texNumC, int row, int col) {\\n  int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);\\n  int texR = texelIndex / texNumC;\\n  int texC = texelIndex - texR * texNumC;\\n  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\\n}\\n\",oi=\"\\nvec2 packedUVfrom3D(int texNumR, int texNumC,\\n    int texelsInBatch, int texelsInLogicalRow, int b,\\n    int row, int col) {\\n  int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);\\n  int texR = index / texNumC;\\n  int texC = index - texR * texNumC;\\n  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\\n}\\n\",ai=\"\\n  float getChannel(vec4 frag, vec2 innerDims) {\\n    vec2 modCoord = mod(innerDims, 2.);\\n    return modCoord.x == 0. ?\\n      (modCoord.y == 0. ? frag.r : frag.g) :\\n      (modCoord.y == 0. ? frag.b : frag.a);\\n  }\\n  float getChannel(vec4 frag, int dim) {\\n    float modCoord = mod(float(dim), 2.);\\n    return modCoord == 0. ? frag.r : frag.g;\\n  }\\n\";function ii(t){return\"offset\"+t}function si(t){var e=t.name,n=k(t.shapeInfo.logicalShape);return n<2?\"return \"+e+\";\":\"\\n    for (int i = 0; i < \"+n+\"; i++) {\\n      if (i == index) {\\n        return \"+e+\"[i];\\n      }\\n    }\\n  \"}function ui(t){if(t<=1)return\"int\";if(2===t)return\"ivec2\";if(3===t)return\"ivec3\";if(4===t)return\"ivec4\";if(5===t)return\"ivec5\";if(6===t)return\"ivec6\";throw Error(\"GPU for rank \"+t+\" is not yet supported\")}function ci(t,e){var n=JSON.parse(JSON.stringify(t));return n.shapeInfo.logicalShape=e,n}function li(t,e){return e.map((function(e){return t[e]})).join(\", \")}var hi=function(t,e,n,r){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0,C(t.length>2,(function(){return\"Packed arg\"+(n.charAt(0).toUpperCase()+n.slice(1))+\" supports only inputs with rank above 2.\"}));var o=t[t.length-1],a=Math.ceil(o/e);this.outputShape=t.slice(0,-1),a>1&&this.outputShape.push(a),r||this.variableNames.push(\"bestIndicesA\");var i,s,u=this.outputShape,c=u.length,l=ui(c),h=Xa(\"coords\",c);if(1===a){var f=ui(s=c+1);i=\"\\n        \"+f+\" sourceLocR = \"+f+\"(\"+h.join()+\", 0);\\n        ++\"+h[c-1]+\";\\n        \"+f+\" sourceLocG = \"+f+\"(\"+h.join()+\", 0);\\n        ++\"+h[c-2]+\";\\n        \"+f+\" sourceLocA = \"+f+\"(\"+h.join()+\", 0);\\n        --\"+h[c-1]+\";\\n        \"+f+\" sourceLocB = \"+f+\"(\"+h.join()+\", 0);\\n        --\"+h[c-2]+\";\"}else s=c,i=\"\\n        \"+l+\" sourceLocR = coords;\\n        ++\"+h[c-1]+\";\\n        \"+l+\" sourceLocG = coords;\\n        ++\"+h[c-2]+\";\\n        \"+l+\" sourceLocA = coords;\\n        --\"+h[c-1]+\";\\n        \"+l+\" sourceLocB = coords;\\n        --\"+h[c-2]+\";\";var d=[\"x\",\"y\",\"z\",\"w\",\"u\",\"v\"].slice(0,s),p=\".\"+d[s-1],v=d.map((function(t){return\"int \"+t})),g=Xa(\"sourceLocR\",s-1).concat(\"inIdx.r\"),m=Xa(\"sourceLocG\",s-1).concat(\"inIdx.g\"),y=Xa(\"sourceLocB\",s-1).concat(\"inIdx.b\"),x=Xa(\"sourceLocA\",s-1).concat(\"inIdx.a\"),b=\"max\"===n?\"greaterThan\":\"lessThan\",w=r?\"\":\"\\n          inIdx = round(vec4(getBestIndicesAChannel(\"+g.join()+\"),\\n                             getBestIndicesAChannel(\"+m.join()+\"),\\n                             getBestIndicesAChannel(\"+y.join()+\"),\\n                             getBestIndicesAChannel(\"+x.join()+\")));\",E=\"vec4(\\n            getAChannel(\"+g.join()+\"),\\n            hasNextCol ? getAChannel(\"+m.join()+\") : 0.,\\n            hasNextRow ? getAChannel(\"+y.join()+\") : 0.,\\n            hasNextRow && hasNextCol ? getAChannel(\"+x.join()+\") : 0.)\",R=r?\"\":\"\\n      float getBestIndicesAChannel(\"+v.join()+\") {\\n        return getChannel(getBestIndicesA(\"+d.join()+\"),\\n                                          vec2(\"+d.slice(-2).join()+\"));\\n      }\";this.userCode=\"\\n      float getAChannel(\"+v.join()+\") {\\n        return getChannel(getA(\"+d.join()+\"),\\n                               vec2(\"+d.slice(-2).join()+\"));\\n      }\\n      \"+R+\"\\n      void main() {\\n        \"+l+\" coords = getOutputCoords();\\n        bool hasNextCol = \"+h[c-1]+\" < \"+(u[c-1]-1)+\";\\n        bool hasNextRow = \"+h[c-2]+\" < \"+(u[c-2]-1)+\";\\n        \"+i+\"\\n        ivec4 srcIdx = ivec4(sourceLocR\"+p+\", sourceLocG\"+p+\",\\n          sourceLocB\"+p+\", sourceLocA\"+p+\") * \"+e+\";\\n        ivec4 inIdx = srcIdx;\\n        vec4 bestIndex = vec4(inIdx);\\n        vec4 bestValue = \"+E+\";\\n\\n        for (int i = 0; i < \"+e+\"; i++) {\\n          inIdx = srcIdx;\\n          \"+w+\"\\n          vec4 candidate = \"+E+\";\\n          bvec4 nan = isnan(candidate);\\n          bvec4 replace = bvec4(\\n            vec4(\"+b+\"(candidate, bestValue)) * (vec4(1.0) - vec4(nan)));\\n\\n          bestValue = vec4(replace.x  ? candidate.x : bestValue.x,\\n                           replace.y  ? candidate.y : bestValue.y,\\n                           replace.z  ? candidate.z : bestValue.z,\\n                           replace.w  ? candidate.w : bestValue.w);\\n          bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace));\\n          srcIdx++;\\n        }\\n        setOutput(bestIndex);\\n      }\\n    \"},fi=function(t){this.variableNames=[\"dy\"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a=t.dilationHeight,i=t.dilationWidth,s=t.effectiveFilterHeight,u=t.effectiveFilterWidth,c=s-1-t.padInfo.top,l=u-1-t.padInfo.left,h=1/(e*n);this.userCode=\"\\n      const ivec2 pads = ivec2(\"+c+\", \"+l+\");\\n      const float avgMultiplier = float(\"+h+\");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n\\n        ivec2 dyRCCorner = coords.yz - pads;\\n        int dyRCorner = dyRCCorner.x;\\n        int dyCCorner = dyRCCorner.y;\\n\\n        // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        for (int wR = 0; wR < \"+s+\";\\n            wR += \"+a+\") {\\n          float dyR = float(dyRCorner + wR) / \"+r+\".0;\\n\\n          if (dyR < 0.0 || dyR >= \"+t.outHeight+\".0 || fract(dyR) > 0.0) {\\n            continue;\\n          }\\n          int idyR = int(dyR);\\n\\n          for (int wC = 0; wC < \"+u+\";\\n            wC+= \"+i+\") {\\n            float dyC = float(dyCCorner + wC) / \"+o+\".0;\\n\\n            if (dyC < 0.0 || dyC >= \"+t.outWidth+\".0 ||\\n                fract(dyC) > 0.0) {\\n              continue;\\n            }\\n            int idyC = int(dyC);\\n\\n            float dyValue = getDy(b, idyR, idyC, d);\\n\\n            dotProd += dyValue * avgMultiplier;\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},di=function(t){this.variableNames=[\"dy\"],this.outputShape=t.inShape;var e=t.filterDepth,n=t.filterHeight,r=t.filterWidth,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,l=t.effectiveFilterDepth,h=t.effectiveFilterHeight,f=t.effectiveFilterWidth,d=l-1-t.padInfo.front,p=h-1-t.padInfo.top,v=f-1-t.padInfo.left,g=1/(e*n*r);this.userCode=\"\\n      const ivec3 pads = ivec3(\"+d+\", \"+p+\", \"+v+\");\\n      const float avgMultiplier = float(\"+g+\");\\n\\n      void main() {\\n        ivec5 coords = getOutputCoords();\\n        int batch = coords.x;\\n        int ch = coords.u;\\n\\n        ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\\n        int dyDCorner = dyCorner.x;\\n        int dyRCorner = dyCorner.y;\\n        int dyCCorner = dyCorner.z;\\n\\n        // Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get\\n        // dx(xD, xR, xC, ch).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n\\n        for (int wD = 0; wD < \"+l+\";\\n            wD += \"+s+\") {\\n          float dyD = float(dyDCorner + wD) / \"+o+\".0;\\n\\n          if (dyD < 0.0 || dyD >= \"+t.outDepth+\".0 || fract(dyD) > 0.0) {\\n            continue;\\n          }\\n          int idyD = int(dyD);\\n\\n          for (int wR = 0; wR < \"+h+\";\\n              wR += \"+u+\") {\\n            float dyR = float(dyRCorner + wR) / \"+a+\".0;\\n\\n            if (dyR < 0.0 || dyR >= \"+t.outHeight+\".0 ||\\n                fract(dyR) > 0.0) {\\n              continue;\\n            }\\n            int idyR = int(dyR);\\n\\n            for (int wC = 0; wC < \"+f+\";\\n                wC += \"+c+\") {\\n              float dyC = float(dyCCorner + wC) / \"+i+\".0;\\n\\n              if (dyC < 0.0 || dyC >= \"+t.outWidth+\".0 ||\\n                  fract(dyC) > 0.0) {\\n                continue;\\n              }\\n              int idyC = int(dyC);\\n\\n              float dyValue = getDy(batch, idyD, idyR, idyC, ch);\\n\\n              dotProd += dyValue * avgMultiplier;\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},pi=function(t,e,n,r,o,a){this.outputShape=[],this.variableNames=[\"x\",\"mean\",\"variance\"],Pr(t,e),Pr(t,n);var i=\"0.0\";null!=r&&(Pr(t,r),this.variableNames.push(\"offset\"),i=\"getOffsetAtOutCoords()\");var s=\"1.0\";null!=o&&(Pr(t,o),this.variableNames.push(\"scale\"),s=\"getScaleAtOutCoords()\"),this.outputShape=t,this.userCode=\"\\n      void main() {\\n        float x = getXAtOutCoords();\\n        float mean = getMeanAtOutCoords();\\n        float variance = getVarianceAtOutCoords();\\n        float offset = \"+i+\";\\n        float scale = \"+s+\";\\n        float inv = scale * inversesqrt(variance + float(\"+a+\"));\\n        setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));\\n      }\\n    \"},vi=function(t,e,n,r,o,a){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=[\"x\",\"mean\",\"variance\"],Pr(t,e),Pr(t,n);var i=\"vec4(0.0)\";null!=r&&(Pr(t,r),this.variableNames.push(\"offset\"),i=\"getOffsetAtOutCoords()\");var s=\"vec4(1.0)\";null!=o&&(Pr(t,o),this.variableNames.push(\"scale\"),s=\"getScaleAtOutCoords()\"),this.outputShape=t,this.userCode=\"\\n      void main() {\\n        vec4 offset = \"+i+\";\\n        vec4 scale = \"+s+\";\\n\\n        vec4 x = getXAtOutCoords();\\n        vec4 mean = getMeanAtOutCoords();\\n        vec4 variance = getVarianceAtOutCoords();\\n\\n        vec4 inv = scale * inversesqrt(variance + vec4(\"+a+\"));\\n\\n        setOutput((x - mean) * inv + offset);\\n      }\\n    \"},gi=\"return areal * breal - aimag * bimag;\",mi=\"return areal * bimag + aimag * breal;\",yi=function(t,e,n){this.variableNames=[\"AReal\",\"AImag\",\"BReal\",\"BImag\"],this.outputShape=Pr(e,n),this.userCode=\"\\n      float binaryOpComplex(\\n          float areal, float aimag, float breal, float bimag) {\\n        \"+t+\"\\n      }\\n\\n      void main() {\\n        float areal = getARealAtOutCoords();\\n        float aimag = getAImagAtOutCoords();\\n        float breal = getBRealAtOutCoords();\\n        float bimag = getBImagAtOutCoords();\\n        setOutput(binaryOpComplex(areal, aimag, breal, bimag));\\n      }\\n    \"},xi=\"return a + b;\",bi=\"return a - b;\",wi=\"return a * b;\",Ci=\"\\nif (a == b) {\\n  return 1.0;\\n};\\nreturn a / b;\",Ei=\"return (a < 0.) ? b * a : a;\",Ri=function(t,e,n){this.variableNames=[\"A\",\"B\"],this.outputShape=Pr(e,n),this.userCode=\"\\n      float binaryOperation(float a, float b) {\\n        \"+t+\"\\n      }\\n\\n      void main() {\\n        float a = getAAtOutCoords();\\n        float b = getBAtOutCoords();\\n        setOutput(binaryOperation(a, b));\\n      }\\n    \"},Ii=\"\\n  // vec4 one = vec4(equal(a, b));\\n  // return one + (vec4(1.0) - one) * a / b;\\n  vec4 result = a / b;\\n  if(a.x == b.x) {\\n    result.x = 1.;\\n  }\\n  if(a.y == b.y) {\\n    result.y = 1.;\\n  }\\n  if(a.z == b.z) {\\n    result.z = 1.;\\n  }\\n  if(a.w == b.w) {\\n    result.w = 1.;\\n  }\\n\\n  return result;\\n\",ki=\"\\n  vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\\n  return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\\n\",Si=function(t,e,n,r){void 0===r&&(r=!1),this.variableNames=[\"A\",\"B\"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=Pr(e,n);var o=this.outputShape.length,a=\"\";if(r)if(0===o||1===k(this.outputShape))a=\"\\n          result.y = 0.;\\n          result.z = 0.;\\n          result.w = 0.;\\n        \";else if(a=\"\\n          \"+ui(o)+\" coords = getOutputCoords();\\n        \",1===o)a+=\"\\n            result.y = (coords + 1) >= \"+this.outputShape[0]+\" ? 0. : result.y;\\n            result.z = 0.;\\n            result.w = 0.;\\n          \";else{var i=Xa(\"coords\",o);a+=\"\\n            bool nextRowOutOfBounds =\\n              (\"+i[o-2]+\" + 1) >= \"+this.outputShape[o-2]+\";\\n            bool nextColOutOfBounds =\\n              (\"+i[o-1]+\" + 1) >= \"+this.outputShape[o-1]+\";\\n            result.y = nextColOutOfBounds ? 0. : result.y;\\n            result.z = nextRowOutOfBounds ? 0. : result.z;\\n            result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\\n          \"}this.userCode=\"\\n      vec4 binaryOperation(vec4 a, vec4 b) {\\n        \"+t+\"\\n      }\\n\\n      void main() {\\n        vec4 a = getAAtOutCoords();\\n        vec4 b = getBAtOutCoords();\\n\\n        vec4 result = binaryOperation(a, b);\\n        \"+a+\"\\n\\n        setOutput(result);\\n      }\\n    \"},Ai=function(){function t(t){this.variableNames=[\"A\"],this.outputShape=t,this.userCode=\"\\n      uniform float minVal;\\n      uniform float maxVal;\\n\\n      void main() {\\n        float value = getAAtOutCoords();\\n        if (isnan(value)) {\\n          setOutput(value);\\n          return;\\n        }\\n\\n        setOutput(clamp(value, minVal, maxVal));\\n      }\\n    \"}return t.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(r,o){null==n.minLoc&&(n.minLoc=r.getUniformLocationNoThrow(o,\"minVal\"),n.maxLoc=r.getUniformLocationNoThrow(o,\"maxVal\")),r.gl.uniform1f(n.minLoc,t),r.gl.uniform1f(n.maxLoc,e)}},t}(),Ti=function(){function t(t){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.userCode=\"\\n      uniform float minVal;\\n      uniform float maxVal;\\n\\n      void main() {\\n        vec4 value = getAAtOutCoords();\\n\\n        if (any(isnan(value))) {\\n          setOutput(value);\\n          return;\\n        }\\n\\n        setOutput(clamp(value, vec4(minVal), vec4(maxVal)));\\n      }\\n    \"}return t.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(r,o){null==n.minLoc&&(n.minLoc=r.getUniformLocationNoThrow(o,\"minVal\"),n.maxLoc=r.getUniformLocationNoThrow(o,\"maxVal\")),r.gl.uniform1f(n.minLoc,t),r.gl.uniform1f(n.maxLoc,e)}},t}(),Di=function(t){this.variableNames=[\"real\",\"imag\"],this.outputShape=t,this.userCode=\"\\n      void main() {\\n        float re = abs(getRealAtOutCoords());\\n        float im = abs(getImagAtOutCoords());\\n        float mx = max(re, im);\\n\\n        // sadly the length function in glsl is not underflow-safe\\n        // (at least not on Intel GPUs). So the safe solution is\\n        // to ensure underflow-safety in all cases.\\n        setOutput(\\n          mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx))\\n        );\\n      }\\n    \"},Ni=function(t){this.outputShape=[],this.outputShape=Sn(t,1),this.variableNames=t.map((function(t,e){return\"T\"+e}));var e=new Array(t.length-1);e[0]=t[0][1];for(var n=1;n<e.length;n++)e[n]=e[n-1]+t[n][1];var r=[\"if (yC < \"+e[0]+\") setOutput(getT0(yR, yC));\"];for(n=1;n<e.length;n++){var o=e[n-1];r.push(\"else if (yC < \"+e[n]+\") setOutput(getT\"+n+\"(yR, yC-\"+o+\"));\")}var a=e.length,i=e[e.length-1];r.push(\"else setOutput(getT\"+a+\"(yR, yC-\"+i+\"));\"),this.userCode=\"\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int yR = coords.x;\\n        int yC = coords.y;\\n\\n        \"+r.join(\"\\n        \")+\"\\n      }\\n    \"},Fi=function(t,e){this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[],this.outputShape=Sn(t,e);var n=this.outputShape,r=n.length,o=ui(r),a=Xa(\"coords\",r),i=[\"x\",\"y\",\"z\",\"w\",\"u\",\"v\"].slice(0,r);this.variableNames=t.map((function(t,e){return\"T\"+e}));var s=new Array(t.length-1);s[0]=t[0][e];for(var u=1;u<s.length;u++)s[u]=s[u-1]+t[u][e];var c=i[e],l=i.slice(-2),h=i.join(),f=\"if (\"+c+\" < \"+s[0]+\") {\\n        return getChannel(\\n            getT0(\"+h+\"), vec2(\"+l.join()+\"));\\n        }\";for(u=1;u<s.length;u++){var d=s[u-1];f+=\"\\n        if (\"+c+\" < \"+s[u]+\"  && \"+c+\" >= \"+s[u-1]+\") {\\n          return getChannel(\\n            getT\"+u+\"(\"+_i(i,c,d)+\"),\\n            vec2(\"+_i(l,c,d)+\"));\\n        }\"}var p=s.length,v=s[s.length-1];f+=\"\\n        return getChannel(\\n          getT\"+p+\"(\"+_i(i,c,v)+\"),\\n          vec2(\"+_i(l,c,v)+\"));\",this.userCode=\"\\n      float getValue(\"+i.map((function(t){return\"int \"+t}))+\") {\\n        \"+f+\"\\n      }\\n\\n      void main() {\\n        \"+o+\" coords = getOutputCoords();\\n        vec4 result = vec4(getValue(\"+a+\"), 0., 0., 0.);\\n\\n        \"+a[r-1]+\" = \"+a[r-1]+\" + 1;\\n        if (\"+a[r-1]+\" < \"+n[r-1]+\") {\\n          result.g = getValue(\"+a+\");\\n        }\\n\\n        \"+a[r-2]+\" = \"+a[r-2]+\" + 1;\\n        if (\"+a[r-2]+\" < \"+n[r-2]+\") {\\n          result.a = getValue(\"+a+\");\\n        }\\n\\n        \"+a[r-1]+\" = \"+a[r-1]+\" - 1;\\n        if (\"+a[r-2]+\" < \"+n[r-2]+\" &&\\n            \"+a[r-1]+\" < \"+n[r-1]+\") {\\n          result.b = getValue(\"+a+\");\\n        }\\n        setOutput(result);\\n      }\\n    \"};function _i(t,e,n){var r=t.indexOf(e);return t.map((function(t,e){return e===r?t+\" - \"+n:t})).join()}var Oi=function(t){this.variableNames=[\"x\",\"dy\"],this.outputShape=t.filterShape;var e=t.strideHeight,n=t.strideWidth,r=t.padInfo.top,o=t.padInfo.left,a=\"channelsLast\"===t.dataFormat;this.userCode=\"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int wR = coords.x;\\n        int wC = coords.y;\\n        int d1 = coords.z;\\n        int d2 = coords.w;\\n\\n        // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n\\n        for (int b = 0; b < \"+t.batchSize+\"; b++) {\\n          for (int yR = 0; yR < \"+t.outHeight+\"; yR++) {\\n            int xR = wR + yR * \"+e+\" - \"+r+\";\\n\\n            if (xR < 0 || xR >= \"+t.inHeight+\") {\\n              continue;\\n            }\\n\\n            for (int yC = 0; yC < \"+t.outWidth+\"; yC++) {\\n              int xC = wC + yC * \"+n+\" - \"+o+\";\\n\\n              if (xC < 0 || xC >= \"+t.inWidth+\") {\\n                continue;\\n              }\\n\\n              if (\"+a+\") {\\n                float dyValue = getDy(b, yR, yC, d2);\\n                float xValue = getX(b, xR, xC, d1);\\n                dotProd += (xValue * dyValue);\\n              } else {\\n                float dyValue = getDy(b, d2, yR, yC);\\n                float xValue = getX(b, d1, xR, xC);\\n                dotProd += (xValue * dyValue);\\n              }\\n\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Mi=function(t){this.variableNames=[\"dy\",\"W\"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a=\"channelsLast\"===t.dataFormat,i=e-1-t.padInfo.top,s=n-1-t.padInfo.left,u=a?1:2,c=a?2:3,l=a?3:1;this.userCode=\"\\n      const ivec2 pads = ivec2(\"+i+\", \"+s+\");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int d1 = coords[\"+l+\"];\\n\\n        ivec2 dyCorner = ivec2(coords[\"+u+\"], coords[\"+c+\"]) - pads;\\n        int dyRCorner = dyCorner.x;\\n        int dyCCorner = dyCorner.y;\\n\\n        // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        for (int wR = 0; wR < \"+e+\"; wR++) {\\n          float dyR = float(dyRCorner + wR) / \"+r+\".0;\\n\\n          if (dyR < 0.0 || dyR >= \"+t.outHeight+\".0 || fract(dyR) > 0.0) {\\n            continue;\\n          }\\n          int idyR = int(dyR);\\n\\n          int wRPerm = \"+e+\" - 1 - wR;\\n\\n          for (int wC = 0; wC < \"+n+\"; wC++) {\\n            float dyC = float(dyCCorner + wC) / \"+o+\".0;\\n\\n            if (dyC < 0.0 || dyC >= \"+t.outWidth+\".0 ||\\n                fract(dyC) > 0.0) {\\n              continue;\\n            }\\n            int idyC = int(dyC);\\n\\n            int wCPerm = \"+n+\" - 1 - wC;\\n\\n            for (int d2 = 0; d2 < \"+t.outChannels+\"; d2++) {\\n\\n              if (\"+a+\") {\\n                float xValue = getDy(batch, idyR, idyC, d2);\\n                float wValue = getW(wRPerm, wCPerm, d1, d2);\\n                dotProd += xValue * wValue;\\n              } else {\\n                float xValue = getDy(batch, d2, idyR, idyC);\\n                float wValue = getW(wRPerm, wCPerm, d1, d2);\\n                dotProd += xValue * wValue;\\n              }\\n\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Bi=function(t){this.variableNames=[\"x\",\"dy\"],this.outputShape=t.filterShape;var e=t.strideDepth,n=t.strideHeight,r=t.strideWidth,o=t.padInfo.front,a=t.padInfo.top,i=t.padInfo.left;this.userCode=\"\\n      void main() {\\n        ivec5 coords = getOutputCoords();\\n        int wF = coords.x;\\n        int wR = coords.y;\\n        int wC = coords.z;\\n        int d1 = coords.w;\\n        int d2 = coords.u;\\n\\n        float dotProd = 0.0;\\n\\n        for (int b = 0; b < \"+t.batchSize+\"; b++) {\\n          for (int yF = 0; yF < \"+t.outDepth+\"; yF++) {\\n            int xF = wF + yF * \"+e+\" - \"+o+\";\\n\\n            if (xF < 0 || xF >= \"+t.inDepth+\") {\\n              continue;\\n            }\\n\\n            for (int yR = 0; yR < \"+t.outHeight+\"; yR++) {\\n              int xR = wR + yR * \"+n+\" - \"+a+\";\\n\\n              if (xR < 0 || xR >= \"+t.inHeight+\") {\\n                continue;\\n              }\\n\\n              for (int yC = 0; yC < \"+t.outWidth+\"; yC++) {\\n                int xC = wC + yC * \"+r+\" - \"+i+\";\\n\\n                if (xC < 0 || xC >= \"+t.inWidth+\") {\\n                  continue;\\n                }\\n\\n                float dyValue = getDy(b, yF, yR, yC, d2);\\n                float xValue = getX(b, xF, xR, xC, d1);\\n                dotProd += (xValue * dyValue);\\n              }\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Pi=function(t){this.variableNames=[\"dy\",\"W\"],this.outputShape=t.inShape;var e=t.filterDepth,n=t.filterHeight,r=t.filterWidth,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=e-1-t.padInfo.front,u=n-1-t.padInfo.top,c=r-1-t.padInfo.left;this.userCode=\"\\n      const ivec3 pads = ivec3(\"+s+\", \"+u+\", \"+c+\");\\n\\n      void main() {\\n        ivec5 coords = getOutputCoords();\\n        int batch = coords.x;\\n        int d1 = coords.u;\\n\\n\\n        ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\\n        int dyFCorner = dyCorner.x;\\n        int dyRCorner = dyCorner.y;\\n        int dyCCorner = dyCorner.z;\\n\\n        float dotProd = 0.0;\\n        for (int wF = 0; wF < \"+e+\"; wF++) {\\n          float dyF = float(dyFCorner + wF) / \"+o+\".0;\\n\\n          if (dyF < 0.0 || dyF >= \"+t.outDepth+\".0 || fract(dyF) > 0.0) {\\n            continue;\\n          }\\n          int idyF = int(dyF);\\n\\n          int wFPerm = \"+e+\" - 1 - wF;\\n\\n          for (int wR = 0; wR < \"+n+\"; wR++) {\\n            float dyR = float(dyRCorner + wR) / \"+a+\".0;\\n\\n            if (dyR < 0.0 || dyR >= \"+t.outHeight+\".0 ||\\n              fract(dyR) > 0.0) {\\n              continue;\\n            }\\n            int idyR = int(dyR);\\n\\n            int wRPerm = \"+n+\" - 1 - wR;\\n\\n            for (int wC = 0; wC < \"+r+\"; wC++) {\\n              float dyC = float(dyCCorner + wC) / \"+i+\".0;\\n\\n              if (dyC < 0.0 || dyC >= \"+t.outWidth+\".0 ||\\n                  fract(dyC) > 0.0) {\\n                continue;\\n              }\\n              int idyC = int(dyC);\\n\\n              int wCPerm = \"+r+\" - 1 - wC;\\n\\n              for (int d2 = 0; d2 < \"+t.outChannels+\"; d2++) {\\n                float xValue = getDy(batch, idyF, idyR, idyC, d2);\\n                float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2);\\n                dotProd += xValue * wValue;\\n              }\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Li=function(t){this.variableNames=[\"x\",\"dy\"],this.outputShape=t.filterShape;var e=t.strideHeight,n=t.strideWidth,r=t.padInfo.top,o=t.padInfo.left,a=t.outChannels/t.inChannels;this.userCode=\"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int wR = coords.x;\\n        int wC = coords.y;\\n        int d1 = coords.z;\\n        int dm = coords.w;\\n        int d2 = d1 * \"+a+\" + dm;\\n\\n        float dotProd = 0.0;\\n\\n        // TO DO: Vec4 over the batch size\\n        for (int b = 0; b < \"+t.batchSize+\"; b++) {\\n          for (int yR = 0; yR < \"+t.outHeight+\"; yR++) {\\n            int xR = wR + yR * \"+e+\" - \"+r+\";\\n\\n            if (xR < 0 || xR >= \"+t.inHeight+\") {\\n              continue;\\n            }\\n\\n            for (int yC = 0; yC < \"+t.outWidth+\"; yC++) {\\n              int xC = wC + yC * \"+n+\" - \"+o+\";\\n\\n              if (xC < 0 || xC >= \"+t.inWidth+\") {\\n                continue;\\n              }\\n\\n              float dyValue = getDy(b, yR, yC, d2);\\n              float xValue = getX(b, xR, xC, d1);\\n              dotProd += (xValue * dyValue);\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Wi=function(t){this.variableNames=[\"dy\",\"W\"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a=e-1-t.padInfo.top,i=n-1-t.padInfo.left,s=t.outChannels/t.inChannels;this.userCode=\"\\n      const ivec2 pads = ivec2(\"+a+\", \"+i+\");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int d1 = coords[3];\\n        ivec2 dyCorner = coords.yz - pads;\\n        int dyRCorner = dyCorner.x;\\n        int dyCCorner = dyCorner.y;\\n\\n        float dotProd = 0.0;\\n\\n        for (int wR = 0; wR < \"+e+\"; wR++) {\\n          float dyR = float(dyRCorner + wR) / \"+r+\".0;\\n\\n          if (dyR < 0.0 || dyR >= \"+t.outHeight+\".0 || fract(dyR) > 0.0) {\\n            continue;\\n          }\\n          int idyR = int(dyR);\\n\\n          int wRPerm = \"+e+\" - 1 - wR;\\n\\n          for (int wC = 0; wC < \"+n+\"; wC++) {\\n            float dyC = float(dyCCorner + wC) / \"+o+\".0;\\n\\n            if (dyC < 0.0 || dyC >= \"+t.outWidth+\".0 ||\\n                fract(dyC) > 0.0) {\\n              continue;\\n            }\\n            int idyC = int(dyC);\\n\\n            int wCPerm = \"+n+\" - 1 - wC;\\n\\n            // TO DO: Vec4 over the channelMul\\n            for (int dm = 0; dm < \"+s+\"; dm++) {\\n              int d2 = d1 * \"+s+\" + dm;\\n              float xValue = getDy(batch, idyR, idyC, d2);\\n              float wValue = getW(wRPerm, wCPerm, d1, dm);\\n              dotProd += xValue * wValue;\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Ui=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=[\"x\",\"W\"],this.outputShape=t.outShape;var o=t.padInfo.top,a=t.padInfo.left,i=t.strideHeight,s=t.strideWidth,u=t.dilationHeight,c=t.dilationWidth,l=t.filterHeight,h=t.filterWidth,f=4*Math.floor(t.inChannels/4),d=t.inChannels%4,p=\"channelsLast\"===t.dataFormat,v=p?1:2,g=p?2:3,m=p?3:1,y=\"\",x=\"\";n&&(y=r?\"float activation(float a) {\\n          float b = getPreluActivationWeightsAtOutCoords();\\n          \"+n+\"\\n        }\":\"\\n          float activation(float x) {\\n            \"+n+\"\\n          }\\n        \",x=\"result = activation(result);\");var b=e?\"result += getBiasAtOutCoords();\":\"\";e&&this.variableNames.push(\"bias\"),r&&this.variableNames.push(\"preluActivationWeights\"),this.userCode=\"\\n      \"+y+\"\\n\\n      const ivec2 strides = ivec2(\"+i+\", \"+s+\");\\n      const ivec2 pads = ivec2(\"+o+\", \"+a+\");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int d2 = coords[\"+m+\"];\\n\\n        ivec2 xRCCorner =\\n            ivec2(coords[\"+v+\"], coords[\"+g+\"]) * strides - pads;\\n        int xRCorner = xRCCorner.x;\\n        int xCCorner = xRCCorner.y;\\n\\n        // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        for (int wR = 0; wR < \"+l+\"; wR++) {\\n          int xR = xRCorner + wR * \"+u+\";\\n\\n          if (xR < 0 || xR >= \"+t.inHeight+\") {\\n            continue;\\n          }\\n\\n          for (int wC = 0; wC < \"+h+\"; wC++) {\\n            int xC = xCCorner + wC * \"+c+\";\\n\\n            if (xC < 0 || xC >= \"+t.inWidth+\") {\\n              continue;\\n            }\\n\\n            for (int d1 = 0; d1 < \"+f+\"; d1 += 4) {\\n              vec4 wValues = vec4(\\n                getW(wR, wC, d1, d2),\\n                getW(wR, wC, d1 + 1, d2),\\n                getW(wR, wC, d1 + 2, d2),\\n                getW(wR, wC, d1 + 3, d2)\\n              );\\n\\n              if (\"+p+\") {\\n                vec4 xValues = vec4(\\n                  getX(batch, xR, xC, d1),\\n                  getX(batch, xR, xC, d1 + 1),\\n                  getX(batch, xR, xC, d1 + 2),\\n                  getX(batch, xR, xC, d1 + 3)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              } else {\\n                vec4 xValues = vec4(\\n                  getX(batch, d1, xR, xC),\\n                  getX(batch, d1 + 1, xR, xC),\\n                  getX(batch, d1 + 2, xR, xC),\\n                  getX(batch, d1 + 3, xR, xC)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              }\\n            }\\n\\n            if (\"+(1===d)+\") {\\n\\n              if (\"+p+\") {\\n                dotProd +=\\n                    getX(batch, xR, xC, \"+f+\") *\\n                    getW(wR, wC, \"+f+\", d2);\\n              } else {\\n                dotProd +=\\n                    getX(batch, \"+f+\", xR, xC) *\\n                    getW(wR, wC, \"+f+\", d2);\\n              }\\n\\n            } else if (\"+(2===d)+\") {\\n              vec2 wValues = vec2(\\n                getW(wR, wC, \"+f+\", d2),\\n                getW(wR, wC, \"+f+\" + 1, d2)\\n              );\\n\\n              if (\"+p+\") {\\n                vec2 xValues = vec2(\\n                  getX(batch, xR, xC, \"+f+\"),\\n                  getX(batch, xR, xC, \"+f+\" + 1)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              } else {\\n                vec2 xValues = vec2(\\n                  getX(batch, \"+f+\", xR, xC),\\n                  getX(batch, \"+f+\" + 1, xR, xC)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              }\\n\\n            } else if (\"+(3===d)+\") {\\n              vec3 wValues = vec3(\\n                getW(wR, wC, \"+f+\", d2),\\n                getW(wR, wC, \"+f+\" + 1, d2),\\n                getW(wR, wC, \"+f+\" + 2, d2)\\n              );\\n\\n              if (\"+p+\") {\\n                vec3 xValues = vec3(\\n                  getX(batch, xR, xC, \"+f+\"),\\n                  getX(batch, xR, xC, \"+f+\" + 1),\\n                  getX(batch, xR, xC, \"+f+\" + 2)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              } else {\\n                vec3 xValues = vec3(\\n                  getX(batch, \"+f+\", xR, xC),\\n                  getX(batch, \"+f+\" + 1, xR, xC),\\n                  getX(batch, \"+f+\" + 2, xR, xC)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              }\\n\\n            }\\n          }\\n        }\\n\\n        float result = dotProd;\\n        \"+b+\"\\n        \"+x+\"\\n        setOutput(result);\\n      }\\n    \"},Vi=function(t){this.variableNames=[\"x\",\"W\"],this.outputShape=t.outShape;var e=t.padInfo.front,n=t.padInfo.top,r=t.padInfo.left,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,l=t.filterDepth,h=t.filterHeight,f=t.filterWidth,d=4*Math.floor(t.inChannels/4),p=t.inChannels%4;this.userCode=\"\\n      const ivec3 strides = ivec3(\"+o+\", \"+a+\", \"+i+\");\\n      const ivec3 pads = ivec3(\"+e+\", \"+n+\", \"+r+\");\\n\\n      void main() {\\n        ivec5 coords = getOutputCoords();\\n        int batch = coords.x;\\n        int d2 = coords.u;\\n\\n        ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\\n        int xFCorner = xFRCCorner.x;\\n        int xRCorner = xFRCCorner.y;\\n        int xCCorner = xFRCCorner.z;\\n\\n        // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get\\n        // y(yF, yR, yC, d2). ? = to be determined. : = across all\\n        // values in that axis.\\n        float dotProd = 0.0;\\n        for (int wF = 0; wF < \"+l+\"; wF++) {\\n          int xF = xFCorner + wF * \"+s+\";\\n\\n          if (xF < 0 || xF >= \"+t.inDepth+\") {\\n            continue;\\n          }\\n\\n          for (int wR = 0; wR < \"+h+\"; wR++) {\\n            int xR = xRCorner + wR * \"+u+\";\\n\\n            if (xR < 0 || xR >= \"+t.inHeight+\") {\\n              continue;\\n            }\\n\\n            for (int wC = 0; wC < \"+f+\"; wC++) {\\n              int xC = xCCorner + wC * \"+c+\";\\n\\n              if (xC < 0 || xC >= \"+t.inWidth+\") {\\n                continue;\\n              }\\n\\n              for (int d1 = 0; d1 < \"+d+\"; d1 += 4) {\\n                vec4 xValues = vec4(\\n                  getX(batch, xF, xR, xC, d1),\\n                  getX(batch, xF, xR, xC, d1 + 1),\\n                  getX(batch, xF, xR, xC, d1 + 2),\\n                  getX(batch, xF, xR, xC, d1 + 3)\\n                );\\n                vec4 wValues = vec4(\\n                  getW(wF, wR, wC, d1, d2),\\n                  getW(wF, wR, wC, d1 + 1, d2),\\n                  getW(wF, wR, wC, d1 + 2, d2),\\n                  getW(wF, wR, wC, d1 + 3, d2)\\n                );\\n\\n                dotProd += dot(xValues, wValues);\\n              }\\n\\n              if (\"+(1===p)+\") {\\n                dotProd +=\\n                  getX(batch, xF, xR, xC, \"+d+\") *\\n                  getW(wF, wR, wC, \"+d+\", d2);\\n              } else if (\"+(2===p)+\") {\\n                vec2 xValues = vec2(\\n                  getX(batch, xF, xR, xC, \"+d+\"),\\n                  getX(batch, xF, xR, xC, \"+d+\" + 1)\\n                );\\n                vec2 wValues = vec2(\\n                  getW(wF, wR, wC, \"+d+\", d2),\\n                  getW(wF, wR, wC, \"+d+\" + 1, d2)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              } else if (\"+(3===p)+\") {\\n                vec3 xValues = vec3(\\n                  getX(batch, xF, xR, xC, \"+d+\"),\\n                  getX(batch, xF, xR, xC, \"+d+\" + 1),\\n                  getX(batch, xF, xR, xC, \"+d+\" + 2)\\n                );\\n                vec3 wValues = vec3(\\n                  getW(wF, wR, wC, \"+d+\", d2),\\n                  getW(wF, wR, wC, \"+d+\" + 1, d2),\\n                  getW(wF, wR, wC, \"+d+\" + 2, d2)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              }\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},zi=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=[\"x\",\"W\"],this.outputShape=t.outShape;var o=t.inHeight,a=t.inWidth,i=t.padInfo.top,s=t.padInfo.left,u=t.strideHeight,c=t.strideWidth,l=t.dilationHeight,h=t.dilationWidth,f=t.filterHeight,d=t.filterWidth,p=t.outChannels/t.inChannels,v=\"\",g=\"\";n&&(v=r?\"float activation(float a) {\\n          float b = getPreluActivationWeightsAtOutCoords();\\n          \"+n+\"\\n        }\":\"\\n          float activation(float x) {\\n            \"+n+\"\\n          }\\n        \",g=\"result = activation(result);\");var m=e?\"result += getBiasAtOutCoords();\":\"\";e&&this.variableNames.push(\"bias\"),r&&this.variableNames.push(\"preluActivationWeights\"),this.userCode=\"\\n      \"+v+\"\\n\\n      const ivec2 strides = ivec2(\"+u+\", \"+c+\");\\n      const ivec2 pads = ivec2(\"+i+\", \"+s+\");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords.x;\\n        ivec2 xRCCorner = coords.yz * strides - pads;\\n        int d2 = coords.w;\\n        int d1 = d2 / \"+p+\";\\n        int q = d2 - d1 * \"+p+\";\\n\\n        int xRCorner = xRCCorner.x;\\n        int xCCorner = xRCCorner.y;\\n\\n        // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations.\\n        for (int wR = 0; wR < \"+f+\"; wR++) {\\n          int xR = xRCorner + wR * \"+l+\";\\n\\n          if (xR < 0 || xR >= \"+o+\") {\\n            continue;\\n          }\\n\\n          for (int wC = 0; wC < \"+d+\"; wC++) {\\n            int xC = xCCorner + wC * \"+h+\";\\n\\n            if (xC < 0 || xC >= \"+a+\") {\\n              continue;\\n            }\\n\\n            float xVal = getX(batch, xR, xC, d1);\\n            float wVal = getW(wR, wC, d1, q);\\n            dotProd += xVal * wVal;\\n          }\\n        }\\n\\n        float result = dotProd;\\n        \"+m+\"\\n        \"+g+\"\\n        setOutput(result);\\n      }\\n    \"},Gi=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=[\"x\",\"W\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.outShape;for(var o=t.inHeight,a=t.inWidth,i=t.padInfo.top,s=t.padInfo.left,u=t.strideHeight,c=t.strideWidth,l=t.dilationHeight,h=t.dilationWidth,f=t.filterHeight,d=t.filterWidth,p=d,v=\"int xR; int xC; int xCOffset;\",g=0;g<f;g++)for(var m=0;m<d;m++)v+=\"\\n          vec4 xTexelR\"+g+\"C\"+2*m+\" = vec4(0.);\\n          vec4 wR\"+g+\"C\"+m+\" = vec4(0.);\\n          vec4 xR\"+g+\"C\"+m+\" = vec4(0.);\";for(g=0;g<f;g++)for(var y=0;y<p;y++){if(v+=\"\\n          xR = xRCorner + \"+g*l+\";\\n          xC = xCCorner + \"+(m=2*y)*h+\";\\n        \",1===c){if(m<d&&(v+=s%2==1?\"\\n                xCOffset = xC + 1;\\n                if(xR >= 0 && xR < \"+o+\" && xCOffset >= 0 && xCOffset < \"+a+\") {\\n                  xTexelR\"+g+\"C\"+m+\" = getX(batch, xR, xCOffset, d1);\\n\\n                  // Need to manually clear unused channels in case\\n                  // we're reading from recycled texture.\\n                  if(xCOffset + 1 >= \"+a+\") {\\n                    xTexelR\"+g+\"C\"+m+\".zw = vec2(0.);\\n                  }\\n                } else {\\n                  xTexelR\"+g+\"C\"+m+\" = vec4(0.);\\n                }\\n\\n                xCOffset = xC + 1 - 2;\\n                if(xR >= 0 && xR < \"+o+\" && xCOffset >= 0 && xCOffset < \"+a+\") {\\n                  vec4 previous = getX(batch, xR, xCOffset, d1);\\n\\n                  // Need to manually clear unused channels in case\\n                  // we're reading from recycled texture.\\n                  if(xCOffset + 1 >= \"+a+\") {\\n                    previous.zw = vec2(0.);\\n                  }\\n\\n                  xR\"+g+\"C\"+m+\" = vec4(previous.zw, xTexelR\"+g+\"C\"+m+\".xy);\\n                } else {\\n                  xR\"+g+\"C\"+m+\" = vec4(0, 0, xTexelR\"+g+\"C\"+m+\".xy);\\n                }\\n              \":\"\\n                if(xR >= 0 && xR < \"+o+\" && xC >= 0 && xC < \"+a+\") {\\n                  xTexelR\"+g+\"C\"+m+\" = getX(batch, xR, xC, d1);\\n                } else {\\n                  xTexelR\"+g+\"C\"+m+\" = vec4(0.);\\n                }\\n\\n                xR\"+g+\"C\"+m+\" = xTexelR\"+g+\"C\"+m+\";\\n              \",m+1<d)){var x=s%2==0?b(h):h;h%2==0&&s%2==1||h%2!=0&&s%2!=1?(v+=\"\\n                  xCOffset = xC + \"+s%2+\" + \"+x+\";\\n\\n                  if(xR >= 0 && xR < \"+o+\" &&\\n                    xCOffset >= 0 && xCOffset < \"+a+\") {\\n                    xTexelR\"+g+\"C\"+(m+2)+\" = getX(batch, xR, xCOffset, d1);\\n                  }\\n                \",h>1&&(v+=\"\\n                    xCOffset -= 2;\\n                    if(xR >= 0 && xR < \"+o+\" &&\\n                      xCOffset >= 0 && xCOffset < \"+a+\") {\\n                      xTexelR\"+g+\"C\"+m+\" = getX(batch, xR, xCOffset, d1);\\n                    } else {\\n                      xTexelR\"+g+\"C\"+m+\" = vec4(0.);\\n                    }\\n                  \"),v+=\"\\n                  xR\"+g+\"C\"+(m+1)+\" = vec4(\\n                    xTexelR\"+g+\"C\"+m+\".zw, xTexelR\"+g+\"C\"+(m+2)+\".xy);\\n                \"):v+=\"\\n                  xCOffset = xC + \"+x+\";\\n\\n                  if(xR >= 0 && xR < \"+o+\" &&\\n                    xCOffset >= 0 && xCOffset < \"+a+\") {\\n                    xTexelR\"+g+\"C\"+(m+2)+\" = getX(batch, xR, xCOffset, d1);\\n                  }\\n\\n                  xR\"+g+\"C\"+(m+1)+\" = xTexelR\"+g+\"C\"+(m+2)+\";\\n                \"}}else m<d&&(v+=\"\\n              if(xR >= 0 && xR < \"+o+\") {\\n            \",s%2==1?(v+=\"\\n                xCOffset = xC + 1 - \"+c+\";\\n                if(xCOffset >= 0 && xCOffset < \"+a+\") {\\n                  xTexelR\"+g+\"C\"+m+\" = getX(batch, xR, xCOffset, d1);\\n                } else {\\n                  xTexelR\"+g+\"C\"+m+\" = vec4(0.);\\n                }\\n\\n                if(xC + 1 >= 0 && xC + 1 < \"+a+\") {\\n                  xTexelR\"+g+\"C\"+(m+2)+\" = getX(batch, xR, xC + 1, d1);\\n                } else {\\n                  xTexelR\"+g+\"C\"+(m+2)+\" = vec4(0.);\\n                }\\n\\n                xR\"+g+\"C\"+m+\" = vec4(\\n                  xTexelR\"+g+\"C\"+m+\".zw, xTexelR\"+g+\"C\"+(m+2)+\".zw);\\n              \",m+1<d&&(v+=\"\\n                  vec4 final = vec4(0.);\\n                  xCOffset = xC + 1 + \"+c+\";\\n                  if(xCOffset >= 0 && xCOffset < \"+a+\") {\\n                    final = getX(batch, xR, xCOffset, d1);\\n                  }\\n                  xR\"+g+\"C\"+(m+1)+\" = vec4(xTexelR\"+g+\"C\"+(m+2)+\".xy, final.xy);\\n                \")):(v+=\"\\n                if(xC >= 0 && xC < \"+a+\") {\\n                  xTexelR\"+g+\"C\"+m+\" = getX(batch, xR, xC, d1);\\n                } else {\\n                  xTexelR\"+g+\"C\"+m+\" = vec4(0.);\\n                }\\n\\n                xCOffset = xC + \"+c+\";\\n                if(xCOffset >= 0 && xCOffset < \"+a+\") {\\n                  xTexelR\"+g+\"C\"+(m+2)+\" = getX(batch, xR, xCOffset, d1);\\n                } else {\\n                  xTexelR\"+g+\"C\"+(m+2)+\" = vec4(0.);\\n                }\\n\\n                xR\"+g+\"C\"+m+\" = vec4(\\n                  xTexelR\"+g+\"C\"+m+\".xy, xTexelR\"+g+\"C\"+(m+2)+\".xy);\\n              \",m+1<d&&(v+=\"\\n                  xR\"+g+\"C\"+(m+1)+\" = vec4(\\n                    xTexelR\"+g+\"C\"+m+\".zw, xTexelR\"+g+\"C\"+(m+2)+\".zw);\\n                \")),v+=\"}\");m<d&&(v+=\"\\n            vec4 wTexelR\"+g+\"C\"+m+\" = getW(\"+g+\", \"+m+\", d1, q);\\n            wR\"+g+\"C\"+m+\" = vec4(wTexelR\"+g+\"C\"+m+\".xz, wTexelR\"+g+\"C\"+m+\".xz);\\n          \",m+1<d&&(v+=\"\\n              vec4 wTexelR\"+g+\"C\"+(m+1)+\" = getW(\"+g+\", \"+(m+1)+\", d1, q);\\n              wR\"+g+\"C\"+(m+1)+\" =\\n                vec4(wTexelR\"+g+\"C\"+(m+1)+\".xz, wTexelR\"+g+\"C\"+(m+1)+\".xz);\"))}for(g=0;g<f;g++)for(m=0;m<d;m++)v+=\"dotProd += xR\"+g+\"C\"+m+\" * wR\"+g+\"C\"+m+\";\";var w=\"\",C=\"\";n&&(w=r?\"vec4 activation(vec4 a) {\\n          vec4 b = getPreluActivationWeightsAtOutCoords();\\n          \"+n+\"\\n        }\":\"vec4 activation(vec4 x) {\\n          \"+n+\"\\n        }\",C=\"result = activation(result);\");var E=e?\"result += getBiasAtOutCoords();\":\"\";e&&this.variableNames.push(\"bias\"),r&&this.variableNames.push(\"preluActivationWeights\"),this.userCode=\"\\n      \"+w+\"\\n\\n      const ivec2 strides = ivec2(\"+u+\", \"+c+\");\\n      const ivec2 pads = ivec2(\"+i+\", \"+s+\");\\n\\n      void main() {\\n\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords.x;\\n        ivec2 xRCCorner = coords.yz * strides - pads;\\n        int d2 = coords.w;\\n        int d1 = d2;\\n        int q = 0;\\n        int xRCorner = xRCCorner.x;\\n        int xCCorner = xRCCorner.y;\\n\\n        vec4 dotProd = vec4(0.);\\n\\n        \"+v+\"\\n\\n        vec4 result = dotProd;\\n        \"+E+\"\\n        \"+C+\"\\n        setOutput(result);\\n      }\\n    \"},Hi=function(t,e,n,r,o){this.variableNames=[\"Image\",\"Boxes\",\"BoxInd\"],this.outputShape=[];var a=t[0],i=t[1],s=t[2],u=t[3],c=e[0],l=n[0],h=n[1];this.outputShape=[c,l,h,u];var f=\"bilinear\"===r?1:0,d=[i-1+\".0\",s-1+\".0\"],p=d[0],v=d[1],g=l>1?[\"\"+(i-1)/(l-1),\"(y2-y1) * height_ratio\",\"y1*\"+p+\" + float(y)*(height_scale)\"]:[\"0.0\",\"0.0\",\"0.5 * (y1+y2) * \"+p],m=g[0],y=g[1],x=g[2],b=h>1?[\"\"+(s-1)/(h-1),\"(x2-x1) * width_ratio\",\"x1*\"+v+\" + float(x)*(width_scale)\"]:[\"0.0\",\"0.0\",\"0.5 * (x1+x2) * \"+v],w=b[0],C=b[1],E=b[2];this.userCode=\"\\n      const float height_ratio = float(\"+m+\");\\n      const float width_ratio = float(\"+w+\");\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int y = coords[1];\\n        int x = coords[2];\\n        int d = coords[3];\\n\\n        // get box vals\\n        float y1 = getBoxes(b,0);\\n        float x1 = getBoxes(b,1);\\n        float y2 = getBoxes(b,2);\\n        float x2 = getBoxes(b,3);\\n\\n        // get image in batch index\\n        int bInd = round(getBoxInd(b));\\n        if(bInd < 0 || bInd >= \"+a+\") {\\n          return;\\n        }\\n\\n        float height_scale = \"+y+\";\\n        float width_scale = \"+C+\";\\n\\n        float in_y = \"+x+\";\\n        if( in_y < 0.0 || in_y > \"+p+\" ) {\\n          setOutput(float(\"+o+\"));\\n          return;\\n        }\\n        float in_x = \"+E+\";\\n        if( in_x < 0.0 || in_x > \"+v+\" ) {\\n          setOutput(float(\"+o+\"));\\n          return;\\n        }\\n\\n        vec2 sourceFracIndexCR = vec2(in_x,in_y);\\n        if(\"+f+\" == 1) {\\n          // Compute the four integer indices.\\n          ivec2 sourceFloorCR = ivec2(sourceFracIndexCR);\\n          ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR));\\n\\n          float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d);\\n          float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d);\\n          float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d);\\n          float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d);\\n\\n          vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR);\\n\\n          float top = topLeft + (topRight - topLeft) * fracCR.x;\\n          float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x;\\n          float newValue = top + (bottom - top) * fracCR.y;\\n          setOutput(newValue);\\n        } else {\\n          // Compute the coordinators of nearest neighbor point.\\n          ivec2 sourceNearestCR = ivec2(floor(\\n            sourceFracIndexCR + vec2(0.5,0.5)));\\n          float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d);\\n          setOutput(newValue);\\n        }\\n      }\\n    \"},qi=function(t,e,n){this.variableNames=[\"x\"],this.outputShape=t;var r=t.length,o=t[t.length-1],a=n?\"<\":\">\";this.userCode=\"\\n      int getIndex(int i) {\\n        \"+(n?\"return \"+o+\" -i - 1;\":\"return i;\")+\"\\n      }\\n\\n      void main() {\\n        \"+ui(r)+\" coords = getOutputCoords();\\n        int end = \"+Ki(r,\"coords\")+\";\\n        float val = 0.0;\\n        for (int i = \"+o+\" - 1; i >= 0; i -= 1) {\\n          int idx = getIndex(i);\\n          if (idx \"+a+\" end) {\\n            continue;\\n          }\\n          if (idx == end && \"+e+\") {\\n            continue;\\n          }\\n          \"+Ki(r,\"coords\")+\" = idx;\\n          val += getX(\"+function(t,e){if(1===t)return\"\"+e;if(2===t)return e+\".x, \"+e+\".y\";if(3===t)return e+\".x, \"+e+\".y, \"+e+\".z\";if(4===t)return e+\".x, \"+e+\".y, \"+e+\".z, \"+e+\".w\";throw Error(\"Cumulative sum for rank \"+t+\" is not yet supported\")}(r,\"coords\")+\");\\n        }\\n        setOutput(val);\\n      }\\n    \"};function Ki(t,e){if(1===t)return\"\"+e;if(2===t)return e+\".y\";if(3===t)return e+\".z\";if(4===t)return e+\".w\";throw Error(\"Cumulative sum for rank \"+t+\" is not yet supported\")}var ji=function(t){this.variableNames=[\"A\"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=Vt.DENSE;var e=Yt(t),n=Ya();this.outputShape=t,this.userCode=\"\\n      ivec3 outCoordsFromFlatIndex(int index) {\\n        \"+$a([\"r\",\"c\",\"d\"],t)+\"\\n        return ivec3(r, c, d);\\n      }\\n\\n      void main() {\\n        ivec2 resTexRC = ivec2(resultUV.yx *\\n          vec2(\"+e[0]+\", \"+e[1]+\"));\\n        int index = 4 * (resTexRC.x * \"+e[1]+\" + resTexRC.y);\\n\\n        vec4 result = vec4(0.);\\n\\n        for (int i=0; i<4; i++) {\\n          int flatIndex = index + i;\\n          ivec3 rc = outCoordsFromFlatIndex(flatIndex);\\n          result[i] = getA(rc.x, rc.y, rc.z);\\n        }\\n\\n        \"+n.output+\" = result;\\n      }\\n    \"},Xi=function(t){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=Vt.DENSE;var e=Yt(t),n=Ya();this.outputShape=t,this.userCode=\"\\n      ivec3 outCoordsFromFlatIndex(int index) {\\n        \"+$a([\"r\",\"c\",\"d\"],t)+\"\\n        return ivec3(r, c, d);\\n      }\\n\\n      void main() {\\n        ivec2 resTexRC = ivec2(resultUV.yx *\\n          vec2(\"+e[0]+\", \"+e[1]+\"));\\n        int index = 4 * (resTexRC.x * \"+e[1]+\" + resTexRC.y);\\n\\n        vec4 result = vec4(0.);\\n\\n        for (int i=0; i<4; i++) {\\n          int flatIndex = index + i;\\n          ivec3 rc = outCoordsFromFlatIndex(flatIndex);\\n          result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z));\\n        }\\n\\n        \"+n.output+\" = result;\\n      }\\n    \"},Yi=function(){function t(t,e,n){this.variableNames=[\"x\"],this.outputShape=[],this.outputShape=t,this.blockSize=e,this.dataFormat=n,this.userCode=\"\\n    void main() {\\n      ivec4 coords = getOutputCoords();\\n      int b = coords[0];\\n      int h = \"+this.getHeightCoordString()+\";\\n      int w = \"+this.getWidthCoordString()+\";\\n      int d = \"+this.getDepthCoordString()+\";\\n\\n      int in_h = h / \"+e+\";\\n      int offset_h = imod(h, \"+e+\");\\n      int in_w = w / \"+e+\";\\n      int offset_w = imod(w, \"+e+\");\\n      int offset_d = (offset_h * \"+e+\" + offset_w) *\\n        \"+this.getOutputDepthSize()+\";\\n      int in_d = d + offset_d;\\n\\n      float result = \"+this.getInputSamplingString()+\";\\n      setOutput(result);\\n    }\\n  \"}return t.prototype.getHeightCoordString=function(){return\"NHWC\"===this.dataFormat?\"coords[1]\":\"coords[2]\"},t.prototype.getWidthCoordString=function(){return\"NHWC\"===this.dataFormat?\"coords[2]\":\"coords[3]\"},t.prototype.getDepthCoordString=function(){return\"NHWC\"===this.dataFormat?\"coords[3]\":\"coords[1]\"},t.prototype.getOutputDepthSize=function(){return\"NHWC\"===this.dataFormat?this.outputShape[3]:this.outputShape[1]},t.prototype.getInputSamplingString=function(){return\"NHWC\"===this.dataFormat?\"getX(b, in_h, in_w, in_d)\":\"getX(b, in_d, in_h, in_w)\"},t}(),$i=function(t){this.variableNames=[\"X\"],this.outputShape=[t,t],this.userCode=\"\\n      void main() {\\n          ivec2 coords = getOutputCoords();\\n          float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0;\\n          setOutput(val);\\n      }\\n    \"},Qi=function(t){this.variableNames=[\"A\"],this.outTexUsage=zt.DOWNLOAD;var e=Ya();this.outputShape=t,this.userCode=\"\\n      \"+Ja+\"\\n\\n      void main() {\\n        float x = getAAtOutCoords();\\n        \"+e.output+\" = encode_float(x);\\n      }\\n    \"},Ji=function(t){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=zt.DOWNLOAD;var e=Ya();this.outputShape=t,this.userCode=\"\\n      \"+Ja+\"\\n\\n      void main() {\\n        ivec3 coords = getOutputCoords();\\n        float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z));\\n        \"+e.output+\" = encode_float(x);\\n      }\\n    \"},Zi=function(t,e,n){void 0===n&&(n=!1),this.variableNames=[\"A\"];var r=Ya(),o=e[0],a=e[1];this.outputShape=t;var i=\"result\";n&&(i=\"floor(result * 255. + 0.5)\"),this.userCode=\"\\n      \"+Qa(t)+\"\\n\\n      void main() {\\n        ivec3 coords = getOutputCoords();\\n\\n        int flatIndex = getFlatIndex(coords);\\n        int offset = imod(flatIndex, 4);\\n\\n        flatIndex = idiv(flatIndex, 4, 1.);\\n        \\n        int r = flatIndex / \"+a+\";\\n        int c = imod(flatIndex, \"+a+\");\\n        vec2 uv = (vec2(c, r) + halfCR) / vec2(\"+a+\".0, \"+o+\".0);\\n        vec4 values = \"+r.texture2D+\"(A, uv);\\n\\n        float result;\\n\\n        if(offset == 0) {\\n          result = values[0];\\n        } else if(offset == 1) {\\n          result = values[1];\\n        } else if(offset == 2) {\\n          result = values[2];\\n        } else {\\n          result = values[3];\\n        }\\n\\n        \"+r.output+\" = vec4(\"+i+\", 0., 0., 0.);\\n      }\\n    \"},ts=function(t,e,n){void 0===n&&(n=!1),this.variableNames=[\"A\"],this.packedInputs=!1,this.packedOutput=!0;var r=Ya(),o=e[0],a=e[1];this.outputShape=t;var i=\"\",s=\"result\";n&&(s=\"floor(result * 255. + 0.5)\");for(var u=0;u<=1;u++)for(var c=0;c<=1;c++){var l=2*u+c;i+=\"\\n          localCoords = coords;\\n          if(localCoords[2] + \"+c+\" < \"+t[2]+\") {\\n            localCoords[2] += \"+c+\";\\n            if(localCoords[1] + \"+u+\" < \"+t[1]+\") {\\n              localCoords[1] += \"+u+\";\\n\\n              flatIndex = getFlatIndex(localCoords);\\n              offset = imod(flatIndex, 4);\\n\\n              flatIndex = idiv(flatIndex, 4, 1.);\\n\\n              r = flatIndex / \"+a+\";\\n              c = imod(flatIndex, \"+a+\");\\n              uv = (vec2(c, r) + halfCR) / vec2(\"+a+\".0, \"+o+\".0);\\n              values = \"+r.texture2D+\"(A, uv);\\n\\n              if(offset == 0) {\\n                result[\"+l+\"] = values[0];\\n              } else if(offset == 1) {\\n                result[\"+l+\"] = values[1];\\n              } else if(offset == 2) {\\n                result[\"+l+\"] = values[2];\\n              } else {\\n                result[\"+l+\"] = values[3];\\n              }\\n            }\\n          }\\n        \"}this.userCode=\"\\n      \"+Qa(t)+\"\\n\\n      void main() {\\n        ivec3 coords = getOutputCoords();\\n\\n        vec4 result = vec4(0.);\\n        int flatIndex, r, c, offset;\\n        ivec3 localCoords;\\n        vec2 uv;\\n        vec4 values;\\n\\n        \"+i+\"\\n\\n        \"+r.output+\" = \"+s+\";\\n      }\\n    \"},es=\"return real * expR - imag * expI;\",ns=\"return real * expI + imag * expR;\",rs=function(t,e,n){this.variableNames=[\"real\",\"imag\"];var r=e[1];this.outputShape=e;var o=n?\"2.0 * \"+Math.PI:\"-2.0 * \"+Math.PI,a=n?r+\".0\":\"1.0\";this.userCode=\"\\n      const float exponentMultiplier = \"+o+\";\\n\\n      float unaryOpComplex(float real, float expR, float imag, float expI) {\\n        \"+t+\"\\n      }\\n\\n      float mulMatDFT(int batch, int index) {\\n        float indexRatio = float(index) / float(\"+r+\");\\n        float exponentMultiplierTimesIndexRatio =\\n            exponentMultiplier * indexRatio;\\n\\n        float result = 0.0;\\n\\n        for (int i = 0; i < \"+r+\"; i++) {\\n          // x = (-2|2 * PI / N) * index * i;\\n          float x = exponentMultiplierTimesIndexRatio * float(i);\\n          float expR = cos(x);\\n          float expI = sin(x);\\n          float real = getReal(batch, i);\\n          float imag = getImag(batch, i);\\n\\n          result +=\\n              unaryOpComplex(real, expR, imag, expI) / \"+a+\";\\n        }\\n\\n        return result;\\n      }\\n\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        setOutput(mulMatDFT(coords[0], coords[1]));\\n      }\\n    \"},os=function(){function t(t,e){this.outputShape=[],this.variableNames=[\"x\"],this.outputShape=t,this.userCode=\"\\n      uniform float value;\\n      void main() {\\n        // Input can be obtained from uniform value.\\n        setOutput(value);\\n      }\\n    \"}return t.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,r){null==e.valueLoc&&(e.valueLoc=n.getUniformLocationNoThrow(r,\"value\")),n.gl.uniform1f(e.valueLoc,t)}},t}(),as=function(t,e,n){this.variableNames=[\"A\",\"indices\"];var r=t.slice();r[n]=e,this.outputShape=r,this.rank=r.length;var o=ui(this.rank),a=function(t,e){var n=t.length;if(n>4)throw Error(\"Gather for rank \"+n+\" is not yet supported\");if(1===n)return\"int(getIndices(resRC))\";for(var r=[\"resRC.x\",\"resRC.y\",\"resRC.z\",\"resRC.w\"],o=[],a=0;a<t.length;a++)a===e?o.push(\"int(getIndices(\"+r[a]+\"))\"):o.push(\"\"+r[a]);return o.join()}(t,n);this.userCode=\"\\n      void main() {\\n        \"+o+\" resRC = getOutputCoords();\\n        setOutput(getA(\"+a+\"));\\n      }\\n    \"};var is=function(t,e,n){this.sliceDim=t,this.strides=e,this.variableNames=[\"x\",\"indices\"],this.outputShape=n;var r=ui(e.length),o=ui(n.length),a=this.sliceDim>1?\"strides[j]\":\"strides\";this.userCode=\"\\n        \"+r+\" strides = \"+r+\"(\"+this.strides+\");\\n         void main() {\\n          \"+o+\" coords = getOutputCoords();\\n          int flattenIndex = 0;\\n          for (int j = 0; j < \"+this.sliceDim+\"; j++) {\\n            int index = round(getIndices(coords[0], j));\\n            flattenIndex += index * \"+a+\";\\n          }\\n          setOutput(getX(flattenIndex, coords[1]));\\n        }\\n      \"};function ss(t,e){var n=Ya();return oe(t,e,n.version+\"\\n    precision highp float;\\n    \"+n.attribute+\" vec3 clipSpacePos;\\n    \"+n.attribute+\" vec2 uv;\\n    \"+n.varyingVs+\" vec2 resultUV;\\n\\n    void main() {\\n      gl_Position = vec4(clipSpacePos, 1);\\n      resultUV = uv;\\n    }\")}function us(t,e){return fe(t,e,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function cs(t,e){return de(t,e,new Uint16Array([0,1,2,2,1,3]))}function ls(t,e,n,r,o,a,i){ve(n,r);var s=pe(t,e),u=t.TEXTURE_2D;return Jt(t,e,(function(){return t.bindTexture(u,s)})),Jt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE)})),Jt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)})),Jt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_MIN_FILTER,t.NEAREST)})),Jt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_MAG_FILTER,t.NEAREST)})),Jt(t,e,(function(){return t.texImage2D(u,0,o,n,r,0,a,i,null)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)})),s}function hs(t,e,n,r,o){var a=Xt(n,r);return ls(t,e,a[0],a[1],o.internalFormatFloat,o.textureFormatFloat,t.FLOAT)}function fs(t,e,n,r,o){var a=Xt(n,r);return ls(t,e,a[0],a[1],o.internalFormatHalfFloat,o.textureFormatFloat,o.textureTypeHalfFloat)}function ds(t,e,n,r,o){var a=Xt(n,r);return ls(t,e,a[0],a[1],t.RGBA,t.RGBA,t.UNSIGNED_BYTE)}function ps(t,e,n,r,o){var a=$t(n,r);return ls(t,e,a[0],a[1],o.internalFormatPackedFloat,t.RGBA,t.FLOAT)}function vs(t,e,n,r,o){var a=$t(n,r);return ls(t,e,a[0],a[1],o.internalFormatPackedHalfFloat,t.RGBA,o.textureTypeHalfFloat)}function gs(t,e,n,r){return Jt(t,e,(function(){return t.bindBuffer(t.ARRAY_BUFFER,r)})),me(t,e,n,\"clipSpacePos\",r,3,20,0)&&me(t,e,n,\"uv\",r,2,20,12)}function ms(t,e,n,r,o,a,i){var s,u,c;Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)})),a instanceof Uint8Array?(s=new Uint8Array(r*o*4),u=t.UNSIGNED_BYTE,c=t.RGBA):(s=new Float32Array(r*o*4),u=t.FLOAT,c=i.internalFormatPackedFloat),s.set(a),Jt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,c,r,o,0,t.RGBA,u,s)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}))}function ys(t,e,n,r){Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)})),r.data instanceof Uint8Array?Jt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,r.width,r.height,0,t.RGBA,t.UNSIGNED_BYTE,r.data)})):Jt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}))}function xs(t,e,n,r,o){var a=t.createBuffer();Jt(t,e,(function(){return t.bindBuffer(t.PIXEL_PACK_BUFFER,a)}));var i=16*n*r;return Jt(t,e,(function(){return t.bufferData(t.PIXEL_PACK_BUFFER,i,t.STREAM_READ)})),Jt(t,e,(function(){return t.readPixels(0,0,r,n,t.RGBA,t.FLOAT,0)})),Jt(t,e,(function(){return t.bindBuffer(t.PIXEL_PACK_BUFFER,null)})),a}function bs(t,e,n){var r=t,o=new Float32Array(n);return r.bindBuffer(r.PIXEL_PACK_BUFFER,e),r.getBufferSubData(r.PIXEL_PACK_BUFFER,0,o),r.bindBuffer(r.PIXEL_PACK_BUFFER,null),o}function ws(t,e,n,r,o){var a=Xt(n,r),i=a[0],s=a[1],u=new Uint8Array(n*r*4);return Jt(t,e,(function(){return t.readPixels(0,0,i,s,o.downloadTextureFormat,t.UNSIGNED_BYTE,u)})),new Float32Array(u.buffer)}function Cs(t,e,n,r,o,a,i,s){var u=t,c=new Float32Array(function(t,e){var n=$t(t,e);return n[0]*n[1]*4}(a,i));return u.bindBuffer(u.PIXEL_PACK_BUFFER,e),u.getBufferSubData(u.PIXEL_PACK_BUFFER,0,c),u.bindBuffer(u.PIXEL_PACK_BUFFER,null),c}function Es(t,e,n,r){var o=new Float32Array(n*r*4);return Jt(t,e,(function(){return t.readPixels(0,0,r,n,t.RGBA,t.FLOAT,o)})),o}var Rs=Object.freeze({createVertexShader:ss,createVertexBuffer:us,createIndexBuffer:cs,createFloat32MatrixTexture:hs,createFloat16MatrixTexture:fs,createUnsignedBytesMatrixTexture:ds,createPackedMatrixTexture:ps,createFloat16PackedMatrixTexture:vs,bindVertexProgramAttributeStreams:gs,uploadDenseMatrixToTexture:ms,uploadPixelDataToTexture:ys,createBufferFromOutputTexture:xs,downloadFloat32MatrixFromBuffer:bs,downloadByteEncodedFloatMatrixFromOutputTexture:ws,downloadPackedMatrixFromBuffer:Cs,downloadMatrixFromPackedOutputTexture:Es}),Is=function(){function t(t){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];var e=i().getNumber(\"WEBGL_VERSION\");null!=t?(this.gl=t,Kt(e,t)):this.gl=jt(e);var n=\"WEBGL_color_buffer_float\";if(1===i().getNumber(\"WEBGL_VERSION\")){if(this.textureFloatExtension=re(this.gl,this.debug,\"OES_texture_float\"),Pe(this.gl,\"OES_texture_half_float\"))this.textureHalfFloatExtension=re(this.gl,this.debug,\"OES_texture_half_float\");else if(i().get(\"WEBGL_FORCE_F16_TEXTURES\"))throw new Error(\"GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.\");if(this.colorBufferFloatExtension=this.gl.getExtension(n),Pe(this.gl,\"EXT_color_buffer_half_float\"))this.colorBufferHalfFloatExtension=re(this.gl,this.debug,\"EXT_color_buffer_half_float\");else if(i().get(\"WEBGL_FORCE_F16_TEXTURES\"))throw new Error(\"GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.\")}else if(n=\"EXT_color_buffer_float\",Pe(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else{if(!Pe(this.gl,\"EXT_color_buffer_half_float\"))throw new Error(\"GL context does not support color renderable floats\");this.colorBufferHalfFloatExtension=this.gl.getExtension(\"EXT_color_buffer_half_float\")}this.vertexBuffer=us(this.gl,this.debug),this.indexBuffer=cs(this.gl,this.debug),this.framebuffer=ge(this.gl,this.debug),this.textureConfig=Qt(this.gl,this.textureHalfFloatExtension)}return Object.defineProperty(t.prototype,\"debug\",{get:function(){return i().getBool(\"DEBUG\")},enumerable:!0,configurable:!0}),t.prototype.dispose=function(){var t=this;if(!this.disposed){null!=this.program&&console.warn(\"Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing.\"),null!=this.outputTexture&&console.warn(\"Disposing a GPGPUContext that still has a bound output matrix texture.  This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.\");var e=this.gl;Jt(e,this.debug,(function(){return e.finish()})),Jt(e,this.debug,(function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)})),Jt(e,this.debug,(function(){return e.deleteFramebuffer(t.framebuffer)})),Jt(e,this.debug,(function(){return e.bindBuffer(e.ARRAY_BUFFER,null)})),Jt(e,this.debug,(function(){return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)})),Jt(e,this.debug,(function(){return e.deleteBuffer(t.indexBuffer)})),this.disposed=!0}},t.prototype.createFloat32MatrixTexture=function(t,e){return this.throwIfDisposed(),hs(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createFloat16MatrixTexture=function(t,e){return this.throwIfDisposed(),fs(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createUnsignedBytesMatrixTexture=function(t,e){return this.throwIfDisposed(),ds(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.uploadPixelDataToTexture=function(t,e){this.throwIfDisposed(),ys(this.gl,this.debug,t,e)},t.prototype.uploadDenseMatrixToTexture=function(t,e,n,r){this.throwIfDisposed(),ms(this.gl,this.debug,t,e,n,r,this.textureConfig)},t.prototype.createFloat16PackedMatrixTexture=function(t,e){return this.throwIfDisposed(),vs(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createPackedMatrixTexture=function(t,e){return this.throwIfDisposed(),ps(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.deleteMatrixTexture=function(t){var e=this;this.throwIfDisposed(),this.outputTexture===t&&(Ee(this.gl,this.debug,this.framebuffer),this.outputTexture=null),Jt(this.gl,this.debug,(function(){return e.gl.deleteTexture(t)}))},t.prototype.downloadByteEncodedFloatMatrixFromOutputTexture=function(t,e,n){var r=this;return this.downloadMatrixDriver(t,(function(){return ws(r.gl,r.debug,e,n,r.textureConfig)}))},t.prototype.downloadPackedMatrixFromBuffer=function(t,e,n,r,o,a){return Cs(this.gl,t,0,0,0,o,a,this.textureConfig)},t.prototype.downloadFloat32MatrixFromBuffer=function(t,e){return bs(this.gl,t,e)},t.prototype.createBufferFromTexture=function(t,e,n){this.bindTextureToFrameBuffer(t);var r=xs(this.gl,this.debug,e,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),r},t.prototype.createAndWaitForFence=function(){var t=this.createFence(this.gl);return this.pollFence(t)},t.prototype.createFence=function(t){var e,n,r=this;if(i().getBool(\"WEBGL_FENCE_API_ENABLED\")){var o=t,a=o.fenceSync(o.SYNC_GPU_COMMANDS_COMPLETE,0);t.flush(),n=function(){var t=o.clientWaitSync(a,0,0);return t===o.ALREADY_SIGNALED||t===o.CONDITION_SATISFIED},e=a}else i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\")>0?(e=this.beginQuery(),this.endQuery(),n=function(){return r.isQueryAvailable(e,i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\"))}):n=function(){return!0};return{query:e,isFencePassed:n}},t.prototype.downloadMatrixFromPackedTexture=function(t,e,n){var r=this;return this.downloadMatrixDriver(t,(function(){return Es(r.gl,r.debug,e,n)}))},t.prototype.createProgram=function(t){this.throwIfDisposed();var e=this.gl,n=ae(e,this.debug,t),r=ss(e,this.debug),o=ce(e,this.debug);return Jt(e,this.debug,(function(){return e.attachShader(o,r)})),Jt(e,this.debug,(function(){return e.attachShader(o,n)})),le(e,this.debug,o),this.debug&&he(e,this.debug,o),this.vertexAttrsAreBound||(this.setProgram(o),this.vertexAttrsAreBound=gs(e,this.debug,this.program,this.vertexBuffer)),o},t.prototype.deleteProgram=function(t){var e=this;this.throwIfDisposed(),t===this.program&&(this.program=null),null!=t&&Jt(this.gl,this.debug,(function(){return e.gl.deleteProgram(t)}))},t.prototype.setProgram=function(t){var e=this;this.throwIfDisposed(),this.program=t,null!=this.program&&this.debug&&he(this.gl,this.debug,this.program),Jt(this.gl,this.debug,(function(){return e.gl.useProgram(t)}))},t.prototype.getUniformLocation=function(t,e,n){return void 0===n&&(n=!0),this.throwIfDisposed(),n?xe(this.gl,this.debug,t,e):be(this.gl,t,e)},t.prototype.getAttributeLocation=function(t,e){var n=this;return this.throwIfDisposed(),Jt(this.gl,this.debug,(function(){return n.gl.getAttribLocation(t,e)}))},t.prototype.getUniformLocationNoThrow=function(t,e){return this.throwIfDisposed(),this.gl.getUniformLocation(t,e)},t.prototype.setInputMatrixTexture=function(t,e,n){this.throwIfDisposed(),this.throwIfNoProgram(),we(this.gl,this.debug,this.program,t,e,n)},t.prototype.setOutputMatrixTexture=function(t,e,n){this.setOutputMatrixTextureDriver(t,n,e)},t.prototype.setOutputPackedMatrixTexture=function(t,e,n){this.throwIfDisposed();var r=$t(e,n),o=r[0],a=r[1];this.setOutputMatrixTextureDriver(t,o,a)},t.prototype.setOutputMatrixWriteRegion=function(t,e,n,r){this.setOutputMatrixWriteRegionDriver(n,t,r,e)},t.prototype.setOutputPackedMatrixWriteRegion=function(t,e,n,r){throw new Error(\"setOutputPackedMatrixWriteRegion not implemented.\")},t.prototype.debugValidate=function(){null!=this.program&&he(this.gl,this.debug,this.program),Re(this.gl)},t.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var t=this.gl;this.debug&&this.debugValidate(),Jt(t,this.debug,(function(){return t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0)}))},t.prototype.blockUntilAllProgramsCompleted=function(){var t=this;this.throwIfDisposed(),Jt(this.gl,this.debug,(function(){return t.gl.finish()}))},t.prototype.getQueryTimerExtension=function(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=re(this.gl,this.debug,2===i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\")?\"EXT_disjoint_timer_query_webgl2\":\"EXT_disjoint_timer_query\")),this.disjointQueryTimerExtension},t.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},t.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},t.prototype.beginQuery=function(){if(2===i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\")){var t=this.gl,e=this.getQueryTimerExtensionWebGL2(),n=t.createQuery();return t.beginQuery(e.TIME_ELAPSED_EXT,n),n}var r=this.getQueryTimerExtensionWebGL1(),o=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,o),o},t.prototype.endQuery=function(){if(2!==i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\")){var t=this.getQueryTimerExtensionWebGL1();t.endQueryEXT(t.TIME_ELAPSED_EXT)}else{var e=this.gl,n=this.getQueryTimerExtensionWebGL2();e.endQuery(n.TIME_ELAPSED_EXT)}},t.prototype.waitForQueryAndGetTime=function(t){return n(this,void 0,void 0,(function(){var e=this;return r(this,(function(n){switch(n.label){case 0:return[4,F((function(){return e.disposed||e.isQueryAvailable(t,i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\"))}))];case 1:return n.sent(),[2,this.getQueryTime(t,i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\"))]}}))}))},t.prototype.getQueryTime=function(t,e){if(0===e)return null;if(2===e){var n=this.gl;return n.getQueryParameter(t,n.QUERY_RESULT)/1e6}var r=this.getQueryTimerExtensionWebGL1();return r.getQueryObjectEXT(t,r.QUERY_RESULT_EXT)/1e6},t.prototype.isQueryAvailable=function(t,e){if(0===e)return!0;if(2===e){var n=this.gl,r=this.getQueryTimerExtensionWebGL2(),o=n.getQueryParameter(t,n.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),o&&!this.disjoint}o=(r=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(t,r.QUERY_RESULT_AVAILABLE_EXT);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),o&&!this.disjoint},t.prototype.pollFence=function(t){var e=this;return new Promise((function(n){e.addItemToPoll((function(){return t.isFencePassed()}),(function(){return n()}))}))},t.prototype.pollItems=function(){for(var t=function(t){for(var e=0;e<t.length;++e){if(!t[e]())break}return e-1}(this.itemsToPoll.map((function(t){return t.isDoneFn}))),e=0;e<=t;++e){(0,this.itemsToPoll[e].resolveFn)()}this.itemsToPoll=this.itemsToPoll.slice(t+1)},t.prototype.addItemToPoll=function(t,e){var n=this;this.itemsToPoll.push({isDoneFn:t,resolveFn:e}),this.itemsToPoll.length>1||F((function(){return n.pollItems(),0===n.itemsToPoll.length}))},t.prototype.bindTextureToFrameBuffer=function(t){this.throwIfDisposed(),Ce(this.gl,this.debug,t,this.framebuffer),this.debug&&Re(this.gl)},t.prototype.unbindTextureToFrameBuffer=function(){null!=this.outputTexture?(Ce(this.gl,this.debug,this.outputTexture,this.framebuffer),this.debug&&Re(this.gl)):Ee(this.gl,this.debug,this.framebuffer)},t.prototype.downloadMatrixDriver=function(t,e){this.bindTextureToFrameBuffer(t);var n=e();return this.unbindTextureToFrameBuffer(),n},t.prototype.setOutputMatrixTextureDriver=function(t,e,n){this.throwIfDisposed();var r=this.gl;Ce(r,this.debug,t,this.framebuffer),this.debug&&Re(r),this.outputTexture=t,Jt(r,this.debug,(function(){return r.viewport(0,0,e,n)})),Jt(r,this.debug,(function(){return r.scissor(0,0,e,n)}))},t.prototype.setOutputMatrixWriteRegionDriver=function(t,e,n,r){var o=this;this.throwIfDisposed(),Jt(this.gl,this.debug,(function(){return o.gl.scissor(t,e,n,r)}))},t.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error(\"Attempted to use disposed GPGPUContext.\")},t.prototype.throwIfNoProgram=function(){if(null==this.program)throw new Error(\"No GPU program is currently set.\")},t}();function ks(t,e){if(t.length!==e.length)throw Error(\"Binary was compiled with \"+t.length+\" inputs, but was executed with \"+e.length+\" inputs\");t.forEach((function(t,n){var r=t.logicalShape,o=e[n],a=o.shape;if(!S(r,a))throw Error(\"Binary was compiled with different shapes than the current args. Shapes \"+r+\" and \"+a+\" must match\");if(!t.isUniform||!o.isUniform){var i=t.texShape,s=o.isUniform?null:o.texData.texShape;if(!S(i,s))throw Error(\"Binary was compiled with different texture shapes than the current args. Shape \"+i+\" and \"+s+\" must match\")}}))}var Ss=function(t,e,n){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;for(var r=n.filterWidth,o=n.inChannels,a=n.strideWidth,i=n.strideHeight,s=n.padInfo,u=n.outWidth,c=n.dilationWidth,l=n.dilationHeight,h=n.dataFormat,f=s.left,d=s.top,p=o*r,v=Ya(),g=\"channelsLast\"===h,m=g?0:1,y=g?1:2,x=\"\",b=0;b<=1;b++)for(var w=0;w<=1;w++)x+=\"\\n          blockIndex = rc.y + \"+w+\";\\n          pos = rc.x + \"+b+\";\\n\\n          if(blockIndex < \"+t[1]+\" && pos < \"+t[0]+\") {\\n            offsetY = int(blockIndex / (\"+u+\")) * \"+i+\" - \"+d+\";\\n            d0 = offsetY + \"+l+\" * (pos / \"+p+\");\\n\\n            if(d0 < \"+e[m]+\" && d0 >= 0) {\\n\\n              offsetX = int(mod(float(blockIndex), \"+u+\".) * \"+a+\". - \"+f+\".);\\n              d1 = offsetX + \"+c+\" * (int(mod(float(pos), \"+p+\".) / \"+o+\".));\\n\\n              if(d1 < \"+e[y]+\" && d1 >= 0) {\\n\\n                ch = int(mod(float(pos), \"+o+\".));\\n\\n                if (\"+g+\") {\\n                  innerDims = vec2(d1, ch);\\n                  result[\"+(2*b+w)+\"] = getChannel(\\n                    getA(d0, int(innerDims.x),\\n                    int(innerDims.y)), innerDims);\\n                } else {\\n                  innerDims = vec2(d0, d1);\\n                  result[\"+(2*b+w)+\"] = getChannel(\\n                    getA(ch, int(innerDims.x),\\n                    int(innerDims.y)), innerDims);\\n                }\\n              }\\n            }\\n          }\\n        \";this.userCode=\"\\n      void main() {\\n        ivec2 rc = getOutputCoords();\\n\\n        vec4 result = vec4(0);\\n\\n        int blockIndex, pos, offsetY, d0, offsetX, d1, ch;\\n        vec2 innerDims;\\n\\n        \"+x+\"\\n\\n        \"+v.output+\" = result;\\n      }\\n    \"},As=function(t,e,n,r,o){this.variableNames=[\"x\"],this.outputShape=[];var a,i=e,s=t[3]-1;this.outputShape=t;var u=\"float(\"+n+\") + float(\"+r+\") * sum\";a=.5===o?\"inversesqrt(\"+u+\")\":1===o?\"1.0/(\"+u+\")\":\"exp(log(\"+u+\") * float(-\"+o+\"));\",this.userCode=\"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int r = coords[1];\\n        int c = coords[2];\\n        int d = coords[3];\\n        float x = getX(b, r, c, d);\\n        float sum = 0.0;\\n        for (int j = -\"+i+\"; j <= \"+i+\"; j++) {\\n          int idx = d + j;\\n          if (idx >= 0 && idx <=  \"+s+\") {\\n            float z = getX(b, r, c, idx);\\n            sum += z * z;\\n          }\\n        }\\n        float val = x * \"+a+\";\\n        setOutput(val);\\n      }\\n    \"},Ts=function(t,e,n,r,o){this.variableNames=[\"inputImage\",\"outputImage\",\"dy\"],this.outputShape=[],this.outputShape=t,this.depth=t[3],this.depthRadius=e,this.bias=n,this.alpha=r,this.beta=o,this.userCode=\"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int r = coords[1];\\n        int c = coords[2];\\n\\n        float result = 0.0;\\n        for (int d = 0; d < \"+this.depth+\"; ++d) {\\n          int depthBegin = int(max(0.0, float(d - \"+e+\")));\\n          int depthEnd = int(min(float(\"+this.depth+\"),\\n              float(d + \"+e+\" + 1)));\\n\\n          const int MIN_DEPTH_BEGIN = 0;\\n          const int MAX_DEPTH_END = \"+this.depth+\";\\n\\n          float norm = 0.0;\\n          for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\\n            if (k < depthBegin){\\n              continue;\\n            }\\n            else if (k >= depthBegin && k < depthEnd) {\\n              norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\\n            }\\n            else {\\n              break;\\n            }\\n          }\\n\\n          norm = float(\"+r+\") * norm + float(\"+n+\");\\n\\n          for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\\n            if (k < depthBegin){\\n              continue;\\n            }\\n            else if (k >= depthBegin && k < depthEnd){\\n              float dyi = -2.0 * float(\"+r+\")\\n                * float(\"+o+\")\\n                * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)\\n                / norm;\\n              if (k == d) {\\n                dyi += pow(norm, -1.0 * \"+o+\");\\n              }\\n              if (k == coords[3]) {\\n                dyi *= getDy(b, r, c, d);\\n                result += dyi;\\n              }\\n            }\\n            else {\\n              break;\\n            }\\n          }\\n      }\\n      setOutput(result);\\n      }\\n    \"},Ds=function(t,e,n,r,o){this.variableNames=[\"x\"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;var a,i=e,s=t[3]-1;this.outputShape=t;var u=\"float(\"+n+\") + float(\"+r+\") * sum\";a=.5===o?\"inversesqrt(\"+u+\")\":1===o?\"1.0/(\"+u+\")\":\"exp(log(\"+u+\") * float(-\"+o+\"));\",this.userCode=\"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords.x;\\n        int r = coords.y;\\n        int c = coords.z;\\n        int d = coords.w;\\n\\n        bool hasNextCol = d < \"+this.outputShape[3]+\";\\n        bool hasNextRow = c < \"+this.outputShape[2]+\";\\n\\n        vec4 sum = vec4(0.);\\n        vec4 xFragAtOutputCoords = getX(b, r, c, d);\\n\\n        vec4 xAtOutputCoords = vec4(\\n          getChannel(xFragAtOutputCoords, vec2(c, d)),\\n          hasNextCol ?\\n            getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0,\\n          hasNextRow ?\\n            getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0,\\n          (hasNextRow && hasNextCol) ?\\n            getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0\\n        );\\n\\n        int firstChannel = d - \"+i+\";\\n        vec2 cache = vec2(0.);\\n        if(firstChannel >= 0){\\n          vec4 firstChannelFrag = getX(b, r, c, firstChannel);\\n          cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel));\\n            if(hasNextRow){\\n              cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel));\\n            }\\n        }\\n\\n        ivec2 depth = ivec2(d, d + 1);\\n        for (int j = - \"+i+\"; j <= \"+i+\"; j++) {\\n          ivec2 idx = depth + j;\\n          bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0));\\n          bvec2 belowUpperBound = lessThanEqual(idx, ivec2(\"+s+\"));\\n\\n          bool depthInRange = aboveLowerBound.x && belowUpperBound.x;\\n          bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y;\\n\\n          if(depthInRange || depthPlusOneInRange){\\n            vec4 z = vec4(0.);\\n            vec4 xFragAtCurrentDepth;\\n            z.xz = cache.xy;\\n            if(depthPlusOneInRange && hasNextCol){\\n              xFragAtCurrentDepth = idx.y != d ?\\n                getX(b, r, c, idx.y) : xFragAtOutputCoords;\\n              z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y));\\n              if(hasNextRow){\\n                z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y));\\n              }\\n            }\\n            cache.xy = z.yw;\\n            sum += z * z;\\n          }\\n        }\\n        vec4 result = xAtOutputCoords * \"+a+\";\\n        setOutput(result);\\n      }\\n    \"},Ns=function(t){this.variableNames=[\"dy\",\"maxPos\"],this.outputShape=t.inShape;var e=t.strideHeight,n=t.strideWidth,r=t.dilationHeight,o=t.effectiveFilterHeight,a=t.effectiveFilterWidth,i=o-1-t.padInfo.top,s=a-1-t.padInfo.left,u=o*a-1;this.userCode=\"\\n      const ivec2 pads = ivec2(\"+i+\", \"+s+\");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n\\n        ivec2 dyRCCorner = coords.yz - pads;\\n        int dyRCorner = dyRCCorner.x;\\n        int dyCCorner = dyRCCorner.y;\\n\\n        // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        for (int wR = 0; wR < \"+o+\";\\n          wR += \"+r+\") {\\n          float dyR = float(dyRCorner + wR) / \"+e+\".0;\\n\\n          if (dyR < 0.0 || dyR >= \"+t.outHeight+\".0 || fract(dyR) > 0.0) {\\n            continue;\\n          }\\n          int idyR = int(dyR);\\n\\n          for (int wC = 0; wC < \"+a+\"; wC++) {\\n            float dyC = float(dyCCorner + wC) / \"+n+\".0;\\n\\n            if (dyC < 0.0 || dyC >= \"+t.outWidth+\".0 ||\\n                fract(dyC) > 0.0) {\\n              continue;\\n            }\\n            int idyC = int(dyC);\\n\\n            float dyValue = getDy(b, idyR, idyC, d);\\n            int maxPosValue = \"+u+\" - int(getMaxPos(b, idyR, idyC, d));\\n\\n            // Get the current value, check it against the value from the\\n            // position matrix.\\n            int curPosValue = wR * \"+a+\" + wC;\\n            float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\\n\\n            dotProd += dyValue * mask;\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Fs=function(t){this.variableNames=[\"dy\",\"maxPos\"],this.outputShape=t.inShape;var e=t.strideDepth,n=t.strideHeight,r=t.strideWidth,o=t.dilationDepth,a=t.dilationHeight,i=t.dilationWidth,s=t.effectiveFilterDepth,u=t.effectiveFilterHeight,c=t.effectiveFilterWidth,l=s-1-t.padInfo.front,h=u-1-t.padInfo.top,f=c-1-t.padInfo.left,d=s*u*c-1;this.userCode=\"\\n      const ivec3 pads = ivec3(\"+l+\", \"+h+\", \"+f+\");\\n\\n      void main() {\\n        ivec5 coords = getOutputCoords();\\n        int batch = coords.x;\\n        int ch = coords.u;\\n\\n        ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\\n        int dyDCorner = dyCorner.x;\\n        int dyRCorner = dyCorner.y;\\n        int dyCCorner = dyCorner.z;\\n\\n        // Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get\\n        // dx(xD, xR, xC, ch).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n\\n        for (int wD = 0; wD < \"+s+\";\\n           wD += \"+o+\") {\\n          float dyD = float(dyDCorner + wD) / \"+e+\".0;\\n\\n          if (dyD < 0.0 || dyD >= \"+t.outDepth+\".0 || fract(dyD) > 0.0) {\\n            continue;\\n          }\\n          int idyD = int(dyD);\\n\\n          for (int wR = 0; wR < \"+u+\";\\n              wR += \"+a+\") {\\n            float dyR = float(dyRCorner + wR) / \"+n+\".0;\\n\\n            if (dyR < 0.0 || dyR >= \"+t.outHeight+\".0 ||\\n                fract(dyR) > 0.0) {\\n              continue;\\n            }\\n            int idyR = int(dyR);\\n\\n            for (int wC = 0; wC < \"+c+\";\\n                wC += \"+i+\") {\\n              float dyC = float(dyCCorner + wC) / \"+r+\".0;\\n\\n              if (dyC < 0.0 || dyC >= \"+t.outWidth+\".0 ||\\n                  fract(dyC) > 0.0) {\\n                continue;\\n              }\\n              int idyC = int(dyC);\\n\\n              float dyValue = getDy(batch, idyD, idyR, idyC, ch);\\n              int maxPosValue = \"+d+\" -\\n                  int(getMaxPos(batch, idyD, idyR, idyC, ch));\\n\\n              // Get the current value, check it against the value from the\\n              // position matrix.\\n              int curPosValue =\\n                  wD * \"+u+\" * \"+c+\" +\\n                  wR * \"+c+\" + wC;\\n              float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\\n\\n              dotProd += dyValue * mask;\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},_s=function(t,e,n,r,o,a,i){void 0===n&&(n=!1),void 0===r&&(r=!1),void 0===o&&(o=!1),void 0===a&&(a=null),void 0===i&&(i=!1),this.variableNames=[\"matrixA\",\"matrixB\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;var s=n?t[1]:t[2],u=Math.ceil(s/2),c=n?\"i * 2, rc.y\":\"rc.y, i * 2\",l=r?\"rc.z, i * 2\":\"i * 2, rc.z\",h=n?[\"a.xxyy\",\"a.zzww\"]:[\"a.xxzz\",\"a.yyww\"],f=r?[\"b.xzxz\",\"b.ywyw\"]:[\"b.xyxy\",\"b.zwzw\"],d=\"\",p=\"\";a&&(d=i?\"vec4 activation(vec4 a) {\\n          vec4 b = getPreluActivationWeightsAtOutCoords();\\n          \"+a+\"\\n        }\":\"vec4 activation(vec4 x) {\\n          \"+a+\"\\n        }\",p=\"result = activation(result);\");var v=o?\"result += getBiasAtOutCoords();\":\"\";o&&this.variableNames.push(\"bias\"),i&&this.variableNames.push(\"preluActivationWeights\"),this.userCode=\"\\n      \"+d+\"\\n\\n      const float sharedDimension = \"+u+\".0;\\n\\n      vec4 dot2x2ARowBCol(ivec3 rc) {\\n        vec4 result = vec4(0);\\n        for (int i = 0; i < \"+u+\"; i++) {\\n          vec4 a = getMatrixA(rc.x, \"+c+\");\\n          vec4 b = getMatrixB(rc.x, \"+l+\");\\n\\n          // These swizzled products need to be separately added.\\n          // See: https://github.com/tensorflow/tfjs/issues/1735\\n          result += (\"+h[0]+\" * \"+f[0]+\");\\n          result += (\"+h[1]+\" * \"+f[1]+\");\\n        }\\n        return result;\\n      }\\n\\n      void main() {\\n        ivec3 rc = getOutputCoords();\\n        vec4 result = dot2x2ARowBCol(rc);\\n\\n        \"+v+\"\\n\\n        \"+p+\"\\n\\n        setOutput(result);\\n      }\\n    \"},Os=function(){function t(t,e,n){this.variableNames=[\"probs\"],this.outputShape=[t,n],this.userCode=\"\\n      uniform float seed;\\n\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int batch = coords[0];\\n\\n        float r = random(seed);\\n        float cdf = 0.0;\\n\\n        for (int i = 0; i < \"+(e-1)+\"; i++) {\\n          cdf += getProbs(batch, i);\\n\\n          if (r < cdf) {\\n            setOutput(float(i));\\n            return;\\n          }\\n        }\\n\\n        // If no other event happened, last event happened.\\n        setOutput(float(\"+(e-1)+\"));\\n      }\\n    \"}return t.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,r){null==e.seedLoc&&(e.seedLoc=n.getUniformLocation(r,\"seed\")),n.gl.uniform1f(e.seedLoc,t)}},t}(),Ms=function(t,e,n,r){this.variableNames=[\"indices\"],this.outputShape=[t,e],this.userCode=\"\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int index = round(getIndices(coords.x));\\n        setOutput(mix(float(\"+r+\"), float(\"+n+\"),\\n                      float(index == coords.y)));\\n      }\\n    \"},Bs=function(t){this.variableNames=[\"A\"],this.packedInputs=!1,this.packedOutput=!0,this.outputShape=t;var e=t.length;if(0===e)this.userCode=\"\\n        void main() {\\n          setOutput(vec4(getA(), 0., 0., 0.));\\n        }\\n      \";else{var n=Xa(\"rc\",e),r=ui(e),o=function(t,e,n){if(1===t)return\"rc > \"+e[0];for(var r=\"\",o=t-2;o<t;o++)r+=n[o]+\" >= \"+e[o],o<t-1&&(r+=\"||\");return r}(e,t,n),a=function(t,e,n,r){if(1===t)return\"\";var o=r.slice(-2);return\"\\n    int r = \"+o[0]+\";\\n    int c = \"+o[1]+\";\\n    int rp1 = r + 1;\\n    int cp1 = c + 1;\\n\\n    bool cEdge = cp1 >= \"+e+\";\\n    bool rEdge = rp1 >= \"+n+\";\\n  \"}(e,t[t.length-1],t[t.length-2],n),i=function(t,e){var n=t.length,r=function(t,e){for(var n=[],r=0;r<=1;r++)for(var o=0;o<=1;o++){for(var a=(0===r?\"r\":\"rp1\")+\", \"+(0===o?\"c\":\"cp1\"),i=2;i<t;i++)a=e[e.length-1-i]+\",\"+a;n.push(a)}return n}(n,e);return 1===n?\"getA(rc),\\n            rc + 1 >= \"+t[0]+\" ? 0. : getA(rc + 1),\\n            0, 0\":\"getA(\"+r[0]+\"),\\n          cEdge ? 0. : getA(\"+r[1]+\"),\\n          rEdge ? 0. : getA(\"+r[2]+\"),\\n          rEdge || cEdge ? 0. : getA(\"+r[3]+\")\"}(t,n);this.userCode=\"\\n        void main() {\\n          \"+r+\" rc = getOutputCoords();\\n\\n          if(\"+o+\") {\\n            setOutput(vec4(0));\\n          } else {\\n            \"+a+\"\\n\\n            setOutput(vec4(\"+i+\"));\\n          }\\n        }\\n      \"}};var Ps=function(t,e,n){this.variableNames=[\"x\"],this.outputShape=e.map((function(e,n){return e[0]+t[n]+e[1]}));var r=t.length,o=ui(r),a=e.map((function(t){return t[0]})).join(\",\"),i=e.map((function(e,n){return e[0]+t[n]})).join(\",\"),s=[\"coords[0]\",\"coords[1]\",\"coords[2]\",\"coords[3]\"].slice(0,r);this.userCode=1!==r?\"\\n      \"+o+\" start = \"+o+\"(\"+a+\");\\n      \"+o+\" end = \"+o+\"(\"+i+\");\\n\\n      void main() {\\n        \"+o+\" outC = getOutputCoords();\\n        if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {\\n          setOutput(float(\"+n+\"));\\n        } else {\\n          \"+o+\" coords = outC - start;\\n          setOutput(getX(\"+s+\"));\\n        }\\n      }\\n    \":\"\\n        int start = \"+a+\";\\n        int end = \"+i+\";\\n\\n        void main() {\\n          int outC = getOutputCoords();\\n          if (outC < start || outC >= end) {\\n            setOutput(float(\"+n+\"));\\n          } else {\\n            setOutput(getX(outC - start));\\n          }\\n        }\\n      \"},Ls=function(t,e,n){this.variableNames=[\"x\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e.map((function(e,n){return e[0]+t[n]+e[1]}));for(var r=t.length,o=ui(r),a=e.map((function(t){return t[0]})).join(\",\"),i=e.map((function(e,n){return e[0]+t[n]})).join(\",\"),s=Xa(\"rc\",r),u=Xa(\"source\",r),c=s[r-1]+\" < \"+this.outputShape[r-1],l=1===r?\"source\":\"vec2(\"+u.slice(-2).join()+\")\",h=[o+\" rc = outputLoc;\",s[r-1]+\" += 1;\\n       if(\"+c+\") {\\n      \",1===r?\"\":\"}\\n       rc = outputLoc;\\n       \"+s[r-2]+\" += 1;\\n       if(\"+s[r-2]+\" < \"+this.outputShape[r-2]+\") {\",1===r?\"\":\"  \"+s[r-1]+\" += 1;\\n         if(\"+c+\") {\"],f=1===r?\"rc < start || rc >= end\":\"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))\",d=\"\",p=0,v=1===r?2:4;p<v;p++)d+=\"\\n        \"+h[p]+\"\\n        if (\"+f+\") {\\n          result[\"+p+\"] = float(\"+n+\");\\n        } else {\\n          \"+o+\" source = rc - start;\\n          result[\"+p+\"] = getChannel(getX(\"+u.join()+\"), \"+l+\");\\n        }\\n      \";d+=1===r?\"} \":\"}}\",this.userCode=\"\\n      const \"+o+\" start = \"+o+\"(\"+a+\");\\n      const \"+o+\" end = \"+o+\"(\"+i+\");\\n\\n      void main() {\\n        \"+o+\" outputLoc = getOutputCoords();\\n        vec4 result = vec4(0.);\\n        \"+d+\"\\n        setOutput(result);\\n      }\\n    \"},Ws=function(t,e,n,r,o){if(void 0===r&&(r=!1),void 0===o&&(o=!1),this.variableNames=[\"x\"],\"avg\"===e&&n)throw new Error(\"Cannot compute positions for average pool.\");var a=t.filterWidth,i=t.strideHeight,s=t.strideWidth,u=t.dilationHeight,c=t.dilationWidth,l=t.effectiveFilterHeight,h=t.effectiveFilterWidth,f=t.padInfo.top,d=t.padInfo.left;this.outputShape=t.outShape;var p=\"avg\"===e,v=\"((batch  * \"+t.inHeight+\" + xR) * \"+t.inWidth+\" + xC) * \"+t.inChannels+\" + d\",g=\"(xR * \"+t.inWidth+\" + xC) * \"+t.inChannels+\" + d\",m=\"0.0\";if(p||(m=\"-1.0 / 1e-20\"),n)this.userCode=\"\\n        const ivec2 strides = ivec2(\"+i+\", \"+s+\");\\n        const ivec2 pads = ivec2(\"+f+\", \"+d+\");\\n\\n        void main() {\\n          ivec4 coords = getOutputCoords();\\n          int batch = coords[0];\\n          int d = coords[3];\\n\\n          ivec2 xRCCorner = coords.yz * strides - pads;\\n          int xRCorner = xRCCorner.x;\\n          int xCCorner = xRCCorner.y;\\n\\n          // max/min x(?, ?, d) to get y(yR, yC, d).\\n          // ? = to be determined\\n          float minMaxValue = 0.0;\\n          float minMaxValueFound = 0.0;\\n          int minMaxPosition = 0;\\n          float avgValue = 0.0;\\n\\n          for (int wR = 0; wR < \"+l+\";\\n              wR += \"+u+\") {\\n            int xR = xRCorner + wR;\\n\\n            if (xR < 0 || xR >= \"+t.inHeight+\") {\\n              continue;\\n            }\\n\\n            for (int wC = 0; wC < \"+h+\";\\n                wC += \"+c+\") {\\n              int xC = xCCorner + wC;\\n\\n              if (xC < 0 || xC >= \"+t.inWidth+\") {\\n                continue;\\n              }\\n\\n              float value = getX(batch, xR, xC, d);\\n\\n              // If a min / max value has already been found, use it. If not,\\n              // use the current value.\\n              float currMinMaxValue = mix(\\n                  value, minMaxValue, minMaxValueFound);\\n              if (value >= currMinMaxValue) {\\n                minMaxValue = value;\\n                minMaxValueFound = 1.0;\\n                minMaxPosition = \"+(r?o?v:g:\"wR * \"+h+\" + wC\")+\";\\n              }\\n            }\\n          }\\n          setOutput(float(minMaxPosition));\\n        }\\n      \";else{var y=e+\"(\"+e+\"(\"+e+\"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])\";\"avg\"===e&&(y=\"avgValue / count\");var x=4*Math.floor(a/4),b=a%4,w=\"\\n      if (\"+p+\") {\\n        avgValue += dot(values, ones);\\n      } else {\\n        minMaxValue = max(values, minMaxValue);\\n      }\\n    \";this.userCode=\"\\n      const ivec2 strides = ivec2(\"+i+\", \"+s+\");\\n      const ivec2 pads = ivec2(\"+f+\", \"+d+\");\\n      const float initializationValue = \"+m+\";\\n      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\\n\\n      float count = 0.0;\\n\\n      float getValue(int batch, int xR, int xC, int d) {\\n        if (xC < 0 || xC >= \"+t.inWidth+\") {\\n          return initializationValue;\\n        }\\n        count += 1.0;\\n        return getX(batch, xR, xC, d);\\n      }\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int d = coords[3];\\n\\n        ivec2 xRCCorner = coords.yz * strides - pads;\\n        int xRCorner = xRCCorner.x;\\n        int xCCorner = xRCCorner.y;\\n\\n        // max/min x(?, ?, d) to get y(yR, yC, d).\\n        // ? = to be determined\\n        vec4 minMaxValue = vec4(\"+m+\");\\n        float avgValue = 0.0;\\n        count = 0.0;\\n\\n        for (int wR = 0; wR < \"+l+\";\\n            wR += \"+u+\") {\\n          int xR = xRCorner + wR;\\n\\n          if (xR < 0 || xR >= \"+t.inHeight+\") {\\n            continue;\\n          }\\n\\n          for (int wC = 0; wC < \"+x+\"; wC += 4) {\\n            int xC = xCCorner + wC * \"+c+\";\\n\\n            vec4 values = vec4(\\n              getValue(batch, xR, xC, d),\\n              getValue(batch, xR, xC + \"+c+\", d),\\n              getValue(batch, xR, xC + 2 * \"+c+\", d),\\n              getValue(batch, xR, xC + 3 * \"+c+\", d)\\n            );\\n\\n            \"+w+\"\\n          }\\n\\n          int xC = xCCorner + \"+x+\";\\n          if (\"+(1===b)+\") {\\n            vec4 values = vec4(\\n              getValue(batch, xR, xC, d),\\n              initializationValue,\\n              initializationValue,\\n              initializationValue\\n            );\\n\\n            \"+w+\"\\n          } else if (\"+(2===b)+\") {\\n            vec4 values = vec4(\\n              getValue(batch, xR, xC, d),\\n              getValue(batch, xR, xC + \"+c+\", d),\\n              initializationValue,\\n              initializationValue\\n            );\\n\\n            \"+w+\"\\n          } else if (\"+(3===b)+\") {\\n            vec4 values = vec4(\\n              getValue(batch, xR, xC, d),\\n              getValue(batch, xR, xC + \"+c+\", d),\\n              getValue(batch, xR, xC + 2 * \"+c+\", d),\\n              initializationValue\\n            );\\n\\n            \"+w+\"\\n          }\\n        }\\n        setOutput(\"+y+\");\\n      }\\n    \"}},Us=function(t,e,n,r,o){if(void 0===r&&(r=!1),void 0===o&&(o=!1),this.variableNames=[\"x\"],\"avg\"===e&&n)throw new Error(\"Cannot compute positions for average pool.\");var a=t.filterWidth,i=t.strideDepth,s=t.strideHeight,u=t.strideWidth,c=t.dilationDepth,l=t.dilationHeight,h=t.dilationWidth,f=t.effectiveFilterDepth,d=t.effectiveFilterHeight,p=t.effectiveFilterWidth,v=t.padInfo.front,g=t.padInfo.top,m=t.padInfo.left;this.outputShape=t.outShape;var y=\"avg\"===e,x=\"0.0\";if(y||(x=\"-1.0 / 1e-20\"),n)this.userCode=\"\\n        const ivec3 strides =\\n            ivec3(\"+i+\", \"+s+\", \"+u+\");\\n        const ivec3 pads = ivec3(\"+v+\", \"+g+\", \"+m+\");\\n\\n        void main() {\\n          ivec5 coords = getOutputCoords();\\n          int batch = coords.x;\\n          int ch = coords.u;\\n\\n          ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\\n          int xDCorner = xCorner.x;\\n          int xRCorner = xCorner.y;\\n          int xCCorner = xCorner.z;\\n\\n          // max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch).\\n          // ? = to be determined\\n          float minMaxValue = 0.0;\\n          float minMaxValueFound = 0.0;\\n          int minMaxPosition = 0;\\n\\n          for (int wD = 0; wD < \"+f+\";\\n              wD += \"+c+\") {\\n            int xD = xDCorner + wD;\\n\\n            if (xD < 0 || xD >= \"+t.inDepth+\") {\\n              continue;\\n            }\\n\\n            for (int wR = 0; wR < \"+d+\";\\n                wR += \"+l+\") {\\n              int xR = xRCorner + wR;\\n\\n              if (xR < 0 || xR >= \"+t.inHeight+\") {\\n                continue;\\n              }\\n\\n              for (int wC = 0; wC < \"+p+\";\\n                  wC += \"+h+\") {\\n                int xC = xCCorner + wC;\\n\\n                if (xC < 0 || xC >= \"+t.inWidth+\") {\\n                  continue;\\n                }\\n\\n                float value = getX(batch, xD, xR, xC, ch);\\n\\n                // If a min / max value has already been found, use it. If not,\\n                // use the current value.\\n                float currMinMaxValue = mix(\\n                    value, minMaxValue, minMaxValueFound);\\n                if (value >= currMinMaxValue) {\\n                  minMaxValue = value;\\n                  minMaxValueFound = 1.0;\\n                  minMaxPosition = \"+(r?o?\"(((batch * \"+t.inDepth+\" + xD) * \"+t.inHeight+\" + xR) * \"+t.inWidth+\" + xC) * \"+t.inChannels+\" + ch\":\"((xD * \"+t.inHeight+\" + xR) * \"+t.inWidth+\" + xC) * \"+t.inChannels+\" + ch\":\"wD * \"+d+\" * \"+p+\" +\\n                      wR * \"+p+\" + wC\")+\";\\n                }\\n              }\\n            }\\n          }\\n          setOutput(float(minMaxPosition));\\n        }\\n      \";else{var b=e+\"(\"+e+\"(\"+e+\"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])\";\"avg\"===e&&(b=\"avgValue / count\");var w=4*Math.floor(a/4),C=a%4,E=\"\\n      if (\"+y+\") {\\n        avgValue += dot(values, ones);\\n      } else {\\n        minMaxValue = max(values, minMaxValue);\\n      }\\n    \";this.userCode=\"\\n      const ivec3 strides =\\n        ivec3(\"+i+\", \"+s+\", \"+u+\");\\n      const ivec3 pads = ivec3(\"+v+\", \"+g+\", \"+m+\");\\n      const float initializationValue = \"+x+\";\\n      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\\n\\n      float count = 0.0;\\n\\n      float getValue(int batch, int xD, int xR, int xC, int ch) {\\n        if (xC < 0 || xC >= \"+t.inWidth+\") {\\n          return initializationValue;\\n        }\\n        count += 1.0;\\n        return getX(batch, xD, xR, xC, ch);\\n      }\\n\\n      void main() {\\n        ivec5 coords = getOutputCoords();\\n        int batch = coords.x;\\n        int ch = coords.u;\\n\\n        ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\\n        int xDCorner = xCorner.x;\\n        int xRCorner = xCorner.y;\\n        int xCCorner = xCorner.z;\\n\\n        // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch).\\n        // ? = to be determined\\n        vec4 minMaxValue = vec4(\"+x+\");\\n        float avgValue = 0.0;\\n        count = 0.0;\\n\\n        for (int wD = 0; wD < \"+f+\";\\n            wD += \"+c+\") {\\n          int xD = xDCorner + wD;\\n\\n          if (xD < 0 || xD >= \"+t.inDepth+\") {\\n            continue;\\n          }\\n\\n          for (int wR = 0; wR < \"+d+\";\\n            wR += \"+l+\") {\\n            int xR = xRCorner + wR;\\n\\n            if (xR < 0 || xR >= \"+t.inHeight+\") {\\n              continue;\\n            }\\n\\n            for (int wC = 0; wC < \"+w+\"; wC += 4) {\\n              int xC = xCCorner + wC * \"+h+\";\\n\\n              vec4 values = vec4(\\n                getValue(batch, xD, xR, xC, ch),\\n                getValue(batch, xD, xR, xC + \"+h+\", ch),\\n                getValue(batch, xD, xR, xC + 2 * \"+h+\", ch),\\n                getValue(batch, xD, xR, xC + 3 * \"+h+\", ch)\\n              );\\n\\n              \"+E+\"\\n            }\\n\\n            int xC = xCCorner + \"+w+\";\\n            if (\"+(1===C)+\") {\\n              vec4 values = vec4(\\n                getValue(batch, xD, xR, xC, ch),\\n                initializationValue,\\n                initializationValue,\\n                initializationValue\\n              );\\n\\n              \"+E+\"\\n            } else if (\"+(2===C)+\") {\\n              vec4 values = vec4(\\n                getValue(batch, xD, xR, xC, ch),\\n                getValue(batch, xD, xR, xC + \"+h+\", ch),\\n                initializationValue,\\n                initializationValue\\n              );\\n\\n              \"+E+\"\\n            } else if (\"+(3===C)+\") {\\n              vec4 values = vec4(\\n                getValue(batch, xD, xR, xC, ch),\\n                getValue(batch, xD, xR, xC + \"+h+\", ch),\\n                getValue(batch, xD, xR, xC + 2 * \"+h+\", ch),\\n                initializationValue\\n              );\\n\\n              \"+E+\"\\n            }\\n          }\\n          setOutput(\"+b+\");\\n        }\\n      }\\n    \"}},Vs=function(t,e){this.variableNames=[\"x\"];var n=t.windowSize,r=t.batchSize,o=t.inSize,a=Math.ceil(o/n);this.outputShape=[r,a];var i=\"0.0\",s=\"\";\"prod\"===e?i=\"1.0\":\"min\"===e?(i=\"1.0 / 1e-20\",s=\"min\"):\"max\"===e&&(i=\"-1.0 / 1e-20\",s=\"max\");var u=e+\"(\"+e+\"(\"+e+\"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])\";\"sum\"===e?u=\"sumValue\":\"prod\"===e?u=\"prodValue\":\"all\"===e?u=\"allValue\":\"any\"===e&&(u=\"anyValue\");var c=4*Math.floor(n/4),l=n%4,h=\"\\n      if (\"+(\"sum\"===e)+\") {\\n        sumValue += dot(values, ones);\\n      } else if (\"+(\"prod\"===e)+\") {\\n        vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);\\n        prodValue *= tmp[0] * tmp[1];\\n      } else {\\n        minMaxValue = \"+s+\"(values, minMaxValue);\\n      }\\n    \",f=\"vec4\";\"all\"===e?(i=\"1.0\",h=\"\\n        bool reducedAllValue = all(values);\\n        float floatedReducedAllValue = float(reducedAllValue);\\n        allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);\\n      \",f=\"bvec4\"):\"any\"===e&&(i=\"0.0\",h=\"\\n        bool reducedAnyValue = any(values);\\n        float floatedReducedAnyValue = float(reducedAnyValue);\\n        anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\\n      \",f=\"bvec4\");var d=\"\";o%n>0&&(d=\"\\n        if (inIdx < 0 || inIdx >= \"+o+\") {\\n          return initializationValue;\\n        }\\n      \"),this.userCode=\"\\n      const float initializationValue = \"+i+\";\\n      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\\n\\n      float getValue(int batch, int inIdx) {\\n        \"+d+\"\\n        return getX(batch, inIdx);\\n      }\\n\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int outIdx = coords[1];\\n        int inOffset = outIdx * \"+n+\";\\n\\n        vec4 minMaxValue = vec4(\"+i+\");\\n        float prodValue = 1.0;\\n        float sumValue = 0.0;\\n        float allValue = 1.0;\\n        float anyValue = 0.0;\\n\\n        for (int i = 0; i < \"+c+\"; i += 4) {\\n          int inIdx = inOffset + i;\\n          \"+f+\" values = \"+f+\"(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            getValue(batch, inIdx + 2),\\n            getValue(batch, inIdx + 3)\\n          );\\n\\n          \"+h+\"\\n        }\\n\\n        int inIdx = inOffset + \"+c+\";\\n        if (\"+(1===l)+\") {\\n          \"+f+\" values = \"+f+\"(\\n            getValue(batch, inIdx),\\n            initializationValue,\\n            initializationValue,\\n            initializationValue\\n          );\\n\\n          \"+h+\"\\n        } else if (\"+(2===l)+\") {\\n          \"+f+\" values = \"+f+\"(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            initializationValue,\\n            initializationValue\\n          );\\n\\n          \"+h+\"\\n        } else if (\"+(3===l)+\") {\\n          \"+f+\" values = \"+f+\"(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            getValue(batch, inIdx + 2),\\n            initializationValue\\n          );\\n\\n          \"+h+\"\\n        }\\n        setOutput(\"+u+\");\\n      }\\n    \"},zs=function(t,e){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;for(var n=\"\",r=0;r<4;r++){var o=\"thisRC = rc;\";r%2==1&&(o+=\"thisRC.z += 1;\"),r>1&&(o+=\"thisRC.y += 1;\"),n+=\"\\n        \"+o+\"\\n        \"+(r>0?\"if(thisRC.y < rows && thisRC.z < cols){\":\"\")+\"\\n          int flatIndex = getFlatIndex(thisRC);\\n\\n          ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);\\n          vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));\\n\\n          result[\"+r+\"] =\\n            getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\\n        \"+(r>0?\"}\":\"\")+\"\\n      \"}this.userCode=\"\\n      \\n    ivec3 inputCoordsFromReshapedOutCoords(int index) {\\n      \"+$a([\"r\",\"c\",\"d\"],e)+\"\\n      return ivec3(r, c, d);\\n    }\\n  \\n      \"+Qa(t)+\"\\n\\n      void main() {\\n        ivec3 rc = getOutputCoords();\\n\\n        vec4 result = vec4(0.);\\n\\n        ivec3 thisRC;\\n        int rows = \"+t[1]+\";\\n        int cols = \"+t[2]+\";\\n\\n        \"+n+\"\\n\\n        setOutput(result);\\n      }\\n    \"};var Gs=function(t,e,n){this.variableNames=[\"dy\"],this.outputShape=[],this.outputShape=e.shape;var r=e.shape,o=r[1],a=r[2],i=t.shape,s=i[1],u=i[2],c=[n&&s>1?o-1:o,n&&u>1?a-1:a],l=[n&&s>1?s-1:s,n&&u>1?u-1:u],h=c[0]/l[0],f=c[1]/l[1],d=1/h,p=1/f,v=2*Math.ceil(d)+2,g=2*Math.ceil(p)+2;this.userCode=\"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n        int r = coords[1];\\n        int c = coords[2];\\n\\n        float accumulator = 0.0;\\n\\n        const float heightScale = float(\"+h+\");\\n        const float widthScale = float(\"+f+\");\\n\\n        const float invHeightScale = float(\"+d+\");\\n        const float invWidthScale = float(\"+p+\");\\n\\n        const int winHeight = int(\"+v+\");\\n        const int winWidth = int(\"+g+\");\\n\\n        // Compute bounds for where in dy we will look\\n        float startRLerp = floor(float(r) * invHeightScale);\\n        int startDyR = int(startRLerp - float(winHeight / 2));\\n\\n        float startCLerp = floor(float(c) * invWidthScale);\\n        int startDyC = int(startCLerp - float(winWidth / 2));\\n\\n        // Loop over dy\\n        for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\\n          int dyR = dyROffset + startDyR;\\n\\n          // Guard against the window exceeding the bounds of dy\\n          if (dyR < 0 || dyR >= \"+s+\") {\\n            continue;\\n          }\\n\\n          for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\\n            int dyC = dyCOffset + startDyC;\\n\\n            // Guard against the window exceeding the bounds of dy\\n            if (dyC < 0 || dyC >= \"+u+\") {\\n              continue;\\n            }\\n\\n            float dxR = float(dyR) * heightScale;\\n            int topDxRIndex = int(floor(dxR));\\n            int bottomDxRIndex = int(min(ceil(dxR), \"+(o-1)+\".0));\\n            float dxRLerp = dxR - float(topDxRIndex);\\n            float inverseDxRLerp = 1.0 - dxRLerp;\\n\\n            float dxC = float(dyC) * widthScale;\\n            int leftDxCIndex = int(floor(dxC));\\n            int rightDxCIndex = int(min(ceil(dxC), \"+(a-1)+\".0));\\n            float dxCLerp = dxC - float(leftDxCIndex);\\n            float inverseDxCLerp = 1.0 - dxCLerp;\\n\\n            if (r == topDxRIndex && c == leftDxCIndex) {\\n              // topLeft\\n              accumulator +=\\n                getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\\n            }\\n\\n            if (r == topDxRIndex && c == rightDxCIndex) {\\n              // topRight\\n              accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\\n            }\\n\\n            if (r == bottomDxRIndex && c == leftDxCIndex) {\\n              // bottomLeft\\n              accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\\n            }\\n\\n            if (r == bottomDxRIndex && c == rightDxCIndex) {\\n              // bottomRight\\n              accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\\n            }\\n          }\\n        }\\n        // End loop over dy\\n\\n        setOutput(accumulator);\\n      }\\n    \"},Hs=function(t,e,n,r){this.variableNames=[\"A\"],this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],c=[r&&e>1?e-1:e,r&&n>1?n-1:n];this.userCode=\"\\n      const vec2 effectiveInputOverOutputRatioRC = vec2(\\n          \"+u[0]/c[0]+\",\\n          \"+u[1]/c[1]+\");\\n      const vec2 inputShapeRC = vec2(\"+a+\".0, \"+i+\".0);\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n        ivec2 yRC = coords.yz;\\n\\n        // Fractional source index.\\n        vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\\n\\n        // Compute the four integer indices.\\n        ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\\n        ivec2 sourceCeilRC = ivec2(\\n          min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\\n\\n        float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\\n        float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\\n        float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\\n        float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\\n\\n        vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\\n\\n        float top = topLeft + (topRight - topLeft) * fracRC.y;\\n        float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\\n        float newValue = top + (bottom - top) * fracRC.x;\\n\\n        setOutput(newValue);\\n      }\\n    \"},qs=function(t,e,n,r){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],c=[r&&e>1?e-1:e,r&&n>1?n-1:n];this.userCode=\"\\n      const vec3 effectiveInputOverOutputRatioRC = vec3(\\n          \"+u[0]/c[0]+\",\\n          \"+u[1]/c[1]+\",\\n          \"+u[1]/c[1]+\");\\n      const vec3 inputShapeRC = vec3(\"+a+\".0, \"+i+\".0,\\n                                     \"+i+\".0);\\n\\n      float getAValue(int b, int r, int c, int d) {\\n        return getChannel(getA(b, r, c, d), vec2(c, d));\\n      }\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n        // Calculate values for next column in yRC.z.\\n        ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\\n\\n        // Fractional source index.\\n        vec3 sourceFracIndexRC = vec3(yRC) * effectiveInputOverOutputRatioRC;\\n\\n        // Compute the four integer indices.\\n        ivec3 sourceFloorRC = ivec3(sourceFracIndexRC);\\n        ivec3 sourceCeilRC = ivec3(\\n          min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\\n\\n        // Should we calculate next column and row elements in 2x2 packed cell.\\n        bool hasNextCol = d < \"+(s-1)+\";\\n        bool hasNextRow = coords.z < \"+(n-1)+\";\\n\\n        // In parallel, construct four corners for all four components in\\n        // packed 2x2 cell.\\n        vec4 topLeft = vec4(\\n          getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d),\\n          hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1)\\n                     : 0.0,\\n          hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d)\\n                     : 0.0,\\n          (hasNextRow && hasNextCol) ?\\n            getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0);\\n\\n        vec4 bottomLeft = vec4(\\n          getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d),\\n          hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1)\\n                     : 0.0,\\n          hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d)\\n                     : 0.0,\\n          (hasNextRow && hasNextCol) ?\\n            getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0);\\n\\n        vec4 topRight = vec4(\\n          getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d),\\n          hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1)\\n                     : 0.0,\\n          hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d)\\n                     : 0.0,\\n          (hasNextRow && hasNextCol) ?\\n            getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0);\\n\\n        vec4 bottomRight = vec4(\\n          getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d),\\n          hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1)\\n                     : 0.0,\\n          hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d)\\n                     : 0.0,\\n          (hasNextRow && hasNextCol) ?\\n            getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0);\\n\\n        vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC);\\n\\n        vec4 top = mix(topLeft, topRight, fracRC.yyzz);\\n        vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz);\\n        vec4 newValue = mix(top, bottom, fracRC.x);\\n\\n        setOutput(newValue);\\n      }\\n    \"},Ks=function(t,e,n){this.variableNames=[\"dy\"],this.outputShape=[],this.outputShape=e.shape;var r=e.shape,o=r[1],a=r[2],i=t.shape,s=i[1],u=i[2],c=[n&&s>1?o-1:o,n&&u>1?a-1:a],l=[n&&s>1?s-1:s,n&&u>1?u-1:u],h=c[0]/l[0],f=c[1]/l[1],d=1/h,p=1/f,v=2*Math.ceil(d)+2,g=2*Math.ceil(p)+2;this.userCode=\"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n        int r = coords[1];\\n        int c = coords[2];\\n\\n        float accumulator = 0.0;\\n\\n        const float heightScale = float(\"+h+\");\\n        const float widthScale = float(\"+f+\");\\n\\n        const float invHeightScale = float(\"+d+\");\\n        const float invWidthScale = float(\"+p+\");\\n\\n        const int winHeight = int(\"+v+\");\\n        const int winWidth = int(\"+g+\");\\n\\n        // Compute bounds for where in dy we will look\\n        float startRLerp = floor(float(r) * invHeightScale);\\n        int startDyR = int(floor(startRLerp - float(winHeight / 2)));\\n\\n        float startCLerp = floor(float(c) * invWidthScale);\\n        int startDyC = int(floor(startCLerp - float(winWidth / 2)));\\n\\n        // Loop over dy\\n        for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\\n          int dyR = dyROffset + startDyR;\\n\\n          // Guard against the window exceeding the bounds of dy\\n          if (dyR < 0 || dyR >= \"+s+\") {\\n            continue;\\n          }\\n\\n          for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\\n            int dyC = dyCOffset + startDyC;\\n\\n            // Guard against the window exceeding the bounds of dy\\n            if (dyC < 0 || dyC >= \"+u+\") {\\n              continue;\\n            }\\n\\n            float sourceFracRow =\\n              float(\"+c[0]+\") *\\n                (float(dyR) / float(\"+l[0]+\"));\\n\\n            float sourceFracCol =\\n                float(\"+c[1]+\") *\\n                  (float(dyC) / float(\"+l[1]+\"));\\n\\n            int sourceNearestRow = int(min(\\n                float(int(\"+o+\") - 1),\\n                \"+n+\" ? float(round(sourceFracRow)) :\\n                                  float(floor(sourceFracRow))));\\n\\n            int sourceNearestCol = int(min(\\n                float(int(\"+a+\") - 1),\\n                \"+n+\" ? float(round(sourceFracCol)) :\\n                                  float(floor(sourceFracCol))));\\n\\n            if (r == sourceNearestRow && c == sourceNearestCol) {\\n              accumulator += getDy(b, dyR, dyC, d);\\n            }\\n          }\\n        }\\n        // End loop over dy\\n\\n        setOutput(accumulator);\\n      }\\n    \"},js=function(t,e,n,r){this.variableNames=[\"A\"],this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],c=[r&&e>1?e-1:e,r&&n>1?n-1:n],l=r?\"0.5\":\"0.0\";this.userCode=\"\\n      const vec2 effectiveInputOverOutputRatioRC = vec2(\\n          \"+u[0]/c[0]+\",\\n          \"+u[1]/c[1]+\");\\n      const vec2 inputShapeRC = vec2(\"+a+\".0, \"+i+\".0);\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n        ivec2 yRC = coords.yz;\\n\\n        // Fractional source index.\\n        vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\\n\\n        // Compute the coordinators of nearest neighbor point.\\n        ivec2 sourceNearestRC = ivec2(\\n          min(inputShapeRC - 1.0, floor(sourceFracIndexRC + \"+l+\")));\\n\\n        float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\\n\\n        setOutput(newValue);\\n      }\\n    \"},Xs=function(t,e){this.variableNames=[\"x\"];var n=t.length;if(n>4)throw new Error(\"WebGL backend: Reverse of rank-\"+n+\" tensor is not yet supported\");if(this.outputShape=t,1!==n){var r=t.map((function(n,r){return function(n){return-1!==e.indexOf(n)&&1!==t[n]?t[n]+\" - coords[\"+n+\"] - 1\":\"coords[\"+n+\"]\"}(r)})).join(\",\"),o=ui(n);this.userCode=\"\\n      void main() {\\n        \"+o+\" coords = getOutputCoords();\\n        setOutput(getX(\"+r+\"));\\n      }\\n    \"}else this.userCode=\"\\n        void main() {\\n          int coord = getOutputCoords();\\n          setOutput(getX(\"+t[0]+\" - coord - 1));\\n        }\\n      \"},Ys=function(t,e){this.variableNames=[\"x\"],this.packedInputs=!0,this.packedOutput=!0;var n=t.length;if(n>4)throw new Error(\"WebGL backend: Reverse of rank-\"+n+\" tensor is not yet supported\");this.outputShape=t;var r=Xa(\"rc\",n),o=r[n-1]+\" + 1 < \"+this.outputShape[n-1],a=r[n-2]+\" + 1 < \"+this.outputShape[n-2],i=ui(n);function s(n){var r=t.map((function(r,o){return function(n,r){return-1!==e.indexOf(n)&&1!==t[n]?t[n]+\" - \"+r[n]+\" - 1\":\"\"+r[n]}(o,n)}));return\"getChannel(getX(\"+r.join(\",\")+\"), vec2(\"+r.slice(-2).join(\",\")+\"))\"}this.userCode=1===n?\"\\n        void main(){\\n          int rc = getOutputCoords();\\n          vec4 result = vec4(0.);\\n          result.r = getChannel(getX(\"+t[0]+\" - rc - 1),\\n            \"+t[0]+\" - rc - 1);\\n          if(\"+o+\"){\\n              result.g = getChannel(getX(\"+t[0]+\" - (rc  + 1) - 1),\\n                \"+t[0]+\" - (rc  + 1) - 1);\\n          }\\n          setOutput(result);\\n        }\\n      \":\"\\n        void main() {\\n          \"+i+\" rc = getOutputCoords();\\n          vec4 result = vec4(0.);\\n          result.r = \"+function(t){return s(t)}(r.slice())+\";\\n          if(\"+o+\"){\\n            result.g = \"+function(t){return t[n-1]=\"(\"+t[n-1]+\" + 1)\",s(t)}(r.slice())+\";\\n          }\\n          if(\"+a+\") {\\n            result.b = \"+function(t){return t[n-2]=\"(\"+t[n-2]+\" + 1)\",s(t)}(r.slice())+\";\\n            if(\"+o+\") {\\n              result.a = \"+function(t){return t[n-1]=\"(\"+t[n-1]+\" + 1)\",t[n-2]=\"(\"+t[n-2]+\" + 1)\",s(t)}(r.slice())+\";\\n            }\\n          }\\n          setOutput(result);\\n        }\\n    \"},$s=function(t,e,n,r,o,a,i){void 0===i&&(i=!0),this.variableNames=[\"updates\",\"indices\",\"defaultValue\"],this.outputShape=a;var s=ui(o.length),u=ui(a.length),c=\"\";1===n?c=\"i\":2===n&&(c=\"i, j\");var l=\"getIndices(\"+c+\")\",h=\"\";1===r?h=\"i\":2===r&&(h=\"i, coords[1]\");var f=\"getUpdates(\"+h+\")\",d=e>1?\"strides[j]\":\"strides\";this.userCode=\"\\n        \"+s+\" strides = \"+s+\"(\"+o+\");\\n\\n        void main() {\\n          \"+u+\" coords = getOutputCoords();\\n          float sum = 0.0;\\n          bool found = false;\\n          for (int i = 0; i < \"+t+\"; i++) {\\n            int flattenedIndex = 0;\\n            for (int j = 0; j < \"+e+\"; j++) {\\n              int index = round(\"+l+\");\\n              flattenedIndex += index * \"+d+\";\\n            }\\n            if (flattenedIndex == coords[0]) {\\n              sum += \"+f+\";\\n              found = true;\\n            }\\n          }\\n          setOutput(mix(getDefaultValue(), sum, float(found)));\\n        }\\n      \"},Qs=function(t,e){this.variableNames=[\"x\",\"segmentIds\"];var n=t.windowSize,r=t.batchSize,o=t.inSize,a=t.numSegments,i=a*Math.ceil(o/n);this.outputShape=[r,i];var s=4*Math.floor(n/4),u=n%4,c=\"\\n        sumValue += dot(values, segFilter);\\n    \",l=\"\";o%n>0&&(l=\"\\n        if (inIdx < 0 || inIdx >= \"+o+\") {\\n          return initializationValue;\\n        }\\n      \");var h=\"\";o%n>0&&(h=\"\\n        if (inIdx < 0 || inIdx >= \"+o+\") {\\n          return -1.0;\\n        }\\n      \"),this.userCode=\"\\n      const float initializationValue = 0.0;\\n\\n      float getValue(int batch, int inIdx) {\\n        \"+l+\"\\n        return getX(batch, inIdx);\\n      }\\n\\n      float getSegmentIdAtIndex(int inIdx) {\\n        \"+h+\"\\n        return getSegmentIds(inIdx);\\n      }\\n\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int outIdx = coords[1];\\n        int inOffset = int(floor(float(outIdx) / float(\\n          \"+a+\")) * float(\"+n+\"));\\n        int currentSeg = int(mod(float(outIdx), float(\"+a+\")));\\n\\n        float sumValue = 0.0;\\n\\n        for (int i = 0; i < \"+s+\"; i += 4) {\\n          int inIdx = inOffset + i;\\n          vec4 values = vec4(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            getValue(batch, inIdx + 2),\\n            getValue(batch, inIdx + 3)\\n          );\\n\\n          vec4 segFilter = vec4(\\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\\n          );\\n\\n          \"+c+\"\\n        }\\n\\n        int inIdx = inOffset + \"+s+\";\\n        if (\"+(1===u)+\") {\\n          vec4 values = vec4(\\n            getValue(batch, inIdx),\\n            initializationValue,\\n            initializationValue,\\n            initializationValue\\n          );\\n\\n          int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\\n\\n          vec4 segFilter = vec4(\\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\\n            0,\\n            0,\\n            0\\n          );\\n\\n          \"+c+\"\\n        } else if (\"+(2===u)+\") {\\n          vec4 values = vec4(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            initializationValue,\\n            initializationValue\\n          );\\n\\n          vec4 segFilter = vec4(\\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\\n              0,\\n              0\\n          );\\n\\n          \"+c+\"\\n        } else if (\"+(3===u)+\") {\\n          vec4 values = vec4(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            getValue(batch, inIdx + 2),\\n            initializationValue\\n          );\\n\\n          vec4 segFilter = vec4(\\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\\n            0\\n          );\\n\\n          \"+c+\"\\n        }\\n        setOutput(sumValue);\\n      }\\n    \"},Js=function(t,e,n){var r,o;if(this.variableNames=[\"c\",\"a\",\"b\"],this.outputShape=e,n>4)throw Error(\"Where for rank \"+n+\" is not yet supported\");if(1===n)o=\"resRC\",r=\"resRC\";else{for(var a=[\"resRC.x\",\"resRC.y\",\"resRC.z\",\"resRC.w\"],i=[],s=[],u=0;u<e.length;u++)s.push(\"\"+a[u]),u<t&&i.push(\"\"+a[u]);r=i.join(),o=s.join()}var c=ui(n);this.userCode=\"\\n      void main() {\\n        \"+c+\" resRC = getOutputCoords();\\n        float cVal = getC(\"+r+\");\\n        if (cVal >= 1.0) {\\n          setOutput(getA(\"+o+\"));\\n        } else {\\n          setOutput(getB(\"+o+\"));\\n        }\\n      }\\n    \"},Zs=function(){function t(t){this.variableNames=[\"source\"],this.outputShape=t,this.rank=t.length;var e,n=ui(this.rank),r=\"uniform int start[\"+this.rank+\"];\",o=function(t){if(1===t)return\"sourceLoc\";if(t<=6)return tu.slice(0,t).map((function(t){return\"sourceLoc.\"+t})).join(\",\");throw Error(\"Slicing for rank \"+t+\" is not yet supported\")}(this.rank);e=\"\\n        \"+n+\" sourceLoc;\\n        \"+n+\" coords = getOutputCoords();\\n        \"+t.map((function(t,e){return\"sourceLoc.\"+tu[e]+\" = start[\"+e+\"] + coords.\"+tu[e]+\";\"})).join(\"\\n\")+\"\\n      \",this.userCode=\"\\n      \"+r+\"\\n      void main() {\\n        \"+e+\"\\n        setOutput(getSource(\"+o+\"));\\n      }\\n    \"}return t.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error(\"The rank (\"+this.rank+\") of the program must match the length of start (\"+t.length+\")\");return function(n,r){null==e.startLoc&&(e.startLoc=n.getUniformLocationNoThrow(r,\"start\"),null==e.startLoc)||n.gl.uniform1iv(e.startLoc,t)}},t}(),tu=[\"x\",\"y\",\"z\",\"w\",\"u\",\"v\"];var eu=function(){function t(t){this.variableNames=[\"source\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.rank=t.length;var e=ui(this.rank),n=Xa(\"coords\",this.rank),r=Xa(\"sourceLoc\",this.rank),o=1===this.rank?\"sourceLoc\":\"vec2(\"+r.slice(-2).join()+\")\",a=\"getChannel(getSource(\"+r.join()+\"), \"+o+\")\",i=\"\\n      result.x = \"+a+\";\\n      if (++\"+n[this.rank-1]+\" < \"+t[this.rank-1]+\") {\\n        ++\"+r[this.rank-1]+\";\\n        result.y = \"+a+\";\\n        --\"+r[this.rank-1]+\";\\n      }\\n    \",s=1===this.rank?\"\":\"\\n      --\"+n[this.rank-1]+\";\\n      if (++\"+n[this.rank-2]+\" < \"+t[this.rank-2]+\") {\\n        ++\"+r[this.rank-2]+\";\\n        result.z = \"+a+\";\\n        if (++\"+n[this.rank-1]+\" < \"+t[this.rank-1]+\") {\\n          ++\"+r[this.rank-1]+\";\\n          result.w = \"+a+\";\\n        }\\n      }\\n    \",u=this.rank<=4?\"sourceLoc = coords +\\n            \"+e+\"(\"+t.map((function(t,e){return\"start[\"+e+\"]\"})).join()+\");\":t.map((function(t,e){return r[e]+\" = \"+n[e]+\" + start[\"+e+\"];\"})).join(\"\\n\");this.userCode=\"\\n      uniform int start[\"+this.rank+\"];\\n      void main() {\\n        \"+e+\" coords = getOutputCoords();\\n        \"+e+\" sourceLoc;\\n        \"+u+\"\\n        vec4 result = vec4(0.);\\n        \"+i+\"\\n        \"+s+\"\\n        setOutput(result);\\n      }\\n    \"}return t.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error(\"The rank (\"+this.rank+\") of the program must match the length of start (\"+t.length+\")\");return function(n,r){null==e.startLoc&&(e.startLoc=n.getUniformLocationNoThrow(r,\"start\"),null==e.startLoc)||n.gl.uniform1iv(e.startLoc,t)}},t}(),nu=function(t,e,n){this.variableNames=[\"x\"],this.outputShape=n;var r=n.length,o=ui(n.length),a=ui(n.length),i=\"\";if(1===r)i=\"coords * strides + begin\";else{var s=0;i=n.map((function(t,e){return s++,1===n.length?\"coords * strides[\"+e+\"] + begin[\"+e+\"]\":\"coords[\"+(s-1)+\"] * strides[\"+e+\"] + begin[\"+e+\"]\"})).join(\",\")}this.userCode=\"\\n      \"+o+\" begin = \"+o+\"(\"+t+\");\\n      \"+o+\" strides = \"+o+\"(\"+e+\");\\n\\n      void main() {\\n        \"+a+\" coords = getOutputCoords();\\n        setOutput(getX(\"+i+\"));\\n      }\\n    \"},ru=function(){function t(t){this.gpgpu=t,this.numUsedTextures=0,this.numFreeTextures=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}return t.prototype.acquireTexture=function(t,e,n){var r,o=ou(e,n),a=au(t,o,n);if(a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]),this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this.log();var i=this.freeTextures[a].shift();return this.usedTextures[a].push(i),i}return this.numUsedTextures++,this.log(),o===Gt.PACKED_2X2_FLOAT32?r=this.gpgpu.createPackedMatrixTexture(t[0],t[1]):o===Gt.PACKED_2X2_FLOAT16?r=this.gpgpu.createFloat16PackedMatrixTexture(t[0],t[1]):o===Gt.UNPACKED_FLOAT32?r=this.gpgpu.createFloat32MatrixTexture(t[0],t[1]):o===Gt.UNPACKED_FLOAT16?r=this.gpgpu.createFloat16MatrixTexture(t[0],t[1]):o===Gt.PACKED_4X1_UNSIGNED_BYTE&&(r=this.gpgpu.createUnsignedBytesMatrixTexture(t[0],t[1])),this.usedTextures[a].push(r),r},t.prototype.releaseTexture=function(t,e,n,r){if(null!=this.freeTextures){var o=au(e,ou(n,r),r);o in this.freeTextures||(this.freeTextures[o]=[]),this.freeTextures[o].push(t),this.numFreeTextures++,this.numUsedTextures--;var a=this.usedTextures[o],i=a.indexOf(t);if(i<0)throw new Error(\"Cannot release a texture that was never provided by this texture manager\");a.splice(i,1),this.log()}},t.prototype.log=function(){if(this.logEnabled){var t=this.numFreeTextures+this.numUsedTextures;console.log(\"Free/Used\",this.numFreeTextures+\" / \"+this.numUsedTextures,\"(\"+t+\")\")}},t.prototype.getNumUsedTextures=function(){return this.numUsedTextures},t.prototype.getNumFreeTextures=function(){return this.numFreeTextures},t.prototype.dispose=function(){var t=this;if(null!=this.freeTextures){for(var e in this.freeTextures)this.freeTextures[e].forEach((function(e){t.gpgpu.deleteMatrixTexture(e)}));for(var e in this.usedTextures)this.usedTextures[e].forEach((function(e){t.gpgpu.deleteMatrixTexture(e)}));this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0}},t}();function ou(t,e){if(t===zt.UPLOAD)return Gt.PACKED_2X2_FLOAT32;if(t===zt.RENDER||null==t)return function(t){return i().getBool(\"WEBGL_RENDER_FLOAT32_ENABLED\")?t?Gt.PACKED_2X2_FLOAT32:Gt.UNPACKED_FLOAT32:t?Gt.PACKED_2X2_FLOAT16:Gt.UNPACKED_FLOAT16}(e);if(t===zt.DOWNLOAD||t===zt.PIXELS)return Gt.PACKED_4X1_UNSIGNED_BYTE;throw new Error(\"Unknown logical texture type \"+t)}function au(t,e,n){return t[0]+\"_\"+t[1]+\"_\"+e+\"_\"+n}var iu=function(t,e){this.variableNames=[\"A\"];for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[r]*e[r];this.outputShape=n,this.rank=n.length;var o=ui(this.rank),a=function(t){var e=t.length;if(e>5)throw Error(\"Tile for rank \"+e+\" is not yet supported\");if(1===e)return\"imod(resRC, \"+t[0]+\")\";for(var n=[\"resRC.x\",\"resRC.y\",\"resRC.z\",\"resRC.w\",\"resRC.u\"],r=[],o=0;o<t.length;o++)r.push(\"imod(\"+n[o]+\", \"+t[o]+\")\");return r.join()}(t);this.userCode=\"\\n      void main() {\\n        \"+o+\" resRC = getOutputCoords();\\n        setOutput(getA(\"+a+\"));\\n      }\\n    \"};var su=1.7580993408473768,uu=1.0507009873554805,cu=function(t,e){this.variableNames=[\"A\"],this.outputShape=t,this.userCode=\"\\n      float unaryOperation(float x) {\\n        \"+e+\"\\n      }\\n\\n      void main() {\\n        float x = getAAtOutCoords();\\n        float y = unaryOperation(x);\\n\\n        setOutput(y);\\n      }\\n    \"},lu=\"if (isnan(x)) return x;\",hu=\"return x;\",fu=\"return abs(x);\",du=lu+\"\\n  return (x < 0.0) ? 0.0 : x;\\n\",pu=lu+\"\\n  return (x < 0.0) ? 0.0 : min(6.0, x);\\n\",vu=\"return (x >= 0.0) ? x : (exp(x) - 1.0);\",gu=\"\\n  // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\\n  // see: https://arxiv.org/abs/1706.02515\\n  float scaleAlpha = \"+su+\";\\n  float scale = \"+uu+\";\\n  return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\\n\";var mu=\"return -x;\",yu=\"return ceil(x);\",xu=\"return floor(x);\",bu=\"return exp(x);\",wu=\"return exp(x) - 1.0;\",Cu=lu+\"\\n  return sin(x);\\n\",Eu=lu+\"\\n  return cos(x);\\n\",Ru=lu+\"\\n  if (abs(x) > 1.) {\\n    return NAN;\\n  }\\n  return asin(x);\\n\",Iu=lu+\"\\n  if (abs(x) > 1.) {\\n    return NAN;\\n  }\\n  return acos(x);\\n\",ku=lu+\"\\n  return atan(x);\\n\",Su=lu+\"return log(x + sqrt(x * x + 1.0));\",Au=lu+\"\\n  if (x < 1.0) return NAN;\\n  return log(x + sqrt(x * x - 1.0));\",Tu=lu+\"\\n  if ((x < -1.0) || (x > 1.0)) return NAN;\\n  return (log(1.0 + x) - log(1.0 - x)) / 2.0;\",Du=\"return x;\",Nu=\"return x;\",Fu=\"\\n  vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\\n  bvec4 isNaN = isnan(x);\\n\\n  result.r = isNaN.r ? x.r : result.r;\\n  result.g = isNaN.g ? x.g : result.g;\\n  result.b = isNaN.b ? x.b : result.b;\\n  result.a = isNaN.a ? x.a : result.a;\\n\\n  return result;\\n\",_u=\"\\n  vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));\\n  bvec4 isNaN = isnan(x);\\n\\n  result.r = isNaN.r ? x.r : result.r;\\n  result.g = isNaN.g ? x.g : result.g;\\n  result.b = isNaN.b ? x.b : result.b;\\n  result.a = isNaN.a ? x.a : result.a;\\n\\n  return result;\\n\",Ou=\"\\n  vec4 result;\\n\\n  result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\\n  result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\\n  result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\\n  result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\\n\\n  return result;\\n\",Mu=function(t,e){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.userCode=\"\\n      vec4 unaryOperation(vec4 x) {\\n        \"+e+\"\\n      }\\n\\n      void main() {\\n        vec4 x = getAAtOutCoords();\\n        vec4 y = unaryOperation(x);\\n\\n        setOutput(y);\\n      }\\n    \"},Bu=function(t){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=t;var e=t.length,n=Xa(\"rc\",e),r=ui(e),o=function(t,e){if(1===t)return\"rc\";for(var n=\"\",r=0;r<t;r++)n+=e[r],r<t-1&&(n+=\",\");return n}(e,n),a=n.slice(-2),i=e<=1?\"rc\":\"vec2(\"+a.join(\",\")+\")\";this.userCode=\"\\n      void main() {\\n        \"+r+\" rc = getOutputCoords();\\n        vec4 packedInput = getA(\"+o+\");\\n\\n        setOutput(getChannel(packedInput, \"+i+\"));\\n      }\\n    \"},Pu={};function Lu(t,e){if(void 0===e&&(e=!1),\"linear\"===t)return e?Nu:hu;if(\"relu\"===t)return e?Fu:du;if(\"elu\"===t)return e?Ou:vu;if(\"relu6\"===t)return e?_u:pu;if(\"prelu\"===t)return e?ki:Ei;throw new Error(\"Activation \"+t+\" has not been implemented for the WebGL backend.\")}var Wu=600;var Uu=function(t){function o(e){var n,r=t.call(this)||this;if(r.pendingRead=new WeakMap,r.pendingDisposal=new WeakSet,r.dataRefCount=new WeakMap,r.numBytesInGPU=0,r.uploadWaitMs=0,r.downloadWaitMs=0,r.warnedAboutMemory=!1,r.pendingDeletes=0,r.disposed=!1,!i().getBool(\"HAS_WEBGL\"))throw new Error(\"WebGL is not supported on this device\");if(null==e){var o=jt(i().getNumber(\"WEBGL_VERSION\"));r.binaryCache=(n=i().getNumber(\"WEBGL_VERSION\"))in Pu?Pu[n]:(Pu[n]={},Pu[n]),r.gpgpu=new Is(o),r.canvas=o.canvas,r.gpgpuCreatedLocally=!0}else r.gpgpu=e,r.binaryCache={},r.gpgpuCreatedLocally=!1,r.canvas=e.gl.canvas;return r.textureManager=new ru(r.gpgpu),r.numMBBeforeWarning=null==i().global.screen?1024:i().global.screen.height*i().global.screen.width*window.devicePixelRatio*Wu/1024/1024,r.texData=new ca(r,Lt),r}return e(o,t),o.prototype.numDataIds=function(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes},o.prototype.write=function(t,e,n){if(i().getBool(\"DEBUG\")&&this.checkNumericalProblems(t),\"complex64\"===n&&null!=t)throw new Error(\"Cannot write to a complex64 dtype. Please use tf.complex(real, imag).\");var r={};return this.texData.set(r,{shape:e,dtype:n,values:t,usage:zt.UPLOAD}),r},o.prototype.move=function(t,e,n,r){if(i().getBool(\"DEBUG\")&&this.checkNumericalProblems(e),\"complex64\"===r)throw new Error(\"Cannot write to a complex64 dtype. Please use tf.complex(real, imag).\");this.texData.set(t,{shape:n,dtype:r,values:e,usage:zt.UPLOAD})},o.prototype.readSync=function(t){var e=this.texData.get(t),n=e.values,r=e.dtype,o=e.complexTensors,a=e.slice,i=e.shape,s=e.isPacked;if(null!=a){var u=void 0;u=s?new Mu(i,Du):new cu(i,Du);var c=this.runWebGLProgram(u,[{dataId:t,shape:i,dtype:r}],r),l=this.readSync(c.dataId);return this.disposeData(c.dataId),l}if(null!=n)return this.convertAndCacheOnCPU(t);if(\"string\"===r)return n;var h,f,d=null!=this.activeTimers;(d&&(h=et()),\"complex64\"===r)?f=Aa(o.real.dataSync(),o.imag.dataSync()):f=this.getValuesFromTexture(t);return d&&(this.downloadWaitMs+=et()-h),this.convertAndCacheOnCPU(t,f)},o.prototype.read=function(t){return n(this,void 0,void 0,(function(){var e,n,o,a,s,u,c,l,h,f,d,p,v,g,m,y,x,b,w,C,E,R;return r(this,(function(r){switch(r.label){case 0:if(this.pendingRead.has(t))return e=this.pendingRead.get(t),[2,new Promise((function(t){return e.push(t)}))];if(n=this.texData.get(t),o=n.values,a=n.shape,s=n.slice,u=n.dtype,c=n.complexTensors,l=n.isPacked,null!=s)return h=void 0,h=l?new Mu(a,Du):new cu(a,Du),f=this.runWebGLProgram(h,[{dataId:t,shape:a,dtype:u}],u),d=this.read(f.dataId),this.disposeData(f.dataId),[2,d];if(null!=o)return[2,this.convertAndCacheOnCPU(t)];if(!i().getBool(\"WEBGL_DOWNLOAD_FLOAT_ENABLED\")&&2===i().getNumber(\"WEBGL_VERSION\"))throw new Error(\"tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.\");return p=null,\"complex64\"!==u&&i().get(\"WEBGL_BUFFER_SUPPORTED\")&&(v=this.decode(t),g=this.texData.get(v.dataId),p=(R=this.gpgpu).createBufferFromTexture.apply(R,[g.texture].concat(Yt(a)))),this.pendingRead.set(t,[]),\"complex64\"===u?[3,2]:[4,this.gpgpu.createAndWaitForFence()];case 1:r.sent(),r.label=2;case 2:return\"complex64\"!==u?[3,4]:[4,Promise.all([c.real.data(),c.imag.data()])];case 3:return y=r.sent(),x=y[0],b=y[1],m=Aa(x,b),[3,5];case 4:null==p?m=this.getValuesFromTexture(t):(w=k(a),m=this.gpgpu.downloadFloat32MatrixFromBuffer(p,w)),r.label=5;case 5:return null!=v&&this.disposeData(v.dataId),C=this.convertAndCacheOnCPU(t,m),E=this.pendingRead.get(t),this.pendingRead.delete(t),E.forEach((function(t){return t(C)})),this.pendingDisposal.has(t)&&(this.pendingDisposal.delete(t),this.disposeData(t),this.pendingDeletes--),[2,C]}}))}))},o.prototype.checkNumericalProblems=function(t){if(null!=t)for(var e=0;e<t.length;e++){var n=t[e];if(!ee(n)){if(i().getBool(\"WEBGL_RENDER_FLOAT32_CAPABLE\"))throw Error(\"The value \"+n+\" cannot be represented with your current settings. Consider enabling float32 rendering: 'tf.env().set('WEBGL_RENDER_FLOAT32_ENABLED', true);'\");throw Error(\"The value \"+n+\" cannot be represented on this device.\")}}},o.prototype.getValuesFromTexture=function(t){var e,n=this.texData.get(t),r=n.shape,o=n.dtype,a=n.isPacked,s=k(r);if(i().getBool(\"WEBGL_DOWNLOAD_FLOAT_ENABLED\")){var u=this.decode(t),c=this.texData.get(u.dataId),l=(e=this.gpgpu).downloadMatrixFromPackedTexture.apply(e,[c.texture].concat(Yt(r))).subarray(0,s);return this.disposeData(u.dataId),l}var h=i().getBool(\"WEBGL_PACK\")&&!0===a,f=h?De(r):r,d=h?new Ji(f):new Qi(f),p=this.runWebGLProgram(d,[{shape:f,dtype:o,dataId:t}],\"float32\"),v=this.texData.get(p.dataId),g=this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(v.texture,v.texShape[0],v.texShape[1]).subarray(0,s);return this.disposeData(p.dataId),g},o.prototype.time=function(t){return n(this,void 0,void 0,(function(){var e,n,o,a,s,u,c;return r(this,(function(r){switch(r.label){case 0:return e=this.activeTimers,n=[],o=!1,null==this.programTimersStack?(this.programTimersStack=n,o=!0):this.activeTimers.push(n),this.activeTimers=n,t(),a=I(this.activeTimers.map((function(t){return t.query}))).filter((function(t){return null!=t})),s=I(this.activeTimers.map((function(t){return t.name}))).filter((function(t){return null!=t})),this.activeTimers=e,o&&(this.programTimersStack=null),u={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null},i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\")>0?[4,Promise.all(a)]:[3,2];case 1:return c=r.sent(),u.kernelMs=w(c),u.getExtraProfileInfo=function(){return c.map((function(t,e){return{name:s[e],ms:t}})).map((function(t){return t.name+\": \"+t.ms})).join(\", \")},[3,3];case 2:u.kernelMs={error:\"WebGL query timers are not supported in this environment.\"},r.label=3;case 3:return this.uploadWaitMs=0,this.downloadWaitMs=0,[2,u]}}))}))},o.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU}},o.prototype.startTimer=function(){return i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\")>0?this.gpgpu.beginQuery():{startMs:et(),endMs:null}},o.prototype.endTimer=function(t){return i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\")>0?(this.gpgpu.endQuery(),t):(t.endMs=et(),t)},o.prototype.getQueryTime=function(t){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){return i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\")>0?[2,this.gpgpu.waitForQueryAndGetTime(t)]:[2,(e=t).endMs-e.startMs]}))}))},o.prototype.disposeData=function(t){if(!this.pendingDisposal.has(t)){if(this.pendingRead.has(t))return this.pendingDisposal.add(t),void this.pendingDeletes++;if(this.texData.has(t)){this.releaseGPUData(t);var e=this.texData.get(t).complexTensors;null!=e&&(e.real.dispose(),e.imag.dispose()),this.texData.delete(t)}}},o.prototype.releaseGPUData=function(t){var e=this.texData.get(t),n=e.texture,r=e.dtype,o=e.texShape,a=e.usage,i=e.isPacked,s=e.slice,u=s&&s.origDataId||t,c=this.dataRefCount.get(u);c>1?this.dataRefCount.set(u,c-1):(this.dataRefCount.delete(u),null!=n&&(this.numBytesInGPU-=this.computeBytes(o,r),this.textureManager.releaseTexture(n,o,a,i)));var l=this.texData.get(t);l.texture=null,l.texShape=null,l.isPacked=!1,l.slice=null},o.prototype.getTexture=function(t){return this.uploadToGPU(t),this.texData.get(t).texture},o.prototype.getDataInfo=function(t){return this.texData.get(t)},o.prototype.getCPUBackend=function(){return i().getBool(\"WEBGL_CPU_FORWARD\")?(null==this.cpuBackend&&(this.cpuBackend=Lt.findBackend(\"cpu\")),this.cpuBackend):null},o.prototype.shouldExecuteOnCPU=function(t,e){var n=this;return void 0===e&&(e=128),null!=this.getCPUBackend()&&t.every((function(t){return null==n.texData.get(t.dataId).texture&&k(t.shape)<e}))},o.prototype.getGPGPUContext=function(){return this.gpgpu},o.prototype.complex=function(t,e){var n=this.makeOutput(t.shape,\"complex64\");return this.texData.get(n.dataId).complexTensors={real:Lt.keep(t.clone()),imag:Lt.keep(e.clone())},n},o.prototype.real=function(t){return this.texData.get(t.dataId).complexTensors.real.clone()},o.prototype.imag=function(t){return this.texData.get(t.dataId).complexTensors.imag.clone()},o.prototype.slice=function(t,e,n){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.slice(t,e,n);if(0===k(n))return Fn([],n,t.dtype);var r=this.texData.get(t.dataId).isPacked,o=$o(t.shape,e,n);if(r||!o){var a=i().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\")?new eu(n):new Zs(n),s=a.getCustomSetupFunc(e);return this.compileAndRun(a,[t],null,s)}return this.uploadToGPU(t.dataId),this.shallowSlice(t,e,n)},o.prototype.shallowSlice=function(t,e,n){var r=this.texData.get(t.dataId),o=this.makeOutput(n,t.dtype),a=this.texData.get(o.dataId);Object.assign(a,r),a.shape=n,a.dtype=t.dtype;var i=Qo(e,t.strides);r.slice&&(i+=r.slice.flatOffset),a.slice={flatOffset:i,origDataId:r.slice&&r.slice.origDataId||t.dataId};var s=this.dataRefCount.get(a.slice.origDataId)||1;return this.dataRefCount.set(a.slice.origDataId,s+1),o},o.prototype.stridedSlice=function(t,e,n,r){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.stridedSlice(t,e,n,r);var o=jo(e,n,r);if(o.some((function(t){return 0===t})))return Fn([],o);var a=new nu(e,r,o);return this.compileAndRun(a,[t])},o.prototype.reverse=function(t,e){var n=i().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\")?new Ys(t.shape,e):new Xs(t.shape,e);return this.compileAndRun(n,[t])},o.prototype.concat=function(t,e){if(\"complex64\"===t[0].dtype){var n=t.map((function(t){return Dn(t)})),r=t.map((function(t){return Nn(t)}));return Tn(this.concat(n,e),this.concat(r,e))}if(this.shouldExecuteOnCPU(t))return this.cpuBackend.concat(t,e);if(1===t.length)return t[0];if(t.length>i().getNumber(\"WEBGL_MAX_TEXTURES_IN_SHADER\")){var o=Math.floor(t.length/2),a=this.concat(t.slice(0,o),e),s=this.concat(t.slice(o),e);return this.concat([a,s],e)}if(i().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\")&&t[0].rank>1){var u=new Fi(t.map((function(t){return t.shape})),e);return this.compileAndRun(u,t)}var c=Sn(t.map((function(t){return t.shape})),e),l=t.map((function(t){return t.as2D(-1,k(t.shape.slice(e)))})),h=new Ni(l.map((function(t){return t.shape})));return this.compileAndRun(h,l).reshape(c)},o.prototype.neg=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.neg(t);if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,mu,t.dtype);var e=new cu(t.shape,mu);return this.compileAndRun(e,[t])},o.prototype.batchMatMul=function(t,e,n,r){var o=n?t.shape[2]:t.shape[1],a=r?e.shape[1]:e.shape[2],i=n?t.shape[1]:t.shape[2],s=t.shape[0];if((1===o||1===a)&&i>1e3){n&&(t=ua(t,[0,2,1])),r&&(e=ua(e,[0,2,1]));var u=1===a?t:t.as3D(s,i,1),c=1===a?2:1,l=1===a?e.as3D(s,1,i):e;return this.multiply(u,l).sum(c,!0)}var h=Tt(t.dtype,e.dtype),f=new _s(t.shape,[s,o,a],n,r);return this.compileAndRun(f,[t,e],h)},o.prototype.fusedBatchMatMul=function(t){var e=t.a,n=t.b,r=t.transposeA,o=t.transposeB,a=t.bias,i=t.activation,s=t.preluActivationWeights,u=r?e.shape[2]:e.shape[1],c=o?n.shape[1]:n.shape[2],l=e.shape[0],h=Tt(e.dtype,n.dtype),f=null!=a,d=null!=s,p=i?Lu(i,!0):null,v=new _s(e.shape,[l,u,c],r,o,f,p,d),g=[e,n];return a&&g.push(a),s&&g.push(s),this.compileAndRun(v,g,h)},o.prototype.multiply=function(t,e){if(\"complex64\"===t.dtype){var n=this.texData.get(t.dataId),r=this.texData.get(e.dataId),o=new yi(gi,t.shape,e.shape),a=new yi(mi,t.shape,e.shape),s=[this.makeComplexComponentTensorInfo(t,n.complexTensors.real),this.makeComplexComponentTensorInfo(t,n.complexTensors.imag),this.makeComplexComponentTensorInfo(e,r.complexTensors.real),this.makeComplexComponentTensorInfo(e,r.complexTensors.imag)],u=this.compileAndRun(o,s),c=this.compileAndRun(a,s),l=this.complex(u,c);return u.dispose(),c.dispose(),l}if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.multiply(t,e);if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,wi,t.dtype);var h=new Ri(wi,t.shape,e.shape);return this.compileAndRun(h,[t,e],t.dtype)},o.prototype.batchNormalization=function(t,e,n,r,o,a){var s=[t,e,n],u=null;null!=a&&(u=a.shape,s.push(a));var c=null;if(null!=o&&(c=o.shape,s.push(o)),i().getBool(\"WEBGL_PACK_NORMALIZATION\")){var l=new vi(t.shape,e.shape,n.shape,u,c,r);return this.compileAndRun(l,s)}var h=new pi(t.shape,e.shape,n.shape,u,c,r);return this.compileAndRun(h,s)},o.prototype.localResponseNormalization4D=function(t,e,n,r,o){var a=i().getBool(\"WEBGL_PACK_NORMALIZATION\")?new Ds(t.shape,e,n,r,o):new As(t.shape,e,n,r,o);return this.compileAndRun(a,[t])},o.prototype.LRNGrad=function(t,e,n,r,o,a,i){var s=new Ts(e.shape,r,o,a,i);return this.compileAndRun(s,[e,n,t])},o.prototype.tile=function(t,e){if(\"string\"===t.dtype){var n=this.readSync(t.dataId).map((function(t){return ot(t)}));return Va(er(t.shape,t.dtype,n),e)}var r=new iu(t.shape,e);return this.compileAndRun(r,[t])},o.prototype.pad=function(t,e,n){var r=i().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\")?new Ls(t.shape,e,n):new Ps(t.shape,e,n);return this.compileAndRun(r,[t])},o.prototype.gather=function(t,e,n){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.gather(t,e,n);var r=new as(t.shape,e.size,n);return this.compileAndRun(r,[t,e])},o.prototype.batchToSpaceND=function(t,e,n){C(t.rank<=4,(function(){return\"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet\"}));var r=e.reduce((function(t,e){return t*e})),o=pr(t.shape,e,r),a=vr(o.length,e.length),i=gr(t.shape,e,r),s=mr(n,e.length),u=yr(i,n,e.length);return ua(t.reshape(o),a).reshape(i).slice(s,u)},o.prototype.spaceToBatchND=function(t,e,n){C(t.rank<=4,(function(){return\"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet\"}));var r=e.reduce((function(t,e){return t*e})),o=[[0,0]];o.push.apply(o,n);for(var a=1+e.length;a<t.shape.length;++a)o.push([0,0]);var i=t.pad(o),s=pr(i.shape,e,r,!1),u=vr(s.length,e.length,!1),c=gr(i.shape,e,r,!1);return ua(i.reshape(s),u).reshape(c)},o.prototype.reduce=function(t,e,n){var r=t.shape[0],o=t.shape[1],a=Uo(o),i=new Vs({windowSize:a,inSize:o,batchSize:r},e),s=this.compileAndRun(i,[t],n);return 1===s.shape[1]?s:this.reduce(s,e,n)},o.prototype.argReduce=function(t,e,n){void 0===n&&(n=null);var r=t.shape[0],o=t.shape[1];null!=n&&(r=n.shape[0],o=n.shape[1]);var a=Uo(o),i=new Ka({windowSize:a,inSize:o,batchSize:r},e,null==n),s=[t];null!=n&&s.push(n);var u=this.compileAndRun(i,s,\"int32\");return 1===u.shape[1]?u:this.argReduce(t,e,u)},o.prototype.argReducePacked=function(t,e,n){void 0===n&&(n=null);var r=null!=n?n.shape:t.shape,o=Uo(r[r.length-1]),a=new hi(r,o,e,null==n),i=null==n?[t]:[t,n],s=this.compileAndRun(a,i,\"int32\");return s.rank===t.rank?this.argReducePacked(t,e,s):s},o.prototype.sum=function(t,e){Cn(\"sum\",e,t.rank);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o),i=Dt(t.dtype);return this.reduce(a,\"sum\",i).reshape(r)},o.prototype.prod=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.prod(t,e);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o),i=Dt(t.dtype);return this.reduce(a,\"prod\",i).reshape(r)},o.prototype.unsortedSegmentSum=function(t,e,n){var r=0,o=En([r],t.rank),a=t;null!=o&&(a=ua(t,o),r=In(1,t.rank)[0]);var i=function(t,e,n){for(var r=[],o=t.length,a=0;a<o;a++)a!==e?r.push(t[a]):r.push(n);return r}(a.shape,r,n),s=k([a.shape[r]]),u=a.as2D(-1,s),c=Dt(t.dtype),l=this.segOpCompute(u,\"unsortedSegmentSum\",e,c,n).reshape(i);return null!=o&&(l=ua(l,Rn(o))),l},o.prototype.segOpCompute=function(t,e,n,r,o){var a=t.shape[0],i=t.shape[1],s=function(t,e){var n,r=!1;for(t<=Wo?(n=t,r=!0):n=Y(t,Math.floor(Math.sqrt(t)));!r;)n>e||n===t?r=!0:n=Y(t,n+1);return n}(i,o),u=new Qs({windowSize:s,inSize:i,batchSize:a,numSegments:o},e),c=this.compileAndRun(u,[t,n],r);return c.shape[1]===o?c:(n=Kn(0,o).tile([i/s]),this.segOpCompute(c,e,n,r,o))},o.prototype.argMinMaxReduce=function(t,e,n){var r=[e];if(Cn(\"arg\"+n.charAt(0).toUpperCase()+n.slice(1),r,t.rank),!i().getBool(\"WEBGL_PACK_REDUCE\")||t.rank<=2){var o=bn(t.shape,r),a=o[0],s=k(o[1]),u=t.as2D(-1,s);return this.argReduce(u,n).reshape(a)}return this.argReducePacked(t,n)},o.prototype.argMin=function(t,e){return this.argMinMaxReduce(t,e,\"min\")},o.prototype.argMax=function(t,e){return this.argMinMaxReduce(t,e,\"max\")},o.prototype.cumsum=function(t,e,n,r){if(e!==t.rank-1)throw new Error(\"WebGL cumsum shader expects an inner-most axis=\"+(t.rank-1)+\" but got axis=\"+e);var o=new qi(t.shape,n,r);return this.compileAndRun(o,[t])},o.prototype.equal=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return vec4(equal(a, b));\\n\",\"bool\");var n=new Ri(\"return float(a == b);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.notEqual=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return vec4(notEqual(a, b));\\n\",\"bool\");var n=new Ri(\"return float(a != b);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.less=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.less(t,e);if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return vec4(lessThan(a, b));\\n\",\"bool\");var n=new Ri(\"return float(a < b);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.lessEqual=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return vec4(lessThanEqual(a, b));\\n\",\"bool\");var n=new Ri(\"return float(a <= b);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.greater=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.greater(t,e);if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return vec4(greaterThan(a, b));\\n\",\"bool\");var n=new Ri(\"return float(a > b);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.greaterEqual=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return vec4(greaterThanEqual(a, b));\\n\",\"bool\");var n=new Ri(\"return float(a >= b);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.logicalNot=function(t){var e=new cu(t.shape,\"return float(!(x >= 1.0));\");return this.compileAndRun(e,[t])},o.prototype.logicalAnd=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return vec4(\\n    vec4(greaterThanEqual(a, vec4(1.0))) *\\n    vec4(greaterThanEqual(b, vec4(1.0))));\\n\",\"bool\");var n=new Ri(\"return float(a >= 1.0 && b >= 1.0);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.logicalOr=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return min(\\n    vec4(greaterThanEqual(a, vec4(1.0))) +\\n    vec4(greaterThanEqual(b, vec4(1.0))),\\n    vec4(1.0));\\n\",\"bool\");var n=new Ri(\"return float(a >= 1.0 || b >= 1.0);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.select=function(t,e,n){var r=new Js(t.rank,e.shape,e.rank);return this.compileAndRun(r,[t,e,n],Tt(e.dtype,n.dtype))},o.prototype.where=function(t){dn(\"tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead\");var e=t.dataSync();return Ga(t.shape,e)},o.prototype.topk=function(t,e,n){return za(t.dataSync(),t.shape,t.dtype,e)},o.prototype.min=function(t,e){Cn(\"min\",e,t.rank);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o);return this.reduce(a,\"min\",a.dtype).reshape(r)},o.prototype.minimum=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.minimum(t,e);var n=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new Si(\"\\n  vec4 result = vec4(min(a, b));\\n  vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\\n  \\n  result.r = isNaN.r > 0. ? NAN : result.r;\\n  result.g = isNaN.g > 0. ? NAN : result.g;\\n  result.b = isNaN.b > 0. ? NAN : result.b;\\n  result.a = isNaN.a > 0. ? NAN : result.a;\\n\\n  return result;\\n\",t.shape,e.shape):new Ri(\"\\n  if (isnan(a)) return a;\\n  if (isnan(b)) return b;\\n\\n  return min(a, b);\\n\",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.mod=function(t,e){var n=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new Si(\"\\n  vec4 result = mod(a, b);\\n  vec4 isNaN = vec4(equal(b, vec4(0.0)));\\n  \\n  result.r = isNaN.r > 0. ? NAN : result.r;\\n  result.g = isNaN.g > 0. ? NAN : result.g;\\n  result.b = isNaN.b > 0. ? NAN : result.b;\\n  result.a = isNaN.a > 0. ? NAN : result.a;\\n\\n  return result;\\n\",t.shape,e.shape):new Ri(\"if (b == 0.0) return NAN;\\n  return mod(a, b);\",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.max=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.max(t,e);Cn(\"max\",e,t.rank);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o);return this.reduce(a,\"max\",a.dtype).reshape(r)},o.prototype.maximum=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.maximum(t,e);var n=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new Si(\"\\n  vec4 result = vec4(max(a, b));\\n  vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\\n  \\n  result.r = isNaN.r > 0. ? NAN : result.r;\\n  result.g = isNaN.g > 0. ? NAN : result.g;\\n  result.b = isNaN.b > 0. ? NAN : result.b;\\n  result.a = isNaN.a > 0. ? NAN : result.a;\\n\\n  return result;\\n\",t.shape,e.shape):new Ri(\"\\n  if (isnan(a)) return a;\\n  if (isnan(b)) return b;\\n\\n  return max(a, b);\\n\",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.all=function(t,e){Cn(\"all\",e,t.rank);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o);return this.reduce(a,\"all\",a.dtype).reshape(r)},o.prototype.any=function(t,e){Cn(\"any\",e,t.rank);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o);return this.reduce(a,\"any\",a.dtype).reshape(r)},o.prototype.floorDiv=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  ivec4 ia = round(a);\\n  ivec4 ib = round(b);\\n  bvec4 cond = notEqual(ib, ivec4(0));\\n  ivec4 result = ivec4(0);\\n  vec4 s = sign(a) * sign(b);\\n\\n  // Windows (D3D) wants guaranteed non-zero int division at compile-time.\\n  if (cond[0]) {\\n    result[0] = idiv(ia[0], ib[0], s[0]);\\n  }\\n  if (cond[1]) {\\n    result[1] = idiv(ia[1], ib[1], s[1]);\\n  }\\n  if (cond[2]) {\\n    result[2] = idiv(ia[2], ib[2], s[2]);\\n  }\\n  if (cond[3]) {\\n    result[3] = idiv(ia[3], ib[3], s[3]);\\n  }\\n  return vec4(result);\\n\",\"int32\");var n=new Ri(\"\\n  float s = sign(a) * sign(b);\\n  int ia = round(a);\\n  int ib = round(b);\\n  if (ib != 0) {\\n    // Windows (D3D) wants guaranteed non-zero int division at compile-time.\\n    return float(idiv(ia, ib, s));\\n  } else {\\n    return NAN;\\n  }\\n\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"int32\")},o.prototype.add=function(t,e){if(\"complex64\"===t.dtype&&\"complex64\"===e.dtype)return this.complexSeparableBinaryOp(t,e,xi);if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.add(t,e);var n=Tt(t.dtype,e.dtype);if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,xi,n);var r=new Ri(xi,t.shape,e.shape);return this.compileAndRun(r,[t,e],n)},o.prototype.packedUnaryOp=function(t,e,n){var r=new Mu(t.shape,e);return this.compileAndRun(r,[t],n)},o.prototype.packedBinaryOp=function(t,e,n,r,o){void 0===o&&(o=!1);var a=new Si(n,t.shape,e.shape,o);return this.compileAndRun(a,[t,e],r)},o.prototype.complexSeparableBinaryOp=function(t,e,n){var r=this,o=this.texData.get(t.dataId),a=this.texData.get(e.dataId),i=[[o.complexTensors.real,a.complexTensors.real],[o.complexTensors.imag,a.complexTensors.imag]].map((function(o){var a=o[0],i=o[1],s=r.makeComplexComponentTensorInfo(t,a),u=r.makeComplexComponentTensorInfo(e,i),c=new Ri(n,t.shape,e.shape);return r.compileAndRun(c,[s,u],Tt(a.dtype,i.dtype))})),s=i[0],u=i[1],c=this.complex(s,u);return s.dispose(),u.dispose(),c},o.prototype.makeComplexComponentTensorInfo=function(t,e){return{dataId:e.dataId,dtype:e.dtype,shape:t.shape}},o.prototype.addN=function(t){if(1===t.length)return t[0];if(t.length>i().get(\"WEBGL_MAX_TEXTURES_IN_SHADER\")){var e=Math.floor(t.length/2),n=this.addN(t.slice(0,e)),r=this.addN(t.slice(e));return this.addN([n,r])}var o=t.map((function(t){return t.dtype})).reduce((function(t,e){return Tt(t,e)})),a=t.map((function(t){return t.shape})),s=i().getBool(\"WEBGL_PACK\")?new qa(t[0].shape,a):new Ha(t[0].shape,a);return this.compileAndRun(s,t,o)},o.prototype.subtract=function(t,e){if(\"complex64\"===t.dtype&&\"complex64\"===e.dtype)return this.complexSeparableBinaryOp(t,e,bi);if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.subtract(t,e);var n=Tt(t.dtype,e.dtype);if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,bi,t.dtype);var r=new Ri(bi,t.shape,e.shape);return this.compileAndRun(r,[t,e],n)},o.prototype.pow=function(t,e){var n=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new Si(\"\\n  // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise.\\n  vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1)));\\n  vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1);\\n  vec4 result = multiplier * pow(abs(a), b);\\n\\n  // Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS\\n  bvec4 isExpZero = equal(b, vec4(0.0));\\n  result.r = isExpZero.r ? 1.0 : result.r;\\n  result.g = isExpZero.g ? 1.0 : result.g;\\n  result.b = isExpZero.b ? 1.0 : result.b;\\n  result.a = isExpZero.a ? 1.0 : result.a;\\n\\n  vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b));\\n  \\n  result.r = isNaN.r > 0. ? NAN : result.r;\\n  result.g = isNaN.g > 0. ? NAN : result.g;\\n  result.b = isNaN.b > 0. ? NAN : result.b;\\n  result.a = isNaN.a > 0. ? NAN : result.a;\\n\\n  return result;\\n\",t.shape,e.shape):new Ri(\"\\nif(a < 0.0 && floor(b) < b){\\n  return NAN;\\n}\\nif (b == 0.0) {\\n  return 1.0;\\n}\\nreturn (round(mod(b, 2.0)) != 1) ?\\n    pow(abs(a), b) : sign(a) * pow(abs(a), b);\\n\",t.shape,e.shape),r=Tt(t.dtype,e.dtype);return this.compileAndRun(n,[t,e],r)},o.prototype.ceil=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.ceil(t);if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,yu,t.dtype);var e=new cu(t.shape,yu);return this.compileAndRun(e,[t])},o.prototype.floor=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.floor(t);if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,xu,t.dtype);var e=new cu(t.shape,xu);return this.compileAndRun(e,[t])},o.prototype.sign=function(t){var e=new cu(t.shape,\"\\n  if (isnan(x)) { return 0.0; }\\n  return sign(x);\\n\");return this.compileAndRun(e,[t])},o.prototype.isNaN=function(t){var e=new cu(t.shape,\"return float(isnan(x));\");return this.compileAndRun(e,[t],\"bool\")},o.prototype.isInf=function(t){var e=new cu(t.shape,\"return float(isinf(x));\");return this.compileAndRun(e,[t],\"bool\")},o.prototype.isFinite=function(t){var e=new cu(t.shape,\"return float(!isnan(x) && !isinf(x));\");return this.compileAndRun(e,[t],\"bool\")},o.prototype.round=function(t){var e=new cu(t.shape,\"\\n  // OpenGL ES does not support round function.\\n  // The algorithm is based on banker's rounding.\\n  float base = floor(x);\\n  if ((x - base) < 0.5) {\\n    return floor(x);\\n  } else if ((x - base) > 0.5) {\\n    return ceil(x);\\n  } else {\\n    if (mod(base, 2.0) == 0.0) {\\n      return base;\\n    } else {\\n      return base + 1.0;\\n    }\\n  }\\n\");return this.compileAndRun(e,[t])},o.prototype.exp=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.exp(t);if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,bu,t.dtype);var e=new cu(t.shape,bu);return this.compileAndRun(e,[t])},o.prototype.expm1=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.expm1(t);if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,wu,t.dtype);var e=new cu(t.shape,wu);return this.compileAndRun(e,[t])},o.prototype.softmax=function(t,e){var n=O([e],t.shape),r=this.max(t,n),o=wn(r.shape,n),a=this.subtract(t,r.reshape(o)),i=this.exp(a),s=this.sum(i,n).reshape(o);return Bo(i,s)},o.prototype.log=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.log(t);if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,\"\\n  vec4 result = log(x);\\n  vec4 isNaN = vec4(lessThan(x, vec4(0.0)));\\n  result.r = isNaN.r == 1.0 ? NAN : result.r;\\n  result.g = isNaN.g == 1.0 ? NAN : result.g;\\n  result.b = isNaN.b == 1.0 ? NAN : result.b;\\n  result.a = isNaN.a == 1.0 ? NAN : result.a;\\n\\n  return result;\\n\",t.dtype);var e=new cu(t.shape,\"if (x < 0.0) return NAN;\\n  return log(x);\");return this.compileAndRun(e,[t])},o.prototype.log1p=function(t){var e=new cu(t.shape,\"return log(1.0 + x);\");return this.compileAndRun(e,[t])},o.prototype.sqrt=function(t){var e=new cu(t.shape,\"return sqrt(x);\");return this.compileAndRun(e,[t])},o.prototype.rsqrt=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.rsqrt(t);var e=new cu(t.shape,\"return inversesqrt(x);\");return this.compileAndRun(e,[t])},o.prototype.reciprocal=function(t){var e=new cu(t.shape,\"return 1.0 / x;\");return this.compileAndRun(e,[t])},o.prototype.relu=function(t){var e;return e=i().getBool(\"WEBGL_PACK\")?new Mu(t.shape,Fu):new cu(t.shape,du),this.compileAndRun(e,[t])},o.prototype.relu6=function(t){var e;return e=i().getBool(\"WEBGL_PACK\")?new Mu(t.shape,_u):new cu(t.shape,pu),this.compileAndRun(e,[t])},o.prototype.prelu=function(t,e){var n=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new Si(ki,t.shape,e.shape):new Ri(Ei,t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.elu=function(t){if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,Ou,t.dtype);var e=new cu(t.shape,vu);return this.compileAndRun(e,[t])},o.prototype.eluDer=function(t,e){var n=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new Si(\"\\n  vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));\\n  return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));\\n\",t.shape,e.shape):new Ri(\"return (b >= 1.0) ? a : a * (b + 1.0);\",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.selu=function(t){var e=new cu(t.shape,gu);return this.compileAndRun(e,[t])},o.prototype.int=function(t){var e=new cu(t.shape,\"return float(int(x));\");return this.compileAndRun(e,[t],\"int32\")},o.prototype.clip=function(t,e,n){var r,o=(r=i().getBool(\"WEBGL_PACK_CLIP\")?new Ti(t.shape):new Ai(t.shape)).getCustomSetupFunc(e,n);return this.compileAndRun(r,[t],null,o)},o.prototype.abs=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.abs(t);if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,fu,t.dtype);var e=new cu(t.shape,fu);return this.compileAndRun(e,[t])},o.prototype.complexAbs=function(t){var e=this.texData.get(t.dataId),n=new Di(t.shape),r=[this.makeComplexComponentTensorInfo(t,e.complexTensors.real),this.makeComplexComponentTensorInfo(t,e.complexTensors.imag)];return this.compileAndRun(n,r)},o.prototype.sigmoid=function(t){var e=new cu(t.shape,\"return 1.0 / (1.0 + exp(-1.0 * x));\");return this.compileAndRun(e,[t])},o.prototype.softplus=function(t){var e=new cu(t.shape,\"\\n  float epsilon = 1.1920928955078125e-7;\\n  float threshold = log(epsilon) + 2.0;\\n\\n  bool too_large = x > -threshold;\\n  bool too_small = x < threshold;\\n\\n  float result;\\n  float exp_x = exp(x);\\n\\n  if (too_large){\\n    result = x;\\n  }\\n  else if (too_small){\\n    result = exp_x;\\n  }\\n  else{\\n    result = log(exp_x + 1.0);\\n  }\\n  return result;\\n\");return this.compileAndRun(e,[t])},o.prototype.sin=function(t){var e=new cu(t.shape,Cu);return this.compileAndRun(e,[t])},o.prototype.cos=function(t){var e=new cu(t.shape,Eu);return this.compileAndRun(e,[t])},o.prototype.tan=function(t){var e=new cu(t.shape,\"return tan(x);\");return this.compileAndRun(e,[t])},o.prototype.asin=function(t){var e=new cu(t.shape,Ru);return this.compileAndRun(e,[t])},o.prototype.acos=function(t){var e=new cu(t.shape,Iu);return this.compileAndRun(e,[t])},o.prototype.atan=function(t){var e=new cu(t.shape,ku);return this.compileAndRun(e,[t])},o.prototype.atan2=function(t,e){var n=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new Si(\"\\n  vec4 result = atan(a, b);\\n  vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\\n  \\n  result.r = isNaN.r > 0. ? NAN : result.r;\\n  result.g = isNaN.g > 0. ? NAN : result.g;\\n  result.b = isNaN.b > 0. ? NAN : result.b;\\n  result.a = isNaN.a > 0. ? NAN : result.a;\\n\\n  return result;\\n\",t.shape,e.shape):new Ri(\"\\n  if (isnan(a)) return a;\\n  if (isnan(b)) return b;\\n\\n  return atan(a, b);\\n\",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.sinh=function(t){var e=new cu(t.shape,\"\\n  float e2x = exp(x);\\n  return (e2x - 1.0 / e2x) / 2.0;\\n\");return this.compileAndRun(e,[t])},o.prototype.cosh=function(t){var e=new cu(t.shape,\"\\n  float e2x = exp(-x);\\n  return (e2x + 1.0 / e2x) / 2.0;\\n\");return this.compileAndRun(e,[t])},o.prototype.tanh=function(t){var e=new cu(t.shape,\"\\n  float e2x = exp(-2.0 * abs(x));\\n  return sign(x) * (1.0 - e2x) / (1.0 + e2x);\\n\");return this.compileAndRun(e,[t])},o.prototype.asinh=function(t){var e=new cu(t.shape,Su);return this.compileAndRun(e,[t])},o.prototype.acosh=function(t){var e=new cu(t.shape,Au);return this.compileAndRun(e,[t])},o.prototype.atanh=function(t){var e=new cu(t.shape,Tu);return this.compileAndRun(e,[t])},o.prototype.erf=function(t){var e=new cu(t.shape,'\\n  // Error function is calculated approximately with elementary function.\\n  // See \"Handbook of Mathematical Functions with Formulas,\\n  // Graphs, and Mathematical Tables\", Abramowitz and Stegun.\\n  float p = 0.3275911;\\n  float a1 = 0.254829592;\\n  float a2 = -0.284496736;\\n  float a3 = 1.421413741;\\n  float a4 = -1.453152027;\\n  float a5 = 1.061405429;\\n\\n  float sign = sign(x);\\n  x = abs(x);\\n  float t = 1.0 / (1.0 + p * x);\\n  return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x));\\n');return this.compileAndRun(e,[t])},o.prototype.step=function(t,e){var n=new cu(t.shape,function(t){return void 0===t&&(t=0),lu+\"\\n    return x > 0.0 ? 1.0 : float(\"+t+\");\\n  \"}(e));return this.compileAndRun(n,[t])},o.prototype.conv2dByMatMul=function(t,e,n,r,o,a){var s=t.shape,u=this.texData.get(t.dataId),c=n.inChannels,l=s[0]*s[1]*s[2],h=n.outChannels,f=\"channelsLast\"===n.dataFormat,d=(1===l||1===h)&&c>1e3,p=s[2]%2!=0&&!!u.isPacked;if(d||!i().getBool(\"WEBGL_LAZILY_UNPACK\")||!i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")||!p){var v=f?s[0]*s[1]*s[2]:s[0]*s[2]*s[3],g=this.reshape(t,[1,v,n.inChannels]),m=this.reshape(e,[1,n.inChannels,n.outChannels]);return this.reshape(this.fusedBatchMatMul({a:g,b:m,transposeA:!1,transposeB:!1,bias:r,activation:o,preluActivationWeights:a}),n.outShape)}var y=f?s[0]*s[1]*(s[2]+1):s[0]*s[2]*(s[3]+1),x={dataId:t.dataId,shape:[1,y,n.inChannels],dtype:t.dtype},b=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,C(_e(u.shape,x.shape),(function(){return\"packed reshape \"+u.shape+\" to \"+x.shape+\" isn't free\"}));var w=this.reshape(e,[1,n.inChannels,n.outChannels]),E=this.fusedBatchMatMul({a:x,b:w,transposeA:!1,transposeB:!1,bias:r,activation:o,preluActivationWeights:a}),R=this.texData.get(E.dataId);return C(R.isPacked,(function(){return\"batchMatMul result is expected to be packed\"})),u.shape=b,R.shape=n.outShape,Lt.makeTensorFromDataId(E.dataId,n.outShape,E.dtype)},o.prototype.conv2dWithIm2Row=function(t,e,n,r,o,a){var i=n.filterWidth,s=n.filterHeight,u=n.inChannels,c=n.outWidth,l=n.outHeight,h=\"channelsLast\"===n.dataFormat,f=i*s*u,d=l*c,p=[f,d],v=t.squeeze([0]),g=e.reshape([1,f,-1]),m=new Ss(p,v.shape,n),y=this.compileAndRun(m,[v]).reshape([1,p[0],p[1]]),x=null!=r,b=null!=a,w=o?Lu(o,!0):null,C=new _s(y.shape,[1,d,n.outChannels],!0,!1,x,w,b),E=[y,g];r&&E.push(r),b&&E.push(a);var R=this.compileAndRun(C,E);return h?R.reshape([1,l,c,n.outChannels]):R.reshape([1,n.outChannels,l,c])},o.prototype.fusedConv2d=function(t){var e=t.input,n=t.filter,r=t.convInfo,o=t.bias,a=t.activation,s=t.preluActivationWeights;if(1===r.filterHeight&&1===r.filterWidth&&1===r.dilationHeight&&1===r.dilationWidth&&1===r.strideHeight&&1===r.strideWidth&&(\"SAME\"===r.padInfo.type||\"VALID\"===r.padInfo.type))return this.conv2dByMatMul(e,n,r,o,a,s);if(i().getBool(\"WEBGL_CONV_IM2COL\")&&1===e.shape[0])return this.conv2dWithIm2Row(e,n,r,o,a,s);var u=null!=o,c=null!=s,l=a?Lu(a,!1):null,h=new Ui(r,u,l,c),f=[e,n];return o&&f.push(o),s&&f.push(s),this.compileAndRun(h,f)},o.prototype.conv2d=function(t,e,n){if(1===n.filterHeight&&1===n.filterWidth&&1===n.dilationHeight&&1===n.dilationWidth&&1===n.strideHeight&&1===n.strideWidth&&(\"SAME\"===n.padInfo.type||\"VALID\"===n.padInfo.type))return this.conv2dByMatMul(t,e,n);if(i().getBool(\"WEBGL_CONV_IM2COL\")&&1===t.shape[0])return this.conv2dWithIm2Row(t,e,n);var r=new Ui(n);return this.compileAndRun(r,[t,e])},o.prototype.conv2dDerInput=function(t,e,n){var r=new Mi(n);return this.compileAndRun(r,[t,e])},o.prototype.conv2dDerFilter=function(t,e,n){var r=new Oi(n);return this.compileAndRun(r,[t,e])},o.prototype.fusedDepthwiseConv2D=function(t){var e,n=t.input,r=t.filter,o=t.convInfo,a=t.bias,s=t.activation,u=t.preluActivationWeights,c=i().getBool(\"WEBGL_PACK_DEPTHWISECONV\")&&o.strideWidth<=2&&o.outChannels/o.inChannels==1,l=s?Lu(s,c):null,h=[n,r],f=null!=a,d=null!=u;return f&&h.push(a),d&&h.push(u),c?(e=new Gi(o,f,l,d),this.compileAndRun(e,h)):(e=new zi(o,f,l,d),this.compileAndRun(e,h))},o.prototype.depthwiseConv2D=function(t,e,n){var r;return i().getBool(\"WEBGL_PACK_DEPTHWISECONV\")&&n.strideWidth<=2&&n.outChannels/n.inChannels==1?(r=new Gi(n),this.compileAndRun(r,[t,e])):(r=new zi(n),this.compileAndRun(r,[t,e]))},o.prototype.depthwiseConv2DDerInput=function(t,e,n){var r=new Wi(n);return this.compileAndRun(r,[t,e])},o.prototype.depthwiseConv2DDerFilter=function(t,e,n){var r=new Li(n);return this.compileAndRun(r,[t,e])},o.prototype.conv3d=function(t,e,n){var r=new Vi(n);return this.compileAndRun(r,[t,e])},o.prototype.conv3dDerInput=function(t,e,n){var r=new Pi(n);return this.compileAndRun(r,[t,e])},o.prototype.conv3dDerFilter=function(t,e,n){var r=new Bi(n);return this.compileAndRun(r,[t,e])},o.prototype.maxPool=function(t,e){var n=new Ws(e,\"max\",!1);return this.compileAndRun(n,[t])},o.prototype.avgPool=function(t,e){var n=new Ws(e,\"avg\",!1);return this.compileAndRun(n,[t],\"float32\")},o.prototype.maxPoolBackprop=function(t,e,n,r){var o=new Ws(r,\"max\",!0),a=this.compileAndRun(o,[e]),i=new Ns(r),s=this.compileAndRun(i,[t,a],e.dtype);return a.dispose(),s},o.prototype.avgPoolBackprop=function(t,e,n){var r=new fi(n);return this.compileAndRun(r,[t],e.dtype)},o.prototype.cast=function(t,e){return Ra(t,e,this)},o.prototype.unstack=function(t,e){for(var n=t.shape[e],r=new Array(t.rank-1),o=0,a=0;a<t.rank;a++)a!==e&&(r[o++]=t.shape[a]);var i=new Array(t.rank).fill(0),s=t.shape.slice();s[e]=1;var u=new Array(n);for(a=0;a<u.length;a++)i[e]=a,u[a]=this.slice(t,i,s).reshape(r);return u},o.prototype.avgPool3d=function(t,e){var n=new Us(e,\"avg\",!1);return this.compileAndRun(n,[t],\"float32\")},o.prototype.avgPool3dBackprop=function(t,e,n){var r=new di(n);return this.compileAndRun(r,[t],e.dtype)},o.prototype.maxPool3d=function(t,e){var n=new Us(e,\"max\",!1);return this.compileAndRun(n,[t],\"float32\")},o.prototype.maxPool3dBackprop=function(t,e,n,r){var o=new Us(r,\"max\",!0),a=this.compileAndRun(o,[e]),i=new Fs(r),s=this.compileAndRun(i,[t,a],e.dtype);return a.dispose(),s},o.prototype.reshape=function(t,e){var n=this.texData.get(t.dataId);if(n.isPacked&&!_e(t.shape,e)&&(null===n.texture||!_e(n.shape,e))){var r=this.packedReshape(t,e);return Lt.makeTensorFromDataId(r.dataId,r.shape,r.dtype)}return Ia(t,e)},o.prototype.resizeBilinear=function(t,e,n,r){var o=i().getBool(\"WEBGL_PACK_IMAGE_OPERATIONS\")?new qs(t.shape,e,n,r):new Hs(t.shape,e,n,r);return this.compileAndRun(o,[t],\"float32\")},o.prototype.resizeBilinearBackprop=function(t,e,n){var r=new Gs(t,e,n);return this.compileAndRun(r,[t])},o.prototype.resizeNearestNeighbor=function(t,e,n,r){var o=new js(t.shape,e,n,r);return this.compileAndRun(o,[t])},o.prototype.resizeNearestNeighborBackprop=function(t,e,n){var r=new Ks(t,e,n);return this.compileAndRun(r,[t])},o.prototype.multinomial=function(t,e,n,r){var o=e?t:ia(t),a=o.shape[0],i=o.shape[1],s=new Os(a,i,n),u=s.getCustomSetupFunc(r);return this.compileAndRun(s,[o],\"int32\",u)},o.prototype.oneHot=function(t,e,n,r){var o=new Ms(t.size,e,n,r);return this.compileAndRun(o,[t])},o.prototype.diag=function(t){var e=new $i(t.size);return this.compileAndRun(e,[t])},o.prototype.nonMaxSuppression=function(t,e,n,r,o){return dn(\"tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead\"),Oa(t.dataSync(),e.dataSync(),n,r,o)},o.prototype.cropAndResize=function(t,e,n,r,o,a){var i=new Hi(t.shape,e.shape,r,o,a);return this.compileAndRun(i,[t,e,n],\"float32\")},o.prototype.depthToSpace=function(t,e,n){C(e>1,(function(){return\"blockSize should be > 1 for depthToSpace, but was: \"+e}));var r=t.shape[0],o=\"NHWC\"===n?t.shape[1]:t.shape[2],a=\"NHWC\"===n?t.shape[2]:t.shape[3],i=\"NHWC\"===n?t.shape[3]:t.shape[1],s=o*e,u=a*e,c=i/(e*e),l=new Yi(\"NHWC\"===n?[r,s,u,c]:[r,c,s,u],e,n);return this.compileAndRun(l,[t])},o.prototype.split=function(t,e,n){return Ua(t,e,n)},o.prototype.scatterND=function(t,e,n){var r=Go(0,t,n),o=r.sliceRank,a=r.numUpdates,i=r.sliceSize,s=r.strides,u=r.outputSize,c=[u/i,i],l=t.reshape([a,o]),h=e.reshape([a,i]);if(0===u)return Ia(Fn([]),n);var f=On(0),d=new $s(a,o,l.rank,h.rank,s,c);return this.compileAndRun(d,[h,l,f]).reshape(n)},o.prototype.sparseToDense=function(t,e,n,r){var o=Go(0,t,n),a=o.sliceRank,i=o.numUpdates,s=o.strides,u=o.outputSize,c=new $s(i,a,t.rank,e.rank,s,[u,1],!1);return this.compileAndRun(c,[e,t,r]).reshape(n)},o.prototype.fft=function(t){return this.fftImpl(t,!1)},o.prototype.ifft=function(t){return this.fftImpl(t,!0)},o.prototype.fftImpl=function(t,e){var n=this.texData.get(t.dataId),r=new rs(es,t.shape,e),o=new rs(ns,t.shape,e),a=[this.makeComplexComponentTensorInfo(t,n.complexTensors.real),this.makeComplexComponentTensorInfo(t,n.complexTensors.imag)],i=this.compileAndRun(r,a),s=this.compileAndRun(o,a),u=this.complex(i,s).as2D(t.shape[0],t.shape[1]);return i.dispose(),s.dispose(),u},o.prototype.gatherND=function(t,e){var n=e.shape,r=n[n.length-1],o=Po(t,e),a=o[0],i=o[1],s=o[2],u=o[3],c=e.reshape([i,r]),l=t.reshape([t.size/s,s]),h=new is(r,u,[i,s]);return this.compileAndRun(h,[l,c]).reshape(a)},o.prototype.fill=function(t,e,n){if(\"string\"===(n=n||j(e))){var r=P(n,k(t));return r.fill(e),Lt.makeTensor(r,t,n,this)}var o=new os(t,e),a=o.getCustomSetupFunc(e);return this.compileAndRun(o,[],n,a)},o.prototype.onesLike=function(t){if(\"string\"===t.dtype)throw new Error(\"onesLike is not supported under string dtype\");return this.fill(t.shape,1,t.dtype)},o.prototype.zerosLike=function(t){return this.fill(t.shape,\"string\"===t.dtype?\"\":0,t.dtype)},o.prototype.linspace=function(t,e,n){return ka(t,e,n)},o.prototype.makeTensorInfo=function(t,e){var n=this.write(null,t,e);return this.texData.get(n).usage=null,{dataId:n,shape:t,dtype:e}},o.prototype.makeOutput=function(t,e){var n=this.makeTensorInfo(t,e).dataId;return Lt.makeTensorFromDataId(n,t,e,this)},o.prototype.unpackTensor=function(t){var e=new Bu(t.shape);return this.runWebGLProgram(e,[t],t.dtype)},o.prototype.packTensor=function(t){var e=new Bs(t.shape);return this.runWebGLProgram(e,[t],t.dtype,null,!0)},o.prototype.packedReshape=function(t,e){var n=[Ae(t.shape)].concat(Te(t.shape)),r={dtype:t.dtype,shape:n,dataId:t.dataId},o=[Ae(e)].concat(Te(e)),a=new zs(o,n),i=this.runWebGLProgram(a,[r],t.dtype,null,!0);return{dataId:i.dataId,shape:e,dtype:i.dtype}},o.prototype.decode=function(t){var e,n=this.texData.get(t),r=n.isPacked,o=n.shape,a=n.dtype,i=De(o);e=r?new Xi(i):new ji(i);return{dtype:a,shape:o,dataId:this.runWebGLProgram(e,[{shape:i,dtype:a,dataId:t}],a,null,!0).dataId}},o.prototype.runWebGLProgram=function(t,e,n,r,o){var a=this;void 0===o&&(o=!1);var s=this.makeTensorInfo(t.outputShape,n),u=this.texData.get(s.dataId);if(t.packedOutput&&(u.isPacked=!0),t.outPackingScheme===Vt.DENSE){var c=Yt(t.outputShape);u.texShape=c.map((function(t){return 2*t}))}if(null!=t.outTexUsage&&(u.usage=t.outTexUsage),0===k(s.shape))return u.values=B(s.dtype,0),s;var l=[],h=e.map((function(e){if(\"complex64\"===e.dtype)throw new Error(\"GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.\");var n=a.texData.get(e.dataId);if(null==n.texture){if(!t.packedInputs&&k(e.shape)<=i().getNumber(\"WEBGL_SIZE_UPLOAD_UNIFORM\"))return{shape:e.shape,texData:null,isUniform:!0,uniformValues:n.values};t.packedInputs&&(n.isPacked=!0,n.shape=e.shape)}else if(!!n.isPacked!=!!t.packedInputs)e=n.isPacked?a.unpackTensor(e):a.packTensor(e),l.push(e),n=a.texData.get(e.dataId);else if(n.isPacked&&!_e(n.shape,e.shape)){var r=e,o=e.shape;e.shape=n.shape,e=a.packedReshape(e,o),l.push(e),n=a.texData.get(e.dataId),r.shape=o}return a.uploadToGPU(e.dataId),{shape:e.shape,texData:n,isUniform:!1}}));this.uploadToGPU(s.dataId);var f,d={shape:s.shape,texData:u,isUniform:!1},p=function(t,e,n){var r=\"\";e.concat(n).forEach((function(t){var e=null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0,n=t.isUniform?\"uniform\":t.texData.texShape;r+=t.shape+\"_\"+n+\"_\"+e}));var o=t.userCode,a=t.constructor.name;return a+=\"_\"+r+\"_\"+o}(t,h,d),v=this.getAndSaveBinary(p,(function(){return function(t,e,n,r){var o=e.userCode,a=n.map((function(t,n){var r={logicalShape:t.shape,texShape:t.isUniform?null:t.texData.texShape,isUniform:t.isUniform,isPacked:!t.isUniform&&t.texData.isPacked,flatOffset:null};return null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0&&(r.flatOffset=t.texData.slice.flatOffset),{name:e.variableNames[n],shapeInfo:r}})),s=a.map((function(t){return t.shapeInfo})),u={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},c=Za(a,u,o,e.packedInputs),l=t.createProgram(c),h=null,f=t.getUniformLocation(l,\"NAN\",!1);1===i().getNumber(\"WEBGL_VERSION\")&&(h=t.getUniformLocation(l,\"INFINITY\",!1));for(var d={},p=0;p<e.variableNames.length;p++){var v=e.variableNames[p];d[v]=t.getUniformLocation(l,v,!1),d[\"offset\"+v]=t.getUniformLocation(l,\"offset\"+v,!1)}return{program:e,source:c,webGLProgram:l,uniformLocations:d,inShapeInfos:s,outShapeInfo:u,infLoc:h,nanLoc:f}}(a.gpgpu,t,h,d)})),g=null!=this.activeTimers;if(g&&(f=this.startTimer()),function(t,e,n,r,o){ks(e.inShapeInfos,n),ks([e.outShapeInfo],[r]);var a=r.texData.texture,s=r.texData.texShape;r.texData.isPacked?t.setOutputPackedMatrixTexture(a,s[0],s[1]):t.setOutputMatrixTexture(a,s[0],s[1]),t.setProgram(e.webGLProgram),1===i().getNumber(\"WEBGL_VERSION\")&&null!==e.infLoc&&t.gl.uniform1f(e.infLoc,1/0),null!==e.nanLoc&&t.gl.uniform1f(e.nanLoc,NaN),n.forEach((function(n,r){var o=e.program.variableNames[r],a=e.uniformLocations[o],i=e.uniformLocations[\"offset\"+o];if(null!=a)if(n.isUniform)if(k(n.shape)<2)t.gl.uniform1f(a,n.uniformValues[0]);else{var s=n.uniformValues;s instanceof Float32Array||(s=new Float32Array(s)),t.gl.uniform1fv(a,s)}else null!=n.texData.slice&&null!=i&&t.gl.uniform1i(i,n.texData.slice.flatOffset),t.setInputMatrixTexture(n.texData.texture,a,r)})),null!=o&&o(t,e.webGLProgram),t.executeProgram()}(this.gpgpu,v,h,d,r),l.forEach((function(t){return a.disposeData(t.dataId)})),g&&(f=this.endTimer(f),this.activeTimers.push({name:t.constructor.name,query:this.getQueryTime(f)})),!i().getBool(\"WEBGL_LAZILY_UNPACK\")&&u.isPacked&&!1===o){var m=this.unpackTensor(s);return this.disposeData(s.dataId),m}return s},o.prototype.compileAndRun=function(t,e,n,r,o){void 0===o&&(o=!1),n=n||e[0].dtype;var a=this.runWebGLProgram(t,e,n,r,o);return Lt.makeTensorFromDataId(a.dataId,a.shape,a.dtype)},o.prototype.getAndSaveBinary=function(t,e){return t in this.binaryCache||(this.binaryCache[t]=e()),this.binaryCache[t]},o.prototype.getTextureManager=function(){return this.textureManager},o.prototype.dispose=function(){var t=this;if(!this.disposed){if(!i().getBool(\"IS_TEST\"))Object.keys(this.binaryCache).forEach((function(e){t.gpgpu.deleteProgram(t.binaryCache[e].webGLProgram),delete t.binaryCache[e]}));this.textureManager.dispose(),null!=this.canvas&&\"undefined\"!=typeof HTMLCanvasElement&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0}},o.prototype.floatPrecision=function(){var t=this;return null==this.floatPrecisionValue&&(this.floatPrecisionValue=Ze((function(){if(!i().get(\"WEBGL_RENDER_FLOAT32_ENABLED\")){var e=i().getBool(\"DEBUG\");i().set(\"DEBUG\",!1);var n=t.abs(On(1e-8)).dataSync()[0];if(i().set(\"DEBUG\",e),n>0)return 32}return 16}))),this.floatPrecisionValue},o.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},o.prototype.uploadToGPU=function(t){var e,n=this.texData.get(t),r=n.shape,o=n.dtype,a=n.values,i=n.texture,s=n.usage,u=n.isPacked;if(null==i){var c,l=null!=this.activeTimers;l&&(c=et());var h=n.texShape;if(null==h&&(h=Ne(r,u),n.texShape=h),null!=a){var f=De(r),d=void 0,p=h[1],v=h[0],g=a instanceof Uint8Array;u?(p=(e=$t(h[0],h[1]))[0],v=e[1],d=new ts(f,[v,p],g)):d=new Zi(f,[v,p],g);var m=this.makeTensorInfo([v,p],o);this.texData.get(m.dataId).usage=g?zt.PIXELS:zt.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(m.dataId),p,v,a);var y=this.runWebGLProgram(d,[m],o,null,!0),x=this.texData.get(y.dataId);n.texture=x.texture,n.texShape=x.texShape,n.isPacked=x.isPacked,n.usage=x.usage,this.disposeData(m.dataId),this.texData.delete(y.dataId),n.values=null,l&&(this.uploadWaitMs+=et()-c)}else{var b=this.acquireTexture(h,s,o,u);n.texture=b}}},o.prototype.convertAndCacheOnCPU=function(t,e){var n=this.texData.get(t),r=n.dtype;return this.releaseGPUData(t),null!=e&&(n.values=function(t,e){if(\"float32\"===e||\"complex64\"===e)return t;if(\"int32\"===e||\"bool\"===e){for(var n=\"int32\"===e?new Int32Array(t.length):new Uint8Array(t.length),r=0;r<n.length;++r)n[r]=Math.round(t[r]);return n}throw new Error(\"Unknown dtype \"+e)}(e,r)),n.values},o.prototype.acquireTexture=function(t,e,n,r){if(this.numBytesInGPU+=this.computeBytes(t,n),!this.warnedAboutMemory&&this.numBytesInGPU>1024*this.numMBBeforeWarning*1024){var o=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(\"High memory usage in GPU: \"+o+\" MB, most likely due to a memory leak\")}return this.textureManager.acquireTexture(t,e,r)},o.prototype.computeBytes=function(t,e){return t[0]*t[1]*z(e)},o}(la);Wt()&&Lt.registerBackend(\"webgl\",(function(){return new Uu}),2);\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self&&self;function Vu(t,e){return t(e={exports:{}},e.exports),e.exports}var zu=Vu((function(t){!function(t,e,n){function r(t){var e,n=this,r=(e=4022871197,function(t){t=t.toString();for(var n=0;n<t.length;n++){var r=.02519603282416938*(e+=t.charCodeAt(n));r-=e=r>>>0,e=(r*=e)>>>0,e+=4294967296*(r-=e)}return 2.3283064365386963e-10*(e>>>0)});n.next=function(){var t=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=t-(n.c=0|t)},n.c=1,n.s0=r(\" \"),n.s1=r(\" \"),n.s2=r(\" \"),n.s0-=r(t),n.s0<0&&(n.s0+=1),n.s1-=r(t),n.s1<0&&(n.s1+=1),n.s2-=r(t),n.s2<0&&(n.s2+=1),r=null}function o(t,e){return e.c=t.c,e.s0=t.s0,e.s1=t.s1,e.s2=t.s2,e}function a(t,e){var n=new r(t),a=e&&e.state,i=n.next;return i.int32=function(){return 4294967296*n.next()|0},i.double=function(){return i()+11102230246251565e-32*(2097152*i()|0)},i.quick=i,a&&(\"object\"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.alea=a}(0,t,!1)})),Gu=Vu((function(t){!function(t,e,n){function r(t){var e=this,n=\"\";e.x=0,e.y=0,e.z=0,e.w=0,e.next=function(){var t=e.x^e.x<<11;return e.x=e.y,e.y=e.z,e.z=e.w,e.w^=e.w>>>19^t^t>>>8},t===(0|t)?e.x=t:n+=t;for(var r=0;r<n.length+64;r++)e.x^=0|n.charCodeAt(r),e.next()}function o(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e}function a(t,e){var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(\"object\"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.xor128=a}(0,t,!1)})),Hu=Vu((function(t){!function(t,e,n){function r(t){var e=this,n=\"\";e.next=function(){var t=e.x^e.x>>>2;return e.x=e.y,e.y=e.z,e.z=e.w,e.w=e.v,(e.d=e.d+362437|0)+(e.v=e.v^e.v<<4^t^t<<1)|0},e.x=0,e.y=0,e.z=0,e.w=0,e.v=0,t===(0|t)?e.x=t:n+=t;for(var r=0;r<n.length+64;r++)e.x^=0|n.charCodeAt(r),r==n.length&&(e.d=e.x<<10^e.x>>>4),e.next()}function o(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e.v=t.v,e.d=t.d,e}function a(t,e){var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(\"object\"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.xorwow=a}(0,t,!1)})),qu=Vu((function(t){!function(t,e,n){function r(t){var e=this;e.next=function(){var t,n,r=e.x,o=e.i;return t=r[o],n=(t^=t>>>7)^t<<24,n^=(t=r[o+1&7])^t>>>10,n^=(t=r[o+3&7])^t>>>3,n^=(t=r[o+4&7])^t<<7,t=r[o+7&7],n^=(t^=t<<13)^t<<9,r[o]=n,e.i=o+1&7,n},function(t,e){var n,r=[];if(e===(0|e))r[0]=e;else for(e=\"\"+e,n=0;n<e.length;++n)r[7&n]=r[7&n]<<15^e.charCodeAt(n)+r[n+1&7]<<13;for(;r.length<8;)r.push(0);for(n=0;n<8&&0===r[n];++n);for(8==n?r[7]=-1:r[n],t.x=r,t.i=0,n=256;n>0;--n)t.next()}(e,t)}function o(t,e){return e.x=t.x.slice(),e.i=t.i,e}function a(t,e){null==t&&(t=+new Date);var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(a.x&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.xorshift7=a}(0,t,!1)})),Ku=Vu((function(t){!function(t,e,n){function r(t){var e=this;e.next=function(){var t,n,r=e.w,o=e.X,a=e.i;return e.w=r=r+1640531527|0,n=o[a+34&127],t=o[a=a+1&127],n^=n<<13,t^=t<<17,n^=n>>>15,t^=t>>>12,n=o[a]=n^t,e.i=a,n+(r^r>>>16)|0},function(t,e){var n,r,o,a,i,s=[],u=128;for(e===(0|e)?(r=e,e=null):(e+=\"\\0\",r=0,u=Math.max(u,e.length)),o=0,a=-32;a<u;++a)e&&(r^=e.charCodeAt((a+32)%e.length)),0===a&&(i=r),r^=r<<10,r^=r>>>15,r^=r<<4,r^=r>>>13,a>=0&&(i=i+1640531527|0,o=0==(n=s[127&a]^=r+i)?o+1:0);for(o>=128&&(s[127&(e&&e.length||0)]=-1),o=127,a=512;a>0;--a)r=s[o+34&127],n=s[o=o+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[o]=r^n;t.w=i,t.X=s,t.i=o}(e,t)}function o(t,e){return e.i=t.i,e.w=t.w,e.X=t.X.slice(),e}function a(t,e){null==t&&(t=+new Date);var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(a.X&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.xor4096=a}(0,t,!1)})),ju=Vu((function(t){!function(t,e,n){function r(t){var e=this,n=\"\";e.next=function(){var t=e.b,n=e.c,r=e.d,o=e.a;return t=t<<25^t>>>7^n,n=n-r|0,r=r<<24^r>>>8^o,o=o-t|0,e.b=t=t<<20^t>>>12^n,e.c=n=n-r|0,e.d=r<<16^n>>>16^o,e.a=o-t|0},e.a=0,e.b=0,e.c=-1640531527,e.d=1367130551,t===Math.floor(t)?(e.a=t/4294967296|0,e.b=0|t):n+=t;for(var r=0;r<n.length+20;r++)e.b^=0|n.charCodeAt(r),e.next()}function o(t,e){return e.a=t.a,e.b=t.b,e.c=t.c,e.d=t.d,e}function a(t,e){var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(\"object\"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.tychei=a}(0,t,!1)})),Xu=Vu((function(t){!function(e,n){var r,o=this,a=256,i=6,s=\"random\",u=n.pow(a,i),c=n.pow(2,52),l=2*c,h=a-1;function f(t,h,f){var m=[],y=v(function t(e,n){var r,o=[],a=typeof e;if(n&&\"object\"==a)for(r in e)try{o.push(t(e[r],n-1))}catch(t){}return o.length?o:\"string\"==a?e:e+\"\\0\"}((h=1==h?{entropy:!0}:h||{}).entropy?[t,g(e)]:null==t?function(){try{var t;return r&&(t=r.randomBytes)?t=t(a):(t=new Uint8Array(a),(o.crypto||o.msCrypto).getRandomValues(t)),g(t)}catch(t){var n=o.navigator,i=n&&n.plugins;return[+new Date,o,i,o.screen,g(e)]}}():t,3),m),x=new d(m),b=function(){for(var t=x.g(i),e=u,n=0;t<c;)t=(t+n)*a,e*=a,n=x.g(1);for(;t>=l;)t/=2,e/=2,n>>>=1;return(t+n)/e};return b.int32=function(){return 0|x.g(4)},b.quick=function(){return x.g(4)/4294967296},b.double=b,v(g(x.S),e),(h.pass||f||function(t,e,r,o){return o&&(o.S&&p(o,x),t.state=function(){return p(x,{})}),r?(n[s]=t,e):t})(b,y,\"global\"in h?h.global:this==n,h.state)}function d(t){var e,n=t.length,r=this,o=0,i=r.i=r.j=0,s=r.S=[];for(n||(t=[n++]);o<a;)s[o]=o++;for(o=0;o<a;o++)s[o]=s[i=h&i+t[o%n]+(e=s[o])],s[i]=e;(r.g=function(t){for(var e,n=0,o=r.i,i=r.j,s=r.S;t--;)e=s[o=h&o+1],n=n*a+s[h&(s[o]=s[i=h&i+e])+(s[i]=e)];return r.i=o,r.j=i,n})(a)}function p(t,e){return e.i=t.i,e.j=t.j,e.S=t.S.slice(),e}function v(t,e){for(var n,r=t+\"\",o=0;o<r.length;)e[h&o]=h&(n^=19*e[h&o])+r.charCodeAt(o++);return g(e)}function g(t){return String.fromCharCode.apply(0,t)}if(n[\"seed\"+s]=f,v(n.random(),e),t.exports){t.exports=f;try{r=require(\"crypto\")}catch(t){}}}([],Math)}));Xu.alea=zu,Xu.xor128=Gu,Xu.xorwow=Hu,Xu.xorshift7=qu,Xu.xor4096=Ku,Xu.tychei=ju;var Yu=Xu.alea;var $u=An({addN_:function(t){C(Array.isArray(t),(function(){return\"The argument passed to tf.addN() must be a list of tensors\"})),C(t.length>=1,(function(){return\"Must pass at least one tensor to tf.addN(), but got \"+t.length}));var e=t.map((function(t,e){return gn(t,\"tensors\"+e,\"addN\")})),n=e[0];e.forEach((function(t){if(t.dtype!==n.dtype)throw new Error(\"All tensors passed to tf.addN() must have the same dtype\")})),e.forEach((function(t){if(!S(t.shape,n.shape))throw new Error(\"All tensors passed to tf.addN() must have the same shape\")}));var r=e;return Lt.runKernelFunc((function(t,n){return t.addN(e)}),r,null,\"AddN\")}});function Qu(){Xe(\"tf.batchNormalization() is going away. Use tf.batchNorm() instead, and note the positional argument change of scale, offset, and varianceEpsilon\")}function Ju(t){return 0===t.rank||1===t.rank?t.as4D(1,1,1,t.size):2===t.rank?t.as4D(1,1,t.shape[0],t.shape[1]):3===t.rank?t.as4D(1,t.shape[0],t.shape[1],t.shape[2]):t}function Zu(t,e,n,r,o,a){null==a&&(a=.001);var i,s,u=gn(t,\"x\",\"batchNorm\"),c=gn(e,\"mean\",\"batchNorm\"),l=gn(n,\"variance\",\"batchNorm\");null!=o&&(i=gn(o,\"scale\",\"batchNorm\")),null!=r&&(s=gn(r,\"offset\",\"batchNorm\")),C(c.rank===l.rank,(function(){return\"Batch normalization gradient requires mean and variance to have equal ranks.\"})),C(null==s||c.rank===s.rank,(function(){return\"Batch normalization gradient requires mean and offset to have equal ranks.\"})),C(null==i||c.rank===i.rank,(function(){return\"Batch normalization gradient requires mean and scale to have equal ranks.\"}));var h={x:u,scale:i,offset:s,mean:c,variance:l},f={varianceEpsilon:a};return Lt.runKernelFunc((function(t,e){var n=Ju(u),r=t.batchNormalization(n,tc(c),tc(l),a,tc(i),tc(s));return e([u,c,l,i]),r}),h,null,\"FusedBatchNorm\",f).reshape(u.shape)}function tc(t){return null==t?null:0===t.rank?t.as1D():1===t.rank?t:2===t.rank?t.as4D(1,1,t.shape[0],t.shape[1]):3===t.rank?t.as4D(1,t.shape[0],t.shape[1],t.shape[2]):t}var ec=An({batchNormalization_:function(t,e,n,r,o,a){return void 0===r&&(r=.001),Qu(),Zu(t,e,n,a,o,r)}}),nc=An({batchNorm_:Zu});function rc(t,e,n,r,o,a){var i,s,u=gn(t,\"x\",\"batchNorm\"),c=gn(e,\"mean\",\"batchNorm\"),l=gn(n,\"variance\",\"batchNorm\");return null!=o&&(i=gn(o,\"scale\",\"batchNorm\")),null!=r&&(s=gn(r,\"offset\",\"batchNorm\")),C(2===u.rank,(function(){return\"Error in batchNorm3D: x must be rank 3 but got rank \"+u.rank+\".\"})),C(2===c.rank||1===c.rank,(function(){return\"Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank \"+c.rank+\".\"})),C(2===l.rank||1===l.rank,(function(){return\"Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank \"+l.rank+\".\"})),null!=i&&C(2===i.rank||1===i.rank,(function(){return\"Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank \"+i.rank+\".\"})),null!=s&&C(2===s.rank||1===s.rank,(function(){return\"Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank \"+s.rank+\".\"})),nc(u,c,l,s,i,a)}var oc=An({batchNormalization2d_:function(t,e,n,r,o,a){return void 0===r&&(r=.001),Qu(),rc(t,e,n,a,o,r)}}),ac=An({batchNorm2d_:rc});function ic(t,e,n,r,o,a){var i,s,u=gn(t,\"x\",\"batchNorm\"),c=gn(e,\"mean\",\"batchNorm\"),l=gn(n,\"variance\",\"batchNorm\");return null!=o&&(i=gn(o,\"scale\",\"batchNorm\")),null!=r&&(s=gn(r,\"offset\",\"batchNorm\")),C(3===u.rank,(function(){return\"Error in batchNorm3D: x must be rank 3 but got rank \"+u.rank+\".\"})),C(3===c.rank||1===c.rank,(function(){return\"Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank \"+c.rank+\".\"})),C(3===l.rank||1===l.rank,(function(){return\"Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank \"+l.rank+\".\"})),null!=i&&C(3===i.rank||1===i.rank,(function(){return\"Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank \"+i.rank+\".\"})),null!=s&&C(3===s.rank||1===s.rank,(function(){return\"Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank \"+s.rank+\".\"})),nc(u,c,l,s,i,a)}var sc=An({batchNormalization3d_:function(t,e,n,r,o,a){return void 0===r&&(r=.001),Qu(),ic(t,e,n,a,o,r)}}),uc=An({batchNorm3d_:ic});function cc(t,e,n,r,o,a){var i,s,u=gn(t,\"x\",\"batchNorm\"),c=gn(e,\"mean\",\"batchNorm\"),l=gn(n,\"variance\",\"batchNorm\");return null!=o&&(i=gn(o,\"scale\",\"batchNorm\")),null!=r&&(s=gn(r,\"offset\",\"batchNorm\")),C(4===u.rank,(function(){return\"Error in batchNorm4D: x must be rank 4 but got rank \"+u.rank+\".\"})),C(4===c.rank||1===c.rank,(function(){return\"Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank \"+c.rank+\".\"})),C(4===l.rank||1===l.rank,(function(){return\"Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank \"+l.rank+\".\"})),null!=i&&C(4===i.rank||1===i.rank,(function(){return\"Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank \"+i.rank+\".\"})),null!=s&&C(4===s.rank||1===s.rank,(function(){return\"Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank \"+s.rank+\".\"})),nc(u,c,l,s,i,a)}var lc=An({batchNormalization4d_:function(t,e,n,r,o,a){return void 0===r&&(r=.001),Qu(),cc(t,e,n,a,o,r)}}),hc=An({batchNorm4d_:cc});var fc=An({broadcastTo_:function(t,e){var n=gn(t,\"broadcastTo\",\"x\"),r=n.shape;if(e.some((function(t){return!(t>0)||t%1!=0})))throw new Error(\"broadcastTo(): Invalid broadcast shape [\"+e+\"].\");if(e.length<n.rank)throw new Error(\"broadcastTo(): shape.length=\"+e.length+\" < input.rank=\"+n.rank+\".\");if(e.length>n.rank){for(var o=n.shape.slice();o.length<e.length;)o.unshift(1);n=n.reshape(o)}for(var a=n.shape,i=Array.from(e),s=e.length-1;s>=0;s--)if(a[s]===e[s])i[s]=1;else if(1!==n.shape[s])throw new Error(\"broadcastTo(): [\"+r+\"] cannot be broadcast to [\"+e+\"].\");var u=i.map((function(t,e){return t>1?e:-1})).filter((function(t){return t>=0}));if(0===u.length)return n.clone();var c={x:n},l={shape:e,inputShape:a};return Lt.runKernelFunc((function(t){return t.tile(n,i)}),c,(function(t){return{x:function(){return t.sum(u,!0)}}}),Sr,l)}});var dc=An({clone_:function(t){var e=gn(t,\"x\",\"clone\",null);return Lt.runKernelFunc((function(){return Lt.makeTensorFromDataId(e.dataId,e.shape,e.dtype)}),{x:e},null,Tr)}});var pc=An({logicalAnd_:function(t,e){var n=gn(t,\"a\",\"logicalAnd\",\"bool\"),r=gn(e,\"b\",\"logicalAnd\",\"bool\");return Pr(n.shape,r.shape),Lt.runKernelFunc((function(t){return t.logicalAnd(n,r)}),{a:n,b:r},null,\"LogicalAnd\")}}),vc=An({logicalNot_:function(t){var e=gn(t,\"x\",\"logicalNot\",\"bool\");return Lt.runKernelFunc((function(t){return t.logicalNot(e)}),{$x:e})}}),gc=An({logicalOr_:function(t,e){var n=gn(t,\"a\",\"logicalOr\",\"bool\"),r=gn(e,\"b\",\"logicalOr\",\"bool\");return Pr(n.shape,r.shape),Lt.runKernelFunc((function(t){return t.logicalOr(n,r)}),{$a:n,$b:r})}}),mc=An({logicalXor_:function(t,e){var n=gn(t,\"a\",\"logicalXor\",\"bool\"),r=gn(e,\"b\",\"logicalXor\",\"bool\");return Pr(n.shape,r.shape),gc(t,e).logicalAnd(pc(t,e).logicalNot())}}),yc=An({where_:function(t,e,n){var r=gn(e,\"a\",\"where\"),o=gn(n,\"b\",\"where\"),a=gn(t,\"condition\",\"where\",\"bool\");return E(r.shape,o.shape,\"Error in where: \"),1===a.rank?C(a.shape[0]===r.shape[0],(function(){return\"The first dimension of `a` must match the size of `condition`.\"})):E(a.shape,o.shape,\"Error in where: \"),Lt.runKernelFunc((function(t,e){var n=t.select(a,r,o);return e([a]),n}),{$condition:a,$a:r,$b:o},(function(t,e){var n=e[0];return{$condition:function(){return Xn(n).toFloat()},$a:function(){return t.mul(n.cast(t.dtype))},$b:function(){return t.mul(n.logicalNot().cast(t.dtype))}}}))}}),xc=function(t){return n(this,void 0,void 0,(function(){var e,n,o;return r(this,(function(r){switch(r.label){case 0:return[4,(e=gn(t,\"condition\",\"whereAsync\",\"bool\")).data()];case 1:return n=r.sent(),o=Ga(e.shape,n),t!==e&&e.dispose(),[2,o]}}))}))};var bc=An({divNoNan_:function(t,e){var n,r=gn(t,\"a\",\"div\"),o=gn(e,\"b\",\"div\");r=(n=Nt(r,o))[0],o=n[1];var a=Bo(r,o),i=Xn(a),s=o.equal(i);return yc(s,i,a)}});var wc=An({tile_:function(t,e){var n=gn(t,\"x\",\"tile\",null);C(n.rank===e.length,(function(){return\"Error in transpose: rank of input \"+n.rank+\" must match length of reps \"+e+\".\"}));var r=[n],o={x:n},a={reps:e};return Lt.runKernelFunc((function(t,r){var o=t.tile(n,e);return r([n]),o}),o,null,Dr,a,r)}});var Cc=An({eye_:function(t,e,n,r){void 0===r&&(r=\"float32\"),null==e&&(e=t);for(var o=er([t,e],r),a=t<=e?t:e,i=0;i<a;++i)o.set(1,i,i);var s=o.toTensor().as2D(t,e);if(null==n)return s;if(1===n.length)return wc(sr(s,0),[n[0],1,1]);if(2===n.length)return wc(sr(sr(s,0),0),[n[0],n[1],1,1]);if(3===n.length)return wc(sr(sr(sr(s,0),0),0),[n[0],n[1],n[2],1,1]);throw new Error(\"eye() currently supports only 1D and 2D batchShapes, but received \"+n.length+\"D.\")}});var Ec=An({multinomial_:function(t,e,n,r){void 0===r&&(r=!1);var o=gn(t,\"logits\",\"multinomial\"),a=o.size,i=o.rank;if(a<2)throw new Error(\"Error in multinomial: you need at least 2 outcomes, but got \"+a+\".\");if(i>2)throw new Error(\"Rank of probabilities must be 1 or 2, but is \"+i);n=n||Math.random();var s=1===i?o.as2D(1,-1):o,u=Lt.runKernelFunc((function(t){return t.multinomial(s,r,e,n)}),{logits2D:s});return 1===i?u.as1D():u}});var Rc=An({oneHot_:function(t,e,n,r){if(void 0===n&&(n=1),void 0===r&&(r=0),e<2)throw new Error(\"Error in oneHot: depth must be >=2, but it is \"+e);var o=gn(t,\"indices\",\"oneHot\",\"int32\"),a=o.shape.concat([e]),i={indices:o=o.flatten()},s={depth:e,onValue:n,offValue:r};return Lt.runKernelFunc((function(t,a){return a([o]),t.oneHot(o,e,n,r)}),i,null,Ar,s).reshape(a)}});var Ic=An({pad_:function(t,e,n){void 0===n&&(n=0);var r=gn(t,\"x\",\"pad\");if(0===r.rank)throw new Error(\"pad(scalar) is not defined. Pass non-scalar to pad\");var o={paddings:e,constantValue:n},a={x:r};return Lt.runKernelFunc((function(t,o){return o([r]),t.pad(r,e,n)}),a,null,Nr,o)}});var kc=An({pad1d_:function(t,e,n){return void 0===n&&(n=0),C(2===e.length,(function(){return\"Invalid number of paddings. Must be length of 2.\"})),Ic(t,[e],n)}});var Sc=An({pad2d_:function(t,e,n){return void 0===n&&(n=0),C(2===e.length&&2===e[0].length&&2===e[1].length,(function(){return\"Invalid number of paddings. Must be length of 2 each.\"})),Ic(t,e,n)}});var Ac=An({pad3d_:function(t,e,n){return void 0===n&&(n=0),C(3===e.length&&2===e[0].length&&2===e[1].length&&2===e[2].length,(function(){return\"Invalid number of paddings. Must be length of 2 each.\"})),Ic(t,e,n)}});var Tc=An({pad4d_:function(t,e,n){return void 0===n&&(n=0),C(4===e.length&&2===e[0].length&&2===e[1].length&&2===e[2].length&&2===e[3].length,(function(){return\"Invalid number of paddings. Must be length of 2 each.\"})),Ic(t,e,n)}});var Dc=An({rand_:function(t,e,n){var r=k(t),o=null;if(null==n||\"float32\"===n)o=new Float32Array(r);else if(\"int32\"===n)o=new Int32Array(r);else{if(\"bool\"!==n)throw new Error(\"Unknown data type \"+n);o=new Uint8Array(r)}for(var a=0;a<r;a++)o[a]=e();return Lt.makeTensor(o,t,n)}}),Nc=.001,Fc=.1;function _c(){return 32===Lt.backend.floatPrecision()?Nc:Fc}function Oc(t,e,n){var r=!0;if((V(t)||V(e))&&(r=!1),V(t)&&V(e)&&(r=!0),r){var o=t.constructor.name,a=e.constructor.name;if(o!==a)throw new Error(\"Arrays are of different type. Actual: \"+o+\". Expected: \"+a)}if(Array.isArray(t)&&Array.isArray(e)){var i=pn(t),s=pn(e);if(!S(i,s))throw new Error(\"Arrays have different shapes. Actual: [\"+i+\"]. Expected: [\"+s+\"]\")}var u=V(t)?t:I(t),c=V(e)?e:I(e);if(u.length!==c.length)throw new Error(\"Arrays have different lengths actual: \"+u.length+\" vs expected: \"+c.length+\".\\nActual:   \"+u+\".\\nExpected: \"+c+\".\");for(var l=0;l<c.length;++l){var h=u[l],f=c[l];if(!n(h,f))throw new Error(\"Arrays differ: actual[\"+l+\"] = \"+h+\", expected[\"+l+\"] = \"+f+\".\\nActual:   \"+u+\".\\nExpected: \"+c+\".\")}}function Mc(t,e,n){return!isFinite(t)&&!isFinite(e)||!(isNaN(t)||isNaN(e)||Math.abs(t-e)>n)}var Bc=Object.freeze({TEST_EPSILON_FLOAT16:Fc,expectArraysClose:function(t,e,n){return null==n&&(n=_c()),Oc(t,e,(function(t,e){return Mc(t,e,n)}))},testEpsilon:_c,expectPromiseToFail:function(t,e){t().then((function(){return e.fail()}),(function(){return e()}))},expectArraysEqual:function(t,e){var n=\"string\"==typeof e||\"number\"==typeof e||\"boolean\"==typeof e?[e]:e;return H(t)||H(t[0])||H(e)||H(e[0])?Oc(t,n,(function(t,e){return t==e})):Oc(t,e,(function(t,e){return Mc(t,e,0)}))},expectNumbersClose:function(t,e,n){if(null==n&&(n=_c()),!Mc(t,e,n))throw new Error(\"Numbers differ: actual === \"+t+\", expected === \"+e)},expectValuesInRange:function(t,e,n){for(var r=0;r<t.length;r++)if(t[r]<e||t[r]>n)throw new Error(\"Value out of range:\"+t[r]+\" low: \"+e+\", high: \"+n)},expectArrayBuffersEqual:function(t,e){expect(new Float32Array(t)).toEqual(new Float32Array(e))}}),Pc=function(){function t(t,e,n,r,o){this.mean=t,this.stdDev=e,this.dtype=n,this.nextVal=NaN,this.truncated=r,this.truncated&&(this.upper=this.mean+2*this.stdDev,this.lower=this.mean-2*this.stdDev);var a=o||Math.random();this.random=Yu(a.toString())}return t.prototype.nextValue=function(){if(!isNaN(this.nextVal)){var t=this.nextVal;return this.nextVal=NaN,t}for(var e,n,r=!1;!r;){var o=void 0,a=void 0,i=void 0;do{i=(o=2*this.random()-1)*o+(a=2*this.random()-1)*a}while(i>=1||0===i);var s=Math.sqrt(-2*Math.log(i)/i);e=this.mean+this.stdDev*o*s,n=this.mean+this.stdDev*a*s,this.truncated&&!this.isValidTruncated(e)||(r=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(e)},t.prototype.convertValue=function(t){return null==this.dtype||\"float32\"===this.dtype?t:Math.round(t)},t.prototype.isValidTruncated=function(t){return t<=this.upper&&t>=this.lower},t}(),Lc=function(){function t(t,e,n,r){this.alpha=t,this.beta=1/e,this.dtype=n;var o=r||Math.random();this.randu=Yu(o.toString()),this.randn=new Pc(0,1,n,!1,this.randu()),this.d=t<1?t+2/3:t-1/3,this.c=1/Math.sqrt(9*this.d)}return t.prototype.nextValue=function(){for(var t,e,n,r,o,a;;){do{r=this.randn.nextValue(),a=1+this.c*r}while(a<=0);if(a*=a*a,e=1-.331*(t=r*r)*t,n=.5*t+this.d*(1-a+Math.log(a)),(o=this.randu())<e||Math.log(o)<n)break}return a=1/this.beta*this.d*a,this.alpha<1&&(a*=Math.pow(this.randu(),1/this.alpha)),this.convertValue(a)},t.prototype.convertValue=function(t){return\"float32\"===this.dtype?t:Math.round(t)},t}(),Wc=function(){function t(t,e,n,r){var o=this;if(void 0===t&&(t=0),void 0===e&&(e=1),this.canReturnFloat=function(){return null==o.dtype||\"float32\"===o.dtype},this.min=t,this.range=e-t,this.dtype=n,null==r&&(r=Math.random()),\"number\"==typeof r&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(\"The difference between \"+t+\" - \"+e+\" <= 1 and dtype is not float\");this.random=Yu(r)}return t.prototype.convertValue=function(t){return this.canReturnFloat()?t:Math.round(t)},t.prototype.nextValue=function(){return this.convertValue(this.min+this.range*this.random())},t}();var Uc=An({randomGamma_:function(t,e,n,r,o){if(void 0===n&&(n=1),void 0===r&&(r=\"float32\"),null==n&&(n=1),null==r&&(r=\"float32\"),\"float32\"!==r&&\"int32\"!==r)throw new Error(\"Unsupported data type \"+r);for(var a=new Lc(e,n,r,o),i=er(t,r),s=0;s<i.values.length;s++)i.values[s]=a.nextValue();return i.toTensor()}});var Vc=An({randomNormal_:function(t,e,n,r,o){if(void 0===e&&(e=0),void 0===n&&(n=1),null!=r&&\"bool\"===r)throw new Error(\"Unsupported data type \"+r);for(var a=new Pc(e,n,r,!1,o),i=er(t,r),s=0;s<i.values.length;s++)i.values[s]=a.nextValue();return i.toTensor()}});var zc=An({randomUniform_:function(t,e,n,r,o){void 0===e&&(e=0),void 0===n&&(n=1),void 0===r&&(r=\"float32\");for(var a=er(t,r),i=new Wc(e,n,null,o),s=0;s<a.values.length;s++)a.values[s]=i.nextValue();return a.toTensor()}});var Gc=An({square_:function(t){var e=gn(t,\"x\",\"square\"),n=[e];return Lt.runKernelFunc((function(t,n){return n([e]),t.square(e)}),{x:e},null,\"Square\",{},n,[])}});var Hc=An({squaredDifference_:function(t,e){var n,r=gn(t,\"a\",\"squaredDifference\"),o=gn(e,\"b\",\"squaredDifference\");n=Nt(r,o),r=n[0],o=n[1],Pr(r.shape,o.shape);var a={a:r,b:o},i=[r,o];return Lt.runKernelFunc((function(t,e){var n=t.squaredDifference(r,o);return e([r,o]),n}),a,(function(t,e){var n=e[0],r=e[1],o=On(2);return{a:function(){return t.mul(n.sub(r).mul(o))},b:function(){return t.mul(r.sub(n).mul(o))}}}),Er,{},i,[])}});var qc=An({truncatedNormal_:function(t,e,n,r,o){if(void 0===e&&(e=0),void 0===n&&(n=1),null!=r&&\"bool\"===r)throw new Error(\"Unsupported data type $ { dtype }\");for(var a=new Pc(e,n,r,!0,o),i=er(t,r),s=0;s<i.values.length;s++)i.values[s]=a.nextValue();return i.toTensor()}});var Kc=An({equal_:function(t,e){var n,r=gn(t,\"a\",\"equal\"),o=gn(e,\"b\",\"equal\");return n=Nt(r,o),r=n[0],o=n[1],Pr(r.shape,o.shape),Lt.runKernelFunc((function(t){return t.equal(r,o)}),{$a:r,$b:o})}}),jc=An({equalStrict_:function(t,e){var n=gn(t,\"a\",\"equalStrict\"),r=gn(e,\"b\",\"equalStrict\");return E(n.shape,r.shape,\"Error in equalStrict: \"),n.equal(r)}}),Xc=An({greater_:function(t,e){var n,r=gn(t,\"a\",\"greater\"),o=gn(e,\"b\",\"greater\");return n=Nt(r,o),r=n[0],o=n[1],Pr(r.shape,o.shape),Lt.runKernelFunc((function(t){return t.greater(r,o)}),{a:r,b:o},null,\"Greater\")}}),Yc=An({greaterEqual_:function(t,e){var n,r=gn(t,\"a\",\"greaterEqual\"),o=gn(e,\"b\",\"greaterEqual\");return n=Nt(r,o),r=n[0],o=n[1],Pr(r.shape,o.shape),Lt.runKernelFunc((function(t,e){var n=t.greaterEqual(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){return Xn(n)},b:function(){return Xn(r)}}}),\"GreaterEqual\")}}),$c=An({greaterEqualStrict_:function(t,e){var n=gn(t,\"a\",\"greaterEqualStrict\"),r=gn(e,\"b\",\"greaterEqualStrict\");return E(n.shape,r.shape,\"Error in greaterEqualStrict: \"),n.greaterEqual(r)}}),Qc=An({greaterStrict_:function(t,e){var n=gn(t,\"a\",\"greaterStrict\"),r=gn(e,\"b\",\"greaterStrict\");return E(n.shape,r.shape,\"Error in greaterStrict: \"),n.greater(r)}}),Jc=An({less_:function(t,e){var n,r=gn(t,\"a\",\"less\"),o=gn(e,\"b\",\"less\");return n=Nt(r,o),r=n[0],o=n[1],Pr(r.shape,o.shape),Lt.runKernelFunc((function(t){return t.less(r,o)}),{a:r,b:o},null,\"Less\")}}),Zc=An({lessEqual_:function(t,e){var n,r=gn(t,\"a\",\"lessEqual\"),o=gn(e,\"b\",\"lessEqual\");return n=Nt(r,o),r=n[0],o=n[1],Pr(r.shape,o.shape),Lt.runKernelFunc((function(t,e){var n=t.lessEqual(r,o);return e([r,o]),n}),{a:r,b:o},null,\"LessEqual\")}}),tl=An({lessEqualStrict_:function(t,e){var n=gn(t,\"a\",\"lessEqualStrict\"),r=gn(e,\"b\",\"lessEqualStrict\");return E(n.shape,r.shape,\"Error in lessEqualStrict: \"),n.lessEqual(r)}}),el=An({lessStrict_:function(t,e){var n=gn(t,\"a\",\"lessStrict\"),r=gn(e,\"b\",\"lessStrict\");return E(n.shape,r.shape,\"Error in lessStrict: \"),n.less(r)}}),nl=An({notEqual_:function(t,e){var n,r=gn(t,\"a\",\"notEqual\"),o=gn(e,\"b\",\"notEqual\");return n=Nt(r,o),r=n[0],o=n[1],Pr(r.shape,o.shape),Lt.runKernelFunc((function(t){return t.notEqual(r,o)}),{a:r,b:o},null,\"NotEqual\")}}),rl=An({notEqualStrict_:function(t,e){var n=gn(t,\"a\",\"notEqualStrict\"),r=gn(e,\"b\",\"notEqualStrict\");return E(n.shape,r.shape,\"Error in notEqualStrict: \"),n.notEqual(r)}});function ol(t,e){for(var n=[],r=t;r<e;++r)n.push(r);return n}function al(t){for(var e=[],n=0;n<t.length;++n)for(var r=0;r<t[n].length;++r)e.push(t[n][r]);return e}var il=An({gather_:function(t,e,n){void 0===n&&(n=0);var r=gn(t,\"x\",\"gather\"),o=gn(e,\"indices\",\"gather\",\"int32\");n=O(n,r.shape)[0];var a=function(t,e,n){for(var r=t.shape[n],o=[],a=1,i=1,s=0;s<n;s++)o.push(t.shape[s]),a*=t.shape[s];for(s=0;s<e.rank;s++)o.push(e.shape[s]);for(s=n+1;s<t.rank;s++)o.push(t.shape[s]),i*=t.shape[s];return{batchSize:a,sliceSize:i,dimSize:r,outputShape:o}}(r,o,n);return Lt.runKernelFunc((function(t,e){var a=t.gather(r,o.flatten(),n);return e([o]),a}),{x:r,indices:o},(function(t,e){var o=e[0];return{x:function(){var e=r.shape,a=o.size,i=e.slice(0,n),s=i.length,u=e.slice(n,e.length).slice(1),c=u.length,l=ol(0,s),h=ol(s+1,s+1+c),f=al([i,[a],u]),d=t.reshape(f),p=o.reshape([a]),v=al([[s],l,h]),g=d.transpose(v),m=sl(g,p,r.shape[n]),y=Rn(v);return m=m.transpose(y)},indices:function(){return o}}}),\"Gather\",{axis:n}).reshape(a.outputShape)}}),sl=An({unsortedSegmentSum_:function(t,e,n){var r=gn(t,\"x\",\"unsortedSegmentSum\"),o=gn(e,\"segmentIds\",\"unsortedSegmentSum\",\"int32\");return C(A(n),(function(){return\"numSegments must be of dtype int\"})),Lt.runKernelFunc((function(t,e){var a=t.unsortedSegmentSum(r,o,n);return e([o]),a}),{$x:r},(function(t,e){var n=e[0];return{$x:function(){return function(t,e){for(var n=Eo(e,Xn(e)),r=il(t,n),o=Yc(e,On(0,\"int32\")),a=r.rank-o.rank,i=0;i<a;++i)o=sr(o,i+1);o=pc(o,zn(r.shape,\"bool\"));var s=Xn(r);return yc(o,r,s)}(t,n)}}}))}});var ul=function(t,e,o){return n(this,void 0,void 0,(function(){var n,a,i,s,u,c,l,h,f,d,p,v,g;return r(this,(function(r){switch(r.label){case 0:for(n=gn(t,\"tensor\",\"boolMask\"),a=gn(e,\"mask\",\"boolMask\",\"bool\"),i=null==o?0:o,s=a.rank,u=n.shape,C(s>0,(function(){return\"mask cannot be scalar\"})),E(u.slice(i,i+s),a.shape,\"mask's shape must match the first K dimensions of tensor's shape,\"),c=1,l=i;l<i+s;l++)c*=u[l];return h=u.slice(0,i).concat([c],u.slice(i+s)),f=n.reshape(h),d=a.reshape([-1]),[4,xc(d)];case 1:return p=r.sent(),v=p.squeeze([1]),g=il(f,v,i),t!==n&&n.dispose(),e!==a&&a.dispose(),v.dispose(),f.dispose(),d.dispose(),p.dispose(),[2,g]}}))}))};function cl(t,e,n,r,o,a,i){void 0===a&&(a=\"NHWC\"),C(t.length===e.rank,(function(){return\"Length of inShape (\"+t.length+\") and rank of dy (\"+e.rank+\") must match\"}));var s=t,u=e,c=!1;3===e.rank&&(c=!0,u=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]),s=[1,t[0],t[1],t[2]]),C(4===s.length,(function(){return\"Error in conv2dDerInput: inShape must be length 4, but got length \"+s.length+\".\"})),C(4===u.rank,(function(){return\"Error in conv2dDerInput: dy must be rank 4, but got rank \"+u.rank})),C(4===n.rank,(function(){return\"Error in conv2dDerInput: filter must be rank 4, but got rank \"+n.rank}));var l=\"NHWC\"===a?s[3]:s[1],h=\"NHWC\"===a?u.shape[3]:u.shape[1];C(l===n.shape[2],(function(){return\"Error in conv2dDerInput: depth of input (\"+l+\") must match input depth for filter \"+n.shape[2]+\".\"})),C(h===n.shape[3],(function(){return\"Error in conv2dDerInput: depth of output (\"+h+\") must match output depth for filter \"+n.shape[3]+\".\"})),null!=i&&C(A(o),(function(){return\"Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode \"+i+\" but got pad \"+o+\".\"}));var f=Ea(a),d=pa(s,n.shape,r,1,o,i,!1,f),p=Lt.runKernelFunc((function(t,e){var r=t.conv2dDerInput(u,n,d);return e([n,u]),r}),{dy4D:u,filter:n},(function(t,e){var n=e[0],s=e[1];return{dy4D:function(){return dl(t,n,r,o,a,1,i)},filter:function(){return vl(t,s,n.shape,r,o,a,i)}}}));return c?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}function ll(t){var e=function(t){return\"number\"==typeof t?[t,t,t]:2===t.length?[t[0],t[1],1]:t}(t),n=e[0],r=e[1],o=e[2];return 1===n&&1===r&&1===o}function hl(t,e,n,r,o){C(t.length===e.rank,(function(){return\"Length of inShape (\"+t.length+\") and rank of dy (\"+e.rank+\") must match\"}));var a=t,i=e,s=!1;4===e.rank&&(s=!0,i=e.as5D(1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]),a=[1,t[0],t[1],t[2],t[3]]);var u=a[4],c=i.shape[4];C(5===a.length,(function(){return\"Error in conv3dDerInput: inShape must be length 5, but got length \"+a.length+\".\"})),C(5===i.rank,(function(){return\"Error in conv3dDerInput: dy must be rank 5, but got rank \"+i.rank})),C(5===n.rank,(function(){return\"Error in conv3dDerInput: filter must be rank 5, but got rank \"+n.rank})),C(u===n.shape[3],(function(){return\"Error in conv3dDerInput: depth of input (\"+u+\") must match input depth for filter \"+n.shape[3]+\".\"})),C(c===n.shape[4],(function(){return\"Error in conv3dDerInput: depth of output (\"+c+\") must match output depth for filter \"+n.shape[4]+\".\"}));var l=va(a,n.shape,r,1,o),h=Lt.runKernelFunc((function(t){return t.conv3dDerInput(i,n,l)}),{dy5D:i});return s?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}var fl=An({conv1d_:function(t,e,n,r,o,a,i){void 0===o&&(o=\"NWC\"),void 0===a&&(a=1);var s=gn(t,\"x\",\"conv1d\"),u=gn(e,\"filter\",\"conv1d\"),c=s,l=!1;2===s.rank&&(l=!0,c=s.as3D(1,s.shape[0],s.shape[1])),C(3===c.rank,(function(){return\"Error in conv1d: input must be rank 3, but got rank \"+c.rank+\".\"})),C(3===u.rank,(function(){return\"Error in conv1d: filter must be rank 3, but got rank \"+u.rank+\".\"})),null!=i&&C(A(r),(function(){return\"Error in conv1d: pad must be an integer when using, dimRoundingMode \"+i+\" but got pad \"+r+\".\"})),C(c.shape[2]===u.shape[1],(function(){return\"Error in conv1d: depth of input (\"+c.shape[2]+\") must match input depth for filter \"+u.shape[1]+\".\"})),C(Ca(n,a),(function(){return\"Error in conv1D: Either stride or dilation must be 1. Got stride \"+n+\" and dilation '\"+a+\"'\"})),C(\"NWC\"===o,(function(){return\"Error in conv1d: got dataFormat of \"+o+\" but only NWC is currently supported.\"}));var h=u.as4D(1,u.shape[0],u.shape[1],u.shape[2]),f=c.as4D(c.shape[0],1,c.shape[1],c.shape[2]),d=dl(f,h,[1,n],r,\"NHWC\",[1,a],i);return l?d.as2D(d.shape[2],d.shape[3]):d.as3D(d.shape[0],d.shape[2],d.shape[3])}}),dl=An({conv2d_:function(t,e,n,r,o,a,i){void 0===o&&(o=\"NHWC\"),void 0===a&&(a=[1,1]);var s=gn(t,\"x\",\"conv2d\"),u=gn(e,\"filter\",\"conv2d\"),c=s,l=!1;3===s.rank&&(l=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),C(4===c.rank,(function(){return\"Error in conv2d: input must be rank 4, but got rank \"+c.rank+\".\"})),C(4===u.rank,(function(){return\"Error in conv2d: filter must be rank 4, but got rank \"+u.rank+\".\"})),null!=i&&C(A(r),(function(){return\"Error in conv2d: pad must be an integer when using, dimRoundingMode \"+i+\" but got pad \"+r+\".\"}));var h=\"NHWC\"===o?c.shape[3]:c.shape[1];C(h===u.shape[2],(function(){return\"Error in conv2d: depth of input (\"+h+\") must match input depth for filter \"+u.shape[2]+\".\"})),C(Ca(n,a),(function(){return\"Error in conv2D: Either strides or dilations must be 1. Got strides \"+n+\" and dilations '\"+a+\"'\"}));var f=Ea(o),d=pa(c.shape,u.shape,n,a,r,i,!1,f),p=[u,c],v=Lt.runKernelFunc((function(t,e){var n=t.conv2d(c,u,d);return e([u,c]),n}),{x:c,filter:u},(function(t,e){var i=e,s=i[0],u=i[1];return C(wa(a),(function(){return\"Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '\"+a+\"'\"})),{x:function(){return gl(u.shape,t,s,n,r,o)},filter:function(){return vl(u,t,s.shape,n,r,o)}}}),\"Conv2D\",d,p);return l?v.as3D(v.shape[1],v.shape[2],v.shape[3]):v}}),pl=An({conv3d_:function(t,e,n,r,o,a){void 0===o&&(o=\"NDHWC\"),void 0===a&&(a=[1,1,1]);var i=gn(t,\"x\",\"conv3d\"),s=gn(e,\"filter\",\"conv3d\"),u=i,c=!1;4===i.rank&&(c=!0,u=i.as5D(1,i.shape[0],i.shape[1],i.shape[2],i.shape[3])),C(5===u.rank,(function(){return\"Error in conv3d: input must be rank 5, but got rank \"+u.rank+\".\"})),C(5===s.rank,(function(){return\"Error in conv3d: filter must be rank 5, but got rank \"+s.rank+\".\"})),C(u.shape[4]===s.shape[3],(function(){return\"Error in conv3d: depth of input (\"+u.shape[4]+\") must match input depth for filter \"+s.shape[3]+\".\"})),C(function(t,e){return ll(t)||ll(e)}(n,a),(function(){return\"Error in conv3D: Either strides or dilations must be 1. Got strides \"+n+\" and dilations '\"+a+\"'\"})),C(\"NDHWC\"===o,(function(){return\"Error in conv3d: got dataFormat of \"+o+\" but only NDHWC is currently supported.\"}));var l=va(u.shape,s.shape,n,a,r),h=Lt.runKernelFunc((function(t,e){var n=t.conv3d(u,s,l);return e([u,s]),n}),{x:u,$filter:s},(function(t,e){C(ll(a),(function(){return\"Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '\"+a+\"'\"}));var o=e[0],i=e[1];return{x:function(){return hl(o.shape,t,i,n,r)},$filter:function(){return function(t,e,n,r,o){var a=t;4===t.rank&&(a=t.as5D(1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]));var i=e;4===i.rank&&(i=e.as5D(1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]));C(5===a.rank,(function(){return\"Error in conv3dDerFilter: input must be rank 5, but got shape \"+a.shape+\".\"})),C(5===i.rank,(function(){return\"Error in conv3dDerFilter: dy must be rank 5, but got shape \"+i.shape+\".\"})),C(5===n.length,(function(){return\"Error in conv3dDerFilter: filterShape must be length 5, but got \"+n+\".\"})),C(a.shape[4]===n[3],(function(){return\"Error in conv3dDerFilter: depth of input \"+a.shape[4]+\") must match input depth in filter (\"+n[3]+\".\"})),C(i.shape[4]===n[4],(function(){return\"Error in conv3dDerFilter: depth of dy (\"+i.shape[4]+\") must match output depth for filter (\"+n[4]+\").\"}));var s=va(a.shape,n,r,1,o);return Lt.runKernelFunc((function(t){return t.conv3dDerFilter(a,i,s)}),{x5D:a,dy5D:i})}(o,t,i.shape,n,r)}}}));return c?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}}),vl=An({conv2dDerFilter_:function(t,e,n,r,o,a,i){void 0===a&&(a=\"NHWC\");var s=t;3===t.rank&&(s=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var u=e;3===u.rank&&(u=e.as4D(1,e.shape[0],e.shape[1],e.shape[2])),C(4===s.rank,(function(){return\"Error in conv2dDerFilter: input must be rank 4, but got shape \"+s.shape+\".\"})),C(4===u.rank,(function(){return\"Error in conv2dDerFilter: dy must be rank 4, but got shape \"+u.shape+\".\"})),C(4===n.length,(function(){return\"Error in conv2dDerFilter: filterShape must be length 4, but got \"+n+\".\"}));var c=\"NHWC\"===a?s.shape[3]:s.shape[1],l=\"NHWC\"===a?u.shape[3]:u.shape[1];C(c===n[2],(function(){return\"Error in conv2dDerFilter: depth of input \"+c+\") must match input depth in filter (\"+n[2]+\".\"})),C(l===n[3],(function(){return\"Error in conv2dDerFilter: depth of dy (\"+l+\") must match output depth for filter (\"+n[3]+\").\"})),null!=i&&C(A(o),(function(){return\"Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode \"+i+\" but got pad \"+o+\".\"}));var h=Ea(a),f=pa(s.shape,n,r,1,o,i,!1,h);return Lt.runKernelFunc((function(t){return t.conv2dDerFilter(s,u,f)}),{x4D:s,dy4D:u})}}),gl=An({conv2dDerInput_:cl}),ml=An({depthwiseConv2d_:function(t,e,n,r,o,a,i){void 0===o&&(o=\"NHWC\"),void 0===a&&(a=[1,1]);var s=gn(t,\"x\",\"depthwiseConv2d\"),u=gn(e,\"filter\",\"depthwiseConv2d\"),c=s,l=!1;3===s.rank&&(l=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),C(4===c.rank,(function(){return\"Error in depthwiseConv2d: input must be rank 4, but got rank \"+c.rank+\".\"})),C(4===u.rank,(function(){return\"Error in depthwiseConv2d: filter must be rank 4, but got rank \"+u.rank+\".\"})),C(c.shape[3]===u.shape[2],(function(){return\"Error in depthwiseConv2d: number of input channels (\"+c.shape[3]+\") must match the inChannels dimension in filter \"+u.shape[2]+\".\"})),null==a&&(a=[1,1]),C(Ca(n,a),(function(){return\"Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides \"+n+\" and dilations '\"+a+\"'\"})),null!=i&&C(A(r),(function(){return\"Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode \"+i+\" but got pad \"+r+\".\"}));var h=pa(c.shape,u.shape,n,a,r,i,!0),f=[c,u],d=Lt.runKernelFunc((function(t,e){var n=t.depthwiseConv2D(c,u,h);return e([c,u]),n}),{x:c,filter:u},(function(t,e){C(wa(a),(function(){return\"Error in gradient of depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '\"+a+\"'\"}));var n=e[0],r=e[1];return{x:function(){return yl(n.shape,t,r,h)},filter:function(){return xl(n,t,r.shape,h)}}}),\"DepthwiseConv2dNative\",h,f);return l?d.as3D(d.shape[1],d.shape[2],d.shape[3]):d}}),yl=An({depthwiseConv2dDerInput_:function(t,e,n,r){var o=e,a=!1;3===e.rank&&(a=!0,o=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]));var i=Lt.runKernelFunc((function(t){return t.depthwiseConv2DDerInput(o,n,r)}),{dy4D:o});return a?i.as3D(i.shape[1],i.shape[2],i.shape[3]):i}}),xl=An({depthwiseConv2dDerFilter_:function(t,e,n,r){var o=t;3===t.rank&&(o=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var a=e;return 3===a.rank&&(a=e.as4D(1,e.shape[0],e.shape[1],e.shape[2])),Lt.runKernelFunc((function(t){return t.depthwiseConv2DDerFilter(o,a,r)}),{x4D:o,dy4D:a})}}),bl=An({separableConv2d_:function(t,e,n,r,o,a,i){void 0===a&&(a=[1,1]),void 0===i&&(i=\"NHWC\");var s=gn(t,\"x\",\"separableConv2d\"),u=gn(e,\"depthwiseFilter\",\"separableConv2d\"),c=gn(n,\"pointwiseFilter\",\"separableConv2d\"),l=s,h=!1;if(3===s.rank&&(h=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),\"NCHW\"===i)throw new Error(\"separableConv2d currently does not support dataFormat NCHW; only NHWC is supported\");C(4===l.rank,(function(){return\"Error in separableConv2d: input must be rank 4, but got rank \"+l.rank+\".\"})),C(4===u.rank,(function(){return\"Error in separableConv2d: depthwise filter must be rank 4, but got rank \"+u.rank+\".\"})),C(4===c.rank,(function(){return\"Error in separableConv2d: pointwise filter must be rank 4, but got rank \"+u.rank+\".\"})),C(1===c.shape[0],(function(){return\"Error in separableConv2d: the first dimension of pointwise filter  must be 1, but got \"+c.shape[0]+\".\"})),C(1===c.shape[1],(function(){return\"Error in separableConv2d: the second dimension of pointwise filter must be 1, but got \"+c.shape[1]+\".\"}));var f=u.shape[2],d=u.shape[3];C(c.shape[2]===f*d,(function(){return\"Error in separableConv2d: the third dimension of pointwise filter must be \"+f*d+\", but got \"+c.shape[2]+\".\"}));var p=ml(l,u,r,o,i,a),v=dl(p,c,1,\"valid\",i);return h?v.as3D(v.shape[1],v.shape[2],v.shape[3]):v}}),wl=An({conv2dTranspose_:function(t,e,n,r,o,a){return cl(n,gn(t,\"x\",\"conv2dTranspose\"),gn(e,\"filter\",\"conv2dTranspose\"),r,o,\"NHWC\",a)}}),Cl=An({conv3dTranspose_:function(t,e,n,r,o){return hl(n,gn(t,\"x\",\"conv3dTranspose\"),gn(e,\"filter\",\"conv3dTranspose\"),r,o)}});var El=An({matMul_:function(t,e,n,r){var o;void 0===n&&(n=!1),void 0===r&&(r=!1);var a=gn(t,\"a\",\"matMul\"),i=gn(e,\"b\",\"matMul\");o=Nt(a,i),a=o[0],i=o[1];var s=n?a.shape[a.rank-2]:a.shape[a.rank-1],u=r?i.shape[i.rank-1]:i.shape[i.rank-2],c=n?a.shape[a.rank-1]:a.shape[a.rank-2],l=r?i.shape[i.rank-2]:i.shape[i.rank-1],h=a.shape.slice(0,-2),f=i.shape.slice(0,-2),d=k(h),p=k(f);C(a.rank>=2&&i.rank>=2&&a.rank===i.rank,(function(){return\"Error in matMul: inputs must have the same rank of at least 2, got ranks \"+a.rank+\" and \"+i.rank+\".\"})),C(S(h,f),(function(){return\"Error in matMul: outer dimensions (\"+h+\") and (\"+f+\") of Tensors with shapes \"+a.shape+\" and \"+i.shape+\" must match.\"})),C(s===u,(function(){return\"Error in matMul: inner shapes (\"+s+\") and (\"+u+\") of Tensors with shapes \"+a.shape+\" and \"+i.shape+\" and transposeA=\"+n+\" and transposeB=\"+r+\" must match.\"}));var v=a.shape.slice(0,-2).concat([c,l]),g=n?a.as3D(d,s,c):a.as3D(d,c,s),m=r?i.as3D(p,l,u):i.as3D(p,u,l),y={transposeA:n,transposeB:r};return Lt.runKernelFunc((function(t,e){var o=t.batchMatMul(g,m,n,r);return e([g,m]),o}),{a:g,b:m},(function(t,e){var o=e,a=o[0],i=o[1];return n||r?!n&&r?{a:function(){return t.matMul(i,!1,!1)},b:function(){return t.matMul(a,!0,!1)}}:n&&!r?{a:function(){return i.matMul(t,!1,!0)},b:function(){return a.matMul(t,!1,!1)}}:{a:function(){return i.matMul(t,!0,!0)},b:function(){return t.matMul(a,!0,!0)}}:{a:function(){return t.matMul(i,!1,!0)},b:function(){return a.matMul(t,!0,!1)}}}),\"BatchMatMul\",y).reshape(v)}}),Rl=An({dot_:function(t,e){var n=gn(t,\"t1\",\"dot\"),r=gn(e,\"t2\",\"dot\");C(!(1!==n.rank&&2!==n.rank||1!==r.rank&&2!==r.rank),(function(){return\"Error in dot: inputs must all be rank 1 or 2, but got ranks \"+n.rank+\" and \"+r.rank+\".\"}));var o=1===n.rank?n.size:n.shape[1],a=1===r.rank?r.size:r.shape[0];return C(o===a,(function(){return\"Error in dot: inner dimensions of inputs must match, but got \"+o+\" and \"+a+\".\"})),1===n.rank&&1===r.rank?n.as2D(1,-1).matMul(r.as2D(-1,1)).asScalar():1===n.rank&&2===r.rank?n.as2D(1,-1).matMul(r.as2D(r.shape[0],r.shape[1])).as1D():2===n.rank&&1===r.rank?n.matMul(r.as2D(-1,1)).as1D():n.matMul(r.as2D(r.shape[0],r.shape[1]))}}),Il=An({outerProduct_:function(t,e){var n=gn(t,\"v1\",\"outerProduct\"),r=gn(e,\"v2\",\"outerProduct\");return C(1===n.rank&&1===r.rank,(function(){return\"Error in outerProduct: inputs must be rank 1, but got ranks \"+n.rank+\" and \"+r.rank+\".\"})),n.as2D(-1,1).matMul(r.as2D(1,-1))}});var kl=An({reverse_:function(t,e){var n=gn(t,\"x\",\"reverse\");if(0===n.rank)return n.clone();var r=O(e,n.shape);return Lt.runKernelFunc((function(t){return t.reverse(n,r)}),{$x:n},(function(t){return{$x:function(){return t.reverse(r)}}})).reshapeAs(n)}}),Sl=An({reverse1d_:function(t){var e=gn(t,\"x\",\"reverse\");return C(1===e.rank,(function(){return\"Error in reverse1D: x must be rank 1 but got rank \"+e.rank+\".\"})),kl(e,0)}}),Al=An({reverse2d_:function(t,e){var n=gn(t,\"x\",\"reverse\");return C(2===n.rank,(function(){return\"Error in reverse2D: x must be rank 2 but got rank \"+n.rank+\".\"})),kl(n,e)}}),Tl=An({reverse3d_:function(t,e){var n=gn(t,\"x\",\"reverse\");return C(3===n.rank,(function(){return\"Error in reverse3D: x must be rank 3 but got rank \"+n.rank+\".\"})),kl(n,e)}}),Dl=An({reverse4d_:function(t,e){var n=gn(t,\"x\",\"reverse\");return C(4===n.rank,(function(){return\"Error in reverse4D: x must be rank 4 but got rank \"+n.rank+\".\"})),kl(n,e)}});function Nl(t,e,n,r,o,a){var i=gn(t,\"x\",\"maxPool\"),s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),null==r&&(r=[1,1]),C(4===s.rank,(function(){return\"Error in maxPool: input must be rank 4 but got rank \"+s.rank+\".\"})),C(Ca(n,r),(function(){return\"Error in maxPool: Either strides or dilations must be 1. Got strides \"+n+\" and dilations '\"+r+\"'\"})),null!=a&&C(A(o),(function(){return\"Error in maxPool: pad must be an integer when using, dimRoundingMode \"+a+\" but got pad \"+o+\".\"}));var c=fa(s.shape,e,n,r,o,a);if(1===c.filterWidth&&1===c.filterHeight&&S(c.inShape,c.outShape))return i.clone();var l=[s],h=Lt.runKernelFunc((function(t,e){var n=t.maxPool(s,c);return e([s,n]),n}),{x:s},(function(t,a){var i=a[0],s=a[1];return{x:function(){return function(t,e,n,r,o,a,i,s){var u=gn(t,\"dy\",\"maxPoolBackprop\"),c=gn(e,\"input\",\"maxPoolBackprop\"),l=gn(n,\"output\",\"maxPoolBackprop\");C(c.rank===u.rank,(function(){return\"Rank of input (\"+c.rank+\") does not match rank of dy (\"+u.rank+\")\"})),null==a&&(a=[1,1]);C(Ca(o,a),(function(){return\"Error in maxPoolBackProp: Either strides or dilations must be 1. Got strides \"+o+\" and dilations '\"+a+\"'\"})),C(4===u.rank,(function(){return\"Error in maxPoolBackprop: dy must be rank 4 but got rank \"+u.rank+\".\"})),C(4===c.rank,(function(){return\"Error in maxPoolBackprop: input must be rank 4 but got rank \"+c.rank+\".\"})),null!=s&&C(A(i),(function(){return\"Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode \"+s+\" but got pad \"+i+\".\"}));var h=fa(c.shape,r,o,a,i,s);return Lt.runKernelFunc((function(t){return t.maxPoolBackprop(u,c,l,h)}),{$dy:u,$input:c})}(t,i,s,e,n,r,o)}}}),\"MaxPool\",c,l);return u?h.as3D(h.shape[1],h.shape[2],h.shape[3]):h}function Fl(t,e,n,r,o,a){var i=gn(t,\"x\",\"avgPool\",\"float32\");null==r&&(r=[1,1]),C(Ca(n,r),(function(){return\"Error in avgPool: Either strides or dilations must be 1. Got strides \"+n+\" and dilations '\"+r+\"'\"}));var s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),C(4===s.rank,(function(){return\"Error in avgPool: x must be rank 4 but got rank \"+s.rank+\".\"})),null!=a&&C(A(o),(function(){return\"Error in avgPool: pad must be an integer when using, dimRoundingMode \"+a+\" but got pad \"+o+\".\"}));var c=fa(s.shape,e,n,r,o,a);if(1===c.filterWidth&&1===c.filterHeight&&S(c.inShape,c.outShape))return i.clone();var l=Lt.runKernelFunc((function(t){return t.avgPool(s,c)}),{x:s},(function(t){return{x:function(){return function(t,e,n,r,o,a){var i=gn(t,\"dy\",\"avgPoolBackprop\"),s=gn(e,\"input\",\"avgPoolBackprop\");C(s.rank===i.rank,(function(){return\"Rank of input (\"+s.rank+\") does not match rank of dy (\"+i.rank+\")\"})),null==o&&(o=[1,1]);C(Ca(r,o),(function(){return\"Error in avgPoolBackprop: Either strides or dilations must be 1. Got strides \"+r+\" and dilations '\"+o+\"'\"}));var u=s,c=i,l=!1;3===s.rank&&(l=!0,u=s.as4D(1,s.shape[0],s.shape[1],s.shape[2]),c=i.as4D(1,i.shape[0],i.shape[1],i.shape[2]));C(4===c.rank,(function(){return\"Error in avgPoolBackprop: dy must be rank 4 but got rank \"+c.rank+\".\"})),C(4===u.rank,(function(){return\"Error in avgPoolBackprop: input must be rank 4 but got rank \"+u.rank+\".\"}));var h=fa(u.shape,n,r,o,a),f=Lt.runKernelFunc((function(t){return t.avgPoolBackprop(c,u,h)}),{dy4D:c,input4D:u});if(l)return f.as3D(f.shape[1],f.shape[2],f.shape[3]);return f}(t,s,e,n,r,o)}}}),\"AvgPool\",c);return l=l.cast(i.dtype),u?l.as3D(l.shape[1],l.shape[2],l.shape[3]):l}var _l=An({maxPool_:function(t,e,n,r,o){return Nl(t,e,n,1,r,o)}}),Ol=An({avgPool_:function(t,e,n,r,o){return Fl(t,e,n,1,r,o)}}),Ml=An({pool_:function(t,e,n,r,o,a){null==o&&(o=[1,1]),null==a&&(a=1),0===r&&(r=\"valid\");var i=gn(t,\"x\",\"maxPool\"),s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),C(Ca(a,o),(function(){return\"Error in pool: Either strides or dilations must be 1. Got strides \"+a+\" and dilations '\"+o+\"'\"}));var c,l=fa(s.shape,e,a,o,r),h=[l.dilationHeight,l.dilationWidth];c=\"same\"===r?function(t,e){var n=t.map((function(t,n){return t+(t-1)*(e[n]-1)})).map((function(t){return t-1})),r=n.map((function(t){return Math.floor(t/2)})),o=n.map((function(t,e){return t-r[e]}));return n.map((function(t,e){return[r[e],o[e]]}))}([l.filterHeight,l.filterWidth],h):[[0,0],[0,0]];var f=1===h[0]&&1===h[1],d=function(t,e,n){var r=n.map((function(t){return t[0]})),o=n.map((function(t){return t[1]})),a=t.concat(r,o),i=e.map((function(t,e){return(t-a[e]%t)%t})),s=o.map((function(t,e){return t+i[e]})),u=e.map((function(t,e){return[r[e],s[e]]})),c=e.map((function(t,e){return[0,i[e]]}));return[u,c]}([l.inHeight,l.inWidth],h,c),p=d[0],v=d[1],g=f?r:\"valid\",m=f?s:cr(s,h,p),y=(\"avg\"===n?function(){return Fl(m,e,a,1,g)}:function(){return Nl(m,e,a,1,g)})(),x=f?y:rr(y,h,v);return u?x.as3D(x.shape[1],x.shape[2],x.shape[3]):x}}),Bl=An({maxPool3d_:function(t,e,n,r,o,a,i){void 0===a&&(a=\"NDHWC\");var s=gn(t,\"x\",\"maxPool3d\"),u=s,c=!1;4===s.rank&&(c=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),null==i&&(i=[1,1,1]),C(5===u.rank,(function(){return\"Error in maxPool3d: x must be rank 5 but got rank \"+u.rank+\".\"})),C(\"NDHWC\"===a,(function(){return\"Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of \"+a})),C(Ca(n,i),(function(){return\"Error in maxPool3d: Either strides or dilations must be 1. Got strides \"+n+\" and dilations '\"+i+\"'\"})),null!=o&&C(A(r),(function(){return\"Error in maxPool3d: pad must be an integer when using, dimRoundingMode \"+o+\" but got pad \"+r+\".\"}));var l=da(u.shape,e,n,i,r,o,a),h=Lt.runKernelFunc((function(t,e){var n=t.maxPool3d(u,l);return e([u,n]),n}),{x:u},(function(t,a){var s=a[0],u=a[1];return{x:function(){return function(t,e,n,r,o,a,i,s){var u=gn(t,\"dy\",\"maxPool3dBackprop\"),c=gn(e,\"input\",\"maxPool3dBackprop\"),l=gn(n,\"output\",\"maxPool3dBackprop\"),h=u,f=c,d=l,p=!1;4===c.rank&&(p=!0,h=u.as5D(1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]),f=c.as5D(1,c.shape[0],c.shape[1],c.shape[2],c.shape[3]),d=l.as5D(1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]));C(5===h.rank,(function(){return\"Error in maxPool3dBackprop: dy must be rank 5 but got rank \"+h.rank+\".\"})),C(5===f.rank,(function(){return\"Error in maxPool3dBackprop: input must be rank 5 but got rank \"+f.rank+\".\"})),C(5===d.rank,(function(){return\"Error in maxPool3dBackprop: output must be rank 5 but got rank \"+d.rank+\".\"})),null==a&&(a=[1,1,1]);C(Ca(o,a),(function(){return\"Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides \"+o+\" and dilations '\"+a+\"'\"})),null!=s&&C(A(i),(function(){return\"Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode \"+s+\" but got pad \"+i+\".\"}));var v=da(f.shape,r,o,a,i,s),g=Lt.runKernelFunc((function(t){return t.maxPool3dBackprop(h,f,d,v)}),{dy5D:h,input5D:f});if(p)return g.as4D(g.shape[1],g.shape[2],g.shape[3],g.shape[4]);return g}(t,s,u,e,n,i,r,o)}}}));return c?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}}),Pl=An({avgPool3d_:function(t,e,n,r,o,a,i){void 0===a&&(a=\"NDHWC\");var s=gn(t,\"x\",\"avgPool3d\",\"float32\"),u=s,c=!1;4===s.rank&&(c=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),null==i&&(i=[1,1,1]),C(5===u.rank,(function(){return\"Error in avgPool3d: x must be rank 5 but got rank \"+u.rank+\".\"})),C(\"NDHWC\"===a,(function(){return\"Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of \"+a})),C(Ca(n,i),(function(){return\"Error in avgPool3d: Either strides or dilations must be 1. Got strides \"+n+\" and dilations '\"+i+\"'\"})),null!=o&&C(A(r),(function(){return\"Error in avgPool3d: pad must be an integer when using, dimRoundingMode \"+o+\" but got pad \"+r+\".\"}));var l=da(u.shape,e,n,i,r,o,a),h=Lt.runKernelFunc((function(t){return t.avgPool3d(u,l)}),{x:u},(function(t){return{x:function(){return function(t,e,n,r,o,a,i){var s=gn(t,\"dy\",\"avgPool3dBackprop\"),u=gn(e,\"input\",\"avgPool3dBackprop\"),c=s,l=u,h=!1;4===u.rank&&(h=!0,c=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]),l=u.as5D(1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]));C(5===c.rank,(function(){return\"Error in avgPool3dBackprop: dy must be rank 5 but got rank \"+c.rank+\".\"})),C(5===l.rank,(function(){return\"Error in avgPool3dBackprop: input must be rank 5 but got rank \"+l.rank+\".\"})),null==o&&(o=[1,1,1]);C(Ca(r,o),(function(){return\"Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides \"+r+\" and dilations '\"+o+\"'\"})),null!=i&&C(A(a),(function(){return\"Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode \"+i+\" but got pad \"+a+\".\"}));var f=da(l.shape,n,r,o,a,i),d=Lt.runKernelFunc((function(t){return t.avgPool3dBackprop(c,l,f)}),{dy5D:c,input5D:l});if(h)return d.as4D(d.shape[1],d.shape[2],d.shape[3],d.shape[4]);return d}(t,u,e,n,i,r,o)}}}));return h=h.cast(u.dtype),c?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}}),Ll=An({maxPoolWithArgmax_:function(t,e,n,r,o){void 0===o&&(o=!1);var a=gn(t,\"x\",\"maxPoolWithArgmax\"),i={filterSize:e,strides:n,pad:r,includeBatchInIndex:o},s=Lt.runKernel(\"MaxPoolWithArgmax\",{x:a},i);return{result:s[0],indexes:s[1]}}});var Wl=An({slice_:function(t,e,n){var r,o,a=gn(t,\"x\",\"slice\");if(0===a.rank)throw new Error(\"Slicing scalar is not possible\");(r=\"number\"==typeof e?[e].concat(new Array(a.rank-1).fill(0)):e.length<a.rank?e.concat(new Array(a.rank-e.length).fill(0)):e.slice()).forEach((function(t){C(-1!==t,(function(){return\"slice() does not support negative begin indexing.\"}))})),o=(o=null==n?new Array(a.rank).fill(-1):\"number\"==typeof n?[n].concat(new Array(a.rank-1).fill(-1)):n.length<a.rank?n.concat(new Array(a.rank-n.length).fill(-1)):n).map((function(t,e){return t>=0?t:(C(-1===t,(function(){return\"Negative size values should be exactly -1 but got \"+t+\" for the slice() size at index \"+e+\".\"})),a.shape[e]-r[e])})),qo(a,r,o);var i=a.shape,s={begin:r,size:o};return Lt.runKernelFunc((function(t){return t.slice(a,r,o)}),{x:a},(function(t){for(var e=[],n=0;n<t.rank;n++)e.push([r[n],i[n]-r[n]-o[n]]);return{x:function(){return Ic(t,e)}}}),\"Slice\",s)}}),Ul=An({slice1d_:function(t,e,n){var r=gn(t,\"x\",\"slice1d\");return C(1===r.rank,(function(){return\"slice1d expects a rank-1 tensor, but got a rank-\"+r.rank+\" tensor\"})),Wl(r,[e],[n])}}),Vl=An({slice2d_:function(t,e,n){var r=gn(t,\"x\",\"slice2d\");return C(2===r.rank,(function(){return\"slice2d expects a rank-2 tensor, but got a rank-\"+r.rank+\" tensor\"})),Wl(r,e,n)}}),zl=An({slice3d_:function(t,e,n){var r=gn(t,\"x\",\"slice3d\");return C(3===r.rank,(function(){return\"slice3d expects a rank-3 tensor, but got a rank-\"+r.rank+\" tensor\"})),Wl(r,e,n)}}),Gl=An({slice4d_:function(t,e,n){var r=gn(t,\"x\",\"slice4d\");return C(4===r.rank,(function(){return\"slice4d expects a rank-4 tensor, but got a rank-\"+r.rank+\" tensor\"})),Wl(r,e,n)}});function Hl(t,e,n,r,o){return e.rank<n.rank&&(e=e.reshape(wn(e.shape,r))),t.rank<n.rank&&(t=t.reshape(wn(t.shape,r))),{x:function(){var r=t.mul(n.equal(e).cast(t.dtype));return null==o?r:r.transpose(o)}}}var ql=An({all_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=gn(t,\"x\",\"all\",\"bool\"),o=O(e,r.shape),a=o,i=En(a,r.rank);null!=i&&(r=r.transpose(i),a=In(a.length,r.rank));var s=Lt.runKernelFunc((function(t){return t.all(r,a)}),{$x:r});if(n){var u=wn(s.shape,o);return s.reshape(u)}return s}}),Kl=An({any_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=gn(t,\"x\",\"any\",\"bool\"),o=O(e,r.shape),a=o,i=En(a,r.rank);null!=i&&(r=r.transpose(i),a=In(a.length,r.rank));var s=Lt.runKernelFunc((function(t){return t.any(r,a)}),{$x:r});if(n){var u=wn(s.shape,o);return s.reshape(u)}return s}}),jl=An({argMax_:function(t,e){void 0===e&&(e=0);var n=gn(t,\"x\",\"argMax\");null==e&&(e=0);var r=O(e,n.shape),o=En(r,n.rank);null!=o&&(n=n.transpose(o),r=In(r.length,n.rank));var a={axis:r[0]},i=[n];return Lt.runKernelFunc((function(t,e){var o=t.argMax(n,r[0]);return e([n]),o}),{x:n},(function(t,e){var n=e[0];return{x:function(){return Xn(n)}}}),\"ArgMax\",a,i)}}),Xl=An({argMin_:function(t,e){void 0===e&&(e=0);var n=gn(t,\"x\",\"argMin\");null==e&&(e=0);var r=O(e,n.shape),o=En(r,n.rank);return null!=o&&(n=n.transpose(o),r=In(r.length,n.rank)),Lt.runKernelFunc((function(t,e){var o=t.argMin(n,r[0]);return e([n]),o}),{$x:n},(function(t,e){var n=e[0];return{$x:function(){return Xn(n)}}}))}}),Yl=An({logSumExp_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=gn(t,\"x\",\"logSumExp\"),o=O(e,r.shape),a=r.max(o,!0),i=r.sub(a).exp().sum(o).log(),s=a.reshape(i.shape).add(i);if(n){var u=wn(s.shape,o);return s.reshape(u)}return s}}),$l=An({max_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=gn(t,\"x\",\"max\"),o=r,a=O(e,r.shape),i=a,s=En(i,r.rank);null!=s&&(r=r.transpose(s),i=In(i.length,r.rank));var u=[r],c=Lt.runKernelFunc((function(t,e){var n=t.max(r,i);return e([o,n]),n}),{x:r},(function(t,e){return Hl(t,e[1],e[0],a,s)}),\"Max\",{axes:i},u,[!0]);if(n){var l=wn(c.shape,a);c=c.reshape(l)}return c}}),Ql=An({mean_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=gn(t,\"x\",\"mean\"),o=O(e,r.shape),a=k(bn(r.shape,o)[1]);return oa((function(t){var r=On(a);return{value:(r.dtype===t.dtype?t:t.cast(r.dtype)).div(r).sum(e,n),gradFunc:function(e){var n=t.shape.slice();return o.forEach((function(t){n[t]=1})),e.reshape(n).mul(zn(t.shape,\"float32\")).div(a)}}}))(r)}}),Jl=An({min_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=gn(t,\"x\",\"min\"),o=r,a=O(e,r.shape),i=a,s=En(i,r.rank);null!=s&&(r=r.transpose(s),i=In(i.length,r.rank));var u=[r],c=Lt.runKernelFunc((function(t,e){var n=t.min(r,i);return e([o,n]),n}),{x:r},(function(t,e){return Hl(t,e[1],e[0],a,s)}),\"Min\",{axes:i},u,[!0]);if(n){var l=wn(c.shape,a);c=c.reshape(l)}return c}}),Zl=An({moments_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=O(e,(t=gn(t,\"x\",\"moments\")).shape),o=t.mean(r,n),a=o.shape;n||(a=wn(o.shape,r));var i=t.toFloat().sub(o.reshape(a)).square();return{mean:o,variance:i.mean(r,n)}}}),th=An({sum_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=gn(t,\"x\",\"sum\");\"bool\"===r.dtype&&(r=r.toInt());var o=O(e,r.shape);return oa((function(t){var e=En(o,t.rank),r=o,a=t;null!=e&&(a=t.transpose(e),r=In(r.length,t.rank));var i=function(e){var n=t.shape.slice();return o.forEach((function(t){n[t]=1})),e.reshape(n).mul(zn(t.shape,\"float32\"))},s={axes:r},u=Lt.runKernelFunc((function(t){return t.sum(a,r)}),{x:a},(function(t){return{x:function(){return i(t)}}}),\"Sum\",s);if(n){var c=wn(u.shape,o);u=u.reshape(c)}return{value:u,gradFunc:i}}))(r)}}),eh=An({prod_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=gn(t,\"x\",\"prod\");\"bool\"===r.dtype&&(r=r.toInt());var o=O(e,r.shape),a=En(o,r.rank),i=o,s=r;null!=a&&(s=r.transpose(a),i=In(i.length,r.rank));var u=Lt.runKernelFunc((function(t){return t.prod(s,i)}),{permutedX:s});if(n){var c=wn(u.shape,o);u=u.reshape(c)}return u}});var nh=An({elu_:function(t){var e=gn(t,\"x\",\"elu\");return Lt.runKernelFunc((function(t,n){var r=t.elu(e);return n([r]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return Lt.runKernelFunc((function(e){return e.eluDer(t,n)}),{dy:t,y:n})}}}))}}),rh=An({leakyRelu_:function(t,e){void 0===e&&(e=.2);var n=gn(t,\"x\",\"leakyRelu\");return Eo(On(e).mul(n),n)}}),oh=An({prelu_:function(t,e){var n=gn(t,\"x\",\"prelu\"),r=gn(e,\"alpha\",\"prelu\");return Lt.runKernelFunc((function(t,e){var o=t.prelu(n,r);return e([n,r]),o}),{x:n,alpha:r},(function(t,e){var n=e[0],r=e[1],o=n.greater(0);return{x:function(){return yc(o,t,t.mul(r))},alpha:function(){var e=yc(o,Xn(t),t.mul(n)),a=Br(r.shape,t.shape);return a.length>0&&(e=e.sum(a)),e.reshape(r.shape)}}}),\"Prelu\")}}),ah=An({relu_:function(t){var e=gn(t,\"x\",\"relu\");return\"bool\"===e.dtype?e.toInt():Lt.runKernelFunc((function(t,n){var r=t.relu(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.mulStrict(n.step().toFloat())}}}),\"Relu\")}}),ih=An({relu6_:function(t){var e=gn(t,\"x\",\"relu6\");return\"bool\"===e.dtype?e.toInt():Lt.runKernelFunc((function(t,n){var r=t.relu6(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0],r=n.lessEqual(6).mul(n.step());return{x:function(){return t.mulStrict(r.toFloat())}}}),\"Relu6\")}}),sh=An({selu_:function(t){var e=gn(t,\"x\",\"selu\");return Lt.runKernelFunc((function(t,n){var r=t.selu(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){var e=n.greater(On(0)),r=On(su),o=On(uu),a=t.mul(o),i=t.mul(r).mul(n.toFloat().exp());return yc(e,a,i)}}}))}});var uh=An({localResponseNormalization_:function(t,e,n,r,o){void 0===e&&(e=5),void 0===n&&(n=1),void 0===r&&(r=1),void 0===o&&(o=.5);var a=gn(t,\"x\",\"localResponseNormalization\");C(4===a.rank||3===a.rank,(function(){return\"Error in localResponseNormalization: x must be rank 3 or 4 but got\\n               rank \"+a.rank+\".\"})),C(A(e),(function(){return\"Error in localResponseNormalization: depthRadius must be an integer but got depthRadius \"+e+\".\"}));var i=a,s=!1;3===a.rank&&(s=!0,i=a.as4D(1,a.shape[0],a.shape[1],a.shape[2]));var u=Lt.runKernelFunc((function(t,a){var s=t.localResponseNormalization4D(i,e,n,r,o);return a([i,s]),s}),{x4D:i},(function(t,a){var i=a[0],s=a[1];return{x4D:function(){return Lt.runKernelFunc((function(a){return a.LRNGrad(t,i,s,e,n,r,o)}),{})}}}));return s?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}});var ch=An({norm_:function(t,e,n,r){void 0===e&&(e=\"euclidean\"),void 0===n&&(n=null),void 0===r&&(r=!1);var o=function t(e,n,r){void 0===r&&(r=null);if(0===e.rank)return e.abs();if(1!==e.rank&&null===r)return t(e.reshape([-1]),n,r);if(1===e.rank||\"number\"==typeof r||Array.isArray(r)&&1===r.length){if(1===n)return e.abs().sum(r);if(n===1/0)return e.abs().max(r);if(n===-1/0)return e.abs().min(r);if(\"euclidean\"===n||2===n)return e.abs().pow(On(2,\"int32\")).sum(r).sqrt();throw new Error(\"Error in norm: invalid ord value: \"+n)}if(Array.isArray(r)&&2===r.length){if(1===n)return e.abs().sum(r[0]).max(r[1]-1);if(n===1/0)return e.abs().sum(r[1]).max(r[0]);if(n===-1/0)return e.abs().sum(r[1]).min(r[0]);if(\"fro\"===n||\"euclidean\"===n)return e.square().sum(r).sqrt();throw new Error(\"Error in norm: invalid ord value: \"+n)}throw new Error(\"Error in norm: invalid axis: \"+r)}(t=gn(t,\"x\",\"norm\"),e,n),a=o.shape;if(r){var i=O(n,t.shape);a=wn(o.shape,i)}return o.reshape(a)}});var lh=An({basicLSTMCell_:function(t,e,n,r,o,a){var i=gn(t,\"forgetBias\",\"basicLSTMCell\"),s=gn(e,\"lstmKernel\",\"basicLSTMCell\"),u=gn(n,\"lstmBias\",\"basicLSTMCell\"),c=gn(r,\"data\",\"basicLSTMCell\"),l=gn(o,\"c\",\"basicLSTMCell\"),h=gn(a,\"h\",\"basicLSTMCell\"),f=c.concat(h,1).matMul(s).add(u),d=f.shape[0],p=f.shape[1]/4,v=[d,p],g=f.slice([0,0],v),m=f.slice([0,p],v),y=f.slice([0,2*p],v),x=f.slice([0,3*p],v),b=g.sigmoid().mulStrict(m.tanh()).addStrict(l.mulStrict(i.add(y).sigmoid())),w=b.tanh().mulStrict(x.sigmoid());return[b,w]}}),hh=An({multiRNNCell_:function(t,e,n,r){for(var o=gn(e,\"data\",\"multiRNNCell\"),a=mn(n,\"c\",\"multiRNNCell\"),i=mn(r,\"h\",\"multiRNNCell\"),s=o,u=[],c=0;c<t.length;c++){var l=t[c](s,a[c],i[c]);u.push(l[0]),u.push(l[1]),s=l[1]}var h=[],f=[];for(c=0;c<u.length;c+=2)h.push(u[c]),f.push(u[c+1]);return[h,f]}});var fh=An({movingAverage_:function(t,e,n,r,o){void 0===o&&(o=!0);var a=gn(t,\"v\",\"movingAverage\"),i=gn(e,\"x\",\"movingAverage\"),s=gn(n,\"decay\",\"movingAverage\");Ft(a,i),C(S(a.shape,i.shape),(function(){return\"Shape mismatch in v and x\"}));var u=On(1),c=u.sub(s),l=i.sub(a).mul(c);if(o){C(null!=r,(function(){return\"When using zeroDebias: true, step is required.\"}));var h=gn(r,\"step\",\"movingAverage\");l=l.div(u.sub(No(s,h)))}return a.add(l)}});var dh=An({stridedSlice_:function(t,e,n,r,o,a,i,s,u){if(void 0===o&&(o=0),void 0===a&&(a=0),void 0===i&&(i=0),void 0===s&&(s=0),void 0===u&&(u=0),null==r&&(r=new Array(e.length)),0!==i)throw new Error(\"ellipsis mask is not yet supported\");var c=gn(t,\"x\",\"stridedSlice\"),l=Ko(s),h=c.shape.slice();l.forEach((function(t){e[t]=0,n[t]=1,h.splice(t,0,1)})),c=c.reshape(h);for(var f=0;f<c.rank;f++)e[f]=Xo(o,e,r,c.shape,f),n[f]=Yo(a,n,r,c.shape,f),r[f]=r[f]||1;var d=Ko(u);d.forEach((function(t){n[t]=e[t]+1,r[t]=1}));var p=jo(e,n,r),v=p.filter((function(t,e){return-1===d.indexOf(e)}));return r.every((function(t){return 1===t}))?Wl(c,e,p).reshape(v):Lt.runKernelFunc((function(t){return t.stridedSlice(c,e,n,r)}),{$x:c}).reshape(v)}});var ph=An({topk_:function(t,e,n){void 0===e&&(e=1),void 0===n&&(n=!0);var r=gn(t,\"x\",\"topk\");if(0===r.rank)throw new Error(\"topk() expects the input to be of rank 1 or higher\");var o=r.shape[r.shape.length-1];if(e>o)throw new Error(\"'k' passed to topk() must be <= the last dimension (\"+o+\") but got \"+e);var a=Lt.runKernelFunc((function(t){return t.topk(r,e,n)}),{$x:r});return{values:a[0],indices:a[1]}}});var vh=An({scatterND_:function(t,e,n){var r=gn(t,\"indices\",\"scatterND\",\"int32\"),o=gn(e,\"updates\",\"scatterND\");return zo(o,r,n),Lt.runKernelFunc((function(t){return t.scatterND(r,o,n)}),{indices:r,updates:o},null,\"ScatterNd\",{shape:n})}});var gh=An({fft_:function(t){C(\"complex64\"===t.dtype,(function(){return\"The dtype for tf.spectral.fft() must be complex64 but got \"+t.dtype+\".\"}));var e=t.shape[t.shape.length-1],n=t.size/e,r=t.as2D(n,e);return Lt.runKernelFunc((function(t){return t.fft(r)}),{input:t}).reshape(t.shape)}}),mh=An({ifft_:function(t){C(\"complex64\"===t.dtype,(function(){return\"The dtype for tf.spectral.ifft() must be complex64 but got \"+t.dtype+\".\"}));var e=t.shape[t.shape.length-1],n=t.size/e,r=t.as2D(n,e);return Lt.runKernelFunc((function(t){return t.ifft(r)}),{input:t}).reshape(t.shape)}}),yh=An({rfft_:function(t,e){C(\"float32\"===t.dtype,(function(){return\"The dtype for rfft() must be real value but got \"+t.dtype}));var n,r=t.shape[t.shape.length-1],o=t.size/r;if(null!=e&&e<r){var a=t.shape.map((function(t){return 0})),i=t.shape.map((function(t){return t}));i[t.shape.length-1]=e,n=t.slice(a,i),r=e}else if(null!=e&&e>r){var s=t.shape.map((function(t){return t}));s[t.shape.length-1]=e-r,n=t.concat(Gn(s),t.shape.length-1),r=e}else n=t;var u=n.zerosLike(),c=Tn(n,u).as2D(o,r),l=gh(c),h=Math.floor(r/2)+1,f=Dn(l),d=Nn(l),p=f.split([h,r-h],f.shape.length-1),v=d.split([h,r-h],d.shape.length-1),g=n.shape.slice();return g[n.shape.length-1]=h,Tn(p[0],v[0]).reshape(g)}}),xh=An({irfft_:function(t){var e=t.shape[t.shape.length-1],n=t.size/e;if(e<=2){var r=t.as2D(n,e),o=mh(r);return Dn(o)}var a=[n,2*(e-1)],i=Dn(t).as2D(n,e),s=Nn(t).as2D(n,e),u=i.slice([0,1],[n,e-2]).reverse(1),c=s.slice([0,1],[n,e-2]).reverse(1).mul(On(-1)),l=i.concat(u,1),h=s.concat(c,1);return r=Tn(l,h).as2D(a[0],a[1]),o=mh(r),Dn(o)}}),bh=Object.freeze({fft:gh,ifft:mh,rfft:yh,irfft:xh});var wh=An({sparseToDense_:function(t,e,n,r){void 0===r&&(r=0);var o=gn(t,\"sparseIndices\",\"sparseToDense\",\"int32\"),a=gn(e,\"sparseValues\",\"sparseToDense\"),i=gn(r,\"defaultValue\",\"sparseToDense\",a.dtype);return function(t,e,n,r){if(\"int32\"!==t.dtype)throw new Error(\"tf.sparseToDense() expects the indices to be int32 type, but the dtype was \"+t.dtype+\".\");if(t.rank>2)throw new Error(\"sparseIndices should be a scalar, vector, or matrix, but got shape \"+t.shape+\".\");var o=t.rank>0?t.shape[0]:1,a=t.rank>1?t.shape[1]:1;if(n.length!==a)throw new Error(\"outputShape has incorrect number of elements:, \"+n.length+\", should be: \"+a+\".\");var i=e.size;if(0!==e.rank&&(1!==e.rank||i!==o))throw new Error(\"sparseValues has incorrect shape \"+e.shape+\", should be [] or [\"+o+\"]\");if(e.dtype!==r.dtype)throw new Error(\"sparseValues.dtype must match defaultValues.dtype\")}(o,a,n,i),Lt.runKernelFunc((function(t){return t.sparseToDense(o,a,n,i)}),{$sparseIndices:o,$sparseValues:a,$defaultValue:i})}});var Ch=An({gatherND_:function(t,e){var n=gn(e,\"indices\",\"gatherND\",\"int32\"),r=gn(t,\"x\",\"gatherND\");return Lt.runKernelFunc((function(t){return t.gatherND(r,n)}),{x:r,indices:n},null,\"GatherNd\")}});var Eh=An({diag_:function(t){var e=gn(t,\"x\",\"diag\").flatten(),n=t.shape.concat(t.shape);return Lt.runKernelFunc((function(t){return t.diag(e)}),{$x:e}).reshape(n)}});var Rh=An({dropout_:function(t,e,n,r){var o=gn(t,\"x\",\"dropout\");if(C(\"float32\"===o.dtype,(function(){return\"x has to be a floating point tensor since it's going to be scaled, but got a \"+o.dtype+\" tensor instead.\"})),C(e>=0&&e<1,(function(){return\"rate must be a float in the range [0, 1), but got \"+e+\".\"})),0===e)return t instanceof wt?o.clone():o;var a=function(t,e){if(null==e)return t.shape.slice();if(S(t.shape,e))return e;if(t.shape.length===e.length){for(var n=[],r=0;r<t.shape.length;r++)null==e[r]&&null!=t.shape[r]?n.push(t.shape[r]):n.push(e[r]);return n}return e}(o,n),i=1-e,s=zc(a,0,1,\"float32\",r).add(i).floor().div(i);return o.mul(s)}});function Ih(t,e,n){for(var r=1-t%2,o=new Float32Array(t),a=0;a<t;++a){var i=2*Math.PI*a/(t+r-1);o[a]=e-n*Math.cos(i)}return Mn(o,\"float32\")}var kh=An({hannWindow_:function(t){return Ih(t,.5,.5)}}),Sh=An({hammingWindow_:function(t){return Ih(t,.54,.46)}}),Ah=An({frame_:function(t,e,n,r,o){void 0===r&&(r=!1),void 0===o&&(o=0);for(var a=0,i=[];a+e<=t.size;)i.push(Wl(t,a,e)),a+=n;if(r)for(;a<t.size;){var s=a+e-t.size,u=Yn([Wl(t,a,e-s),Hn([s],o)]);i.push(u),a+=n}return 0===i.length?Bn([],[0,e]):Yn(i).as2D(i.length,e)}}),Th=An({stft_:function(t,e,n,r,o){var a;void 0===o&&(o=kh),null==r&&(a=e,r=Math.floor(Math.pow(2,Math.ceil(Math.log(a)/Math.log(2)))));for(var i=Ah(t,e,n),s=To(i,o(e)),u=[],c=0;c<i.shape[0];c++)u.push(yh(s.slice([c,0],[1,e]),r));return Yn(u)}}),Dh=Object.freeze({hannWindow:kh,hammingWindow:Sh,frame:Ah,stft:Th});var Nh,Fh=function(t,e,o){return void 0===o&&(o=1),n(this,void 0,void 0,(function(){var n,a,i,s,u,c,l,h,f,d,p,v,g,m;return r(this,(function(r){switch(r.label){case 0:return n=gn(t,\"predictions\",\"inTopK\"),a=gn(e,\"targets\",\"inTopK\"),C(n.rank>1,(function(){return\"inTopK() expects the predictions to be of rank 2 or higher, but got \"+n.rank})),C(n.rank-1===a.rank,(function(){return\"predictions rank should be 1 larger than targets rank, but got predictions rank \"+n.rank+\" and targets rank \"+a.rank})),E(n.shape.slice(0,n.shape.length-1),a.shape,\"predictions's shape should be align with the targets' shape, except the last dimension.\"),i=n.shape[n.shape.length-1],C(o>0&&o<=i,(function(){return\"'k' passed to inTopK() must be > 0 && <= the predictions last dimension (\"+i+\"), but got \"+o})),[4,n.data()];case 1:return s=r.sent(),[4,a.data()];case 2:for(u=r.sent(),c=[s.length/i,i],h=c[1],f=B(\"bool\",l=c[0]),d=0;d<l;d++){for(p=d*h,v=s.subarray(p,p+h),g=[],m=0;m<v.length;m++)g.push({value:v[m],index:m});for(g.sort((function(t,e){return e.value-t.value})),f[d]=0,m=0;m<o;m++)if(g[m].index===u[d]){f[d]=1;break}}return t!==n&&n.dispose(),e!==a&&a.dispose(),[2,Fn(f,a.shape,\"bool\")]}}))}))};!function(t){t[t.NONE=0]=\"NONE\",t[t.MEAN=1]=\"MEAN\",t[t.SUM=2]=\"SUM\",t[t.SUM_BY_NONZERO_WEIGHTS=3]=\"SUM_BY_NONZERO_WEIGHTS\"}(Nh||(Nh={}));var _h=An({absoluteDifference_:function(t,e,n,r){void 0===r&&(r=Nh.SUM_BY_NONZERO_WEIGHTS);var o=gn(t,\"labels\",\"absoluteDifference\"),a=gn(e,\"predictions\",\"absoluteDifference\"),i=null;null!=n&&(i=gn(n,\"weights\",\"absoluteDifference\")),E(o.shape,a.shape,\"Error in absoluteDifference: \");var s=o.sub(a).abs();return Oh(s,i,r)}}),Oh=An({computeWeightedLoss_:function(t,e,n){void 0===n&&(n=Nh.SUM_BY_NONZERO_WEIGHTS);var r=gn(t,\"losses\",\"computeWeightedLoss\"),o=null;null!=e&&(o=gn(e,\"weights\",\"computeWeightedLoss\"));var a=null==o?r:r.mul(o);if(n===Nh.NONE)return a;if(n===Nh.SUM)return a.sum();if(n===Nh.MEAN){if(null==o)return a.mean();var i=r.size/o.size,s=a.sum().div(o.sum());return i>1?s.div(On(i)):s}if(n===Nh.SUM_BY_NONZERO_WEIGHTS){if(null==o)return a.sum().div(On(r.size));var u=o.mul(zn(r.shape)).notEqual(On(0)).sum().toFloat();return a.sum().div(u)}throw Error(\"Unknown reduction: \"+n)}}),Mh=An({cosineDistance_:function(t,e,n,r,o){void 0===o&&(o=Nh.SUM_BY_NONZERO_WEIGHTS);var a=gn(t,\"labels\",\"cosineDistance\"),i=gn(e,\"predictions\",\"cosineDistance\"),s=null;null!=r&&(s=gn(r,\"weights\",\"cosineDistance\")),E(a.shape,i.shape,\"Error in cosineDistance: \");var u=On(1).sub(a.mul(i).sum(n,!0));return Oh(u,s,o)}}),Bh=An({hingeLoss_:function(t,e,n,r){void 0===r&&(r=Nh.SUM_BY_NONZERO_WEIGHTS);var o=gn(t,\"labels\",\"hingeLoss\"),a=gn(e,\"predictions\",\"hingeLoss\"),i=null;null!=n&&(i=gn(n,\"weights\",\"hingeLoss\")),E(o.shape,a.shape,\"Error in hingeLoss: \");var s=On(1);o=On(2).mul(o).sub(s);var u=s.sub(o.mul(a)).relu();return Oh(u,i,r)}}),Ph=An({huberLoss_:function(t,e,n,r,o){void 0===r&&(r=1),void 0===o&&(o=Nh.SUM_BY_NONZERO_WEIGHTS);var a=gn(t,\"labels\",\"huberLoss\"),i=gn(e,\"predictions\",\"huberLoss\"),s=null;null!=n&&(s=gn(n,\"weights\",\"huberLoss\")),E(a.shape,i.shape,\"Error in huberLoss: \");var u=On(r),c=i.sub(a).abs(),l=Io(c,u),h=c.sub(l),f=On(.5).mul(l.square()).add(u.mul(h));return Oh(f,s,o)}}),Lh=An({logLoss_:function(t,e,n,r,o){void 0===r&&(r=1e-7),void 0===o&&(o=Nh.SUM_BY_NONZERO_WEIGHTS);var a=gn(t,\"labels\",\"logLoss\"),i=gn(e,\"predictions\",\"logLoss\"),s=null;null!=n&&(s=gn(n,\"weights\",\"logLoss\")),E(a.shape,i.shape,\"Error in logLoss: \");var u=On(1),c=On(r),l=a.mul(i.add(c).log()).neg().sub(u.sub(a).mul(u.sub(i).add(c).log()));return Oh(l,s,o)}}),Wh=An({meanSquaredError_:function(t,e,n,r){void 0===r&&(r=Nh.SUM_BY_NONZERO_WEIGHTS);var o=gn(t,\"labels\",\"meanSquaredError\"),a=gn(e,\"predictions\",\"meanSquaredError\"),i=null;null!=n&&(i=gn(n,\"weights\",\"meanSquaredError\")),E(o.shape,a.shape,\"Error in meanSquaredError: \");var s=o.squaredDifference(a);return Oh(s,i,r)}}),Uh=An({sigmoidCrossEntropy_:function(t,e,n,r,o){void 0===r&&(r=0),void 0===o&&(o=Nh.SUM_BY_NONZERO_WEIGHTS);var a=gn(t,\"multiClassLabels\",\"sigmoidCrossEntropy\"),i=gn(e,\"logits\",\"sigmoidCrossEntropy\"),s=null;if(null!=n&&(s=gn(n,\"weights\",\"sigmoidCrossEntropy\")),E(a.shape,i.shape,\"Error in sigmoidCrossEntropy: \"),r>0){var u=On(r),c=On(1),l=On(.5);a=a.mul(c.sub(u)).add(l.mul(u))}var h=function(t,e){var n=gn(t,\"labels\",\"sigmoidCrossEntropyWithLogits\"),r=gn(e,\"logits\",\"sigmoidCrossEntropyWithLogits\");E(n.shape,r.shape,\"Error in sigmoidCrossEntropyWithLogits: \");var o=r.relu(),a=r.mul(n),i=r.abs().neg().exp().log1p();return o.sub(a).add(i)}(a,i);return Oh(h,s,o)}}),Vh=An({softmaxCrossEntropy_:function(t,e,n,r,o){void 0===r&&(r=0),void 0===o&&(o=Nh.SUM_BY_NONZERO_WEIGHTS);var a=gn(t,\"onehotLabels\",\"softmaxCrossEntropy\"),i=gn(e,\"logits\",\"softmaxCrossEntropy\"),s=null;if(null!=n&&(s=gn(n,\"weights\",\"softmaxCrossEntropy\")),E(a.shape,i.shape,\"Error in softmaxCrossEntropy: \"),r>0){var u=On(r),c=On(1),l=On(a.shape[1]);a=a.mul(c.sub(u)).add(u.div(l))}var h=function(t,e,n){if(void 0===n&&(n=-1),-1===n&&(n=e.rank-1),n!==e.rank-1)throw Error(\"Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank \"+e.rank+\" and dim was \"+n);return oa((function(t,e,r){var o=e.logSumExp([n],!0),a=e.toFloat().sub(o);r([t,a]);return{value:a.mul(t).neg().sum([n]),gradFunc:function(t,e){var r=e[0],o=e[1],a=wn(t.shape,[n]);return[t.reshape(a).mul(r.toFloat().sub(o.exp())),t.reshape(a).mul(o.exp().sub(r.toFloat()))]}}}))(t,e)}(a,i);return Oh(h,s,o)}}),zh=Object.freeze({get Reduction(){return Nh},absoluteDifference:_h,computeWeightedLoss:Oh,cosineDistance:Mh,hingeLoss:Bh,huberLoss:Ph,logLoss:Lh,meanSquaredError:Wh,sigmoidCrossEntropy:Uh,softmaxCrossEntropy:Vh});function Gh(t,e){return void 0===e&&(e=!1),Lt.tidy((function(){if(2!==t.shape.length)throw new Error(\"qr2d() requires a 2D Tensor, but got a \"+t.shape.length+\"D Tensor.\");for(var n=t.shape[0],r=t.shape[1],o=Cc(n),a=t.clone(),i=Bn([[1]],[1,1]),s=i.clone(),u=n>=r?r:n,c=function(t){var e,u=a,c=s,l=o;e=Lt.tidy((function(){var e=a.slice([t,t],[n-t,1]),u=e.norm(),c=a.slice([t,t],[1,1]),l=Bn([[-1]]).where(c.greater(0),Bn([[1]])),h=c.sub(l.mul(u)),f=e.div(h);s=1===f.shape[0]?i.clone():i.concat(f.slice([1,0],[f.shape[0]-1,f.shape[1]]),0);var d=l.matMul(h).div(u).neg(),p=a.slice([t,0],[n-t,r]),v=d.mul(s),g=s.transpose();if(0===t)a=p.sub(v.matMul(g.matMul(p)));else{var m=p.sub(v.matMul(g.matMul(p)));a=a.slice([0,0],[t,r]).concat(m,0)}var y=v.transpose(),x=o.slice([0,t],[n,o.shape[1]-t]);if(0===t)o=x.sub(x.matMul(s).matMul(y));else{var b=x.sub(x.matMul(s).matMul(y));o=o.slice([0,0],[n,t]).concat(b,1)}return[s,a,o]})),s=e[0],a=e[1],o=e[2],tn([u,c,l])},l=0;l<u;++l)c(l);return!e&&n>r&&(o=o.slice([0,0],[n,r]),a=a.slice([0,0],[r,r])),[o,a]}))}var Hh=An({bandPart_:function(t,e,n){if(e%1!=0)throw new Error(\"bandPart(): numLower must be an integer, got \"+e+\".\");if(n%1!=0)throw new Error(\"bandPart(): numUpper must be an integer, got \"+n+\".\");var r=gn(t,\"a\",\"bandPart\");if(r.rank<2)throw new Error(\"bandPart(): Rank must be at least 2, got \"+r.rank+\".\");var o=r.shape,a=r.shape.slice(-2),i=a[0],s=a[1];if(!(e<=i))throw new Error(\"bandPart(): numLower (\"+e+\") must not be greater than the number of rows (\"+i+\").\");if(!(n<=s))throw new Error(\"bandPart(): numUpper (\"+n+\") must not be greater than the number of columns (\"+s+\").\");e<0&&(e=i),n<0&&(n=s);var u=Kn(0,i,1,\"int32\").reshape([-1,1]),c=Kn(0,s,1,\"int32\"),l=Oo(u,c),h=pc(l.lessEqual(On(+e,\"int32\")),l.greaterEqual(On(-n,\"int32\"))),f=Gn([i,s],r.dtype);return hr(fr(r.reshape([-1,i,s])).map((function(t){return yc(h,t,f)}))).reshape(o)}}),qh=An({gramSchmidt_:function(t){var e;if(Array.isArray(t)){e=!1,C(null!=t&&t.length>0,(function(){return\"Gram-Schmidt process: input must not be null, undefined, or empty\"}));for(var n=t[0].shape[0],r=function(e){C(t[e].shape[0]===n,(function(){return\"Gram-Schmidt: Non-unique lengths found in the input vectors: (\"+t[e].shape[0]+\" vs. \"+n+\")\"}))},o=1;o<t.length;++o)r(o)}else e=!0,t=tr(t,t.shape[0],0).map((function(t){return lr(t,[0])}));C(t.length<=t[0].shape[0],(function(){return\"Gram-Schmidt: Number of vectors (\"+t.length+\") exceeds number of dimensions (\"+t[0].shape[0]+\").\"}));var a=[],i=t,s=function(t){a.push(Lt.tidy((function(){var e=i[t];if(t>0)for(var n=0;n<t;++n){var r=th(a[n].mulStrict(e)).mul(a[n]);e=e.sub(r)}return e.div(ch(e,\"euclidean\"))})))};for(o=0;o<t.length;++o)s(o);return e?hr(a,0):a}}),Kh=An({qr_:function(t,e){if(void 0===e&&(e=!1),t.rank<2)throw new Error(\"qr() requires input tensor to have a rank >= 2, but got rank \"+t.rank);if(2===t.rank)return Gh(t,e);var n=t.shape.slice(0,t.shape.length-2).reduce((function(t,e){return t*e})),r=fr(t.reshape([n,t.shape[t.shape.length-2],t.shape[t.shape.length-1]]),0),o=[],a=[];return r.forEach((function(t){var n=Gh(t,e),r=n[0],i=n[1];o.push(r),a.push(i)})),[hr(o,0).reshape(t.shape),hr(a,0).reshape(t.shape)]}}),jh=Object.freeze({bandPart:Hh,gramSchmidt:qh,qr:Kh});function Xh(t,e,n,r,o,a){null==r&&(r=.5),null==o&&(o=Number.NEGATIVE_INFINITY),null==a&&(a=0);var i=t.shape[0];return n=Math.min(n,i),C(0<=r&&r<=1,(function(){return\"iouThreshold must be in [0, 1], but was '\"+r+\"'\"})),C(2===t.rank,(function(){return\"boxes must be a 2D tensor, but was of rank '\"+t.rank+\"'\"})),C(4===t.shape[1],(function(){return\"boxes must have 4 columns, but 2nd dimension was \"+t.shape[1]})),C(1===e.rank,(function(){return\"scores must be a 1D tensor\"})),C(e.shape[0]===i,(function(){return\"scores has incompatible shape with boxes. Expected \"+i+\", but was \"+e.shape[0]})),C(0<=a&&a<=1,(function(){return\"softNmsSigma must be in [0, 1], but was '\"+a+\"'\"})),{maxOutputSize:n,iouThreshold:r,scoreThreshold:o,softNmsSigma:a}}var Yh=An({resizeBilinear_:function(t,e,n){void 0===n&&(n=!1);var r=gn(t,\"images\",\"resizeBilinear\");C(3===r.rank||4===r.rank,(function(){return\"Error in resizeBilinear: x must be rank 3 or 4, but got rank \"+r.rank+\".\"})),C(2===e.length,(function(){return\"Error in resizeBilinear: new shape must 2D, but got shape \"+e+\".\"}));var o=r,a=!1;3===r.rank&&(a=!0,o=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var i=e[0],s=e[1],u=Lt.runKernelFunc((function(t,e){return e([o]),t.resizeBilinear(o,i,s,n)}),{x:o},(function(t,e){return{x:function(){return Lt.runKernelFunc((function(r){return r.resizeBilinearBackprop(t,e[0],n)}),{})}}}),\"ResizeBilinear\",{alignCorners:n,newHeight:i,newWidth:s});return a?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),$h=An({resizeNearestNeighbor_:function(t,e,n){void 0===n&&(n=!1);var r=gn(t,\"images\",\"resizeNearestNeighbor\");C(3===r.rank||4===r.rank,(function(){return\"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank \"+r.rank+\".\"})),C(2===e.length,(function(){return\"Error in resizeNearestNeighbor: new shape must 2D, but got shape \"+e+\".\"})),C(\"float32\"===r.dtype||\"int32\"===r.dtype,(function(){return\"`images` must have `int32` or `float32` as dtype\"}));var o=r,a=!1;3===r.rank&&(a=!0,o=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var i=e[0],s=e[1],u=Lt.runKernelFunc((function(t,e){return e([o]),t.resizeNearestNeighbor(o,i,s,n)}),{batchImages:o},(function(t,e){return{batchImages:function(){return Lt.runKernelFunc((function(r){return r.resizeNearestNeighborBackprop(t,e[0],n)}),{})}}}));return a?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Qh=An({nonMaxSuppression_:function(t,e,n,r,o){void 0===r&&(r=.5),void 0===o&&(o=Number.NEGATIVE_INFINITY);var a=gn(t,\"boxes\",\"nonMaxSuppression\"),i=gn(e,\"scores\",\"nonMaxSuppression\"),s=Xh(a,i,n,r,o);n=s.maxOutputSize,r=s.iouThreshold,o=s.scoreThreshold;var u={maxOutputSize:n,iouThreshold:r,scoreThreshold:o};return Lt.runKernelFunc((function(t){return t.nonMaxSuppression(a,i,n,r,o)}),{boxes:a,scores:i},null,\"NonMaxSuppressionV3\",u)}}),Jh=function(t,e,o,a,i){return void 0===a&&(a=.5),void 0===i&&(i=Number.NEGATIVE_INFINITY),n(this,void 0,void 0,(function(){var n,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:return n=gn(t,\"boxes\",\"nonMaxSuppressionAsync\"),s=gn(e,\"scores\",\"nonMaxSuppressionAsync\"),u=Xh(n,s,o,a,i),o=u.maxOutputSize,a=u.iouThreshold,i=u.scoreThreshold,[4,Promise.all([n.data(),s.data()])];case 1:return c=r.sent(),l=c[0],h=c[1],f=Oa(l,h,o,a,i),n!==t&&n.dispose(),s!==e&&s.dispose(),[2,f]}}))}))},Zh=An({nonMaxSuppressionWithScore_:function(t,e,n,r,o,a){void 0===r&&(r=.5),void 0===o&&(o=Number.NEGATIVE_INFINITY),void 0===a&&(a=0);var i=gn(t,\"boxes\",\"nonMaxSuppression\"),s=gn(e,\"scores\",\"nonMaxSuppression\"),u=Xh(i,s,n,r,o,a),c={maxOutputSize:n=u.maxOutputSize,iouThreshold:r=u.iouThreshold,scoreThreshold:o=u.scoreThreshold,softNmsSigma:a=u.softNmsSigma},l=Lt.runKernel(\"NonMaxSuppressionV5\",{boxes:i,scores:s},c);return{selectedIndices:l[0],selectedScores:l[1]}}}),tf=function(t,e,o,a,i,s){return void 0===a&&(a=.5),void 0===i&&(i=Number.NEGATIVE_INFINITY),void 0===s&&(s=0),n(this,void 0,void 0,(function(){var n,u,c,l,h,f,d;return r(this,(function(r){switch(r.label){case 0:return n=gn(t,\"boxes\",\"nonMaxSuppressionAsync\"),u=gn(e,\"scores\",\"nonMaxSuppressionAsync\"),c=Xh(n,u,o,a,i,s),o=c.maxOutputSize,a=c.iouThreshold,i=c.scoreThreshold,s=c.softNmsSigma,[4,Promise.all([n.data(),u.data()])];case 1:return l=r.sent(),h=l[0],f=l[1],d=Ma(h,f,o,a,i,s),n!==t&&n.dispose(),u!==e&&u.dispose(),[2,d]}}))}))},ef=An({cropAndResize_:function(t,e,n,r,o,a){var i=gn(t,\"image\",\"cropAndResize\"),s=gn(e,\"boxes\",\"cropAndResize\",\"float32\"),u=gn(n,\"boxInd\",\"cropAndResize\",\"int32\");o=o||\"bilinear\",a=a||0;var c=s.shape[0];return C(4===i.rank,(function(){return\"Error in cropAndResize: image must be rank 4,but got rank \"+i.rank+\".\"})),C(2===s.rank&&4===s.shape[1],(function(){return\"Error in cropAndResize: boxes must be have size [\"+c+\",4] but had shape \"+s.shape+\".\"})),C(1===u.rank&&u.shape[0]===c,(function(){return\"Error in cropAndResize: boxInd must be have size [\"+c+\"] but had shape \"+s.shape+\".\"})),C(2===r.length,(function(){return\"Error in cropAndResize: cropSize must be of length 2, but got length \"+r.length+\".\"})),C(r[0]>=1&&r[1]>=1,(function(){return\"cropSize must be atleast [1,1], but was \"+r})),C(\"bilinear\"===o||\"nearest\"===o,(function(){return\"method must be bilinear or nearest, but was \"+o})),Lt.runKernelFunc((function(t,e){return t.cropAndResize(i,s,u,r,o,a)}),{images:i,boxes:s,boxInd:u},null,\"CropAndResize\",{method:o,extrapolationValue:a,cropSize:r})}}),nf=Object.freeze({resizeBilinear:Yh,resizeNearestNeighbor:$h,nonMaxSuppression:Qh,nonMaxSuppressionAsync:Jh,nonMaxSuppressionWithScore:Zh,nonMaxSuppressionWithScoreAsync:tf,cropAndResize:ef}),rf=function(t,e){return!(t>0)||\"linear\"===e},of=function(t,e,n){if(null==n||\"linear\"===n)return t;if(\"relu\"===n)return t.mul(e.step());throw new Error(\"Gradient for activation \"+n+\" has not been implemented yet.\")},af=function(t,e){var n=e,r=Br(t.shape,e.shape);return r.length>0&&(n=n.sum(r)),n.reshape(t.shape)},sf=function(t,e,n){if(\"linear\"===e)return t;if(\"relu\"===e)return ah(t);if(\"elu\"===e)return nh(t);if(\"relu6\"===e)return ih(t);if(\"prelu\"===e)return oh(t,n);throw new Error(\"Unknown fused activation \"+e+\".\")};var uf=An({fusedMatMul_:function(t){var e,n=t.a,r=t.b,o=t.transposeA,a=void 0!==o&&o,i=t.transposeB,s=void 0!==i&&i,u=t.bias,c=t.activation,l=void 0===c?\"linear\":c,h=t.preluActivationWeights;if(!1===rf(Lt.state.gradientDepth,l)){var f=El(n,r,a,s);return null!=u&&(f=Or(f,u)),sf(f,l,h)}var d=gn(n,\"a\",\"fused matMul\"),p=gn(r,\"b\",\"fused matMul\");e=Nt(d,p),d=e[0],p=e[1];var v=a?d.shape[d.rank-2]:d.shape[d.rank-1],g=s?p.shape[p.rank-1]:p.shape[p.rank-2],m=a?d.shape[d.rank-1]:d.shape[d.rank-2],y=s?p.shape[p.rank-2]:p.shape[p.rank-1],x=d.shape.slice(0,-2),b=p.shape.slice(0,-2),w=k(x),E=k(b);C(d.rank>=2&&p.rank>=2&&d.rank===p.rank,(function(){return\"Error in fused matMul: inputs must have the same rank of at least 2, got ranks \"+d.rank+\" and \"+p.rank+\".\"})),C(S(x,b),(function(){return\"Error in fused matMul: outer dimensions (\"+x+\") and (\"+b+\") of Tensors with shapes \"+d.shape+\" and \"+p.shape+\" must match.\"})),C(v===g,(function(){return\"Error in fused matMul: inner shapes (\"+v+\") and (\"+g+\") of Tensors with shapes \"+d.shape+\" and \"+p.shape+\" and transposeA=\"+a+\" and transposeB=\"+s+\" must match.\"}));var R,I,A=d.shape.slice(0,-2).concat([m,y]),T=a?d.as3D(w,v,m):d.as3D(w,m,v),D=s?p.as3D(E,y,g):p.as3D(E,g,y);null!=u&&Pr(A,(R=Nt(R=gn(u,\"bias\",\"fused matMul\"),d)[0]).shape),null!=h&&(I=gn(h,\"prelu weights\",\"fused matMul\"));var N={a:T,b:D};null!=u&&(N.bias=R),null!=h&&(N.preluActivationWeights=I);var F=[T,D];return Lt.runKernelFunc((function(t,e){var n=t.fusedBatchMatMul({a:T,b:D,transposeA:a,transposeB:s,bias:R,activation:l,preluActivationWeights:I});return e([T,D,n]),n}),N,(function(t,e){var n=e[0],r=e[1],o=e[2],i=of(t,o,l),c={};return null!=u&&(c={bias:function(){return af(R,i)}}),a||s?!a&&s?Object.assign({a:function(){return i.matMul(r,!1,!1)},b:function(){return i.matMul(n,!0,!1)}},c):a&&!s?Object.assign({a:function(){return r.matMul(i,!1,!0)},b:function(){return n.matMul(i,!1,!1)}},c):Object.assign({a:function(){return r.matMul(i,!0,!0)},b:function(){return i.matMul(n,!0,!0)}},c):Object.assign({a:function(){return i.matMul(r,!1,!0)},b:function(){return n.matMul(i,!0,!1)}},c)}),\"_FusedMatMul\",{transposeA:a,transposeB:s,activation:l},F,[!0]).reshape(A)}}),cf=An({fusedConv2d_:function(t){var e=t.x,n=t.filter,r=t.strides,o=t.pad,a=t.dataFormat,i=void 0===a?\"NHWC\":a,s=t.dilations,u=void 0===s?[1,1]:s,c=t.dimRoundingMode,l=t.bias,h=t.activation,f=void 0===h?\"linear\":h,d=t.preluActivationWeights;if(f=f||\"linear\",!1===rf(Lt.state.gradientDepth,f)){var p=dl(e,n,r,o,i,u,c);return null!=l&&(p=Or(p,l)),sf(p,f,d)}var v=gn(e,\"x\",\"conv2d\"),g=gn(n,\"filter\",\"conv2d\"),m=v,y=!1;3===v.rank&&(y=!0,m=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),C(4===m.rank,(function(){return\"Error in fused conv2d: input must be rank 4, but got rank \"+m.rank+\".\"})),C(4===g.rank,(function(){return\"Error in fused conv2d: filter must be rank 4, but got rank \"+g.rank+\".\"})),null!=c&&C(A(o),(function(){return\"Error in fused conv2d: pad must be an integer when using, dimRoundingMode \"+c+\" but got pad \"+o+\".\"})),C(m.shape[3]===g.shape[2],(function(){return\"Error in conv2d: depth of input (\"+m.shape[3]+\") must match input depth for filter \"+g.shape[2]+\".\"})),C(Ca(r,u),(function(){return\"Error in conv2D: Either strides or dilations must be 1. Got strides \"+r+\" and dilations '\"+u+\"'\"})),C(\"NHWC\"===i,(function(){return\"Error in conv2d: got dataFormat of \"+i+\" but only NHWC is currently supported.\"}));var x,b,w=pa(m.shape,g.shape,r,u,o,c);null!=l&&(x=Nt(x=gn(l,\"bias\",\"fused conv2d\"),v)[0],Pr(w.outShape,x.shape)),null!=d&&(b=gn(d,\"prelu weights\",\"fused conv2d\"));var E={x:m,filter:g};null!=l&&(E.bias=x),null!=d&&(E.preluActivationWeights=b);var R=[g,m],I=Lt.runKernelFunc((function(t,e){var n=t.fusedConv2d({input:m,filter:g,convInfo:w,bias:x,activation:f,preluActivationWeights:b});return e([g,m,n]),n}),E,(function(t,e){var n=e,a=n[0],i=n[1],s=n[2],c=of(t,s,f);C(wa(u),(function(){return\"Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '\"+u+\"'\"}));var h={};return null!=l&&(h={bias:function(){return af(x,c)}}),Object.assign({x:function(){return gl(i.shape,c,a,r,o)},filter:function(){return vl(i,c,a.shape,r,o)}},h)}),\"FusedConv2D\",{convInfo:w,activation:f},R,[!0]);return y?I.as3D(I.shape[1],I.shape[2],I.shape[3]):I}}),lf=An({fusedDepthwiseConv2d_:function(t){var e=t.x,n=t.filter,r=t.strides,o=t.pad,a=t.dataFormat,i=void 0===a?\"NHWC\":a,s=t.dilations,u=void 0===s?[1,1]:s,c=t.dimRoundingMode,l=t.bias,h=t.activation,f=void 0===h?\"linear\":h,d=t.preluActivationWeights;if(!1===rf(Lt.state.gradientDepth,f)){var p=ml(e,n,r,o,i,u,c);return null!=l&&(p=Or(p,l)),sf(p,f,d)}var v=gn(e,\"x\",\"depthwiseConv2d\"),g=gn(n,\"filter\",\"depthwiseConv2d\"),m=v,y=!1;3===v.rank&&(y=!0,m=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),C(4===m.rank,(function(){return\"Error in fused depthwiseConv2d: input must be rank 4, but got rank \"+m.rank+\".\"})),C(4===g.rank,(function(){return\"Error in fused depthwiseConv2d: filter must be rank 4, but got rank \"+g.rank+\".\"})),C(m.shape[3]===g.shape[2],(function(){return\"Error in fused depthwiseConv2d: number of input channels (\"+m.shape[3]+\") must match the inChannels dimension in filter \"+g.shape[2]+\".\"})),null==u&&(u=[1,1]),C(Ca(r,u),(function(){return\"Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides \"+r+\" and dilations '\"+u+\"'\"})),null!=c&&C(A(o),(function(){return\"Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode \"+c+\" but got pad \"+o+\".\"}));var x,b,w=pa(m.shape,g.shape,r,u,o,c,!0);null!=l&&(x=Nt(x=gn(l,\"bias\",\"fused conv2d\"),v)[0],Pr(w.outShape,x.shape)),null!=d&&(b=gn(d,\"prelu weights\",\"fused depthwiseConv2d\"));var E={x:m,filter:g};null!=l&&(E.bias=x),null!=d&&(E.preluActivationWeights=b);var R=[g,m],I=Lt.runKernelFunc((function(t,e){var n=t.fusedDepthwiseConv2D({input:m,filter:g,convInfo:w,bias:x,activation:f,preluActivationWeights:b});return e([g,m,n]),n}),E,(function(t,e){C(wa(u),(function(){return\"Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '\"+u+\"'\"}));var n=e[0],r=e[1],o=e[2],a=of(t,o,f),i={};return null!=l&&(i={bias:function(){return af(x,a)}}),Object.assign({x:function(){return yl(r.shape,a,n,w)},filter:function(){return xl(r,a,n.shape,w)}},i)}),\"FusedDepthwiseConv2D\",{convInfo:w,activation:f},R,[!0]);return y?I.as3D(I.shape[1],I.shape[2],I.shape[3]):I}}),hf=Object.freeze({matMul:uf,conv2d:cf,depthwiseConv2d:lf}),ff=Object.freeze({image:nf,linalg:jh,losses:zh,spectral:bh,fused:hf,signal:Dh,add:Or,addN:$u,batchNorm:nc,batchNormalization:ec,batchNorm2d:ac,batchNormalization2d:oc,batchNorm3d:uc,batchNormalization3d:sc,batchNorm4d:hc,batchNormalization4d:lc,broadcastTo:fc,clone:dc,div:Bo,divNoNan:bc,eye:Cc,multinomial:Ec,oneHot:Rc,pad:Ic,pad1d:kc,pad2d:Sc,pad3d:Ac,pad4d:Tc,rand:Dc,randomGamma:Uc,randomNormal:Vc,randomUniform:zc,square:Gc,squaredDifference:Hc,tile:wc,truncatedNormal:qc,conv1d:fl,conv2d:dl,conv3d:pl,depthwiseConv2d:ml,separableConv2d:bl,conv2dTranspose:wl,conv3dTranspose:Cl,op:An,booleanMaskAsync:ul,complex:Tn,real:Dn,imag:Nn,concat:Yn,concat1d:$n,concat2d:Qn,concat3d:Jn,concat4d:Zn,split:tr,matMul:El,dot:Rl,outerProduct:Il,reverse:kl,reverse1d:Sl,reverse2d:Al,reverse3d:Tl,reverse4d:Dl,maxPool:_l,avgPool:Ol,pool:Ml,maxPool3d:Bl,avgPool3d:Pl,maxPoolWithArgmax:Ll,slice:Wl,slice1d:Ul,slice2d:Vl,slice3d:zl,slice4d:Gl,abs:Lr,acos:Wr,acosh:Ur,asin:Vr,asinh:zr,atan:Gr,atanh:Hr,ceil:qr,clipByValue:Kr,cos:jr,cosh:Xr,erf:Yr,exp:$r,expm1:Qr,floor:Jr,log:Zr,log1p:to,logSigmoid:eo,neg:no,reciprocal:ro,round:oo,rsqrt:ao,sigmoid:io,sign:so,isNaN:uo,isInf:co,isFinite:lo,sin:ho,sinh:fo,softplus:po,sqrt:vo,step:go,tan:mo,tanh:yo,all:ql,any:Kl,argMax:jl,argMin:Xl,logSumExp:Yl,max:$l,mean:Ql,min:Jl,moments:Zl,sum:th,prod:eh,equal:Kc,equalStrict:jc,greater:Xc,greaterEqual:Yc,greaterEqualStrict:$c,greaterStrict:Qc,less:Jc,lessEqual:Zc,lessEqualStrict:tl,lessStrict:el,notEqual:nl,notEqualStrict:rl,addStrict:xo,atan2:bo,divStrict:wo,floorDiv:Co,maximum:Eo,maximumStrict:Ro,minimum:Io,minimumStrict:ko,mod:So,modStrict:Ao,mul:To,mulStrict:Do,pow:No,powStrict:Fo,squaredDifferenceStrict:_o,sub:Oo,subStrict:Mo,elu:nh,leakyRelu:rh,prelu:oh,relu:ah,relu6:ih,selu:sh,logicalAnd:pc,logicalNot:vc,logicalOr:gc,logicalXor:mc,where:yc,whereAsync:xc,buffer:er,print:nr,batchToSpaceND:rr,cast:or,cumsum:ar,depthToSpace:ir,expandDims:sr,reshape:ur,spaceToBatchND:cr,squeeze:lr,stack:hr,unstack:fr,setdiff1dAsync:dr,fill:Hn,linspace:qn,ones:zn,range:Kn,scalar:On,tensor:Fn,tensor1d:Mn,tensor2d:Bn,tensor3d:Pn,tensor4d:Ln,tensor5d:Wn,tensor6d:Un,variable:Vn,zeros:Gn,onesLike:jn,zerosLike:Xn,transpose:ua,softmax:ia,logSoftmax:sa,localResponseNormalization:uh,norm:ch,gather:il,unsortedSegmentSum:sl,basicLSTMCell:lh,multiRNNCell:hh,movingAverage:fh,stridedSlice:dh,topk:ph,scatterND:vh,fft:gh,ifft:mh,rfft:yh,irfft:xh,sparseToDense:wh,gatherND:Ch,diag:Eh,dropout:Rh,hannWindow:kh,hammingWindow:Sh,frame:Ah,stft:Th,inTopKAsync:Fh});function df(t,e){Array.isArray(t)||(t=[t]),t.forEach((function(t){null!=t&&C(\"complex64\"!==t.dtype,(function(){return e+\" does not support complex64 tensors.\"}))}))}function pf(t,e,n,r,o,a){for(var i=o.strideHeight,s=o.strideWidth,u=o.dilationHeight,c=o.dilationWidth,l=o.effectiveFilterHeight,h=o.effectiveFilterWidth,f=o.padInfo.top,d=o.padInfo.left,p=\"max\"===a?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,v=er(o.outShape,n),g=v.values,m=o.outShape[1]*o.outShape[2]*o.outShape[3],y=o.outShape[2]*o.outShape[3],x=o.outShape[3],b=0;b<o.batchSize;++b)for(var w=b*m,C=b*r[0],E=0;E<o.inChannels;++E)for(var R=0;R<o.outHeight;++R)for(var I=R*i-f,k=Math.max(0,I),S=Math.min(o.inHeight,l+I),A=w+R*y,T=0;T<o.outWidth;++T){for(var D=T*s-d,N=Math.max(0,D),F=Math.min(o.inWidth,h+D),_=p,O=0,M=0,B=k;B<S;B+=u){for(var P=C+B*r[1],L=N;L<F;L+=c){var W=t[P+L*r[2]+E];\"max\"===a&&W>_?_=W:\"avg\"===a&&(O+=W,M++)}if(isNaN(_))break}g[A+T*x+E]=\"avg\"===a?O/M:_}return v}function vf(t,e,n,r,o,a){void 0===o&&(o=!1),void 0===a&&(a=!1);for(var i=er(r.outShape,\"int32\"),s=r.strideHeight,u=r.strideWidth,c=r.dilationHeight,l=r.dilationWidth,h=r.effectiveFilterHeight,f=r.effectiveFilterWidth,d=r.padInfo.top,p=r.padInfo.left,v=er(e,n,t),g=0;g<r.batchSize;++g)for(var m=0;m<r.inChannels;++m)for(var y=0;y<r.outHeight;++y){for(var x=y*s-d,b=x;b<0;)b+=c;for(var w=Math.min(r.inHeight,h+x),C=0;C<r.outWidth;++C){for(var E=C*u-p,R=E;R<0;)R+=l;for(var I=Math.min(r.inWidth,f+E),k=Number.NEGATIVE_INFINITY,S=-1,A=b;A<w;A+=c)for(var T=A-x,D=R;D<I;D+=l){var N=D-E,F=v.get(g,A,D,m);F>k&&(k=F,S=o?a?((g*r.inHeight+A)*r.inWidth+D)*r.inChannels+m:(A*r.inWidth+D)*r.inChannels+m:T*f+N)}i.set(S,g,y,C,m)}}return i}function gf(t,e,n,r){if(\"linear\"===n)return t.linear(e);if(\"relu\"===n)return t.relu(e);if(\"elu\"===n)return t.elu(e);if(\"relu6\"===n)return t.relu6(e);if(\"prelu\"===n)return t.prelu(e,r);throw new Error(\"Activation \"+n+\" has not been implemented for the CPU backend.\")}var mf=function(t){function o(){var e=t.call(this)||this;return e.blockSize=48,e.firstUse=!0,e.data=new ca(e,Lt),e}return e(o,t),o.prototype.write=function(t,e,n){this.firstUse&&(this.firstUse=!1,i().get(\"IS_NODE\")&&dn(\"\\n============================\\nHi there 👋. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details.\\n============================\"));var r={};return this.data.set(r,{values:t,dtype:n}),r},o.prototype.move=function(t,e,n,r){this.data.set(t,{values:e,dtype:r})},o.prototype.numDataIds=function(){return this.data.numDataIds()},o.prototype.read=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(e){return[2,this.readSync(t)]}))}))},o.prototype.readSync=function(t){var e=this.data.get(t),n=e.dtype,r=e.complexTensors;return\"complex64\"===n?Aa(this.readSync(r.real.dataId),this.readSync(r.imag.dataId)):this.data.get(t).values},o.prototype.bufferSync=function(t){var e=this.readSync(t.dataId),n=e;if(\"string\"===t.dtype)try{n=e.map((function(t){return ot(t)}))}catch(t){throw new Error(\"Failed to decode encoded string bytes into utf-8\")}return er(t.shape,t.dtype,n)},o.prototype.makeOutput=function(t,e,n){var r=this.write(t,e,n);return Lt.makeTensorFromDataId(r,e,n,this)},o.prototype.disposeData=function(t){if(this.data.has(t)){var e=this.data.get(t).complexTensors;null!=e&&(e.real.dispose(),e.imag.dispose()),this.data.delete(t)}},o.prototype.time=function(t){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){return e=et(),t(),[2,{kernelMs:et()-e}]}))}))},o.prototype.memory=function(){return{unreliable:!0,reasons:[\"The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less.\"]}},o.prototype.complex=function(t,e){var n=this.makeOutput(null,t.shape,\"complex64\");return this.data.get(n.dataId).complexTensors={real:Lt.keep(t.clone()),imag:Lt.keep(e.clone())},n},o.prototype.real=function(t){return this.data.get(t.dataId).complexTensors.real.clone()},o.prototype.imag=function(t){return this.data.get(t.dataId).complexTensors.imag.clone()},o.prototype.slice=function(t,e,n){if(df(t,\"slice\"),$o(t.shape,e,n)){var r=Qo(e,t.strides),o=k(n);return Fn(this.readSync(t.dataId).subarray(r,r+o),n,t.dtype)}for(var a=er(n,t.dtype),i=this.bufferSync(t),s=0;s<a.size;++s){var u=a.indexToLoc(s).map((function(t,n){return t+e[n]}));a.values[s]=i.get.apply(i,u)}return a.toTensor()},o.prototype.stridedSlice=function(t,e,n,r){df(t,\"stridedSlice\");var o=jo(e,n,r);if(o.some((function(t){return 0===t})))return Fn([],o);for(var a=er(o,t.dtype),i=this.bufferSync(t),s=0;s<a.size;s++){for(var u=a.indexToLoc(s),c=new Array(u.length),l=0;l<c.length;l++)c[l]=u[l]*r[l]+e[l];a.set.apply(a,[i.get.apply(i,c)].concat(u))}return a.toTensor()},o.prototype.diag=function(t){for(var e=this.readSync(t.dataId),n=er([t.size,t.size],t.dtype),r=n.values,o=0;o<e.length;o++)r[o*t.size+o]=e[o];return n.toTensor()},o.prototype.unstack=function(t,e){for(var n=t.shape[e],r=new Array(t.rank-1),o=0,a=0;a<t.rank;a++)a!==e&&(r[o++]=t.shape[a]);var i=new Array(t.rank).fill(0),s=t.shape.slice();s[e]=1;var u=new Array(n);for(a=0;a<u.length;a++)i[e]=a,u[a]=this.slice(t,i,s).reshape(r);return u},o.prototype.reverse=function(t,e){df(t,\"reverse\");for(var n=er(t.shape,t.dtype),r=this.bufferSync(t),o=function(o){var a=n.indexToLoc(o),i=a.slice();e.forEach((function(e){return i[e]=t.shape[e]-1-i[e]})),n.set.apply(n,[r.get.apply(r,i)].concat(a))},a=0;a<n.size;a++)o(a);return n.toTensor()},o.prototype.concat=function(t,e){var n=this;if(\"complex64\"===t[0].dtype){var r=t.map((function(t){return Dn(t)})),o=t.map((function(t){return Nn(t)}));return Tn(this.concat(r,e),this.concat(o,e))}var a=t.map((function(t){var n=k(t.shape.slice(e));return t.as2D(-1,n)})),i=Sn(a.map((function(t){return t.shape})),1),s=er(i,t[0].dtype).values;if(1===a[0].shape[0]){var u=0;a.forEach((function(t){s.set(n.readSync(t.dataId),u),u+=t.size}))}else{var c=0;a.forEach((function(t){for(var e=n.readSync(t.dataId),r=0,o=0;o<t.shape[0];++o)for(var a=o*i[1]+c,u=0;u<t.shape[1];++u)s[a+u]=e[r++];c+=t.shape[1]}))}var l=Sn(t.map((function(t){return t.shape})),e);return Fn(s,l,t[0].dtype)},o.prototype.neg=function(t){return df(t,\"neg\"),this.multiply(On(-1),t)},o.prototype.add=function(t,e){return\"complex64\"===t.dtype||\"complex64\"===e.dtype?this.broadcastedBinaryComplexOp(t.cast(\"complex64\"),e.cast(\"complex64\"),(function(t,e,n,r){return{real:t+n,imag:e+r}})):this.broadcastedBinaryOp(t,e,Tt(t.dtype,e.dtype),(function(t,e){return t+e}))},o.prototype.addN=function(t){var e=this;df(t,\"addN\");for(var n=t.map((function(t){return e.readSync(t.dataId)})),r=er(t[0].shape,t[0].dtype),o=r.values,a=0;a<t.length;a++)for(var i=n[a],s=0;s<o.length;s++)o[s]+=i[s];return r.toTensor()},o.prototype.softmax=function(t,e){var n=O([e],t.shape),r=this.max(t,n),o=wn(r.shape,n),a=this.subtract(t,r.reshape(o)),i=this.exp(a),s=this.sum(i,n).reshape(o);return Bo(i,s)},o.prototype.subtract=function(t,e){return\"complex64\"===t.dtype||\"complex64\"===e.dtype?this.broadcastedBinaryComplexOp(t.cast(\"complex64\"),e.cast(\"complex64\"),(function(t,e,n,r){return{real:t-n,imag:e-r}})):this.broadcastedBinaryOp(t,e,Tt(t.dtype,e.dtype),(function(t,e){return t-e}))},o.prototype.pow=function(t,e){return df([t,e],\"pow\"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.pow(t,e)}))},o.prototype.batchMatMul=function(t,e,n,r){df([t,e],\"matMul\");for(var o=n?t.shape[1]:t.shape[2],a=n?t.shape[2]:t.shape[1],i=r?e.shape[1]:e.shape[2],s=t.shape[0],u=this.readSync(t.dataId),c=this.readSync(e.dataId),l=n?[t.strides[0],1,t.strides[1]]:[t.strides[0],t.strides[1],1],h=l[0],f=l[1],d=l[2],p=r?[1,e.strides[1],e.strides[0]]:[e.strides[1],1,e.strides[0]],v=p[0],g=p[1],m=p[2],y=a*i,x=er([s,a,i],t.dtype),b=x.values,w=this.blockSize,C=0;C<s;C++)for(var E=0;E<a;E+=w)for(var R=0;R<i;R+=w)for(var I=0;I<o;I+=w)for(var k=Math.min(E+w,a),S=Math.min(R+w,i),A=Math.min(I+w,o),T=E;T<k;T++)for(var D=R;D<S;D++){for(var N=0,F=I;F<A;F++)N+=u[C*h+T*f+F*d]*c[F*v+D*g+C*m];b[C*y+(T*i+D)]+=N}return x.toTensor()},o.prototype.fusedBatchMatMul=function(t){var e=t.a,n=t.b,r=t.transposeA,o=t.transposeB,a=t.bias,i=t.activation,s=t.preluActivationWeights,u=this.batchMatMul(e,n,r,o);return a&&(u=this.add(u,a)),i&&(u=gf(this,u,i,s)),u},o.prototype.multiply=function(t,e){return\"complex64\"===t.dtype||\"complex64\"===e.dtype?this.broadcastedBinaryComplexOp(t.cast(\"complex64\"),e.cast(\"complex64\"),(function(t,e,n,r){return{real:t*n-e*r,imag:t*r+e*n}})):this.broadcastedBinaryOp(t,e,Tt(t.dtype,e.dtype),(function(t,e){return t*e}))},o.prototype.floorDiv=function(t,e){df([t,e],\"floorDiv\");return this.broadcastedBinaryOp(t,e,\"int32\",(function(t,e){return Math.floor(t/e)}))},o.prototype.sum=function(t,e){df(t,\"sum\"),Cn(\"sum\",e,t.rank);for(var n=bn(t.shape,e),r=n[0],o=n[1],a=Gn(r,Tt(t.dtype,\"int32\")),i=k(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,h=0,f=0;f<i;++f)h+=u[l+f];s[c]=h}return a},o.prototype.prod=function(t,e){df(t,\"sum\");for(var n=bn(t.shape,e),r=n[0],o=n[1],a=Gn(r,Tt(t.dtype,\"int32\")),i=k(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,h=1,f=0;f<i;++f)h*=u[l+f];s[c]=h}return a},o.prototype.unsortedSegmentSum=function(t,e,n){df(t,\"unsortedSegmentSum\");for(var r=[],o=t.rank-e.rank,a=0;a<o;++a)e=e.expandDims(a+1);for(a=0;a<n;++a){var i=On(a,\"int32\"),s=Kc(i,e).asType(\"float32\").mul(t).sum(0);r.push(s)}return hr(r)},o.prototype.argMin=function(t,e){df(t,\"argMin\");var n=[e];Cn(\"argMin\",n,t.rank);for(var r=bn(t.shape,n),o=r[0],a=r[1],i=Gn(o,\"int32\"),s=k(a),u=this.readSync(i.dataId),c=this.readSync(t.dataId),l=0;l<u.length;++l){for(var h=l*s,f=c[h],d=0,p=0;p<s;++p){var v=c[h+p];v<f&&(f=v,d=p)}u[l]=d}return i},o.prototype.argMax=function(t,e){df(t,\"argMax\");var n=[e];Cn(\"argMax\",n,t.rank);for(var r=bn(t.shape,n),o=r[0],a=r[1],i=Gn(o,\"int32\"),s=k(a),u=this.readSync(i.dataId),c=this.readSync(t.dataId),l=0;l<u.length;++l){for(var h=l*s,f=c[h],d=0,p=0;p<s;++p){var v=c[h+p];v>f&&(f=v,d=p)}u[l]=d}return i},o.prototype.cumsum=function(t,e,n,r){if(df(t,\"cumsum\"),e!==t.rank-1)throw new Error(\"backend.cumsum in CPU expects an inner-most axis=\"+(t.rank-1)+\" but got axis=\"+e);for(var o=Tt(t.dtype,\"int32\"),a=Gn(t.shape,o),i=this.readSync(a.dataId),s=this.readSync(t.dataId),u=t.shape[t.rank-1],c=r?function(t,e){return t+u-e-1}:function(t,e){return t+e},l=0;l<s.length;l+=u)for(var h=0;h<u;h++){var f=c(l,h);if(0===h)i[f]=n?0:s[f];else{var d=c(l,h-1);i[f]=n?s[d]+i[d]:s[f]+i[d]}}return a},o.prototype.equal=function(t,e){return df([t,e],\"equal\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t===e?1:0}))},o.prototype.notEqual=function(t,e){return df([t,e],\"notEqual\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t!==e?1:0}))},o.prototype.less=function(t,e){return df([t,e],\"less\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t<e?1:0}))},o.prototype.lessEqual=function(t,e){return df([t,e],\"lessEqual\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t<=e?1:0}))},o.prototype.greater=function(t,e){return df([t,e],\"greater\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t>e?1:0}))},o.prototype.greaterEqual=function(t,e){return df([t,e],\"greaterEqual\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t>=e?1:0}))},o.prototype.logicalNot=function(t){df(t,\"logicalNot\");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)n[r]=e[r]?0:1;return this.makeOutput(n,t.shape,\"bool\")},o.prototype.logicalAnd=function(t,e){return df([t,e],\"logicalAnd\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t&&e}))},o.prototype.logicalOr=function(t,e){return df([t,e],\"logicalOr\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t||e}))},o.prototype.select=function(t,e,n){df([t,e,n],\"select\");for(var r=this.readSync(t.dataId),o=this.readSync(e.dataId),a=this.readSync(n.dataId),i=Gn(e.shape,Tt(e.dtype,n.dtype)),s=this.readSync(i.dataId),u=0,c=0===t.rank||t.rank>1||1===e.rank?1:k(e.shape.slice(1)),l=0;l<r.length;l++)for(var h=0;h<c;h++)1===r[l]?s[u++]=o[l]:s[u++]=a[l];return i},o.prototype.where=function(t){df([t],\"where\");var e=this.readSync(t.dataId);return Ga(t.shape,e)},o.prototype.topk=function(t,e,n){return df(t,\"topk\"),za(this.readSync(t.dataId),t.shape,t.dtype,e)},o.prototype.min=function(t,e){df(t,\"min\"),Cn(\"min\",e,t.rank);for(var n=bn(t.shape,e),r=n[0],o=n[1],a=Gn(r,t.dtype),i=k(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,h=u[l],f=0;f<i;++f){var d=u[l+f];d<h&&(h=d)}s[c]=h}return a},o.prototype.minimum=function(t,e){return df([t,e],\"minimum\"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.min(t,e)}))},o.prototype.mod=function(t,e){return df([t,e],\"mod\"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){var n=t%e;return t<0&&e<0||t>=0&&e>=0?n:(n+e)%e}))},o.prototype.max=function(t,e){df(t,\"max\"),Cn(\"max\",e,t.rank);for(var n=bn(t.shape,e),r=n[0],o=n[1],a=Gn(r,t.dtype),i=k(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,h=u[l],f=0;f<i;++f){var d=u[l+f];d>h&&(h=d)}s[c]=h}return a},o.prototype.maximum=function(t,e){return df([t,e],\"maximum\"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.max(t,e)}))},o.prototype.all=function(t,e){df(t,\"all\"),Cn(\"all\",e,t.rank);for(var n=bn(t.shape,e),r=n[0],o=n[1],a=Gn(r,t.dtype),i=k(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,h=u[l],f=0;f<i;++f){var d=u[l+f];h=h&&d}s[c]=h}return a},o.prototype.any=function(t,e){df(t,\"any\"),Cn(\"any\",e,t.rank);for(var n=bn(t.shape,e),r=n[0],o=n[1],a=Gn(r,t.dtype),i=k(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,h=u[l],f=0;f<i;++f){var d=u[l+f];h=h||d}s[c]=h}return a},o.prototype.squaredDifference=function(t,e){return df([t,e],\"squaredDifference\"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){var n=t-e;return n*n}))},o.prototype.ceil=function(t){df(t,\"ceil\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.ceil(e[r]);return this.makeOutput(n,t.shape,\"float32\")},o.prototype.floor=function(t){df(t,\"floor\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.floor(e[r]);return this.makeOutput(n,t.shape,\"float32\")},o.prototype.sign=function(t){df(t,\"x\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)e[r]<0?n[r]=-1:e[r]>0?n[r]=1:n[r]=0;return this.makeOutput(n,t.shape,\"float32\")},o.prototype.isNaN=function(t){df(t,\"x\");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)Number.isNaN(e[r])&&(n[r]=1);return this.makeOutput(n,t.shape,\"bool\")},o.prototype.isInf=function(t){df(t,\"x\");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)Math.abs(e[r])===1/0&&(n[r]=1);return this.makeOutput(n,t.shape,\"bool\")},o.prototype.isFinite=function(t){df(t,\"x\");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)Number.isFinite(e[r])&&(n[r]=1);return this.makeOutput(n,t.shape,\"bool\")},o.prototype.round=function(t){df(t,\"round\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=Math.floor(e[r]);e[r]-o<.5?n[r]=Math.floor(e[r]):e[r]-o>.5?n[r]=Math.ceil(e[r]):n[r]=o%2==0?o:o+1}return this.makeOutput(n,t.shape,\"float32\")},o.prototype.exp=function(t){df(t,\"exp\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.exp(e[r]);return this.makeOutput(n,t.shape,\"float32\")},o.prototype.expm1=function(t){df(t,\"expm1\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.expm1(e[r]);return this.makeOutput(n,t.shape,\"float32\")},o.prototype.log=function(t){df(t,\"log\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=Math.log(o)}return this.makeOutput(n,t.shape,\"float32\")},o.prototype.log1p=function(t){df(t,\"log1p\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=Math.log1p(o)}return this.makeOutput(n,t.shape,\"float32\")},o.prototype.sqrt=function(t){df(t,\"sqrt\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=Math.sqrt(o)}return this.makeOutput(n,t.shape,\"float32\")},o.prototype.rsqrt=function(t){df(t,\"rsqrt\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=1/Math.sqrt(o)}return this.makeOutput(n,t.shape,\"float32\")},o.prototype.reciprocal=function(t){df(t,\"reciprocal\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=1/e[r];return this.makeOutput(n,t.shape,\"float32\")},o.prototype.linear=function(t){return t},o.prototype.relu=function(t){df(t,\"relu\");for(var e=Gn(t.shape,t.dtype),n=this.readSync(e.dataId),r=this.readSync(t.dataId),o=0;o<r.length;++o)n[o]=Math.max(0,r[o]);return e},o.prototype.relu6=function(t){df(t,\"relu\");for(var e=Gn(t.shape,t.dtype),n=this.readSync(e.dataId),r=this.readSync(t.dataId),o=0;o<r.length;++o)n[o]=Math.min(Math.max(0,r[o]),6);return e},o.prototype.prelu=function(t,e){return df([t,e],\"prelu\"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return t<0?e*t:t}))},o.prototype.elu=function(t){df(t,\"elu\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r){var o=n[r];e[r]=o>=0?o:Math.exp(o)-1}return this.makeOutput(e,t.shape,\"float32\")},o.prototype.eluDer=function(t,e){df([t,e],\"eluDer\");for(var n=new Float32Array(e.size),r=this.readSync(e.dataId),o=this.readSync(t.dataId),a=0;a<r.length;++a){var i=r[a];n[a]=i>=1?o[a]:o[a]*(i+1)}return this.makeOutput(n,e.shape,\"float32\")},o.prototype.selu=function(t){df(t,\"selu\");for(var e=su,n=uu,r=new Float32Array(t.size),o=this.readSync(t.dataId),a=0;a<o.length;++a){var i=o[a];r[a]=i>=0?n*i:e*(Math.exp(i)-1)}return this.makeOutput(r,t.shape,\"float32\")},o.prototype.clip=function(t,e,n){df(t,\"clip\");for(var r=new Float32Array(t.size),o=this.readSync(t.dataId),a=0;a<o.length;++a){var i=o[a];r[a]=i>n?n:i<e?e:i}return this.makeOutput(r,t.shape,\"float32\")},o.prototype.abs=function(t){for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.abs(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.complexAbs=function(t){for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<t.size;++r){var o=n[2*r],a=n[2*r+1];e[r]=Math.hypot(o,a)}return this.makeOutput(e,t.shape,\"float32\")},o.prototype.int=function(t){df(t,\"int\");for(var e=new Int32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=n[r];return this.makeOutput(e,t.shape,\"int32\")},o.prototype.sigmoid=function(t){df(t,\"sigmoid\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=1/(1+Math.exp(-n[r]));return this.makeOutput(e,t.shape,\"float32\")},o.prototype.softplus=function(t){df(t,\"softplus\");for(var e=Math.log(1.1920928955078125e-7)+2,n=new Float32Array(t.size),r=this.readSync(t.dataId),o=0;o<r.length;++o){var a=r[o]>-e,i=r[o]<e,s=Math.exp(r[o]),u=void 0;u=i?s:a?r[o]:Math.log(1+s),n[o]=u}return this.makeOutput(n,t.shape,\"float32\")},o.prototype.sin=function(t){df(t,\"sin\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.sin(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.cos=function(t){df(t,\"cos\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.cos(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.tan=function(t){df(t,\"tan\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.tan(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.asin=function(t){df(t,\"asin\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.asin(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.acos=function(t){df(t,\"acos\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.acos(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.atan=function(t){df(t,\"atan\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.atan(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.atan2=function(t,e){return df([t,e],\"atan2\"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.atan2(t,e)}))},o.prototype.sinh=function(t){df(t,\"sinh\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.sinh(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.cosh=function(t){df(t,\"cosh\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.cosh(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.tanh=function(t){df(t,\"tanh\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=T(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.asinh=function(t){df(t,\"asinh\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.asinh(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.acosh=function(t){df(t,\"acosh\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.acosh(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.atanh=function(t){df(t,\"atanh\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.atanh(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.erf=function(t){df(t,\"erf\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r){var o=Math.sign(n[r]),a=Math.abs(n[r]),i=1/(1+.3275911*a);e[r]=o*(1-((((1.061405429*i-1.453152027)*i+1.421413741)*i-.284496736)*i+.254829592)*i*Math.exp(-a*a))}return this.makeOutput(e,t.shape,\"float32\")},o.prototype.step=function(t,e){void 0===e&&(e=0),df(t,\"step\");for(var n=new Float32Array(t.size),r=this.readSync(t.dataId),o=0;o<r.length;++o){var a=r[o];isNaN(a)?n[o]=NaN:n[o]=a>0?1:e}return this.makeOutput(n,t.shape,\"float32\")},o.prototype.fusedConv2d=function(t){var e=t.input,n=t.filter,r=t.convInfo,o=t.bias,a=t.activation,i=t.preluActivationWeights,s=this.conv2d(e,n,r);return o&&(s=this.add(s,o)),a&&(s=gf(this,s,a,i)),s},o.prototype.conv2d=function(t,e,n){df([t,e],\"conv2d\");for(var r=n.filterHeight,o=n.filterWidth,a=n.dilationHeight,i=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,c=\"channelsLast\"===n.dataFormat,l=er(n.outShape,t.dtype),h=t.strides[0],f=c?t.strides[1]:t.strides[2],d=c?t.strides[2]:1,p=c?1:t.strides[1],v=l.strides[0],g=c?l.strides[1]:l.strides[2],m=c?l.strides[2]:1,y=c?1:l.strides[1],x=this.readSync(t.dataId),b=this.readSync(e.dataId),w=l.values,C=0;C<n.batchSize;++C)for(var E=C*h,R=C*v,I=0;I<n.outHeight;++I)for(var k=R+I*g,S=I*n.strideHeight-u,A=0;A<r;A++){var T=S+A*a;if(!(T<0||T>=n.inHeight))for(var D=A*e.strides[0],N=E+T*f,F=0;F<n.outWidth;++F)for(var _=k+F*m,O=F*n.strideWidth-s,M=0;M<o;M++){var B=O+M*i;if(!(B<0||B>=n.inWidth))for(var P=N+B*d,L=D+M*e.strides[1],W=0;W<n.inChannels;++W){for(var U=x[P+W*p],V=0;V<n.outChannels;++V)w[_+V*y]+=U*b[L+V];L+=n.outChannels}}}return l.toTensor()},o.prototype.conv3d=function(t,e,n){for(var r=n.filterDepth,o=n.filterHeight,a=n.filterWidth,i=n.dilationDepth,s=n.dilationHeight,u=n.dilationWidth,c=n.padInfo.front,l=n.padInfo.left,h=n.padInfo.top,f=er(n.outShape,t.dtype),d=this.readSync(t.dataId),p=this.readSync(e.dataId),v=f.values,g=0;g<n.batchSize;++g)for(var m=g*t.strides[0],y=g*f.strides[0],x=0;x<n.outDepth;++x)for(var b=y+x*f.strides[1],w=x*n.strideDepth-c,C=0;C<r;C++){var E=w+C*i;if(!(E<0||E>=n.inDepth))for(var R=C*e.strides[0],I=m+E*t.strides[1],k=0;k<n.outHeight;++k)for(var S=b+k*f.strides[2],A=k*n.strideHeight-h,T=0;T<o;T++){var D=A+T*s;if(!(D<0||D>=n.inHeight))for(var N=R+T*e.strides[1],F=I+D*t.strides[2],_=0;_<n.outWidth;++_)for(var O=S+_*n.outChannels,M=_*n.strideWidth-l,B=0;B<a;B++){var P=M+B*u;if(!(P<0||P>=n.inWidth))for(var L=N+B*e.strides[2],W=F+P*n.inChannels,U=L,V=0;V<n.inChannels;++V){for(var z=d[W+V],G=0;G<n.outChannels;++G)v[O+G]+=z*p[U+G];U+=n.outChannels}}}}return f.toTensor()},o.prototype.conv2dDerInput=function(t,e,n){df([t,e],\"conv2dDerInput\");for(var r=er(n.inShape,\"float32\"),o=r.values,a=this.readSync(t.dataId),i=this.readSync(e.dataId),s=e.strides,u=s[0],c=s[1],l=s[2],h=n.batchSize,f=n.filterHeight,d=n.filterWidth,p=n.inChannels,v=n.inHeight,g=n.inWidth,m=n.outChannels,y=n.outHeight,x=n.outWidth,b=n.strideHeight,w=n.strideWidth,C=n.dataFormat,E=f-1-n.padInfo.top,R=d-1-n.padInfo.left,I=\"channelsLast\"===C,k=r.strides[0],S=I?r.strides[1]:r.strides[2],A=I?r.strides[2]:1,T=I?1:r.strides[1],D=t.strides[0],N=I?t.strides[1]:t.strides[2],F=I?t.strides[2]:1,_=I?1:t.strides[1],O=0;O<h;++O)for(var M=0;M<p;++M)for(var B=0;B<v;++B)for(var P=B-E,L=Math.max(0,Math.ceil(P/b)),W=Math.min(y,(f+P)/b),U=0;U<g;++U){for(var V=U-R,z=Math.max(0,Math.ceil(V/w)),G=Math.min(x,(d+V)/w),H=0,q=L;q<W;++q)for(var K=q*b-P,j=z;j<G;++j)for(var X=D*O+N*q+F*j,Y=u*(f-1-K)+c*(d-1-(j*w-V))+l*M,$=0;$<m;++$){H+=a[X+_*$]*i[Y+$]}o[k*O+S*B+A*U+T*M]=H}return r.toTensor()},o.prototype.conv3dDerInput=function(t,e,n){for(var r=er(n.inShape,\"float32\"),o=r.values,a=r.strides,i=a[0],s=a[1],u=a[2],c=a[3],l=this.readSync(t.dataId),h=t.strides,f=h[0],d=h[1],p=h[2],v=h[3],g=this.readSync(e.dataId),m=e.strides,y=m[0],x=m[1],b=m[2],w=m[3],C=n.batchSize,E=n.filterDepth,R=n.filterHeight,I=n.filterWidth,k=n.inChannels,S=n.inDepth,A=n.inHeight,T=n.inWidth,D=n.outChannels,N=n.outDepth,F=n.outHeight,_=n.outWidth,O=n.strideDepth,M=n.strideHeight,B=n.strideWidth,P=E-1-n.padInfo.front,L=R-1-n.padInfo.top,W=I-1-n.padInfo.left,U=0;U<C;++U)for(var V=0;V<k;++V)for(var z=0;z<S;++z)for(var G=z-P,H=Math.max(0,Math.ceil(G/O)),q=Math.min(N,(E+G)/O),K=0;K<A;++K)for(var j=K-L,X=Math.max(0,Math.ceil(j/M)),Y=Math.min(F,(R+j)/M),$=0;$<T;++$){for(var Q=$-W,J=Math.max(0,Math.ceil(Q/B)),Z=Math.min(_,(I+Q)/B),tt=0,et=H;et<q;++et)for(var nt=et*O-G,rt=X;rt<Y;++rt)for(var ot=rt*M-j,at=J;at<Z;++at)for(var it=f*U+d*et+p*rt+v*at,st=y*(E-1-nt)+x*(R-1-ot)+b*(I-1-(at*B-Q))+w*V,ut=0;ut<D;++ut){tt+=l[it+ut]*g[st+ut]}o[i*U+s*z+u*K+c*$+V]=tt}return r.toTensor()},o.prototype.conv2dDerFilter=function(t,e,n){df([t,e],\"conv2dDerFilter\");for(var r=n.strideHeight,o=n.strideWidth,a=n.filterHeight,i=n.filterWidth,s=\"channelsLast\"===n.dataFormat,u=er(n.filterShape,\"float32\"),c=n.padInfo.left,l=n.padInfo.top,h=this.bufferSync(t),f=this.bufferSync(e),d=0;d<a;++d)for(var p=Math.max(0,Math.ceil((l-d)/r)),v=Math.min(n.outHeight,(n.inHeight+l-d)/r),g=0;g<i;++g)for(var m=Math.max(0,Math.ceil((c-g)/o)),y=Math.min(n.outWidth,(n.inWidth+c-g)/o),x=0;x<n.inChannels;++x)for(var b=0;b<n.outChannels;++b){for(var w=0,C=0;C<n.batchSize;++C)for(var E=p;E<v;++E)for(var R=d+E*r-l,I=m;I<y;++I){var k=g+I*o-c;w+=s?h.get(C,R,k,x)*f.get(C,E,I,b):h.get(C,x,R,k)*f.get(C,b,E,I)}u.set(w,d,g,x,b)}return u.toTensor()},o.prototype.conv3dDerFilter=function(t,e,n){for(var r=n.strideDepth,o=n.strideHeight,a=n.strideWidth,i=n.filterDepth,s=n.filterHeight,u=n.filterWidth,c=er(n.filterShape,\"float32\"),l=c.values,h=c.strides,f=h[0],d=h[1],p=h[2],v=h[3],g=this.readSync(e.dataId),m=e.strides,y=m[0],x=m[1],b=m[2],w=m[3],C=this.readSync(t.dataId),E=t.strides,R=E[0],I=E[1],k=E[2],S=E[3],A=n.padInfo.front,T=n.padInfo.left,D=n.padInfo.top,N=0;N<i;++N)for(var F=Math.max(0,Math.ceil((A-N)/r)),_=Math.min(n.outDepth,(n.inDepth+A-N)/r),O=N*f,M=0;M<s;++M)for(var B=Math.max(0,Math.ceil((D-M)/o)),P=Math.min(n.outHeight,(n.inHeight+D-M)/o),L=M*d+O,W=0;W<u;++W)for(var U=Math.max(0,Math.ceil((T-W)/a)),V=Math.min(n.outWidth,(n.inWidth+T-W)/a),z=W*p+L,G=0;G<n.inChannels;++G)for(var H=G*v+z,q=0;q<n.outChannels;++q){for(var K=0,j=0;j<n.batchSize;++j)for(var X=j*R,Y=j*y,$=F;$<_;++$)for(var Q=(N+$*r-A)*I+X,J=$*x+Y,Z=B;Z<P;++Z)for(var tt=(M+Z*o-D)*k+Q,et=Z*b+J,nt=U;nt<V;++nt){var rt=nt*w+et;K+=C[(W+nt*a-T)*S+tt+G]*g[rt+q]}l[H+q]=K}return c.toTensor()},o.prototype.fusedDepthwiseConv2D=function(t){var e=t.input,n=t.filter,r=t.convInfo,o=t.bias,a=t.activation,i=t.preluActivationWeights,s=this.depthwiseConv2D(e,n,r);return o&&(s=this.add(s,o)),a&&(s=gf(this,s,a,i)),s},o.prototype.depthwiseConv2D=function(t,e,n){df([t,e],\"depthwiseConv2D\");for(var r=n.filterHeight,o=n.filterWidth,a=n.dilationHeight,i=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,c=n.outChannels/n.inChannels,l=er(n.outShape,t.dtype),h=this.readSync(t.dataId),f=this.readSync(e.dataId),d=l.values,p=0;p<n.batchSize;++p)for(var v=p*t.strides[0],g=p*l.strides[0],m=0;m<n.outHeight;++m)for(var y=g+m*l.strides[1],x=m*n.strideHeight-s,b=0;b<r;++b){var w=x+b*a;if(!(w<0||w>=n.inHeight))for(var C=b*e.strides[0],E=v+w*t.strides[1],R=0;R<n.outWidth;++R)for(var I=y+R*l.strides[2],k=R*n.strideWidth-u,S=0;S<o;++S){var A=k+S*i;if(!(A<0||A>=n.inWidth))for(var T=C+S*e.strides[1],D=E+A*n.inChannels,N=I,F=T,_=0;_<n.inChannels;++_){for(var O=h[D+_],M=0;M<c;++M)d[N+M]+=O*f[F+M];N+=c,F+=c}}}return l.toTensor()},o.prototype.depthwiseConv2DDerInput=function(t,e,n){df([t,e],\"depthwiseConv2DDerInput\");for(var r=er(n.inShape,\"float32\"),o=r.values,a=r.strides,i=a[0],s=a[1],u=a[2],c=this.readSync(t.dataId),l=t.strides,h=l[0],f=l[1],d=l[2],p=this.readSync(e.dataId),v=e.strides,g=v[0],m=v[1],y=v[2],x=n.batchSize,b=n.filterHeight,w=n.filterWidth,C=n.inChannels,E=n.inHeight,R=n.inWidth,I=n.outChannels,k=n.outHeight,S=n.outWidth,A=n.strideHeight,T=n.strideWidth,D=b-1-n.padInfo.top,N=w-1-n.padInfo.left,F=I/C,_=0;_<x;++_)for(var O=0;O<C;++O)for(var M=0;M<E;++M)for(var B=M-D,P=Math.max(0,Math.ceil(B/A)),L=Math.min(k,(b+B)/A),W=0;W<R;++W){for(var U=W-N,V=Math.max(0,Math.ceil(U/T)),z=Math.min(S,(w+U)/T),G=0,H=P;H<L;++H)for(var q=H*A-B,K=V;K<z;++K)for(var j=h*_+f*H+d*K,X=g*(b-1-q)+m*(w-1-(K*T-U))+y*O,Y=0;Y<F;++Y){G+=c[j+(O*F+Y)]*p[X+Y]}o[i*_+s*M+u*W+O]=G}return r.toTensor()},o.prototype.depthwiseConv2DDerFilter=function(t,e,n){df([t,e],\"depthwiseConv2DDerFilter\");for(var r=n.strideHeight,o=n.strideWidth,a=n.filterHeight,i=n.filterWidth,s=er(n.filterShape,\"float32\"),u=n.padInfo.left,c=n.padInfo.top,l=n.outChannels/n.inChannels,h=this.bufferSync(t),f=this.bufferSync(e),d=0;d<a;++d)for(var p=Math.max(0,Math.ceil((c-d)/r)),v=Math.min(n.outHeight,(n.inHeight+c-d)/r),g=0;g<i;++g)for(var m=Math.max(0,Math.ceil((u-g)/o)),y=Math.min(n.outWidth,(n.inWidth+u-g)/o),x=0;x<n.outChannels;++x){for(var b=Math.trunc(x/l),w=x%l,C=0,E=0;E<n.batchSize;++E)for(var R=p;R<v;++R)for(var I=d+R*r-c,k=m;k<y;++k){var S=g+k*o-u;C+=h.get(E,I,S,b)*f.get(E,R,k,x)}s.set(C,d,g,b,w)}return s.toTensor()},o.prototype.tile=function(t,e){return df(t,\"tile\"),Va(this.bufferSync(t),e)},o.prototype.pad=function(t,e,n){df(t,\"pad\");var r=e.map((function(e,n){return e[0]+t.shape[n]+e[1]})),o=e.map((function(t){return t[0]})),a=this.bufferSync(t),i=er(r,t.dtype);0!==n&&i.values.fill(n);for(var s=0;s<t.size;s++){var u=a.indexToLoc(s),c=u.map((function(t,e){return t+o[e]}));i.set.apply(i,[a.get.apply(a,u)].concat(c))}return i.toTensor()},o.prototype.gather=function(t,e,n){df([t,e],\"gather\");var r=t.shape.slice(),o=this.readSync(e.dataId);r[n]=o.length;for(var a=er(r,t.dtype),i=this.bufferSync(t),s=0;s<a.size;++s){var u=a.indexToLoc(s),c=u.slice();c[n]=o[u[n]];var l=i.locToIndex(c);a.values[s]=i.values[l]}return a.toTensor()},o.prototype.batchToSpaceND=function(t,e,n){df([t],\"batchToSpaceND\");var r=e.reduce((function(t,e){return t*e})),o=pr(t.shape,e,r),a=vr(o.length,e.length),i=gr(t.shape,e,r),s=mr(n,e.length),u=yr(i,n,e.length);return ua(t.reshape(o),a).reshape(i).slice(s,u)},o.prototype.spaceToBatchND=function(t,e,n){df([t],\"spaceToBatchND\");var r=e.reduce((function(t,e){return t*e})),o=[[0,0]];o.push.apply(o,n);for(var a=1+e.length;a<t.shape.length;++a)o.push([0,0]);var i=t.pad(o),s=pr(i.shape,e,r,!1),u=vr(s.length,e.length,!1),c=gr(i.shape,e,r,!1);return ua(i.reshape(s),u).reshape(c)},o.prototype.maxPool=function(t,e){return df(t,\"maxPool\"),pf(this.readSync(t.dataId),t.shape,t.dtype,t.strides,e,\"max\").toTensor()},o.prototype.maxPoolBackprop=function(t,e,n,r){df([e,n],\"maxPoolBackprop\");for(var o=this.readSync(e.dataId),a=er(r.outShape,e.dtype,vf(o,e.shape,e.dtype,r).values),i=r.strideHeight,s=r.strideWidth,u=r.dilationHeight,c=r.dilationWidth,l=r.effectiveFilterHeight,h=r.effectiveFilterWidth,f=h-1-r.padInfo.left,d=l-1-r.padInfo.top,p=er(e.shape,\"float32\"),v=this.bufferSync(t),g=0;g<r.batchSize;++g)for(var m=0;m<r.inChannels;++m)for(var y=0;y<r.inHeight;++y)for(var x=0;x<r.inWidth;++x){for(var b=y-d,w=x-f,C=0,E=0;E<l;E+=u){var R=(b+E)/i;if(!(R<0||R>=r.outHeight||Math.floor(R)!==R))for(var I=0;I<h;I+=c){var k=(w+I)/s;if(!(k<0||k>=r.outWidth||Math.floor(k)!==k)){var S=l*h-1-a.get(g,R,k,m)===E*h+I?1:0;if(0!==S)C+=v.get(g,R,k,m)*S}}}p.set(C,g,y,x,m)}return p.toTensor()},o.prototype.avgPoolBackprop=function(t,e,n){df([t,e],\"avgPoolBackprop\");for(var r=n.strideHeight,o=n.strideWidth,a=n.filterHeight,i=n.filterWidth,s=n.dilationHeight,u=n.dilationWidth,c=n.effectiveFilterHeight,l=n.effectiveFilterWidth,h=l-1-n.padInfo.left,f=c-1-n.padInfo.top,d=er(e.shape,\"float32\"),p=1/(a*i),v=this.bufferSync(t),g=0;g<n.batchSize;++g)for(var m=0;m<n.inChannels;++m)for(var y=0;y<n.inHeight;++y)for(var x=0;x<n.inWidth;++x){for(var b=y-f,w=x-h,C=0,E=0;E<c;E+=s){var R=(b+E)/r;if(!(R<0||R>=n.outHeight||Math.floor(R)!==R))for(var I=0;I<l;I+=u){var k=(w+I)/o;if(!(k<0||k>=n.outWidth||Math.floor(k)!==k))C+=v.get(g,R,k,m)}}d.set(C*p,g,y,x,m)}return d.toTensor()},o.prototype.pool3d=function(t,e,n){df(t,\"pool3d\");for(var r=e.strideDepth,o=e.strideHeight,a=e.strideWidth,i=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,l=e.effectiveFilterHeight,h=e.effectiveFilterWidth,f=e.padInfo.front,d=e.padInfo.top,p=e.padInfo.left,v=\"max\"===n?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,g=this.readSync(t.dataId),m=er(e.outShape,t.dtype),y=m.values,x=e.outShape[1]*e.outShape[2]*e.outShape[3]*e.outShape[4],b=e.outShape[2]*e.outShape[3]*e.outShape[4],w=e.outShape[3]*e.outShape[4],C=e.outShape[4],E=0;E<e.batchSize;++E)for(var R=E*x,I=E*t.strides[0],k=0;k<e.inChannels;++k)for(var S=0;S<e.outDepth;++S){for(var A=S*r-f,T=A;T<0;)T+=i;for(var D=Math.min(e.inDepth,c+A),N=R+S*b,F=0;F<e.outHeight;++F){for(var _=F*o-d,O=_;O<0;)O+=s;for(var M=Math.min(e.inHeight,l+_),B=N+F*w,P=0;P<e.outWidth;++P){for(var L=P*a-p,W=L;W<0;)W+=u;for(var U=Math.min(e.inWidth,h+L),V=B+P*C,z=v,G=0,H=0,q=T;q<D;q+=i){for(var K=I+q*t.strides[1],j=O;j<M;j+=s){for(var X=K+j*t.strides[2],Y=W;Y<U;Y+=u){var $=g[X+Y*t.strides[3]+k];if(\"max\"===n&&$>z?z=$:\"avg\"===n&&(G+=$,H++),isNaN(z))break}if(isNaN(z))break}if(isNaN(z))break}y[V+k]=\"avg\"===n?G/H:z}}}return m.toTensor()},o.prototype.avgPool3d=function(t,e){return df(t,\"avgPool3d\"),this.pool3d(t,e,\"avg\").toFloat()},o.prototype.avgPool3dBackprop=function(t,e,n){df([t,e],\"avgPool3dBackprop\");for(var r=n.strideDepth,o=n.strideHeight,a=n.strideWidth,i=n.filterDepth,s=n.filterHeight,u=n.filterWidth,c=n.dilationDepth,l=n.dilationHeight,h=n.dilationWidth,f=n.effectiveFilterDepth,d=n.effectiveFilterHeight,p=n.effectiveFilterWidth,v=f-1-n.padInfo.front,g=p-1-n.padInfo.left,m=d-1-n.padInfo.top,y=er(e.shape,\"float32\"),x=1/(i*s*u),b=this.bufferSync(t),w=0;w<n.batchSize;++w)for(var C=0;C<n.inChannels;++C)for(var E=0;E<n.inDepth;++E)for(var R=0;R<n.inHeight;++R)for(var I=0;I<n.inWidth;++I){for(var k=E-v,S=R-m,A=I-g,T=0,D=0;D<f;D+=c){var N=(k+D)/r;if(!(N<0||N>=n.outDepth||Math.floor(N)!==N))for(var F=0;F<d;F+=l){var _=(S+F)/o;if(!(_<0||_>=n.outHeight||Math.floor(_)!==_))for(var O=0;O<p;O+=h){var M=(A+O)/a;if(!(M<0||M>=n.outWidth||Math.floor(M)!==M))T+=b.get(w,N,_,M,C)}}}y.set(T*x,w,E,R,I,C)}return y.toTensor()},o.prototype.maxPool3d=function(t,e){return df(t,\"maxPool3d\"),this.pool3d(t,e,\"max\").toFloat()},o.prototype.maxPool3dPositions=function(t,e){for(var n=er(e.outShape,\"int32\"),r=e.strideDepth,o=e.strideHeight,a=e.strideWidth,i=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,l=e.effectiveFilterHeight,h=e.effectiveFilterWidth,f=e.padInfo.front,d=e.padInfo.top,p=e.padInfo.left,v=this.bufferSync(t),g=0;g<e.batchSize;++g)for(var m=0;m<e.inChannels;++m)for(var y=0;y<e.outDepth;++y){for(var x=y*r-f,b=x;b<0;)b+=i;for(var w=Math.min(e.inDepth,c+x),C=0;C<e.outHeight;++C){for(var E=C*o-d,R=E;R<0;)R+=s;for(var I=Math.min(e.inHeight,l+E),k=0;k<e.outWidth;++k){for(var S=k*a-p,A=S;A<0;)A+=u;for(var T=Math.min(e.inWidth,h+S),D=Number.NEGATIVE_INFINITY,N=-1,F=b;F<w;F+=i)for(var _=F-x,O=R;O<I;O+=s)for(var M=O-E,B=A;B<T;B+=u){var P=B-S,L=v.get(g,F,O,B,m);L>=D&&(D=L,N=_*l*h+M*l+P)}n.set(N,g,y,C,k,m)}}}return n.toTensor()},o.prototype.maxPool3dBackprop=function(t,e,n,r){df([e,n],\"maxPool3dBackprop\");for(var o=this.maxPool3dPositions(e,r),a=r.strideDepth,i=r.strideHeight,s=r.strideWidth,u=r.dilationDepth,c=r.dilationHeight,l=r.dilationWidth,h=r.effectiveFilterDepth,f=r.effectiveFilterHeight,d=r.effectiveFilterWidth,p=h-1-r.padInfo.front,v=d-1-r.padInfo.left,g=f-1-r.padInfo.top,m=er(e.shape,\"float32\"),y=this.bufferSync(o),x=this.bufferSync(t),b=0;b<r.batchSize;++b)for(var w=0;w<r.inChannels;++w)for(var C=0;C<r.inDepth;++C)for(var E=0;E<r.inHeight;++E)for(var R=0;R<r.inWidth;++R){for(var I=C-p,k=E-g,S=R-v,A=0,T=0;T<h;T+=u){var D=(I+T)/a;if(!(D<0||D>=r.outDepth||Math.floor(D)!==D))for(var N=0;N<f;N+=c){var F=(k+N)/i;if(!(F<0||F>=r.outHeight||Math.floor(F)!==F))for(var _=0;_<d;_+=l){var O=(S+_)/s;if(!(O<0||O>=r.outWidth||Math.floor(O)!==O)){var M=h*f*d-1-y.get(b,D,F,O,w)===T*f*d+N*d+_?1:0;if(0!==M)A+=x.get(b,D,F,O,w)*M}}}}m.set(A,b,C,E,R,w)}return m.toTensor()},o.prototype.cast=function(t,e){return Ra(t,e,this)},o.prototype.reshape=function(t,e){return Ia(t,e)},o.prototype.avgPool=function(t,e){return df(t,\"avgPool\"),df(t,\"maxPool\"),pf(this.readSync(t.dataId),t.shape,t.dtype,t.strides,e,\"avg\").toTensor().toFloat()},o.prototype.resizeBilinear=function(t,e,n,r){df(t,\"resizeBilinear\");for(var o=t.shape,a=o[0],i=o[1],s=o[2],u=o[3],c=this.readSync(t.dataId),l=new Float32Array(k([a,e,n,u])),h=[r&&e>1?i-1:i,r&&n>1?s-1:s],f=[r&&e>1?e-1:e,r&&n>1?n-1:n],d=0,p=h[0]/f[0],v=h[1]/f[1],g=0;g<a;g++)for(var m=0;m<e;m++)for(var y=p*m,x=Math.floor(y),b=y-x,w=Math.min(i-1,Math.ceil(y)),C=g*t.strides[0]+x*t.strides[1],E=g*t.strides[0]+w*t.strides[1],R=0;R<n;R++)for(var I=v*R,S=Math.floor(I),A=I-S,T=Math.min(s-1,Math.ceil(I)),D=C+S*t.strides[2],N=E+S*t.strides[2],F=C+T*t.strides[2],_=E+T*t.strides[2],O=0;O<u;O++){var M=c[D+O],B=c[N+O],P=M+(c[F+O]-M)*A,L=P+(B+(c[_+O]-B)*A-P)*b;l[d++]=L}return Fn(l,[a,e,n,u])},o.prototype.resizeBilinearBackprop=function(t,e,n){df([t,e],\"resizeBilinearBackprop\");for(var r=e.shape,o=r[0],a=r[1],i=r[2],s=r[3],u=t.shape,c=u[1],l=u[2],h=new Float32Array(o*a*i*s),f=[n&&c>1?a-1:a,n&&l>1?i-1:i],d=[n&&c>1?c-1:c,n&&l>1?l-1:l],p=f[0]/d[0],v=f[1]/d[1],g=this.readSync(t.dataId),m=0,y=0;y<o;y++)for(var x=y*e.strides[0],b=0;b<c;b++)for(var w=b*p,C=Math.floor(w),E=Math.min(Math.ceil(w),a-1),R=x+C*e.strides[1],I=x+E*e.strides[1],k=w-C,S=1-k,A=0;A<l;A++)for(var T=A*v,D=Math.floor(T),N=Math.min(Math.ceil(T),i-1),F=T-D,_=1-F,O=R+D*e.strides[2],M=R+N*e.strides[2],B=I+D*e.strides[2],P=I+N*e.strides[2],L=S*_,W=S*F,U=k*_,V=k*F,z=0;z<s;z++){var G=g[m++];h[O+z]+=G*L,h[M+z]+=G*W,h[B+z]+=G*U,h[P+z]+=G*V}return Ln(h,[o,i,a,s],e.dtype)},o.prototype.resizeNearestNeighbor=function(t,e,n,r){df(t,\"resizeNearestNeighbor\");for(var o=t.shape,a=o[0],i=o[1],s=o[2],u=o[3],c=this.readSync(t.dataId),l=new Float32Array(a*e*n*u),h=[r&&e>1?i-1:i,r&&n>1?s-1:s],f=[r&&e>1?e-1:e,r&&n>1?n-1:n],d=h[0]/f[0],p=h[1]/f[1],v=0,g=0;g<a;g++)for(var m=g*t.strides[0],y=0;y<e;y++)for(var x=d*y,b=m+Math.min(i-1,r?Math.round(x):Math.floor(x))*t.strides[1],w=0;w<n;w++)for(var C=p*w,E=b+Math.min(s-1,r?Math.round(C):Math.floor(C))*t.strides[2],R=0;R<u;R++){var I=c[E+R];l[v++]=I}return Fn(l,[a,e,n,u],t.dtype)},o.prototype.resizeNearestNeighborBackprop=function(t,e,n){df([t,e],\"resizeNearestNeighborBackprop\");for(var r=e.shape,o=r[0],a=r[1],i=r[2],s=r[3],u=t.shape,c=u[1],l=u[2],h=new Float32Array(o*a*i*s),f=this.readSync(t.dataId),d=[n&&c>1?a-1:a,n&&l>1?i-1:i],p=[n&&c>1?c-1:c,n&&l>1?l-1:l],v=d[0]/p[0],g=d[1]/p[1],m=1/v,y=1/g,x=2*Math.ceil(m)+2,b=2*Math.ceil(y)+2,w=0;w<o;w++)for(var C=w*e.strides[0],E=0;E<a;E++)for(var R=C+E*e.strides[1],I=Math.floor(E*m),k=Math.floor(I-x/2),S=0;S<i;S++)for(var A=R+S*e.strides[2],T=Math.floor(S*y),D=Math.floor(T-b/2),N=0;N<s;N++){for(var F=0,_=0;_<x;_++){var O=_+k;if(!(O<0||O>=c)){var M=C+O*t.strides[1],B=O*v;if(E===Math.min(a-1,n?Math.round(B):Math.floor(B)))for(var P=0;P<b;P++){var L=P+D;if(!(L<0||L>=l)){var W=M+L*t.strides[2],U=L*g;S===Math.min(i-1,n?Math.round(U):Math.floor(U))&&(F+=f[W+N])}}}}h[A+N]=F}return Ln(h,e.shape,e.dtype)},o.prototype.batchNormalization=function(t,e,n,r,o,a){df([t,e,n,o,a],\"batchNorm\");for(var i=this.readSync(t.dataId),s=this.readSync(e.dataId),u=this.readSync(n.dataId),c=o?this.readSync(o.dataId):new Float32Array([1]),l=a?this.readSync(a.dataId):new Float32Array([0]),h=new Float32Array(i.length),f=l.length,d=c.length,p=u.length,v=s.length,g=0,m=0,y=0,x=0,b=0;b<i.length;++b)h[b]=l[g++]+(i[b]-s[m++])*c[y++]/Math.sqrt(u[x++]+r),g>=f&&(g=0),m>=v&&(m=0),y>=d&&(y=0),x>=p&&(x=0);return Ln(h,t.shape)},o.prototype.localResponseNormalization4D=function(t,e,n,r,o){df(t,\"localResponseNormalization4D\");var a=t.shape[3],i=a-1,s=this.readSync(t.dataId),u=t.size,c=new Float32Array(u);function l(t){for(var n=t%a,r=t-n+Math.max(0,n-e),o=t-n+Math.min(n+e,i),u=0;r<=o;r++){var c=s[r];u+=c*c}return u}for(var h=0;h<u;h++){var f=l(h),d=s[h]*Math.pow(n+r*f,-o);c[h]=d}return Ln(c,t.shape)},o.prototype.LRNGrad=function(t,e,n,r,o,a,i){df(t,\"LRNGrad\");for(var s=t.shape[3],u=this.readSync(t.dataId),c=this.readSync(e.dataId),l=this.readSync(n.dataId),h=new Float32Array(t.size),f=t.size,d=0;d<f;d++){for(var p=d%s,v=d-p+Math.max(0,p-r),g=d-p+Math.min(s,p+r+1),m=0,y=v;y<g;y++)m+=Math.pow(c[y],2);m=a*m+o;for(y=v;y<g;y++){var x=-2*a*i*c[y]*l[d]/m;d===y&&(x+=Math.pow(m,-i)),x*=u[d],h[y]+=x}}return Ln(h,t.shape)},o.prototype.multinomial=function(t,e,n,r){df(t,\"multinomial\");for(var o=e?t:ia(t),a=o.shape[0],i=o.shape[1],s=Gn([a,n],\"int32\"),u=this.readSync(s.dataId),c=this.readSync(o.dataId),l=0;l<a;++l){var h=l*i,f=new Float32Array(i-1);f[0]=c[h];for(var d=1;d<f.length;++d)f[d]=f[d-1]+c[h+d];for(var p=Yu(r.toString()),v=l*n,g=0;g<n;++g){var m=p();u[v+g]=f.length;for(var y=0;y<f.length;y++)if(m<f[y]){u[v+g]=y;break}}}return s},o.prototype.oneHot=function(t,e,n,r){df(t,\"oneHot\");var o=new Float32Array(t.size*e);o.fill(r);for(var a=this.readSync(t.dataId),i=0;i<t.size;++i)a[i]>=0&&a[i]<e&&(o[i*e+a[i]]=n);return Bn(o,[t.size,e],\"int32\")},o.prototype.nonMaxSuppression=function(t,e,n,r,o){return df(t,\"nonMaxSuppression\"),Oa(this.readSync(t.dataId),this.readSync(e.dataId),n,r,o)},o.prototype.fft=function(t){return this.fftBatch(t,!1)},o.prototype.ifft=function(t){return this.fftBatch(t,!0)},o.prototype.fftBatch=function(t,e){for(var n=t.shape[0],r=t.shape[1],o=er(t.shape,\"float32\"),a=er(t.shape,\"float32\"),i=Dn(t).as2D(n,r),s=Nn(t).as2D(n,r),u=0;u<n;u++)for(var c=i.slice([u,0],[1,r]),l=s.slice([u,0],[1,r]),h=Tn(c,l),f=this.readSync(this.fftImpl(h,e).dataId),d=0;d<r;d++){var p=Ta(f,d);o.values[u*r+d]=p.real,a.values[u*r+d]=p.imag}return Tn(o.toTensor(),a.toTensor()).as2D(n,r)},o.prototype.fftImpl=function(t,e){var n=t.as1D(),r=n.size;if(this.isExponentOf2(r)){var o=this.fftRadix2(n,r,e).as2D(t.shape[0],t.shape[1]);return e&&(o=Tn(Dn(o).div(On(r)),Nn(o).div(On(r)))),o}var a=this.readSync(t.dataId),i=function(t){for(var e=new Float32Array(t.length/2),n=new Float32Array(t.length/2),r=0;r<t.length;r+=2)e[r/2]=t[r],n[r/2]=t[r+1];return{real:e,imag:n}}(this.fourierTransformByMatmul(a,r,e));return Tn(i.real,i.imag).as2D(t.shape[0],t.shape[1])},o.prototype.isExponentOf2=function(t){return 0==(t&t-1)},o.prototype.fftRadix2=function(t,e,n){if(1===e)return t;var r=this.readSync(t.dataId),o=e/2,a=function(t){for(var e=Math.ceil(t.length/4),n=new Float32Array(e),r=new Float32Array(e),o=0;o<t.length;o+=4)n[Math.floor(o/4)]=t[o],r[Math.floor(o/4)]=t[o+1];return{real:n,imag:r}}(r),i=Tn(a.real,a.imag).as1D(),s=function(t){for(var e=Math.floor(t.length/4),n=new Float32Array(e),r=new Float32Array(e),o=2;o<t.length;o+=4)n[Math.floor(o/4)]=t[o],r[Math.floor(o/4)]=t[o+1];return{real:n,imag:r}}(r),u=Tn(s.real,s.imag).as1D();i=this.fftRadix2(i,o,n),u=this.fftRadix2(u,o,n);var c=function(t,e){for(var n=new Float32Array(t/2),r=new Float32Array(t/2),o=0;o<Math.ceil(t/2);o++){var a=(e?2:-2)*Math.PI*(o/t);n[o]=Math.cos(a),r[o]=Math.sin(a)}return{real:n,imag:r}}(e,n),l=Tn(c.real,c.imag).mul(u),h=i.add(l),f=i.sub(l),d=Dn(h).concat(Dn(f)),p=Nn(h).concat(Nn(f));return Tn(d,p).as1D()},o.prototype.fourierTransformByMatmul=function(t,e,n){for(var r=new Float32Array(2*e),o=0;o<e;o++){for(var a=0,i=0,s=0;s<e;s++){var u=Na(o*s,e,n),c=Ta(t,s);a+=c.real*u.real-c.imag*u.imag,i+=c.real*u.imag+c.imag*u.real}n&&(a/=e,i/=e),Da(r,a,i,o)}return r},o.prototype.depthToSpace=function(t,e,n){C(\"NHWC\"===n,(function(){return\"Only NHWC dataFormat supported on CPU for depthToSpace. Got \"+n})),C(e>1,(function(){return\"blockSize should be > 1 for depthToSpace, but was: \"+e}));for(var r=t.shape[0],o=t.shape[1],a=t.shape[2],i=t.shape[3],s=o*e,u=a*e,c=i/(e*e),l=this.readSync(t.dataId),h=new Float32Array(r*s*u*c),f=0,d=0;d<r;++d)for(var p=0;p<s;++p)for(var v=Math.floor(p/e),g=p%e,m=0;m<u;++m)for(var y=Math.floor(m/e),x=(g*e+m%e)*c,b=0;b<c;++b){var w=b+x+i*(y+a*(v+o*d));h[f++]=l[w]}return Ln(h,[r,s,u,c])},o.prototype.broadcastedBinaryOp=function(t,e,n,r){var o=Pr(t.shape,e.shape),a=er(o,n),i=this.readSync(t.dataId),s=this.readSync(e.dataId),u=Mr(t.shape,o),c=Mr(e.shape,o),l=a.values;if(u.length+c.length===0)for(var h=0;h<l.length;++h)l[h]=r(i[h%i.length],s[h%s.length]);else{var f=this.bufferSync(t),d=this.bufferSync(e),p=function(n){var o=a.indexToLoc(n),h=o.slice(-t.rank);u.forEach((function(t){return h[t]=0}));var p=f.locToIndex(h),v=o.slice(-e.rank);c.forEach((function(t){return v[t]=0}));var g=d.locToIndex(v);l[n]=r(i[p],s[g])};for(h=0;h<l.length;++h)p(h)}return a.toTensor()},o.prototype.broadcastedBinaryComplexOp=function(t,e,n){var r=Pr(t.shape,e.shape),o=er(r,\"float32\"),a=er(r,\"float32\"),i=this.readSync(t.dataId),s=this.readSync(e.dataId),u=Mr(t.shape,r),c=Mr(e.shape,r),l=o.values,h=a.values;if(u.length+c.length===0)for(var f=0;f<l.length;f++){var d=f%i.length,p=f%s.length,v=n(i[2*d],i[2*d+1],s[2*p],s[2*p+1]);l[f]=v.real,h[f]=v.imag}else{var g=this.bufferSync(this.data.get(t.dataId).complexTensors.real),m=this.bufferSync(this.data.get(e.dataId).complexTensors.real),y=function(r){var a=o.indexToLoc(r),f=a.slice(-t.rank);u.forEach((function(t){return f[t]=0}));var d=g.locToIndex(f),p=a.slice(-e.rank);c.forEach((function(t){return p[t]=0}));var v=m.locToIndex(p),y=n(i[2*d],i[2*d+1],s[2*v],s[2*v+1]);l[r]=y.real,h[r]=y.imag};for(f=0;f<l.length;f++)y(f)}return this.complex(o.toTensor(),a.toTensor())},o.prototype.split=function(t,e,n){return Ua(t,e,n)},o.prototype.dispose=function(){},o.prototype.floatPrecision=function(){return 32},o.prototype.epsilon=function(){return 1e-7},o.prototype.cropAndResize=function(t,e,n,r,o,a){for(var i=t.shape,s=i[0],u=i[1],c=i[2],l=i[3],h=e.shape[0],f=r[0],d=r[1],p=er([h,f,d,l],\"float32\"),v=this.readSync(e.dataId),g=this.readSync(n.dataId),m=this.readSync(t.dataId),y=t.strides,x=p.strides,b=0;b<h;b++){var w=4*b,C=v[w],E=v[w+1],R=v[w+2],I=v[w+3],k=g[b];if(!(k>=s))for(var S=f>1?(R-C)*(u-1)/(f-1):0,A=d>1?(I-E)*(c-1)/(d-1):0,T=0;T<f;T++){var D=f>1?C*(u-1)+T*S:.5*(C+R)*(u-1);if(D<0||D>u-1)for(var N=0;N<d;N++)for(var F=0;F<l;F++){var _=F+N*x[2]+T*x[1]+b*x[0];p.values[_]=a}else if(\"bilinear\"===o){var O=Math.floor(D),M=Math.ceil(D),B=D-O;for(N=0;N<d;N++){if((q=d>1?E*(c-1)+N*A:.5*(E+I)*(c-1))<0||q>c-1)for(F=0;F<l;F++){_=F+N*x[2]+T*x[1]+b*x[0];p.values[_]=a}else{var P=Math.floor(q),L=Math.ceil(q),W=q-P;for(F=0;F<l;F++){var U=m[_=F+P*y[2]+O*y[1]+k*y[0]],V=m[_=F+L*y[2]+O*y[1]+k*y[0]],z=m[_=F+P*y[2]+M*y[1]+k*y[0]],G=U+(V-U)*W,H=z+(m[_=F+L*y[2]+M*y[1]+k*y[0]]-z)*W;_=F+N*x[2]+T*x[1]+b*x[0],p.values[_]=G+(H-G)*B}}}}else for(N=0;N<d;++N){var q;if((q=d>1?E*(c-1)+N*A:.5*(E+I)*(c-1))<0||q>c-1)for(F=0;F<l;F++){_=F+N*x[2]+T*x[1]+b*x[0];p.values[_]=a}else{var K=Math.round(q),j=Math.round(D);for(F=0;F<l;F++){var X=F+K*y[2]+j*y[1]+k*y[0],Y=F+N*x[2]+T*x[1]+b*x[0];p.values[Y]=m[X]}}}}}return p.toTensor()},o.prototype.sparseToDense=function(t,e,n,r){var o=Go(0,t,n),a=o.sliceRank,i=o.numUpdates,s=o.sliceSize,u=o.strides,c=o.outputSize;return this.scatter(t,e,n,c,s,i,a,u,r,!1)},o.prototype.gatherND=function(t,e){var n=e.shape,r=n[n.length-1],o=Po(t,e),a=o[0],i=o[1],s=o[2],u=o[3];if(0===i)return Fn([],a,t.dtype);for(var c=new mt([i,s],t.dtype),l=this.readSync(e.dataId),h=this.readSync(t.dataId),f=0;f<i;f++){for(var d=[],p=0,v=0;v<r;v++){var g=l[f*r+v];p+=g*u[v],d.push(g)}if(p<0||p>=t.size/s)throw new Error(\"Invalid indices: \"+d+\" does not index into \"+t.shape);for(var m=0;m<s;m++)c.values[f*s+m]=h[p*s+m]}return c.toTensor().reshape(a)},o.prototype.scatterND=function(t,e,n){var r=Go(0,t,n),o=r.sliceRank,a=r.numUpdates,i=r.sliceSize,s=r.strides,u=r.outputSize,c=On(0);return this.scatter(t,e,n,u,i,a,o,s,c,!0)},o.prototype.fill=function(t,e,n){var r=P(n=n||j(e),k(t));return r.fill(e),Lt.makeTensor(r,t,n,this)},o.prototype.onesLike=function(t){if(\"string\"===t.dtype)throw new Error(\"onesLike is not supported for string tensors\");return this.fill(t.shape,1,t.dtype)},o.prototype.zerosLike=function(t){var e=P(t.dtype,k(t.shape));return this.makeOutput(e,t.shape,t.dtype)},o.prototype.linspace=function(t,e,n){return ka(t,e,n)},o.prototype.scatter=function(t,e,n,r,o,a,i,s,u,c){var l=[r/o,o],h=this.readSync(t.dataId),f=this.readSync(e.dataId);if(0===r)return Fn([],n,e.dtype);var d=new mt(l,e.dtype);d.values.fill(this.readSync(u.dataId)[0]);for(var p=0;p<a;p++){for(var v=[],g=0,m=0;m<i;m++){var y=h[p*i+m];v.push(y),g+=y*s[m]}if(g<0||g>=r/o)throw new Error(\"Invalid indices: \"+v+\" does not index into \"+n);for(var x=0;x<o;x++)c?d.values[g*o+x]+=f[p*o+x]:d.values[g*o+x]=0===e.rank?f[0]:f[p*o+x]}return d.toTensor().reshape(n)},o}(la);function yf(t,e){return{kernelName:t,backendName:\"cpu\",kernelFunc:function(n){var r=n.inputs,o=n.backend,a=r,i=a.a,s=a.b,u=o;df([i,s],t);var c=u.data.get(i.dataId).values,l=u.data.get(s.dataId).values,h=e(i.shape,s.shape,c,l,i.dtype),f=h[0],d=h[1];return{dataId:u.write(f,d,i.dtype),shape:d,dtype:i.dtype}}}}function xf(t){return function(e,n,r,o,a){var i=Pr(e,n),s=i.length,u=$(i),c=B(a,k(i)),l=e.length,h=n.length,f=$(e),d=$(n),p=Mr(e,i),v=Mr(n,i);if(p.length+v.length===0)for(var g=0;g<c.length;++g)c[g]=t(r[g%r.length],o[g%o.length]);else{var m=function(e){var n=it(e,s,u),a=n.slice(-l);p.forEach((function(t){return a[t]=0}));var i=at(a,l,f),g=n.slice(-h);v.forEach((function(t){return g[t]=0}));var m=at(g,h,d);c[e]=t(r[i],o[m])};for(g=0;g<c.length;++g)m(g)}return[c,i]}}Lt.registerBackend(\"cpu\",(function(){return new mf}),1);var bf=xf((function(t,e){return t/e})),wf=yf(wr,bf);var Cf={kernelName:\"MaxPoolWithArgmax\",backendName:\"cpu\",kernelFunc:function(t){var e=t.inputs,n=t.attrs,r=t.backend,o=e.x,a=n,i=a.filterSize,s=a.strides,u=a.pad,c=a.includeBatchInIndex,l=r;df(o,\"MaxPoolWithArgmax\");var h=l.data.get(o.dataId).values,f=fa(o.shape,i,s,[1,1],u),d=function(t,e,n,r,o){var a=pf(t,0,n,$(e),o,\"max\"),i=vf(t,e,n,o,!0,r);return[a.values,i.values]}(h,o.shape,o.dtype,c,f),p=d[0],v=d[1],g=l.write(p,f.outShape,o.dtype),m=l.write(v,f.outShape,o.dtype);return[{dataId:g,shape:f.outShape,dtype:o.dtype},{dataId:m,shape:f.outShape,dtype:\"int32\"}]}},Ef={kernelName:\"NonMaxSuppressionV5\",backendName:\"cpu\",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=t.attrs,o=e,a=o.boxes,i=o.scores,s=r,u=s.maxOutputSize,c=s.iouThreshold,l=s.scoreThreshold,h=s.softNmsSigma,f=n;df(a,\"NonMaxSuppressionWithScore\");var d=Ma(f.data.get(a.dataId).values,f.data.get(i.dataId).values,u,c,l,h);return[d.selectedIndices,d.selectedScores]}},Rf={kernelName:\"Square\",backendName:\"cpu\",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=e.x,o=n;df(r,\"square\");for(var a=o.data.get(r.dataId).values,i=new Float32Array(a.length),s=0;s<a.length;++s){var u=a[s];i[s]=u*u}return{dataId:o.write(i,r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}},If=xf((function(t,e){var n=t-e;return n*n}));function kf(t,e,n,r,o){for(var a=k(e),i=e.length,s=$(e),u=$(o),c=B(n,k(o)),l=0;l<a;++l){for(var h=it(l,i,s),f=new Array(h.length),d=0;d<f.length;d++)f[d]=h[r[d]];c[at(f,i,u)]=t[l]}return c}for(var Sf=0,Af=[Ef,Rf,yf(Er,If),wf,{kernelName:\"Transpose\",backendName:\"cpu\",kernelFunc:function(t){var e=t.inputs,n=t.attrs,r=t.backend,o=e.x,a=n.perm,i=r;df(o,\"transpose\");for(var s=o.shape.length,u=new Array(s),c=0;c<u.length;c++)u[c]=o.shape[a[c]];var l=kf(i.data.get(o.dataId).values,o.shape,o.dtype,a,u);return{dataId:i.write(l,u,o.dtype),shape:u,dtype:o.dtype}}},Cf];Sf<Af.length;Sf++){d(Af[Sf])}var Tf,Df=function(t){this.variableNames=[\"A\"];var e=Ya(),n=t[0],r=t[1];this.outputShape=t,this.userCode=\"\\n      void main() {\\n        ivec3 coords = getOutputCoords();\\n        int texR = coords[0];\\n        int texC = coords[1];\\n        int depth = coords[2];\\n        vec2 uv = (vec2(texC, texR) + halfCR) / vec2(\"+r+\".0, \"+n+\".0);\\n\\n        vec4 values = \"+e.texture2D+\"(A, uv);\\n        float value;\\n        if (depth == 0) {\\n          value = values.r;\\n        } else if (depth == 1) {\\n          value = values.g;\\n        } else if (depth == 2) {\\n          value = values.b;\\n        } else if (depth == 3) {\\n          value = values.a;\\n        }\\n\\n        setOutput(floor(value * 255.0 + 0.5));\\n      }\\n    \"},Nf=function(t){this.variableNames=[\"A\"],this.packedInputs=!1,this.packedOutput=!0;var e=Ya(),n=t[0],r=t[1];this.outputShape=t,this.userCode=\"\\n      void main() {\\n        ivec3 coords = getOutputCoords();\\n        int texR = coords[0];\\n        int texC = coords[1];\\n        int depth = coords[2];\\n\\n        vec4 result = vec4(0.);\\n\\n        for(int row=0; row<=1; row++) {\\n          for(int col=0; col<=1; col++) {\\n            texC = coords[1] + row;\\n            depth = coords[2] + col;\\n\\n            vec2 uv = (vec2(texC, texR) + halfCR) /\\n                       vec2(\"+r+\".0, \"+n+\".0);\\n            vec4 values = \"+e.texture2D+\"(A, uv);\\n            float value;\\n            if (depth == 0) {\\n              value = values.r;\\n            } else if (depth == 1) {\\n              value = values.g;\\n            } else if (depth == 2) {\\n              value = values.b;\\n            } else if (depth == 3) {\\n              value = values.a;\\n            }\\n\\n            result[row * 2 + col] = floor(value * 255.0 + 0.5);\\n          }\\n        }\\n\\n        \"+e.output+\" = result;\\n      }\\n    \"};var Ff=function(t,e){this.variableNames=[\"A\"];for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[e[r]];this.outputShape=n,this.rank=n.length;var o=ui(this.rank),a=function(t){var e=t.length;if(e>6)throw Error(\"Transpose for rank \"+e+\" is not yet supported\");for(var n=[\"resRC.x\",\"resRC.y\",\"resRC.z\",\"resRC.w\",\"resRC.u\",\"resRC.v\"],r=new Array(e),o=0;o<t.length;o++)r[t[o]]=n[o];return r.join()}(e);this.userCode=\"\\n    void main() {\\n      \"+o+\" resRC = getOutputCoords();\\n      setOutput(getA(\"+a+\"));\\n    }\\n    \"};var _f=function(t,e){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0;for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[e[r]];if(this.outputShape=n,this.rank=n.length,this.rank>6)throw Error(\"Packed transpose for rank \"+this.rank+\" is not yet supported.\");var o=ui(this.rank),a=ja(\"rc\",this.rank),i=new Array(this.rank);for(r=0;r<e.length;r++)i[e[r]]=a[r];var s=\"vec2(\"+i.slice(-2).join()+\")\",u=\"++\"+a[this.rank-1]+\" < \"+n[this.rank-1],c=\"getChannel(getA(\"+i.join()+\"), \"+s+\")\";this.userCode=\"\\n    void main() {\\n      \"+o+\" rc = getOutputCoords();\\n      vec4 result = vec4(0.);\\n      result[0] = \"+c+\";\\n      if(\"+u+\") {\\n        result[1] = \"+c+\";\\n      }\\n      --\"+a[this.rank-1]+\";\\n      if(++\"+a[this.rank-2]+\" < \"+n[this.rank-2]+\") {\\n        result[2] = \"+c+\";\\n        if(\"+u+\") {\\n          result[3] = \"+c+\";\\n        }\\n      }\\n      setOutput(result);\\n    }\\n    \"};for(var Of=0,Mf=[{kernelName:\"FromPixels\",backendName:\"webgl\",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=t.attrs,o=e.pixels,a=r.numChannels,s=\"undefined\"!=typeof HTMLVideoElement&&o instanceof HTMLVideoElement,u=\"undefined\"!=typeof HTMLImageElement&&o instanceof HTMLImageElement,c=s?[o.videoWidth,o.videoHeight]:[o.width,o.height],l=c[0],h=c[1],f=[h,l],d=[h,l,a];(u||s)&&(null==Tf&&(Tf=document.createElement(\"canvas\").getContext(\"2d\")),Tf.canvas.width=l,Tf.canvas.height=h,Tf.drawImage(o,0,0,l,h),o=Tf.canvas);var p=n.makeTensorInfo(f,\"int32\");n.texData.get(p.dataId).usage=zt.PIXELS,n.gpgpu.uploadPixelDataToTexture(n.getTexture(p.dataId),o);var v=i().getBool(\"WEBGL_PACK\")?new Nf(d):new Df(d),g=n.runWebGLProgram(v,[p],\"int32\");return n.disposeData(p.dataId),g}},{kernelName:wr,backendName:\"webgl\",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=e;return function(t,e,n){var r=new Ri(Ci,t.shape,e.shape);return i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")&&(r=new Si(Ii,t.shape,e.shape,!0)),n.runWebGLProgram(r,[t,e],\"float32\")}(r.a,r.b,n)}},{kernelName:\"NonMaxSuppressionV5\",backendName:\"webgl\",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=t.attrs;dn(\"tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead\");var o=e,a=o.boxes,i=o.scores,s=r,u=s.maxOutputSize,c=s.iouThreshold,l=s.scoreThreshold,h=s.softNmsSigma,f=n,d=Ma(f.readSync(a.dataId),f.readSync(i.dataId),u,c,l,h);return[d.selectedIndices,d.selectedScores]}},{kernelName:\"Square\",backendName:\"webgl\",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=e.x,o=n,a=new cu(r.shape,\"return x * x;\");return o.runWebGLProgram(a,[r],r.dtype)}},{kernelName:Er,backendName:\"webgl\",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=e,o=r.a,a=r.b,s=n,u=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new Si(\"return (a - b) * (a - b);\",o.shape,a.shape):new Ri(\"return (a - b) * (a - b);\",o.shape,a.shape);return s.compileAndRun(u,[o,a])}},{kernelName:\"Transpose\",backendName:\"webgl\",kernelFunc:function(t){for(var e,n=t.inputs,r=t.attrs,o=t.backend,a=n.x,s=r.perm,u=o,c=a.shape.length,l=new Array(c),h=0;h<l.length;h++)l[h]=a.shape[s[h]];if(u.shouldExecuteOnCPU([a])){var f=kf(u.texData.get(a.dataId).values,a.shape,a.dtype,s,l);e=u.makeTensorInfo(l,a.dtype),u.texData.get(e.dataId).values=f}else e=function(t,e,n){var r=i().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\")?new _f(t.shape,e):new Ff(t.shape,e);return n.runWebGLProgram(r,[t],t.dtype)}(a,s,u);return e}},{kernelName:\"MaxPoolWithArgmax\",backendName:\"webgl\",kernelFunc:function(t){var e=t.inputs,n=t.attrs,r=t.backend,o=e.x,a=n,i=a.filterSize,s=a.strides,u=a.pad,c=a.includeBatchInIndex,l=r;C(4===o.shape.length,(function(){return\"Error in maxPool: input must be rank 4 but got rank \"+o.shape.length+\".\"}));var h=[1,1];C(Ca(s,h),(function(){return\"Error in maxPool: Either strides or dilations must be 1. Got strides \"+s+\" and dilations '\"+h+\"'\"}));var f=fa(o.shape,i,s,h,u),d=function(t,e,n,r){var o=new Ws(n,\"max\",!1),a=r.runWebGLProgram(o,[t],\"float32\");return o=new Ws(n,\"max\",!0,!0,e),[a,r.runWebGLProgram(o,[t],\"float32\")]}(o,c,f,l);return[d[0],d[1]]}}];Of<Mf.length;Of++){d(Mf[Of])}for(var Bf=0,Pf=[{kernelName:xr,inputsToSave:[\"a\",\"b\"],gradFunc:function(t,e){var n=e[0],r=e[1],o=Pr(n.shape,r.shape);return{a:function(){var e=t,r=Br(n.shape,o);return r.length>0&&(e=e.sum(r)),e.reshape(n.shape)},b:function(){var e=t,n=Br(r.shape,o);return n.length>0&&(e=e.sum(n)),e.reshape(r.shape)}}}},{kernelName:\"AddN\",saveAllInputs:!0,gradFunc:function(t,e){var n={};return e.forEach((function(e,r){n[r]=function(){return t.clone()}})),n}},{kernelName:Sr,gradFunc:function(t,e,n){for(var r=n,o=r.inputShape,a=r.shape,i=Array.from(a),s=o.length-1;s>=0;s--)if(o[s]===a[s])i[s]=1;else if(1!==o[s])throw new Error(\"broadcastTo(): [\"+o+\"] cannot be broadcast to [\"+a+\"].\");var u=[];for(s=0;s<i.length;s++)i[s]>1&&u.push(s);return{x:function(){return t.sum(u,!0)}}}},{kernelName:wr,inputsToSave:[\"a\",\"b\"],gradFunc:function(t,e){var n=e[0],r=e[1],o=Pr(n.shape,r.shape);return{a:function(){var e=Bo(t,r.toFloat()),a=Br(n.shape,o);return a.length>0?th(e,a).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),a=Br(r.shape,o);a.length>0&&(e=th(e,a).reshape(r.shape));var i=Gc(r);return no(Bo(e,i.toFloat()))}}}},{kernelName:\"FusedBatchNorm\",inputsToSave:[\"x\",\"mean\",\"variance\",\"scale\"],gradFunc:function(t,e,n){var r=n.varianceEpsilon,o=e[0],a=e[1],i=e[2],s=e[3],u=Ju(o),c=null==s?On(1):s,l=Br(a.shape,u.shape),h=[];if(1===a.rank){for(var f=0;f<u.shape.length-1;++f)h.push(u.shape[f]);h.push(1)}var d=Oo(o,a),p=To(t,c),v=ao(Or(i,On(r))),g=To(To(To(v,v),v),On(-.5));return{x:function(){return 1===a.rank?ur(To(To(t,wc(v.as4D(1,1,1,a.shape[0]),h)),c),o.shape):ur(To(To(t,v),c),o.shape)},mean:function(){var t=To(To(v,On(-1)),p);return 1===a.rank&&(t=th(t,l)),ur(t,a.shape)},variance:function(){var t=To(To(g,d),p);return 1===a.rank&&(t=th(t,l)),ur(t,a.shape)},scale:function(){var e=To(d,v),n=To(t,e);return 1===a.rank&&(n=th(n,l)),ur(n,a.shape)},offset:function(){var e=t;return 1===a.rank&&(e=th(e,l)),ur(e,a.shape)}}}},{kernelName:Tr,gradFunc:function(t){return{x:function(){return t.toFloat()}}}},{kernelName:Ar,inputsToSave:[\"indices\"],gradFunc:function(t,e){var n=e[0];return{indices:function(){return Gn(n.shape,\"float32\")}}}},{kernelName:Nr,inputsToSave:[\"x\"],gradFunc:function(t,e,n){var r=e[0],o=n.paddings.map((function(t){return t[0]}));return{x:function(){return t.slice(o,r.shape)}}}},{kernelName:\"Square\",inputsToSave:[\"x\"],gradFunc:function(t,e){var n=e[0];return{x:function(){return t.mul(n.toFloat().mul(2))}}}},{kernelName:Er,inputsToSave:[\"a\",\"b\"],gradFunc:function(t,e){var n=e[0],r=e[1],o=On(2);return{a:function(){return To(t,To(o,Oo(n,r)))},b:function(){return To(t,To(o,Oo(r,n)))}}}},{kernelName:Dr,inputsToSave:[\"x\"],gradFunc:function(t,e,n){var r=e[0],o=n.reps;return{x:function(){var e=Xn(r);if(1===r.rank)for(var n=0;n<o[0];++n)e=e.add(t.slice([n*r.shape[0]],[r.shape[0]]));else if(2===r.rank)for(n=0;n<o[0];++n)for(var a=0;a<o[1];++a)e=e.add(t.slice([n*r.shape[0],a*r.shape[1]],[r.shape[0],r.shape[1]]));else if(3===r.rank)for(n=0;n<o[0];++n)for(a=0;a<o[1];++a)for(var i=0;i<o[2];++i)e=e.add(t.slice([n*r.shape[0],a*r.shape[1],i*r.shape[2]],[r.shape[0],r.shape[1],r.shape[2]]));else{if(4!==r.rank)throw new Error(\"Gradient for tile operation is not implemented for rank-\"+r.rank+\" tensors yet.\");for(n=0;n<o[0];++n)for(a=0;a<o[1];++a)for(i=0;i<o[2];++i)for(var s=0;s<o[3];++s)e=e.add(t.slice([n*r.shape[0],a*r.shape[1],i*r.shape[2],s*r.shape[3]],[r.shape[0],r.shape[1],r.shape[2],r.shape[3]]))}return e}}}},{kernelName:\"Transpose\",gradFunc:function(t,e,n){var r=Rn(n.perm);return{x:function(){return ua(t,r)}}}}];Bf<Pf.length;Bf++){p(Pf[Bf])}var Lf=function(){function t(){}return t.prototype.fetch=function(t,e){return fetch(t,e)},t.prototype.now=function(){return performance.now()},t.prototype.encode=function(t,e){if(\"utf-8\"!==e&&\"utf8\"!==e)throw new Error(\"Browser's encoder only supports utf-8, but got \"+e);return null==this.textEncoder&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(t)},t.prototype.decode=function(t,e){return new TextDecoder(e).decode(t)},t}();i().get(\"IS_BROWSER\")&&i().setPlatform(\"browser\",new Lf);var Wf,Uf=function(){return require(\"node-fetch\")},Vf=function(){function t(){this.util=require(\"util\"),this.textEncoder=new this.util.TextEncoder}return t.prototype.fetch=function(t,e){return null!=i().global.fetch?i().global.fetch(t,e):(null==Wf&&(Wf=Uf()),Wf(t,e))},t.prototype.now=function(){var t=process.hrtime();return 1e3*t[0]+t[1]/1e6},t.prototype.encode=function(t,e){if(\"utf-8\"!==e&&\"utf8\"!==e)throw new Error(\"Node built-in encoder only supports utf-8, but got \"+e);return this.textEncoder.encode(t)},t.prototype.decode=function(t,e){return 0===t.length?\"\":new this.util.TextDecoder(e).decode(t)},t}();i().get(\"IS_NODE\")&&i().setPlatform(\"node\",new Vf);var zf={float32:4,int32:4,uint16:2,uint8:1,bool:1},Gf=4;function Hf(t,e){for(var n={},r=0,o=function(e){var o=e.name,a=e.dtype,i=e.shape,s=k(i),u=void 0;if(\"quantization\"in e){var c=e.quantization;if(\"uint8\"!==c.dtype&&\"uint16\"!==c.dtype)throw new Error(\"Weight \"+e.name+\" has unknown quantization dtype \"+c.dtype+\". Supported quantization dtypes are: 'uint8' and 'uint16'.\");var l=zf[c.dtype],h=t.slice(r,r+s*l),f=\"uint8\"===c.dtype?new Uint8Array(h):new Uint16Array(h);if(\"float32\"===a)u=Float32Array.from(f,(function(t){return t*c.scale+c.min}));else{if(\"int32\"!==a)throw new Error(\"Unsupported dtype in weight '\"+o+\"': \"+a);u=Int32Array.from(f,(function(t){return Math.round(t*c.scale+c.min)}))}r+=s*l}else if(\"string\"===a){var d=k(e.shape);u=[];for(var p=0;p<d;p++){var v=new Uint32Array(t.slice(r,r+Gf))[0];r+=Gf;var g=new Uint8Array(t.slice(r,r+v));u.push(g),r+=v}}else{var m=zf[a];h=t.slice(r,r+s*m);if(\"float32\"===a)u=new Float32Array(h);else if(\"int32\"===a)u=new Int32Array(h);else{if(\"bool\"!==a)throw new Error(\"Unsupported dtype in weight '\"+o+\"': \"+a);u=new Uint8Array(h)}r+=s*m}n[o]=Fn(u,i,a)},a=0,i=e;a<i.length;a++){o(i[a])}return n}function qf(t){if(null===t)throw new Error(\"Invalid input value: \"+JSON.stringify(t));var e=0,n=[];t.forEach((function(t){if(e+=t.byteLength,n.push(t.byteLength===t.buffer.byteLength?t:new t.constructor(t)),!(t instanceof Float32Array||t instanceof Int32Array||t instanceof Uint8Array))throw new Error(\"Unsupported TypedArray subtype: \"+t.constructor.name)}));var r=new Uint8Array(e),o=0;return n.forEach((function(t){r.set(new Uint8Array(t.buffer),o),o+=t.byteLength})),r.buffer}var Kf=\"undefined\"!=typeof Buffer&&(\"undefined\"==typeof Blob||\"undefined\"==typeof atob||\"undefined\"==typeof btoa);function jf(t){return Kf?Buffer.byteLength(t):new Blob([t]).size}function Xf(t){var e=0;t.forEach((function(t){e+=t.byteLength}));var n=new Uint8Array(e),r=0;return t.forEach((function(t){n.set(new Uint8Array(t),r),r+=t.byteLength})),n.buffer}function Yf(t){for(t=t.trim();t.endsWith(\"/\");)t=t.slice(0,t.length-1);var e=t.split(\"/\");return e[e.length-1]}function $f(t){if(t.modelTopology instanceof ArrayBuffer)throw new Error(\"Expected JSON model topology, received ArrayBuffer.\");return{dateSaved:new Date,modelTopologyType:\"JSON\",modelTopologyBytes:null==t.modelTopology?0:jf(JSON.stringify(t.modelTopology)),weightSpecsBytes:null==t.weightSpecs?0:jf(JSON.stringify(t.weightSpecs)),weightDataBytes:null==t.weightData?0:t.weightData.byteLength}}var Qf=function(){function t(){this.saveRouters=[],this.loadRouters=[]}return t.getInstance=function(){return null==t.instance&&(t.instance=new t),t.instance},t.registerSaveRouter=function(e){t.getInstance().saveRouters.push(e)},t.registerLoadRouter=function(e){t.getInstance().loadRouters.push(e)},t.getSaveHandlers=function(e){return t.getHandlers(e,\"save\")},t.getLoadHandlers=function(e,n){return t.getHandlers(e,\"load\",n)},t.getHandlers=function(e,n,r){var o=[];return(\"load\"===n?t.getInstance().loadRouters:t.getInstance().saveRouters).forEach((function(t){var n=t(e,r);null!==n&&o.push(n)})),o},t}(),Jf=\"://\",Zf=function(){function t(){this.managers={}}return t.getInstance=function(){return null==t.instance&&(t.instance=new t),t.instance},t.registerManager=function(e,n){C(null!=e,(function(){return\"scheme must not be undefined or null.\"})),e.endsWith(Jf)&&(e=e.slice(0,e.indexOf(Jf))),C(e.length>0,(function(){return\"scheme must not be an empty string.\"}));var r=t.getInstance();C(null==r.managers[e],(function(){return\"A model store manager is already registered for scheme '\"+e+\"'.\"})),r.managers[e]=n},t.getManager=function(t){var e=this.getInstance().managers[t];if(null==e)throw new Error(\"Cannot find model manager for scheme '\"+t+\"'\");return e},t.getSchemes=function(){return Object.keys(this.getInstance().managers)},t}();function td(t){if(-1===t.indexOf(Jf))throw new Error(\"The url string provided does not contain a scheme. Supported schemes are: \"+Zf.getSchemes().join(\",\"));return{scheme:t.split(Jf)[0],path:t.split(Jf)[1]}}function ed(t,e,o){return void 0===o&&(o=!1),n(this,void 0,void 0,(function(){var n,a,i,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:return C(t!==e,(function(){return\"Old path and new path are the same: '\"+t+\"'\"})),C((n=Qf.getLoadHandlers(t)).length>0,(function(){return\"Copying failed because no load handler is found for source URL \"+t+\".\"})),C(n.length<2,(function(){return\"Copying failed because more than one (\"+n.length+\") load handlers for source URL \"+t+\".\"})),a=n[0],C((i=Qf.getSaveHandlers(e)).length>0,(function(){return\"Copying failed because no save handler is found for destination URL \"+e+\".\"})),C(i.length<2,(function(){return\"Copying failed because more than one (\"+n.length+\") save handlers for destination URL \"+e+\".\"})),s=i[0],u=td(t).scheme,c=td(t).path,l=u===td(t).scheme,[4,a.load()];case 1:return h=r.sent(),o&&l?[4,Zf.getManager(u).removeModel(c)]:[3,3];case 2:r.sent(),r.label=3;case 3:return[4,s.save(h)];case 4:return f=r.sent(),!o||l?[3,6]:[4,Zf.getManager(u).removeModel(c)];case 5:r.sent(),r.label=6;case 6:return[2,f.modelArtifactsInfo]}}))}))}var nd=\"models_store\",rd=\"model_info_store\";function od(){if(!i().getBool(\"IS_BROWSER\"))throw new Error(\"Failed to obtain IndexedDB factory because the current environmentis not a web browser.\");var t=window||self,e=t.indexedDB||t.mozIndexedDB||t.webkitIndexedDB||t.msIndexedDB||t.shimIndexedDB;if(null==e)throw new Error(\"The current browser does not appear to support IndexedDB.\");return e}function ad(t){var e=t.result;e.createObjectStore(nd,{keyPath:\"modelPath\"}),e.createObjectStore(rd,{keyPath:\"modelPath\"})}var id=function(){function t(t){if(this.indexedDB=od(),null==t||!t)throw new Error(\"For IndexedDB, modelPath must not be null, undefined or empty.\");this.modelPath=t}return t.prototype.save=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(e){if(t.modelTopology instanceof ArrayBuffer)throw new Error(\"BrowserLocalStorage.save() does not support saving model topology in binary formats yet.\");return[2,this.databaseAction(this.modelPath,t)]}))}))},t.prototype.load=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){return[2,this.databaseAction(this.modelPath)]}))}))},t.prototype.databaseAction=function(t,e){var n=this;return new Promise((function(t,r){var o=n.indexedDB.open(\"tensorflowjs\",1);o.onupgradeneeded=function(){return ad(o)},o.onsuccess=function(){var a=o.result;if(null==e){var i=a.transaction(nd,\"readonly\"),s=i.objectStore(nd).get(n.modelPath);s.onsuccess=function(){if(null==s.result)return a.close(),r(new Error(\"Cannot find model with path '\"+n.modelPath+\"' in IndexedDB.\"));t(s.result.modelArtifacts)},s.onerror=function(t){return a.close(),r(s.error)},i.oncomplete=function(){return a.close()}}else{var u,c=$f(e),l=a.transaction(rd,\"readwrite\"),h=l.objectStore(rd),f=h.put({modelPath:n.modelPath,modelArtifactsInfo:c});f.onsuccess=function(){var o=(u=a.transaction(nd,\"readwrite\")).objectStore(nd).put({modelPath:n.modelPath,modelArtifacts:e,modelArtifactsInfo:c});o.onsuccess=function(){return t({modelArtifactsInfo:c})},o.onerror=function(t){var e=(h=l.objectStore(rd)).delete(n.modelPath);e.onsuccess=function(){return a.close(),r(o.error)},e.onerror=function(t){return a.close(),r(o.error)}}},f.onerror=function(t){return a.close(),r(f.error)},l.oncomplete=function(){null==u?a.close():u.oncomplete=function(){return a.close()}}}},o.onerror=function(t){return r(o.error)}}))},t.URL_SCHEME=\"indexeddb://\",t}(),sd=function(t){return i().getBool(\"IS_BROWSER\")&&!Array.isArray(t)&&t.startsWith(id.URL_SCHEME)?(e=t.slice(id.URL_SCHEME.length),new id(e)):null;var e};Qf.registerSaveRouter(sd),Qf.registerLoadRouter(sd);var ud=function(){function t(){this.indexedDB=od()}return t.prototype.listModels=function(){return n(this,void 0,void 0,(function(){var t=this;return r(this,(function(e){return[2,new Promise((function(e,n){var r=t.indexedDB.open(\"tensorflowjs\",1);r.onupgradeneeded=function(){return ad(r)},r.onsuccess=function(){var t=r.result,o=t.transaction(rd,\"readonly\"),a=o.objectStore(rd).getAll();a.onsuccess=function(){for(var t={},n=0,r=a.result;n<r.length;n++){var o=r[n];t[o.modelPath]=o.modelArtifactsInfo}e(t)},a.onerror=function(e){return t.close(),n(a.error)},o.oncomplete=function(){return t.close()}},r.onerror=function(t){return n(r.error)}}))]}))}))},t.prototype.removeModel=function(t){return n(this,void 0,void 0,(function(){var e=this;return r(this,(function(n){var r;return t=(r=t).startsWith(id.URL_SCHEME)?r.slice(id.URL_SCHEME.length):r,[2,new Promise((function(n,r){var o=e.indexedDB.open(\"tensorflowjs\",1);o.onupgradeneeded=function(){return ad(o)},o.onsuccess=function(){var e,a=o.result,i=a.transaction(rd,\"readwrite\"),s=i.objectStore(rd),u=s.get(t);u.onsuccess=function(){if(null==u.result)return a.close(),r(new Error(\"Cannot find model with path '\"+t+\"' in IndexedDB.\"));var o=s.delete(t),i=function(){var o=(e=a.transaction(nd,\"readwrite\")).objectStore(nd).delete(t);o.onsuccess=function(){return n(u.result.modelArtifactsInfo)},o.onerror=function(t){return r(u.error)}};o.onsuccess=i,o.onerror=function(t){return i(),a.close(),r(u.error)}},u.onerror=function(t){return a.close(),r(u.error)},i.oncomplete=function(){null==e?a.close():e.oncomplete=function(){return a.close()}}},o.onerror=function(t){return r(o.error)}}))]}))}))},t}();if(i().getBool(\"IS_BROWSER\"))try{Zf.registerManager(id.URL_SCHEME,new ud)}catch(t){}var cd=\"/\",ld=\"tensorflowjs_models\",hd=\"info\",fd=\"model_topology\",dd=\"weight_specs\",pd=\"weight_data\",vd=\"model_metadata\";function gd(t){return{info:[ld,t,hd].join(cd),topology:[ld,t,fd].join(cd),weightSpecs:[ld,t,dd].join(cd),weightData:[ld,t,pd].join(cd),modelMetadata:[ld,t,vd].join(cd)}}function md(t){var e=t.split(cd);if(e.length<3)throw new Error(\"Invalid key format: \"+t);return e.slice(1,e.length-1).join(cd)}var yd=function(){function t(t){if(!i().getBool(\"IS_BROWSER\")||\"undefined\"==typeof window||void 0===window.localStorage)throw new Error(\"The current environment does not support local storage.\");if(this.LS=window.localStorage,null==t||!t)throw new Error(\"For local storage, modelPath must not be null, undefined or empty.\");this.modelPath=t,this.keys=gd(this.modelPath)}return t.prototype.save=function(t){return n(this,void 0,void 0,(function(){var e,n,o;return r(this,(function(r){if(t.modelTopology instanceof ArrayBuffer)throw new Error(\"BrowserLocalStorage.save() does not support saving model topology in binary formats yet.\");e=JSON.stringify(t.modelTopology),n=JSON.stringify(t.weightSpecs),o=$f(t);try{return this.LS.setItem(this.keys.info,JSON.stringify(o)),this.LS.setItem(this.keys.topology,e),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,function(t){if(Kf)return Buffer.from(t).toString(\"base64\");for(var e=new Uint8Array(t),n=\"\",r=0,o=e.length;r<o;r++)n+=String.fromCharCode(e[r]);return btoa(n)}(t.weightData)),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata})),[2,{modelArtifactsInfo:o}]}catch(t){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(\"Failed to save model '\"+this.modelPath+\"' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=\"+o.modelTopologyBytes+\", weightSpecsBytes=\"+o.weightSpecsBytes+\", weightDataBytes=\"+o.weightDataBytes+\".\")}return[2]}))}))},t.prototype.load=function(){return n(this,void 0,void 0,(function(){var t,e,n,o,a,i,s;return r(this,(function(r){if(null==(t=JSON.parse(this.LS.getItem(this.keys.info))))throw new Error(\"In local storage, there is no model with name '\"+this.modelPath+\"'\");if(\"JSON\"!==t.modelTopologyType)throw new Error(\"BrowserLocalStorage does not support loading non-JSON model topology yet.\");if(e={},null==(n=JSON.parse(this.LS.getItem(this.keys.topology))))throw new Error(\"In local storage, the topology of model '\"+this.modelPath+\"' is missing.\");if(e.modelTopology=n,null==(o=JSON.parse(this.LS.getItem(this.keys.weightSpecs))))throw new Error(\"In local storage, the weight specs of model '\"+this.modelPath+\"' are missing.\");if(e.weightSpecs=o,null!=(a=this.LS.getItem(this.keys.modelMetadata))&&(i=JSON.parse(a),e.format=i.format,e.generatedBy=i.generatedBy,e.convertedBy=i.convertedBy,e.userDefinedMetadata=i.userDefinedMetadata),null==(s=this.LS.getItem(this.keys.weightData)))throw new Error(\"In local storage, the binary weight values of model '\"+this.modelPath+\"' are missing.\");return e.weightData=function(t){if(Kf){var e=Buffer.from(t,\"base64\");return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}for(var n=atob(t),r=new Uint8Array(n.length),o=0;o<n.length;++o)r.set([n.charCodeAt(o)],o);return r.buffer}(s),[2,e]}))}))},t.URL_SCHEME=\"localstorage://\",t}(),xd=function(t){return i().getBool(\"IS_BROWSER\")&&!Array.isArray(t)&&t.startsWith(yd.URL_SCHEME)?(e=t.slice(yd.URL_SCHEME.length),new yd(e)):null;var e};Qf.registerSaveRouter(xd),Qf.registerLoadRouter(xd);var bd=function(){function t(){C(i().getBool(\"IS_BROWSER\"),(function(){return\"Current environment is not a web browser\"})),C(\"undefined\"==typeof window||void 0!==window.localStorage,(function(){return\"Current browser does not appear to support localStorage\"})),this.LS=window.localStorage}return t.prototype.listModels=function(){return n(this,void 0,void 0,(function(){var t,e,n,o,a,i;return r(this,(function(r){for(t={},e=ld+cd,n=cd+hd,o=0;o<this.LS.length;++o)(a=this.LS.key(o)).startsWith(e)&&a.endsWith(n)&&(i=md(a),t[i]=JSON.parse(this.LS.getItem(a)));return[2,t]}))}))},t.prototype.removeModel=function(t){return n(this,void 0,void 0,(function(){var e,n;return r(this,(function(r){var o;if(t=(o=t).startsWith(yd.URL_SCHEME)?o.slice(yd.URL_SCHEME.length):o,e=gd(t),null==this.LS.getItem(e.info))throw new Error(\"Cannot find model at path '\"+t+\"'\");return n=JSON.parse(this.LS.getItem(e.info)),this.LS.removeItem(e.info),this.LS.removeItem(e.topology),this.LS.removeItem(e.weightSpecs),this.LS.removeItem(e.weightData),[2,n]}))}))},t}();if(i().getBool(\"IS_BROWSER\"))try{Zf.registerManager(yd.URL_SCHEME,new bd)}catch(t){}var wd=\"model\",Cd=\".json\",Ed=\".weights.bin\";function Rd(t){return new Promise((function(t){return setTimeout(t)})).then(t)}var Id=function(){function t(e){if(!i().getBool(\"IS_BROWSER\"))throw new Error(\"browserDownloads() cannot proceed because the current environment is not a browser.\");e.startsWith(t.URL_SCHEME)&&(e=e.slice(t.URL_SCHEME.length)),null!=e&&0!==e.length||(e=wd),this.modelTopologyFileName=e+Cd,this.weightDataFileName=e+Ed}return t.prototype.save=function(t){return n(this,void 0,void 0,(function(){var e,n,o,a,i,s;return r(this,(function(r){switch(r.label){case 0:if(\"undefined\"==typeof document)throw new Error(\"Browser downloads are not supported in this environment since `document` is not present\");if(e=window.URL.createObjectURL(new Blob([t.weightData],{type:\"application/octet-stream\"})),!(t.modelTopology instanceof ArrayBuffer))return[3,1];throw new Error(\"BrowserDownloads.save() does not support saving model topology in binary formats yet.\");case 1:return n=[{paths:[\"./\"+this.weightDataFileName],weights:t.weightSpecs}],o={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,weightsManifest:n},a=window.URL.createObjectURL(new Blob([JSON.stringify(o)],{type:\"application/json\"})),(i=null==this.jsonAnchor?document.createElement(\"a\"):this.jsonAnchor).download=this.modelTopologyFileName,i.href=a,[4,Rd((function(){return i.dispatchEvent(new MouseEvent(\"click\"))}))];case 2:return r.sent(),null==t.weightData?[3,4]:((s=null==this.weightDataAnchor?document.createElement(\"a\"):this.weightDataAnchor).download=this.weightDataFileName,s.href=e,[4,Rd((function(){return s.dispatchEvent(new MouseEvent(\"click\"))}))]);case 3:r.sent(),r.label=4;case 4:return[2,{modelArtifactsInfo:$f(t)}]}}))}))},t.URL_SCHEME=\"downloads://\",t}(),kd=function(){function t(t){if(null==t||t.length<1)throw new Error(\"When calling browserFiles, at least 1 file is required, but received \"+t);this.files=t}return t.prototype.load=function(){return n(this,void 0,void 0,(function(){var t,e,n=this;return r(this,(function(r){return t=this.files[0],e=this.files.slice(1),[2,new Promise((function(r,o){var a=new FileReader;a.onload=function(a){var i=JSON.parse(a.target.result),s=i.modelTopology;if(null!=s){0===e.length&&r({modelTopology:s});var u=i.weightsManifest;if(null!=u){var c;try{c=n.checkManifestAndWeightFiles(u,e)}catch(t){return void o(t)}var l=[],h=[],f=[];u.forEach((function(t){t.paths.forEach((function(t){h.push(t),f.push(null)})),l.push.apply(l,t.weights)})),u.forEach((function(t){t.paths.forEach((function(t){var e=new FileReader;e.onload=function(e){var n=e.target.result,o=h.indexOf(t);f[o]=n,-1===f.indexOf(null)&&r({modelTopology:s,weightSpecs:l,weightData:Xf(f),format:i.format,generatedBy:i.generatedBy,convertedBy:i.convertedBy,userDefinedMetadata:i.userDefinedMetadata})},e.onerror=function(e){return o(\"Failed to weights data from file of path '\"+t+\"'.\")},e.readAsArrayBuffer(c[t])}))}))}else o(new Error(\"weightManifest field is missing from file \"+t.name))}else o(new Error(\"modelTopology field is missing from file \"+t.name))},a.onerror=function(e){return o(\"Failed to read model topology and weights manifest JSON from file '\"+t.name+\"'. BrowserFiles supports loading Keras-style tf.Model artifacts only.\")},a.readAsText(t)}))]}))}))},t.prototype.checkManifestAndWeightFiles=function(t,e){for(var n=[],r=e.map((function(t){return Yf(t.name)})),o={},a=0,i=t;a<i.length;a++){i[a].paths.forEach((function(t){var a=Yf(t);if(-1!==n.indexOf(a))throw new Error(\"Duplicate file basename found in weights manifest: '\"+a+\"'\");if(n.push(a),-1===r.indexOf(a))throw new Error(\"Weight file with basename '\"+a+\"' is not provided.\");o[t]=e[r.indexOf(a)]}))}if(n.length!==e.length)throw new Error(\"Mismatch in the number of files in weights manifest (\"+n.length+\") and the number of weight files provided (\"+e.length+\").\");return o},t}();function Sd(t,e,n,r){!function(t){C(null!=t&&Array.isArray(t)&&t.length>0,(function(){return\"promises must be a none empty array\"}))}(t),function(t,e){C(t>=0&&t<=1,(function(){return\"Progress fraction must be in range [0, 1], but got startFraction \"+t})),C(e>=0&&e<=1,(function(){return\"Progress fraction must be in range [0, 1], but got endFraction \"+e})),C(e>=t,(function(){return\"startFraction must be no more than endFraction, but got startFraction \"+t+\" and endFraction \"+e}))}(n=null==n?0:n,r=null==r?1:r);var o=0;return Promise.all(t.map((function(a){return a.then((function(a){var i=n+ ++o/t.length*(r-n);return e(i),a})),a})))}function Ad(t,e){return n(this,void 0,void 0,(function(){var n,o,a,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:return null==e&&(e={}),n=null==e.fetchFunc?i().platform.fetch:e.fetchFunc,o=t.map((function(t){return n(t,e.requestInit,{isBinary:!0})})),a=0,s=.5,null!=e.onProgress?[3,2]:[4,Promise.all(o)];case 1:return u=r.sent(),[3,4];case 2:return[4,Sd(o,e.onProgress,a,s)];case 3:u=r.sent(),r.label=4;case 4:return c=u.map((function(t){return t.arrayBuffer()})),l=.5,h=1,null!=e.onProgress?[3,6]:[4,Promise.all(c)];case 5:return f=r.sent(),[3,8];case 6:return[4,Sd(c,e.onProgress,l,h)];case 7:f=r.sent(),r.label=8;case 8:return[2,f]}}))}))}function Td(t){var e=this;return function(o,a,i){return void 0===a&&(a=\"\"),n(e,void 0,void 0,(function(){var e,n,s,u,c,l,h,f,d,p;return r(this,(function(r){switch(r.label){case 0:if(e=o.map((function(){return!1})),n={},s=null!=i?i.map((function(){return!1})):[],u=[],o.forEach((function(t,r){var o=0;t.weights.forEach((function(t){var a=\"quantization\"in t?t.quantization.dtype:t.dtype,c=zf[a]*k(t.shape),l=function(){e[r]=!0,null==n[r]&&(n[r]=[]),n[r].push({manifestEntry:t,groupOffset:o,sizeBytes:c})};null!=i?i.forEach((function(e,n){e===t.name&&(l(),s[n]=!0)})):l(),u.push(t.name),o+=c}))})),!s.every((function(t){return t})))throw c=i.filter((function(t,e){return!s[e]})),new Error(\"Could not find weights in manifest with names: \"+c.join(\", \")+\". \\nManifest JSON has weights with names: \"+u.join(\", \")+\".\");return l=e.reduce((function(t,e,n){return e&&t.push(n),t}),[]),h=[],l.forEach((function(t){o[t].paths.forEach((function(t){var e=a+(a.endsWith(\"/\")?\"\":\"/\")+t;h.push(e)}))})),[4,t(h)];case 1:return f=r.sent(),d={},p=0,l.forEach((function(t){for(var e=o[t].paths.length,r=0,a=0;a<e;a++)r+=f[p+a].byteLength;for(var i=new ArrayBuffer(r),s=new Uint8Array(i),u=0,c=0;c<e;c++){var l=new Uint8Array(f[p+c]);s.set(l,u),u+=l.byteLength}n[t].forEach((function(t){var e=Hf(i.slice(t.groupOffset,t.groupOffset+t.sizeBytes),[t.manifestEntry]);for(var n in e)d[n]=e[n]})),p+=e})),[2,d]}}))}))}}Qf.registerSaveRouter((function(t){return i().getBool(\"IS_BROWSER\")&&!Array.isArray(t)&&t.startsWith(Id.URL_SCHEME)?function(t){void 0===t&&(t=\"model\");return new Id(t)}(t.slice(Id.URL_SCHEME.length)):null}));var Dd=function(){function t(t,e){if(this.DEFAULT_METHOD=\"POST\",null==e&&(e={}),this.weightPathPrefix=e.weightPathPrefix,this.onProgress=e.onProgress,null!=e.fetchFunc?(C(\"function\"==typeof e.fetchFunc,(function(){return\"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)\"})),this.fetch=e.fetchFunc):this.fetch=i().platform.fetch,C(null!=t&&t.length>0,(function(){return\"URL path for http must not be null, undefined or empty.\"})),Array.isArray(t)&&C(2===t.length,(function(){return\"URL paths for http must have a length of 2, (actual length is \"+t.length+\").\"})),this.path=t,null!=e.requestInit&&null!=e.requestInit.body)throw new Error(\"requestInit is expected to have no pre-existing body, but has one.\");this.requestInit=e.requestInit||{}}return t.prototype.save=function(t){return n(this,void 0,void 0,(function(){var e,n,o,a;return r(this,(function(r){switch(r.label){case 0:if(t.modelTopology instanceof ArrayBuffer)throw new Error(\"BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.\");return(e=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:[\"./model.weights.bin\"],weights:t.weightSpecs}],o={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata,weightsManifest:n},e.body.append(\"model.json\",new Blob([JSON.stringify(o)],{type:\"application/json\"}),\"model.json\"),null!=t.weightData&&e.body.append(\"model.weights.bin\",new Blob([t.weightData],{type:\"application/octet-stream\"}),\"model.weights.bin\"),[4,this.fetch(this.path,e)];case 1:if((a=r.sent()).ok)return[2,{modelArtifactsInfo:$f(t),responses:[a]}];throw new Error(\"BrowserHTTPRequest.save() failed due to HTTP response status \"+a.status+\".\")}}))}))},t.prototype.load=function(){return n(this,void 0,void 0,(function(){var t,e,n,o,a,i,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:return[4,this.fetch(this.path,this.requestInit)];case 1:if(!(t=r.sent()).ok)throw new Error(\"Request to \"+this.path+\" failed with status code \"+t.status+\". Please verify this URL points to the model JSON of the model to load.\");r.label=2;case 2:return r.trys.push([2,4,,5]),[4,t.json()];case 3:return e=r.sent(),[3,5];case 4:throw r.sent(),n=\"Failed to parse model JSON of response from \"+this.path+\".\",this.path.endsWith(\".pb\")?n+=\" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.\":n+=\" Please make sure the server is serving valid JSON for this request.\",new Error(n);case 5:if(o=e.modelTopology,a=e.weightsManifest,i=e.generatedBy,s=e.convertedBy,u=e.format,c=e.userDefinedMetadata,null==o&&null==a)throw new Error(\"The JSON from HTTP path \"+this.path+\" contains neither model topology or manifest for weights.\");return null==a?[3,7]:[4,this.loadWeights(a)];case 6:f=r.sent(),l=f[0],h=f[1],r.label=7;case 7:return[2,{modelTopology:o,weightSpecs:l,weightData:h,userDefinedMetadata:c,generatedBy:i,convertedBy:s,format:u}]}}))}))},t.prototype.loadWeights=function(t){return n(this,void 0,void 0,(function(){var e,n,o,a,i,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:for(e=Array.isArray(this.path)?this.path[1]:this.path,n=function(t){var e=t.lastIndexOf(\"/\"),n=t.lastIndexOf(\"?\"),r=t.substring(0,e),o=n>e?t.substring(n):\"\";return[r+\"/\",o]}(e),o=n[0],a=n[1],i=this.weightPathPrefix||o,s=[],u=0,c=t;u<c.length;u++)l=c[u],s.push.apply(s,l.weights);return h=[],t.forEach((function(t){t.paths.forEach((function(t){h.push(i+t+a)}))})),[4,Ad(h,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress})];case 1:return f=r.sent(),[2,[s,Xf(f)]]}}))}))},t.URL_SCHEME_REGEX=/^https?:\\/\\//,t}();function Nd(t){return null!=t.match(Dd.URL_SCHEME_REGEX)}var Fd=function(t,e){if(\"undefined\"==typeof fetch)return null;return(Array.isArray(t)?t.every((function(t){return Nd(t)})):Nd(t))?_d(t,{onProgress:e}):null};function _d(t,e){return new Dd(t,e)}Qf.registerSaveRouter(Fd),Qf.registerLoadRouter(Fd);var Od=function(){function t(t){this.modelArtifacts=t}return t.prototype.load=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){return[2,this.modelArtifacts]}))}))},t}(),Md=function(){function t(t){this.saveHandler=t}return t.prototype.save=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(e){return[2,this.saveHandler(t)]}))}))},t}();var Bd=Object.freeze({browserFiles:function(t){return new kd(t)},browserHTTPRequest:function(t,e){return _d(t,e)},concatenateArrayBuffers:Xf,decodeWeights:Hf,encodeWeights:function(t,e){return n(this,void 0,void 0,(function(){var o,a,i,s,u,c=this;return r(this,(function(l){switch(l.label){case 0:for(o=[],a=[],i=Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t),s=function(s){var u=i[s],l=Array.isArray(t)?t[s].tensor:t[u];if(\"float32\"!==l.dtype&&\"int32\"!==l.dtype&&\"bool\"!==l.dtype&&\"string\"!==l.dtype)throw new Error(\"Unsupported dtype in weight '\"+u+\"': \"+l.dtype);var h={name:u,shape:l.shape,dtype:l.dtype};if(\"string\"===l.dtype){var f=new Promise((function(t){return n(c,void 0,void 0,(function(){var e,n,o,a,i,s,u;return r(this,(function(r){switch(r.label){case 0:return[4,l.bytes()];case 1:for(e=r.sent(),n=e.reduce((function(t,e){return t+e.length}),0)+Gf*e.length,o=new Uint8Array(n),a=0,i=0;i<e.length;i++)s=e[i],u=new Uint8Array(new Uint32Array([s.length]).buffer),o.set(u,a),a+=Gf,o.set(s,a),a+=s.length;return t(o),[2]}}))}))}));a.push(f)}else a.push(l.data());null!=e&&(h.group=e),o.push(h)},u=0;u<i.length;++u)s(u);return[4,Promise.all(a)];case 1:return[2,{data:qf(l.sent()),specs:o}]}}))}))},fromMemory:function(t,e,n,r){return 1===arguments.length?null!=t.modelTopology||null!=t.weightSpecs?new Od(t):(console.warn(\"Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release.\"),new Od({modelTopology:t})):(console.warn(\"Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release.\"),new Od({modelTopology:t,weightSpecs:e,weightData:n,trainingConfig:r}))},getLoadHandlers:function(t,e){return Qf.getLoadHandlers(t,e)},getModelArtifactsInfoForJSON:$f,getSaveHandlers:function(t){return Qf.getSaveHandlers(t)},http:_d,isHTTPScheme:Nd,loadWeights:function(t,e,o,a){return void 0===e&&(e=\"\"),n(this,void 0,void 0,(function(){return r(this,(function(n){return[2,Td((function(t){return Ad(t,{requestInit:a})}))(t,e,o)]}))}))},registerLoadRouter:function(t){return Qf.registerLoadRouter(t)},registerSaveRouter:function(t){return Qf.registerSaveRouter(t)},weightsLoaderFactory:Td,withSaveHandler:function(t){return new Md(t)},copyModel:function(t,e){return n(this,void 0,void 0,(function(){return r(this,(function(n){return!1,[2,ed(t,e,!1)]}))}))},listModels:function(){return n(this,void 0,void 0,(function(){var t,e,n,o,a,i,s;return r(this,(function(r){switch(r.label){case 0:t=Zf.getSchemes(),e={},n=0,o=t,r.label=1;case 1:return n<o.length?(a=o[n],[4,Zf.getManager(a).listModels()]):[3,4];case 2:for(s in i=r.sent())e[a+Jf+s]=i[s];r.label=3;case 3:return n++,[3,1];case 4:return[2,e]}}))}))},moveModel:function(t,e){return n(this,void 0,void 0,(function(){return r(this,(function(n){return!0,[2,ed(t,e,!0)]}))}))},removeModel:function(t){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){return e=td(t),[2,Zf.getManager(e.scheme).removeModel(e.path)]}))}))}});var Pd,Ld=An({confusionMatrix_:function(t,e,n){var r=gn(t,\"labels\",\"confusionMatrix\"),o=gn(e,\"predictions\",\"confusionMatrix\");C(null==n||n>0&&Number.isInteger(n),(function(){return\"If provided, numClasses must be a positive integer, but got \"+n})),C(1===r.rank,(function(){return\"Expected the rank of labels to be 1, but got \"+r.rank})),C(1===o.rank,(function(){return\"Expected the rank of predictions to be 1, but got \"+o.rank})),C(r.shape[0]===o.shape[0],(function(){return\"Mismatch in the number of examples: \"+r.shape[0]+\" vs. \"+o.shape[0]+\". Labels and predictions should have the same number of elements.\"})),C(n>0&&Number.isInteger(n),(function(){return\"numClasses is required to be a positive integer, but got \"+n}));var a=Rc(r.asType(\"int32\"),n),i=Rc(o.asType(\"int32\"),n);return a.transpose().matMul(i).asType(\"int32\")}}),Wd=Object.freeze({confusionMatrix:Ld});var Ud=An({fromPixels_:function(t,e){if(void 0===e&&(e=3),e>4)throw new Error(\"Cannot construct Tensor with more than 4 channels from pixels.\");if(null==t)throw new Error(\"pixels passed to tf.browser.fromPixels() can not be null\");var n=!1,r=!1,o=!1,a=!1,i=!1;if(t.data instanceof Uint8Array)n=!0;else if(\"undefined\"!=typeof ImageData&&t instanceof ImageData)r=!0;else if(\"undefined\"!=typeof HTMLVideoElement&&t instanceof HTMLVideoElement)o=!0;else if(\"undefined\"!=typeof HTMLImageElement&&t instanceof HTMLImageElement)a=!0;else{if(null==t.getContext)throw new Error(\"pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was \"+t.constructor.name);i=!0}if(o){if(o&&t.readyState<2)throw new Error(\"The video element has not loaded data yet. Please wait for `loadeddata` event on the <video> element.\")}if(null!=l(\"FromPixels\",Lt.backendName))return Lt.runKernel(\"FromPixels\",{pixels:t},{numChannels:e});var s,u,c=o?[t.videoWidth,t.videoHeight]:[t.width,t.height],h=c[0],f=c[1];if(i?s=t.getContext(\"2d\").getImageData(0,0,h,f).data:r||n?s=t.data:(a||o)&&(null==Pd&&(Pd=document.createElement(\"canvas\").getContext(\"2d\")),Pd.canvas.width=h,Pd.canvas.height=f,Pd.drawImage(t,0,0,h,f),s=Pd.getImageData(0,0,h,f).data),4===e)u=new Int32Array(s);else{var d=h*f;u=new Int32Array(d*e);for(var p=0;p<d;p++)for(var v=0;v<e;++v)u[p*e+v]=s[4*p+v]}return Pn(u,[f,h,e],\"int32\")}}),Vd=Object.freeze({toPixels:function(t,e){return n(this,void 0,void 0,(function(){var n,o,a,i,s,u,c,l,h,f,d,p,v,g,m,y,x,b,w,C,E,R,I;return r(this,(function(r){switch(r.label){case 0:if(n=gn(t,\"img\",\"toPixels\"),t instanceof wt||(n=n.toInt()),2!==n.rank&&3!==n.rank)throw new Error(\"toPixels only supports rank 2 or 3 tensors, got rank \"+n.rank+\".\");if(o=n.shape.slice(0,2),a=o[0],i=o[1],(s=2===n.rank?1:n.shape[2])>4||2===s)throw new Error(\"toPixels only supports depth of size 1, 3 or 4 but got \"+s);return[4,n.data()];case 1:return u=r.sent(),c=n.min(),l=n.max(),[4,Promise.all([c.data(),l.data()])];case 2:if(h=r.sent(),f=h[0],d=h[1],p=f[0],v=d[0],c.dispose(),l.dispose(),\"float32\"===n.dtype){if(p<0||v>1)throw new Error(\"Tensor values for a float32 Tensor must be in the range [0 - 1] but got range [\"+p+\" - \"+v+\"].\")}else{if(\"int32\"!==n.dtype)throw new Error(\"Unsupported type for toPixels: \"+n.dtype+\". Please use float32 or int32 tensors.\");if(p<0||v>255)throw new Error(\"Tensor values for a int32 Tensor must be in the range [0 - 255] but got range [\"+p+\" - \"+v+\"].\")}for(g=\"float32\"===n.dtype?255:1,m=new Uint8ClampedArray(i*a*4),y=0;y<a*i;++y)x=void 0,b=void 0,w=void 0,C=void 0,1===s?(x=u[y]*g,b=u[y]*g,w=u[y]*g,C=255):3===s?(x=u[3*y]*g,b=u[3*y+1]*g,w=u[3*y+2]*g,C=255):4===s&&(x=u[4*y]*g,b=u[4*y+1]*g,w=u[4*y+2]*g,C=u[4*y+3]*g),m[(E=4*y)+0]=Math.round(x),m[E+1]=Math.round(b),m[E+2]=Math.round(w),m[E+3]=Math.round(C);return null!=e&&(e.width=i,e.height=a,R=e.getContext(\"2d\"),I=new ImageData(m,i,a),R.putImageData(I,0,0)),n!==t&&n.dispose(),[2,m]}}))}))},fromPixels:Ud}),zd=function(){function t(){}return t.prototype.getClassName=function(){return this.constructor.className},t.fromConfig=function(t,e){return new t(e)},t}(),Gd=function(){function t(){this.classNameMap={}}return t.getMap=function(){return null==t.instance&&(t.instance=new t),t.instance},t.register=function(e){t.getMap().classNameMap[e.className]=[e,e.fromConfig]},t}();function Hd(t){C(null!=t.className,(function(){return\"Class being registered does not have the static className property defined.\"})),C(\"string\"==typeof t.className,(function(){return\"className is required to be a string, but got type \"+typeof t.className})),C(t.className.length>0,(function(){return\"Class being registered has an empty-string as its className, which is disallowed.\"})),Gd.register(t)}var qd=Object.freeze({Serializable:zd,SerializationMap:Gd,registerClass:Hd}),Kd=\"1.7.4\";var jd=Object.freeze({gpgpu_util:Rs,webgl_util:Ge,forceHalfFloat:function(){i().set(\"WEBGL_FORCE_F16_TEXTURES\",!0)},MathBackendWebGL:Uu,setWebGLContext:Kt,GPGPUContext:Is}),Xd=function(t){function o(){return null!==t&&t.apply(this,arguments)||this}return e(o,t),o.prototype.minimize=function(t,e,n){void 0===e&&(e=!1);var r=this.computeGradients(t,n),o=r.value,a=r.grads;if(null!=n){var i=n.map((function(t){return{name:t.name,tensor:a[t.name]}}));this.applyGradients(i)}else this.applyGradients(a);return tn(a),e?o:(o.dispose(),null)},Object.defineProperty(o.prototype,\"iterations\",{get:function(){return null==this.iterations_&&(this.iterations_=0),this.iterations_},enumerable:!0,configurable:!0}),o.prototype.incrementIterations=function(){this.iterations_=this.iterations+1},o.prototype.computeGradients=function(t,e){return ra(t,e)},o.prototype.dispose=function(){null!=this.iterations_&&tn(this.iterations_)},o.prototype.saveIterations=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){return null==this.iterations_&&(this.iterations_=0),[2,{name:\"iter\",tensor:On(this.iterations_,\"int32\")}]}))}))},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){throw new Error(\"getWeights() is not implemented for this optimizer yet.\")}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(t){throw new Error(\"setWeights() is not implemented for this optimizer class \"+this.getClassName())}))}))},o.prototype.extractIterations=function(t){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){switch(n.label){case 0:return e=this,[4,t[0].tensor.data()];case 1:return e.iterations_=n.sent()[0],[2,t.slice(1)]}}))}))},o}(zd);Object.defineProperty(Xd,Symbol.hasInstance,{value:function(t){return null!=t.minimize&&null!=t.computeGradients&&null!=t.applyGradients}});var Yd=function(t){function o(e,n,r){void 0===r&&(r=null);var o=t.call(this)||this;return o.learningRate=e,o.rho=n,o.epsilon=r,o.accumulatedGrads=[],o.accumulatedUpdates=[],null==r&&(o.epsilon=Lt.backend.epsilon()),o}return e(o,t),o.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Lt.registeredVariables[n];null==e.accumulatedGrads[r]&&(e.accumulatedGrads[r]={originalName:n+\"/accum_grad\",variable:Ze((function(){return Xn(o).variable(!1)}))}),null==e.accumulatedUpdates[r]&&(e.accumulatedUpdates[r]={originalName:n+\"/accum_var\",variable:Ze((function(){return Xn(o).variable(!1)}))});var a=Array.isArray(t)?t[r].tensor:t[n];if(null!=a){var i=e.accumulatedGrads[r].variable,s=e.accumulatedUpdates[r].variable;Ze((function(){var t=i.mul(e.rho).add(a.square().mul(1-e.rho)),n=s.add(e.epsilon).sqrt().div(i.add(e.epsilon).sqrt()).mul(a),r=s.mul(e.rho).add(n.square().mul(1-e.rho));i.assign(t),s.assign(r);var u=n.mul(-e.learningRate).add(o);o.assign(u)}))}})),this.incrementIterations()},o.prototype.dispose=function(){null!=this.accumulatedUpdates&&(tn(this.accumulatedGrads.map((function(t){return t.variable}))),tn(this.accumulatedUpdates.map((function(t){return t.variable}))))},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){var t;return r(this,(function(e){switch(e.label){case 0:return t=this.accumulatedGrads.concat(this.accumulatedUpdates),[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(t.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){switch(n.label){case 0:return[4,this.extractIterations(t)];case 1:return t=n.sent(),e=t.length/2,!1,this.accumulatedGrads=t.slice(0,e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.accumulatedUpdates=t.slice(e,2*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},o.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},o.fromConfig=function(t,e){return new t(e.learningRate,e.rho,e.epsilon)},o.className=\"Adadelta\",o}(Xd);Hd(Yd);var $d=function(t){function o(e,n){void 0===n&&(n=.1);var r=t.call(this)||this;return r.learningRate=e,r.initialAccumulatorValue=n,r.accumulatedGrads=[],r}return e(o,t),o.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Lt.registeredVariables[n];if(null==e.accumulatedGrads[r]){e.accumulatedGrads[r]={originalName:n+\"/accumulator\",variable:Ze((function(){return Hn(o.shape,e.initialAccumulatorValue).variable(!1)}))}}var a=Array.isArray(t)?t[r].tensor:t[n];if(null!=a){var i=e.accumulatedGrads[r].variable;Ze((function(){var t=i.add(a.square());i.assign(t);var n=a.div(t.add(Lt.backend.epsilon()).sqrt()).mul(-e.learningRate).add(o);o.assign(n)}))}})),this.incrementIterations()},o.prototype.dispose=function(){null!=this.accumulatedGrads&&tn(this.accumulatedGrads.map((function(t){return t.variable})))},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){switch(t.label){case 0:return[4,this.saveIterations()];case 1:return[2,[t.sent()].concat(this.accumulatedGrads.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(e){switch(e.label){case 0:return[4,this.extractIterations(t)];case 1:return t=e.sent(),!1,this.accumulatedGrads=t.map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},o.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},o.fromConfig=function(t,e){return new t(e.learningRate,e.initialAccumulatorValue)},o.className=\"Adagrad\",o}(Xd);Hd($d);var Qd=function(t){function o(e,n,r,o){void 0===o&&(o=null);var a=t.call(this)||this;return a.learningRate=e,a.beta1=n,a.beta2=r,a.epsilon=o,a.accumulatedFirstMoment=[],a.accumulatedSecondMoment=[],Ze((function(){a.accBeta1=On(n).variable(),a.accBeta2=On(r).variable()})),null==o&&(a.epsilon=Lt.backend.epsilon()),a}return e(o,t),o.prototype.applyGradients=function(t){var e=this,n=Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t);Ze((function(){var r=Oo(1,e.accBeta1),o=Oo(1,e.accBeta2);n.forEach((function(n,a){var i=Lt.registeredVariables[n];null==e.accumulatedFirstMoment[a]&&(e.accumulatedFirstMoment[a]={originalName:n+\"/m\",variable:Ze((function(){return Xn(i).variable(!1)}))}),null==e.accumulatedSecondMoment[a]&&(e.accumulatedSecondMoment[a]={originalName:n+\"/v\",variable:Ze((function(){return Xn(i).variable(!1)}))});var s=Array.isArray(t)?t[a].tensor:t[n];if(null!=s){var u=e.accumulatedFirstMoment[a].variable,c=e.accumulatedSecondMoment[a].variable,l=u.mul(e.beta1).add(s.mul(1-e.beta1)),h=c.mul(e.beta2).add(s.square().mul(1-e.beta2)),f=l.div(r),d=h.div(o);u.assign(l),c.assign(h);var p=f.div(d.sqrt().add(e.epsilon)).mul(-e.learningRate).add(i);i.assign(p)}})),e.accBeta1.assign(e.accBeta1.mul(e.beta1)),e.accBeta2.assign(e.accBeta2.mul(e.beta2))})),this.incrementIterations()},o.prototype.dispose=function(){this.accBeta1.dispose(),this.accBeta2.dispose(),null!=this.accumulatedFirstMoment&&tn(this.accumulatedFirstMoment.map((function(t){return t.variable}))),null!=this.accumulatedSecondMoment&&tn(this.accumulatedSecondMoment.map((function(t){return t.variable})))},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){var t;return r(this,(function(e){switch(e.label){case 0:return t=this.accumulatedFirstMoment.concat(this.accumulatedSecondMoment),[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(t.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){var e,n=this;return r(this,(function(r){switch(r.label){case 0:return[4,this.extractIterations(t)];case 1:return t=r.sent(),Ze((function(){n.accBeta1.assign(No(n.beta1,n.iterations_+1)),n.accBeta2.assign(No(n.beta2,n.iterations_+1))})),e=t.length/2,!1,this.accumulatedFirstMoment=t.slice(0,e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.accumulatedSecondMoment=t.slice(e,2*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},o.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},o.fromConfig=function(t,e){return new t(e.learningRate,e.beta1,e.beta2,e.epsilon)},o.className=\"Adam\",o}(Xd);Hd(Qd);var Jd=function(t){function o(e,n,r,o,a){void 0===o&&(o=null),void 0===a&&(a=0);var i=t.call(this)||this;return i.learningRate=e,i.beta1=n,i.beta2=r,i.epsilon=o,i.decay=a,i.accumulatedFirstMoment=[],i.accumulatedWeightedInfNorm=[],Ze((function(){i.iteration=On(0).variable(),i.accBeta1=On(n).variable()})),null==o&&(i.epsilon=Lt.backend.epsilon()),i}return e(o,t),o.prototype.applyGradients=function(t){var e=this,n=Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t);Ze((function(){var r=Oo(1,e.accBeta1),o=Bo(-e.learningRate,e.iteration.mul(e.decay).add(1));n.forEach((function(n,a){var i=Lt.registeredVariables[n];null==e.accumulatedFirstMoment[a]&&(e.accumulatedFirstMoment[a]={originalName:n+\"/m\",variable:Xn(i).variable(!1)}),null==e.accumulatedWeightedInfNorm[a]&&(e.accumulatedWeightedInfNorm[a]={originalName:n+\"/v\",variable:Xn(i).variable(!1)});var s=Array.isArray(t)?t[a].tensor:t[n];if(null!=s){var u=e.accumulatedFirstMoment[a].variable,c=e.accumulatedWeightedInfNorm[a].variable,l=u.mul(e.beta1).add(s.mul(1-e.beta1)),h=c.mul(e.beta2),f=s.abs(),d=h.maximum(f);u.assign(l),c.assign(d);var p=o.div(r).mul(l.div(d.add(e.epsilon))).add(i);i.assign(p)}})),e.iteration.assign(e.iteration.add(1)),e.accBeta1.assign(e.accBeta1.mul(e.beta1))})),this.incrementIterations()},o.prototype.dispose=function(){this.accBeta1.dispose(),this.iteration.dispose(),null!=this.accumulatedFirstMoment&&tn(this.accumulatedFirstMoment.map((function(t){return t.variable}))),null!=this.accumulatedWeightedInfNorm&&tn(this.accumulatedWeightedInfNorm.map((function(t){return t.variable})))},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){throw new Error(\"getWeights() is not implemented for Adamax yet.\")}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(t){throw new Error(\"setWeights() is not implemented for Adamax yet.\")}))}))},o.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},o.fromConfig=function(t,e){return new t(e.learningRate,e.beta1,e.beta2,e.epsilon,e.decay)},o.className=\"Adamax\",o}(Xd);Hd(Jd);var Zd=function(t){function o(e){var n=t.call(this)||this;return n.learningRate=e,n.setLearningRate(e),n}return e(o,t),o.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Array.isArray(t)?t[r].tensor:t[n];if(null!=o){var a=Lt.registeredVariables[n];Ze((function(){var t=e.c.mul(o).add(a);a.assign(t)}))}})),this.incrementIterations()},o.prototype.setLearningRate=function(t){this.learningRate=t,null!=this.c&&this.c.dispose(),this.c=en(On(-t))},o.prototype.dispose=function(){this.c.dispose()},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){switch(t.label){case 0:return[4,this.saveIterations()];case 1:return[2,[t.sent()]]}}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(e){switch(e.label){case 0:return[4,this.extractIterations(t)];case 1:if(0!==(t=e.sent()).length)throw new Error(\"SGD optimizer does not have settable weights.\");return[2]}}))}))},o.prototype.getConfig=function(){return{learningRate:this.learningRate}},o.fromConfig=function(t,e){return new t(e.learningRate)},o.className=\"SGD\",o}(Xd);Hd(Zd);var tp=function(t){function o(e,n,r){void 0===r&&(r=!1);var o=t.call(this,e)||this;return o.learningRate=e,o.momentum=n,o.useNesterov=r,o.accumulations=[],o.m=On(o.momentum),o}return e(o,t),o.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Lt.registeredVariables[n];if(null==e.accumulations[r]){e.accumulations[r]={originalName:n+\"/momentum\",variable:Ze((function(){return Xn(o).variable(!1)}))}}var a=e.accumulations[r].variable,i=Array.isArray(t)?t[r].tensor:t[n];null!=i&&Ze((function(){var t,n=e.m.mul(a).add(i);t=e.useNesterov?e.c.mul(i.add(n.mul(e.m))).add(o):e.c.mul(n).add(o),a.assign(n),o.assign(t)}))})),this.incrementIterations()},o.prototype.dispose=function(){this.m.dispose(),null!=this.accumulations&&tn(this.accumulations.map((function(t){return t.variable})))},o.prototype.setMomentum=function(t){this.momentum=t},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){switch(t.label){case 0:return[4,this.saveIterations()];case 1:return[2,[t.sent()].concat(this.accumulations.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(e){switch(e.label){case 0:return[4,this.extractIterations(t)];case 1:return t=e.sent(),!1,this.accumulations=t.map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},o.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},o.fromConfig=function(t,e){return new t(e.learningRate,e.momentum,e.useNesterov)},o.className=\"Momentum\",o}(Zd);Hd(tp);var ep=function(t){function o(e,n,r,o,a){void 0===n&&(n=.9),void 0===r&&(r=0),void 0===o&&(o=null),void 0===a&&(a=!1);var i=t.call(this)||this;if(i.learningRate=e,i.decay=n,i.momentum=r,i.epsilon=o,i.accumulatedMeanSquares=[],i.accumulatedMoments=[],i.accumulatedMeanGrads=[],i.centered=a,null==o&&(i.epsilon=Lt.backend.epsilon()),null==e)throw new Error(\"learningRate for RMSPropOptimizer must be defined.\");return i}return e(o,t),o.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Lt.registeredVariables[n];null==e.accumulatedMeanSquares[r]&&(e.accumulatedMeanSquares[r]={originalName:n+\"/rms\",variable:Ze((function(){return Xn(o).variable(!1)}))}),null==e.accumulatedMoments[r]&&(e.accumulatedMoments[r]={originalName:n+\"/momentum\",variable:Ze((function(){return Xn(o).variable(!1)}))}),null==e.accumulatedMeanGrads[r]&&e.centered&&(e.accumulatedMeanGrads[r]={originalName:n+\"/mg\",variable:Ze((function(){return Xn(o).variable(!1)}))});var a=Array.isArray(t)?t[r].tensor:t[n];if(null!=a){var i=e.accumulatedMeanSquares[r].variable,s=e.accumulatedMoments[r].variable;Ze((function(){var t=i.mul(e.decay).add(a.square().mul(1-e.decay));if(e.centered){var n=e.accumulatedMeanGrads[r].variable,u=n.mul(e.decay).add(a.mul(1-e.decay)),c=s.mul(e.momentum).add(a.mul(e.learningRate).div(t.sub(u.square().add(e.epsilon)).sqrt()));i.assign(t),n.assign(u),s.assign(c);var l=o.sub(c);o.assign(l)}else{var h=i.mul(e.decay).add(a.square().mul(1-e.decay));c=s.mul(e.momentum).add(a.mul(e.learningRate).div(h.add(e.epsilon).sqrt()));i.assign(h),s.assign(c);l=o.sub(c);o.assign(l)}}))}})),this.incrementIterations()},o.prototype.dispose=function(){null!=this.accumulatedMeanSquares&&tn(this.accumulatedMeanSquares.map((function(t){return t.variable}))),null!=this.accumulatedMeanGrads&&this.centered&&tn(this.accumulatedMeanGrads.map((function(t){return t.variable}))),null!=this.accumulatedMoments&&tn(this.accumulatedMoments.map((function(t){return t.variable})))},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){var t;return r(this,(function(e){switch(e.label){case 0:return t=this.accumulatedMeanSquares.concat(this.accumulatedMoments),this.centered&&t.push.apply(t,this.accumulatedMeanGrads),[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(t.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){switch(n.label){case 0:return[4,this.extractIterations(t)];case 1:return t=n.sent(),e=this.centered?t.length/3:t.length/2,!1,this.accumulatedMeanSquares=t.slice(0,e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.accumulatedMoments=t.slice(e,2*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.centered&&(this.accumulatedMeanGrads=t.slice(2*e,3*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}}))),[2]}}))}))},o.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},o.fromConfig=function(t,e){return new t(e.learningRate,e.decay,e.momentum,e.epsilon,e.centered)},o.className=\"RMSProp\",o}(Xd);Hd(ep);var np=function(){function t(){}return t.sgd=function(t){return new Zd(t)},t.momentum=function(t,e,n){return void 0===n&&(n=!1),new tp(t,e,n)},t.rmsprop=function(t,e,n,r,o){return void 0===e&&(e=.9),void 0===n&&(n=0),void 0===r&&(r=null),void 0===o&&(o=!1),new ep(t,e,n,r,o)},t.adam=function(t,e,n,r){return void 0===t&&(t=.001),void 0===e&&(e=.9),void 0===n&&(n=.999),void 0===r&&(r=null),new Qd(t,e,n,r)},t.adadelta=function(t,e,n){return void 0===t&&(t=.001),void 0===e&&(e=.95),void 0===n&&(n=null),new Yd(t,e,n)},t.adamax=function(t,e,n,r,o){return void 0===t&&(t=.002),void 0===e&&(e=.9),void 0===n&&(n=.999),void 0===r&&(r=null),void 0===o&&(o=0),new Jd(t,e,n,r,o)},t.adagrad=function(t,e){return void 0===e&&(e=.1),new $d(t,e)},t}(),rp={sgd:np.sgd,momentum:np.momentum,adadelta:np.adadelta,adagrad:np.adagrad,rmsprop:np.rmsprop,adamax:np.adamax,adam:np.adam},op=\"undefined\"!=typeof requestAnimationFrame?requestAnimationFrame:\"undefined\"!=typeof setImmediate?setImmediate:function(t){return t()};function ap(){return new Promise((function(t){return op((function(){return t()}))}))}wt.prototype.add=function(t){return Or(this,t)},wt.prototype.broadcastTo=function(t){return fc(this,t)},wt.prototype.div=function(t){return Bo(this,t)},wt.prototype.divNoNan=function(t){return bc(this,t)},wt.prototype.squaredDifference=function(t){return Hc(this,t)},wt.prototype.tile=function(t){return wc(this,t)},wt.prototype.oneHot=function(t,e,n){return void 0===e&&(e=1),void 0===n&&(n=0),Rc(this,t,e,n)},wt.prototype.transpose=function(t){return ua(this,t)},wt.prototype.pad=function(t,e){return Ic(this,t,e)},wt.prototype.batchNorm=function(t,e,n,r,o){return nc(this,t,e,n,r,o)},xt=ff;export{Yd as AdadeltaOptimizer,$d as AdagradOptimizer,Qd as AdamOptimizer,Jd as AdamaxOptimizer,xr as Add,br as AddN,Sr as BroadcastTo,ca as DataStorage,wr as Div,s as ENV,o as Environment,Fr as FromPixels,Cr as FusedBatchNorm,Tr as Identity,la as KernelBackend,_r as MaxPoolWithArgmax,tp as MomentumOptimizer,kr as NonMaxSuppressionV5,Ar as OneHot,Xd as Optimizer,Nr as PadV2,ep as RMSPropOptimizer,Ct as Rank,Nh as Reduction,Zd as SGDOptimizer,Rr as Square,Er as SquaredDifference,wt as Tensor,mt as TensorBuffer,Dr as Tile,Ir as Transpose,St as Variable,Lr as abs,Wr as acos,Ur as acosh,Or as add,$u as addN,xo as addStrict,ql as all,Kl as any,jl as argMax,Xl as argMin,Vr as asin,zr as asinh,Gr as atan,bo as atan2,Hr as atanh,Ol as avgPool,Pl as avgPool3d,hn as backend,Sa as backend_util,lh as basicLSTMCell,nc as batchNorm,ac as batchNorm2d,uc as batchNorm3d,hc as batchNorm4d,ec as batchNormalization,oc as batchNormalization2d,sc as batchNormalization3d,lc as batchNormalization4d,rr as batchToSpaceND,ul as booleanMaskAsync,fc as broadcastTo,Vd as browser,er as buffer,or as cast,qr as ceil,Kr as clipByValue,dc as clone,Tn as complex,Yn as concat,$n as concat1d,Qn as concat2d,Jn as concat3d,Zn as concat4d,fl as conv1d,dl as conv2d,wl as conv2dTranspose,pl as conv3d,Cl as conv3dTranspose,jr as cos,Xr as cosh,ar as cumsum,oa as customGrad,Xe as deprecationWarn,ir as depthToSpace,ml as depthwiseConv2d,Eh as diag,je as disableDeprecationWarnings,tn as dispose,Ye as disposeVariables,Bo as div,bc as divNoNan,wo as divStrict,Rl as dot,Rh as dropout,nh as elu,Ke as enableDebugMode,qe as enableProdMode,$e as engine,i as env,Kc as equal,jc as equalStrict,Yr as erf,$r as exp,sr as expandDims,Qr as expm1,Cc as eye,gh as fft,Hn as fill,un as findBackend,cn as findBackendFactory,Jr as floor,Co as floorDiv,Ah as frame,hf as fused,il as gather,Ch as gatherND,Lo as gather_util,an as getBackend,h as getGradient,l as getKernel,f as getKernelsForBackend,Zo as grad,ta as grads,Xc as greater,Yc as greaterEqual,$c as greaterEqualStrict,Qc as greaterStrict,Sh as hammingWindow,kh as hannWindow,mh as ifft,Nn as imag,nf as image,Fh as inTopKAsync,Bd as io,xh as irfft,lo as isFinite,co as isInf,uo as isNaN,en as keep,rh as leakyRelu,Jc as less,Zc as lessEqual,tl as lessEqualStrict,el as lessStrict,jh as linalg,qn as linspace,uh as localResponseNormalization,Zr as log,to as log1p,eo as logSigmoid,sa as logSoftmax,Yl as logSumExp,pc as logicalAnd,vc as logicalNot,gc as logicalOr,mc as logicalXor,zh as losses,El as matMul,Wd as math,$l as max,_l as maxPool,Bl as maxPool3d,Ll as maxPoolWithArgmax,Eo as maximum,Ro as maximumStrict,Ql as mean,Qe as memory,Jl as min,Io as minimum,ko as minimumStrict,So as mod,Ao as modStrict,Zl as moments,fh as movingAverage,To as mul,Do as mulStrict,hh as multiRNNCell,Ec as multinomial,no as neg,ap as nextFrame,ch as norm,nl as notEqual,rl as notEqualStrict,Rc as oneHot,zn as ones,jn as onesLike,An as op,Il as outerProduct,Ic as pad,kc as pad1d,Sc as pad2d,Ac as pad3d,Tc as pad4d,Ml as pool,No as pow,Fo as powStrict,oh as prelu,nr as print,eh as prod,Je as profile,Dc as rand,Uc as randomGamma,Vc as randomNormal,zc as randomUniform,Kn as range,on as ready,Dn as real,ro as reciprocal,ln as registerBackend,p as registerGradient,d as registerKernel,ah as relu,ih as relu6,sn as removeBackend,ur as reshape,kl as reverse,Sl as reverse1d,Al as reverse2d,Tl as reverse3d,Dl as reverse4d,yh as rfft,oo as round,ao as rsqrt,On as scalar,vh as scatterND,Ho as scatter_util,sh as selu,bl as separableConv2d,qd as serialization,rn as setBackend,fn as setPlatform,dr as setdiff1dAsync,io as sigmoid,so as sign,Dh as signal,ho as sin,fo as sinh,Wl as slice,Ul as slice1d,Vl as slice2d,zl as slice3d,Gl as slice4d,Jo as slice_util,ia as softmax,po as softplus,cr as spaceToBatchND,wh as sparseToDense,bh as spectral,tr as split,vo as sqrt,Gc as square,Hc as squaredDifference,_o as squaredDifferenceStrict,lr as squeeze,hr as stack,go as step,Th as stft,dh as stridedSlice,Oo as sub,Mo as subStrict,th as sum,Dt as sumOutType,mo as tan,yo as tanh,Fn as tensor,Mn as tensor1d,Bn as tensor2d,Pn as tensor3d,Ln as tensor4d,Wn as tensor5d,Un as tensor6d,Mt as tensor_util,Bc as test_util,Ze as tidy,wc as tile,nn as time,ph as topk,rp as train,ua as transpose,qc as truncatedNormal,g as unregisterGradient,v as unregisterKernel,sl as unsortedSegmentSum,fr as unstack,st as util,ea as valueAndGrad,na as valueAndGrads,Vn as variable,ra as variableGrads,Kd as version_core,jd as webgl,yc as where,xc as whereAsync,Gn as zeros,Xn as zerosLike};\n//# sourceMappingURL=tf-core.esm.js.map\n","function accessor (fn, fields, name) {\n  fn.fields = fields || [];\n  fn.fname = name;\n  return fn;\n}\nfunction accessorName(fn) {\n  return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n  return fn == null ? null : fn.fields;\n}\n\nfunction getter (path) {\n  return path.length === 1 ? get1(path[0]) : getN(path);\n}\n\nconst get1 = field => function (obj) {\n  return obj[field];\n};\n\nconst getN = path => {\n  const len = path.length;\n  return function (obj) {\n    for (let i = 0; i < len; ++i) {\n      obj = obj[path[i]];\n    }\n\n    return obj;\n  };\n};\n\nfunction error (message) {\n  throw Error(message);\n}\n\nfunction splitAccessPath (p) {\n  const path = [],\n        n = p.length;\n  let q = null,\n      b = 0,\n      s = '',\n      i,\n      j,\n      c;\n  p = p + '';\n\n  function push() {\n    path.push(s + p.substring(i, j));\n    s = '';\n    i = j + 1;\n  }\n\n  for (i = j = 0; j < n; ++j) {\n    c = p[j];\n\n    if (c === '\\\\') {\n      s += p.substring(i, j);\n      s += p.substring(++j, ++j);\n      i = j;\n    } else if (c === q) {\n      push();\n      q = null;\n      b = -1;\n    } else if (q) {\n      continue;\n    } else if (i === b && c === '\"') {\n      i = j + 1;\n      q = c;\n    } else if (i === b && c === \"'\") {\n      i = j + 1;\n      q = c;\n    } else if (c === '.' && !b) {\n      if (j > i) {\n        push();\n      } else {\n        i = j + 1;\n      }\n    } else if (c === '[') {\n      if (j > i) push();\n      b = i = j + 1;\n    } else if (c === ']') {\n      if (!b) error('Access path missing open bracket: ' + p);\n      if (b > 0) push();\n      b = 0;\n      i = j + 1;\n    }\n  }\n\n  if (b) error('Access path missing closing bracket: ' + p);\n  if (q) error('Access path missing closing quote: ' + p);\n\n  if (j > i) {\n    j++;\n    push();\n  }\n\n  return path;\n}\n\nfunction field (field, name, opt) {\n  const path = splitAccessPath(field);\n  field = path.length === 1 ? path[0] : field;\n  return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\n\nconst id = field('id');\nconst identity = accessor(_ => _, [], 'identity');\nconst zero = accessor(() => 0, [], 'zero');\nconst one = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\n\nfunction log$1(method, level, input) {\n  const args = [level].concat([].slice.call(input));\n  console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger (_, method) {\n  let level = _ || None;\n  return {\n    level(_) {\n      if (arguments.length) {\n        level = +_;\n        return this;\n      } else {\n        return level;\n      }\n    },\n\n    error() {\n      if (level >= Error$1) log$1(method || 'error', 'ERROR', arguments);\n      return this;\n    },\n\n    warn() {\n      if (level >= Warn) log$1(method || 'warn', 'WARN', arguments);\n      return this;\n    },\n\n    info() {\n      if (level >= Info) log$1(method || 'log', 'INFO', arguments);\n      return this;\n    },\n\n    debug() {\n      if (level >= Debug) log$1(method || 'log', 'DEBUG', arguments);\n      return this;\n    }\n\n  };\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (_) {\n  return _ === Object(_);\n}\n\nconst isLegalKey = key => key !== '__proto__';\n\nfunction mergeConfig(...configs) {\n  return configs.reduce((out, source) => {\n    for (const key in source) {\n      if (key === 'signals') {\n        // for signals, we merge the signals arrays\n        // source signals take precedence over\n        // existing signals with the same name\n        out.signals = mergeNamed(out.signals, source.signals);\n      } else {\n        // otherwise, merge objects subject to recursion constraints\n        // for legend block, recurse for the layout entry only\n        // for style block, recurse for all properties\n        // otherwise, no recursion: objects overwrite, no merging\n        const r = key === 'legend' ? {\n          layout: 1\n        } : key === 'style' ? true : null;\n        writeConfig(out, key, source[key], r);\n      }\n    }\n\n    return out;\n  }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n  if (!isLegalKey(key)) return;\n  let k, o;\n\n  if (isObject(value) && !isArray(value)) {\n    o = isObject(output[key]) ? output[key] : output[key] = {};\n\n    for (k in value) {\n      if (recurse && (recurse === true || recurse[k])) {\n        writeConfig(o, k, value[k]);\n      } else if (isLegalKey(k)) {\n        o[k] = value[k];\n      }\n    }\n  } else {\n    output[key] = value;\n  }\n}\n\nfunction mergeNamed(a, b) {\n  if (a == null) return b;\n  const map = {},\n        out = [];\n\n  function add(_) {\n    if (!map[_.name]) {\n      map[_.name] = 1;\n      out.push(_);\n    }\n  }\n\n  b.forEach(add);\n  a.forEach(add);\n  return out;\n}\n\nfunction peek (array) {\n  return array[array.length - 1];\n}\n\nfunction toNumber (_) {\n  return _ == null || _ === '' ? null : +_;\n}\n\nconst exp = sign => x => sign * Math.exp(x);\n\nconst log = sign => x => Math.log(sign * x);\n\nconst symlog = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\n\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n\nconst pow = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\nfunction pan(domain, delta, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        dd = (d1 - d0) * delta;\n  return [ground(d0 - dd), ground(d1 - dd)];\n}\n\nfunction panLinear(domain, delta) {\n  return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n  var sign = Math.sign(domain[0]);\n  return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n  return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n  return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n  return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\n\nfunction zoomLinear(domain, anchor, scale) {\n  return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n  const sign = Math.sign(domain[0]);\n  return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n  return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n  return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n\nfunction quarter(date) {\n  return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n  return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n\nfunction array (_) {\n  return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange (range, min, max) {\n  let lo = range[0],\n      hi = range[1],\n      span;\n\n  if (hi < lo) {\n    span = hi;\n    hi = lo;\n    lo = span;\n  }\n\n  span = hi - lo;\n  return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\n\nfunction isFunction (_) {\n  return typeof _ === 'function';\n}\n\nconst DESCENDING = 'descending';\nfunction compare (fields, orders, opt) {\n  opt = opt || {};\n  orders = array(orders) || [];\n  const ord = [],\n        get = [],\n        fmap = {},\n        gen = opt.comparator || comparator;\n  array(fields).forEach((f, i) => {\n    if (f == null) return;\n    ord.push(orders[i] === DESCENDING ? -1 : 1);\n    get.push(f = isFunction(f) ? f : field(f, null, opt));\n    (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n  });\n  return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\n\nconst comparator = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\n\nconst compare1 = (field, order) => function (a, b) {\n  return ascending(field(a), field(b)) * order;\n};\n\nconst compareN = (fields, orders, n) => {\n  orders.push(0); // pad zero for convenient lookup\n\n  return function (a, b) {\n    let f,\n        c = 0,\n        i = -1;\n\n    while (c === 0 && ++i < n) {\n      f = fields[i];\n      c = ascending(f(a), f(b));\n    }\n\n    return c * orders[i];\n  };\n};\n\nfunction constant (_) {\n  return isFunction(_) ? _ : () => _;\n}\n\nfunction debounce (delay, handler) {\n  let tid;\n  return e => {\n    if (tid) clearTimeout(tid);\n    tid = setTimeout(() => (handler(e), tid = null), delay);\n  };\n}\n\nfunction extend (_) {\n  for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n    x = arguments[i];\n\n    for (k in x) {\n      _[k] = x[k];\n    }\n  }\n\n  return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent (array, f) {\n  let i = 0,\n      n,\n      v,\n      min,\n      max;\n\n  if (array && (n = array.length)) {\n    if (f == null) {\n      // find first valid value\n      for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = array[i]; // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    } else {\n      // find first valid value\n      for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = f(array[i]); // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n\nfunction extentIndex (array, f) {\n  const n = array.length;\n  let i = -1,\n      a,\n      b,\n      c,\n      u,\n      v;\n\n  if (f == null) {\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  } else {\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  }\n\n  return [u, v];\n}\n\nconst hop = Object.prototype.hasOwnProperty;\nfunction has (object, property) {\n  return hop.call(object, property);\n}\n\nconst NULL = {};\nfunction fastmap (input) {\n  let obj = {},\n      test;\n\n  function has$1(key) {\n    return has(obj, key) && obj[key] !== NULL;\n  }\n\n  const map = {\n    size: 0,\n    empty: 0,\n    object: obj,\n    has: has$1,\n\n    get(key) {\n      return has$1(key) ? obj[key] : undefined;\n    },\n\n    set(key, value) {\n      if (!has$1(key)) {\n        ++map.size;\n        if (obj[key] === NULL) --map.empty;\n      }\n\n      obj[key] = value;\n      return this;\n    },\n\n    delete(key) {\n      if (has$1(key)) {\n        --map.size;\n        ++map.empty;\n        obj[key] = NULL;\n      }\n\n      return this;\n    },\n\n    clear() {\n      map.size = map.empty = 0;\n      map.object = obj = {};\n    },\n\n    test(_) {\n      if (arguments.length) {\n        test = _;\n        return map;\n      } else {\n        return test;\n      }\n    },\n\n    clean() {\n      const next = {};\n      let size = 0;\n\n      for (const key in obj) {\n        const value = obj[key];\n\n        if (value !== NULL && (!test || !test(value))) {\n          next[key] = value;\n          ++size;\n        }\n      }\n\n      map.size = size;\n      map.empty = 0;\n      map.object = obj = next;\n    }\n\n  };\n  if (input) Object.keys(input).forEach(key => {\n    map.set(key, input[key]);\n  });\n  return map;\n}\n\nfunction flush (range, value, threshold, left, right, center) {\n  if (!threshold && threshold !== 0) return center;\n  const t = +threshold;\n  let a = range[0],\n      b = peek(range),\n      l; // swap endpoints if range is reversed\n\n  if (b < a) {\n    l = a;\n    a = b;\n    b = l;\n  } // compare value to endpoints\n\n\n  l = Math.abs(value - a);\n  const r = Math.abs(b - value); // adjust if value is within threshold distance of endpoint\n\n  return l < r && l <= t ? left : r <= t ? right : center;\n}\n\nfunction inherits (child, parent, members) {\n  const proto = child.prototype = Object.create(parent.prototype);\n  Object.defineProperty(proto, 'constructor', {\n    value: child,\n    writable: true,\n    enumerable: true,\n    configurable: true\n  });\n  return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange (value, range, left, right) {\n  let r0 = range[0],\n      r1 = range[range.length - 1],\n      t;\n\n  if (r0 > r1) {\n    t = r0;\n    r0 = r1;\n    r1 = t;\n  }\n\n  left = left === undefined || left;\n  right = right === undefined || right;\n  return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\n\nfunction isBoolean (_) {\n  return typeof _ === 'boolean';\n}\n\nfunction isDate (_) {\n  return Object.prototype.toString.call(_) === '[object Date]';\n}\n\nfunction isIterable (_) {\n  return _ && isFunction(_[Symbol.iterator]);\n}\n\nfunction isNumber (_) {\n  return typeof _ === 'number';\n}\n\nfunction isRegExp (_) {\n  return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n\nfunction isString (_) {\n  return typeof _ === 'string';\n}\n\nfunction key (fields, flat, opt) {\n  if (fields) {\n    fields = flat ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array(fields);\n  }\n\n  const len = fields && fields.length,\n        gen = opt && opt.get || getter,\n        map = f => gen(flat ? [f] : splitAccessPath(f));\n\n  let fn;\n\n  if (!len) {\n    fn = function () {\n      return '';\n    };\n  } else if (len === 1) {\n    const get = map(fields[0]);\n\n    fn = function (_) {\n      return '' + get(_);\n    };\n  } else {\n    const get = fields.map(map);\n\n    fn = function (_) {\n      let s = '' + get[0](_),\n          i = 0;\n\n      while (++i < len) s += '|' + get[i](_);\n\n      return s;\n    };\n  }\n\n  return accessor(fn, fields, 'key');\n}\n\nfunction lerp (array, frac) {\n  const lo = array[0],\n        hi = peek(array),\n        f = +frac;\n  return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n\nconst DEFAULT_MAX_SIZE = 10000; // adapted from https://github.com/dominictarr/hashlru/ (MIT License)\n\nfunction lruCache (maxsize) {\n  maxsize = +maxsize || DEFAULT_MAX_SIZE;\n  let curr, prev, size;\n\n  const clear = () => {\n    curr = {};\n    prev = {};\n    size = 0;\n  };\n\n  const update = (key, value) => {\n    if (++size > maxsize) {\n      prev = curr;\n      curr = {};\n      size = 1;\n    }\n\n    return curr[key] = value;\n  };\n\n  clear();\n  return {\n    clear,\n    has: key => has(curr, key) || has(prev, key),\n    get: key => has(curr, key) ? curr[key] : has(prev, key) ? update(key, prev[key]) : undefined,\n    set: (key, value) => has(curr, key) ? curr[key] = value : update(key, value)\n  };\n}\n\nfunction merge (compare, array0, array1, output) {\n  const n0 = array0.length,\n        n1 = array1.length;\n  if (!n1) return array0;\n  if (!n0) return array1;\n  const merged = output || new array0.constructor(n0 + n1);\n  let i0 = 0,\n      i1 = 0,\n      i = 0;\n\n  for (; i0 < n0 && i1 < n1; ++i) {\n    merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n  }\n\n  for (; i0 < n0; ++i0, ++i) {\n    merged[i] = array0[i0];\n  }\n\n  for (; i1 < n1; ++i1, ++i) {\n    merged[i] = array1[i1];\n  }\n\n  return merged;\n}\n\nfunction repeat (str, reps) {\n  let s = '';\n\n  while (--reps >= 0) s += str;\n\n  return s;\n}\n\nfunction pad (str, length, padchar, align) {\n  const c = padchar || ' ',\n        s = str + '',\n        n = length - s.length;\n  return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\n\nfunction span (array) {\n  return array && peek(array) - array[0] || 0;\n}\n\nfunction $(x) {\n  return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ? // Output valid JSON and JS source strings.\n  // See http://timelessrepo.com/json-isnt-a-javascript-subset\n  JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\n\nfunction toBoolean (_) {\n  return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n\nconst defaultParser = _ => isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n\nfunction toDate (_, parser) {\n  parser = parser || defaultParser;\n  return _ == null || _ === '' ? null : parser(_);\n}\n\nfunction toString (_) {\n  return _ == null || _ === '' ? null : _ + '';\n}\n\nfunction toSet (_) {\n  const s = {},\n        n = _.length;\n\n  for (let i = 0; i < n; ++i) s[_[i]] = true;\n\n  return s;\n}\n\nfunction truncate (str, length, align, ellipsis) {\n  const e = ellipsis != null ? ellipsis : '\\u2026',\n        s = str + '',\n        n = s.length,\n        l = Math.max(0, length - e.length);\n  return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\n\nfunction visitArray (array, filter, visitor) {\n  if (array) {\n    if (filter) {\n      const n = array.length;\n\n      for (let i = 0; i < n; ++i) {\n        const t = filter(array[i]);\n        if (t) visitor(t, i, array);\n      }\n    } else {\n      array.forEach(visitor);\n    }\n  }\n}\n\nexport { Debug, Error$1 as Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, has as hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, $ as stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog };\n","/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport{backend,util,tidy,onesLike,scalar,tensor1d,where,zerosLike,serialization,train,cast,dispose,memory,add,mul,div,keep,nextFrame,Tensor,Optimizer,concat,mean,io,transpose,expandDims,reverse,unstack,stack,zeros,sum,split,neg,variable,ones,eye,randomUniform,truncatedNormal,randomNormal,sub,sqrt,mulStrict,clipByValue,relu,linalg,leakyRelu,prelu,elu,conv1d,fused,conv3d,conv2dTranspose,separableConv2d,depthwiseConv2d,any,notEqual,logicalAnd,maximum,minimum,all,greaterEqual,batchNorm2d,batchNorm3d,batchNorm4d,moments,pad,maxPool,avgPool,maxPool3d,avgPool3d,squeeze,max,fill,abs,log,softplus,softmax,floor,oneHot,greater,equal,argMax,slice1d,slice2d,slice3d,slice4d,slice,concat1d,concat2d,concat3d,concat4d,tile,gather,dropout,min,selu,sigmoid,tanh,logSoftmax}from\"@tensorflow/tfjs-core\";var extendStatics=function(e,t){return(extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function __extends(e,t){function n(){this.constructor=e}extendStatics(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var _epsilon,__assign=function(){return(__assign=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function __awaiter(e,t,n,r){return new(n||(n=Promise))(function(i,a){function o(e){try{l(r.next(e))}catch(e){a(e)}}function s(e){try{l(r.throw(e))}catch(e){a(e)}}function l(e){e.done?i(e.value):new n(function(t){t(e.value)}).then(o,s)}l((r=r.apply(e,t||[])).next())})}function __generator(e,t){var n,r,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError(\"Generator is already executing.\");for(;o;)try{if(n=1,r&&(i=2&a[0]?r.return:a[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,a[1])).done)return i;switch(r=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,r=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=(i=o.trys).length>0&&i[i.length-1])&&(6===a[0]||2===a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){o.label=a[1];break}if(6===a[0]&&o.label<i[1]){o.label=i[1],i=a;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(a);break}i[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],r=0}finally{n=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}}function epsilon(){return null==_epsilon&&(_epsilon=backend().epsilon()),_epsilon}function imageDataFormat(){return\"channelsLast\"}var AttributeError=function(e){function t(n){var r=e.call(this,n)||this;return Object.setPrototypeOf(r,t.prototype),r}return __extends(t,e),t}(Error),RuntimeError=function(e){function t(n){var r=e.call(this,n)||this;return Object.setPrototypeOf(r,t.prototype),r}return __extends(t,e),t}(Error),ValueError=function(e){function t(n){var r=e.call(this,n)||this;return Object.setPrototypeOf(r,t.prototype),r}return __extends(t,e),t}(Error),NotImplementedError=function(e){function t(n){var r=e.call(this,n)||this;return Object.setPrototypeOf(r,t.prototype),r}return __extends(t,e),t}(Error),AssertionError=function(e){function t(n){var r=e.call(this,n)||this;return Object.setPrototypeOf(r,t.prototype),r}return __extends(t,e),t}(Error),IndexError=function(e){function t(n){var r=e.call(this,n)||this;return Object.setPrototypeOf(r,t.prototype),r}return __extends(t,e),t}(Error);function pyListRepeat(e,t){if(Array.isArray(e)){for(var n=[],r=0;r<t;r++)n=n.concat(e);return n}return(n=new Array(t)).fill(e),n}function assert(e,t){if(!e)throw new AssertionError(t)}function count(e,t){for(var n=0,r=0,i=e;r<i.length;r++){i[r]===t&&n++}return n}function singletonOrArray(e){return 1===e.length?e[0]:e}function toList(e){return Array.isArray(e)?e:[e]}function toSnakeCase(e){var t=e.replace(/(.)([A-Z][a-z0-9]+)/g,\"$1_$2\").replace(/([a-z])([A-Z])/g,\"$1_$2\").toLowerCase();return\"_\"!==t[0]?t:\"private\"+t}function toCamelCase(e){return e.length<=1?e:-1===e.indexOf(\"_\")?e:e.replace(/[_]+(\\w|$)/g,function(e,t){return t.toUpperCase()})}var _GLOBAL_CUSTOM_OBJECTS={};function serializeKerasObject(e){if(null===e||void 0===e)return null;var t={};return t.className=e.getClassName(),t.config=e.getConfig(),t}function convertNDArrayScalarsInConfig(e){if(null!=e&&\"object\"==typeof e)if(Array.isArray(e))e.forEach(function(e){return convertNDArrayScalarsInConfig(e)});else for(var t=0,n=Object.keys(e);t<n.length;t++){var r=n[t],i=e[r];null!=i&&\"object\"==typeof i&&(Array.isArray(i)||\"ndarray\"!==i.type||\"number\"!=typeof i.value?convertNDArrayScalarsInConfig(i):e[r]=i.value)}}function deserializeKerasObject(e,t,n,r,i){var a,o,s;if(void 0===t&&(t={}),void 0===n&&(n={}),void 0===r&&(r=\"object\"),void 0===i&&(i=!1),\"string\"==typeof e){var l=e,u=void 0;if(l in n)u=n[l];else if(l in _GLOBAL_CUSTOM_OBJECTS)u=_GLOBAL_CUSTOM_OBJECTS[l];else if(null==(u=t[l]))throw new ValueError(\"Unknown \"+r+\": \"+e+\". This may be due to one of the following reasons:\\n1. The \"+r+\" is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code.\\n2. The custom \"+r+\" is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().\");return u}var c=e;if(null==c.className||null==c.config)throw new ValueError(r+\": Improper config format: \"+JSON.stringify(c)+\".\\n'className' and 'config' must set.\");var p=c.className,h=void 0,d=void 0;if(p in n?(h=(a=n[p])[0],d=a[1]):p in _GLOBAL_CUSTOM_OBJECTS?(h=(o=_GLOBAL_CUSTOM_OBJECTS.className)[0],d=o[1]):p in t&&(h=(s=t[p])[0],d=s[1]),null==h)throw new ValueError(\"Unknown \"+r+\": \"+p+\". This may be due to one of the following reasons:\\n1. The \"+r+\" is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code.\\n2. The custom \"+r+\" is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().\");if(null!=d){for(var f={},g=0,m=Object.keys(_GLOBAL_CUSTOM_OBJECTS);g<m.length;g++){f[S=m[g]]=_GLOBAL_CUSTOM_OBJECTS[S]}for(var y=0,v=Object.keys(n);y<v.length;y++){f[S=v[y]]=n[S]}c.config.customObjects=f;for(var b=__assign({},_GLOBAL_CUSTOM_OBJECTS),w=0,z=Object.keys(n);w<z.length;w++){var S=z[w];_GLOBAL_CUSTOM_OBJECTS[S]=n[S]}convertNDArrayScalarsInConfig(c.config);var A=d(h,c.config,n,i);return _GLOBAL_CUSTOM_OBJECTS=__assign({},b),A}b=__assign({},_GLOBAL_CUSTOM_OBJECTS);for(var _=0,I=Object.keys(n);_<I.length;_++){S=I[_];_GLOBAL_CUSTOM_OBJECTS[S]=n[S]}A=new h(c.config);return _GLOBAL_CUSTOM_OBJECTS=__assign({},b),A}function numberCompare(e,t){return e<t?-1:e>t?1:0}function reverseNumberCompare(e,t){return-1*numberCompare(e,t)}function unique(e){if(null==e)return e;for(var t=[],n=0,r=e;n<r.length;n++){var i=r[n];-1===t.indexOf(i)&&t.push(i)}return t}function isObjectEmpty(e){if(null==e)throw new ValueError(\"Invalid value in obj: \"+JSON.stringify(e));for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}function checkStringTypeUnionValue(e,t,n){if(null!=n&&e.indexOf(n)<0)throw new ValueError(n+\" is not a valid \"+t+\".  Valid values are \"+e+\" or null/undefined.\")}function checkArrayTypeAndLength(e,t,n,r){return void 0===n&&(n=0),void 0===r&&(r=1/0),assert(n>=0),assert(r>=n),Array.isArray(e)&&e.length>=n&&e.length<=r&&e.every(function(e){return typeof e===t})}function assertPositiveInteger(e,t){Array.isArray(e)?(util.assert(e.length>0,function(){return t+\" is unexpectedly an empty array.\"}),e.forEach(function(e,n){return assertPositiveInteger(e,\"element \"+(n+1)+\" of \"+t)})):util.assert(Number.isInteger(e)&&e>0,function(){return\"Expected \"+t+\" to be a positive integer, but got \"+formatAsFriendlyString(e)+\".\"})}function formatAsFriendlyString(e){return null===e?\"null\":Array.isArray(e)?\"[\"+e.map(function(e){return formatAsFriendlyString(e)}).join(\",\")+\"]\":\"string\"==typeof e?'\"'+e+'\"':\"\"+e}function debounce(e,t){var n,r=util.now();return function(){for(var i=[],a=0;a<arguments.length;a++)i[a]=arguments[a];var o=util.now();return o-r<t?n:(r=o,n=e.apply(void 0,i))}}function mapActivationToFusedKernel(e){return\"relu\"===e?\"relu\":\"linear\"===e?\"linear\":\"elu\"===e?\"elu\":null}function calcL2Norms(e,t){return tidy(function(){return sqrt(sum(mulStrict(e,e),t,!0))})}var Constraint=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.getConfig=function(){return{}},t}(serialization.Serializable),MaxNorm=function(e){function t(t){var n=e.call(this)||this;return n.defaultMaxValue=2,n.defaultAxis=0,n.maxValue=null!=t.maxValue?t.maxValue:n.defaultMaxValue,n.axis=null!=t.axis?t.axis:n.defaultAxis,n}return __extends(t,e),t.prototype.apply=function(e){var t=this;return tidy(function(){var n=calcL2Norms(e,t.axis),r=clipByValue(n,0,t.maxValue);return mul(e,div(r,add(epsilon(),n)))})},t.prototype.getConfig=function(){return{maxValue:this.maxValue,axis:this.axis}},t.className=\"MaxNorm\",t}(Constraint);serialization.registerClass(MaxNorm);var UnitNorm=function(e){function t(t){var n=e.call(this)||this;return n.defaultAxis=0,n.axis=null!=t.axis?t.axis:n.defaultAxis,n}return __extends(t,e),t.prototype.apply=function(e){var t=this;return tidy(function(){return div(e,add(epsilon(),calcL2Norms(e,t.axis)))})},t.prototype.getConfig=function(){return{axis:this.axis}},t.className=\"UnitNorm\",t}(Constraint);serialization.registerClass(UnitNorm);var NonNeg=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e){return relu(e)},t.className=\"NonNeg\",t}(Constraint);serialization.registerClass(NonNeg);var MinMaxNorm=function(e){function t(t){var n=e.call(this)||this;return n.defaultMinValue=0,n.defaultMaxValue=1,n.defaultRate=1,n.defaultAxis=0,n.minValue=null!=t.minValue?t.minValue:n.defaultMinValue,n.maxValue=null!=t.maxValue?t.maxValue:n.defaultMaxValue,n.rate=null!=t.rate?t.rate:n.defaultRate,n.axis=null!=t.axis?t.axis:n.defaultAxis,n}return __extends(t,e),t.prototype.apply=function(e){var t=this;return tidy(function(){var n=calcL2Norms(e,t.axis),r=add(mul(t.rate,clipByValue(n,t.minValue,t.maxValue)),mul(1-t.rate,n));return mul(e,div(r,add(epsilon(),n)))})},t.prototype.getConfig=function(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}},t.className=\"MinMaxNorm\",t}(Constraint);serialization.registerClass(MinMaxNorm);var CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP={maxNorm:\"MaxNorm\",minMaxNorm:\"MinMaxNorm\",nonNeg:\"NonNeg\",unitNorm:\"UnitNorm\"};function serializeConstraint(e){return serializeKerasObject(e)}function deserializeConstraint(e,t){return void 0===t&&(t={}),deserializeKerasObject(e,serialization.SerializationMap.getMap().classNameMap,t,\"constraint\")}function getConstraint(e){return null==e?null:\"string\"==typeof e?deserializeConstraint({className:e in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP?CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[e]:e,config:{}}):e instanceof Constraint?e:deserializeConstraint(e)}function maxNorm(e){return new MaxNorm(e)}function unitNorm(e){return new UnitNorm(e)}function nonNeg(){return new NonNeg}function minMaxNorm(e){return new MinMaxNorm(e)}var exports_constraints=Object.freeze({maxNorm:maxNorm,unitNorm:unitNorm,nonNeg:nonNeg,minMaxNorm:minMaxNorm}),VALID_DATA_FORMAT_VALUES=[\"channelsFirst\",\"channelsLast\"],VALID_PADDING_MODE_VALUES=[\"valid\",\"same\",\"causal\"],VALID_POOL_MODE_VALUES=[\"max\",\"avg\"],VALID_BIDIRECTIONAL_MERGE_MODES=[\"sum\",\"mul\",\"concat\",\"ave\"],nameMap=new Map;function checkDataFormat(e){checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES,\"DataFormat\",e)}function checkPaddingMode(e){checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES,\"PaddingMode\",e)}function checkPoolMode(e){checkStringTypeUnionValue(VALID_POOL_MODE_VALUES,\"PoolMode\",e)}var _nameScopeStack=[],_nameScopeDivider=\"/\";function nameScope(e,t){_nameScopeStack.push(e);try{var n=t();return _nameScopeStack.pop(),n}catch(e){throw _nameScopeStack.pop(),e}}function currentNameScopePrefix(){return 0===_nameScopeStack.length?\"\":_nameScopeStack.join(_nameScopeDivider)+_nameScopeDivider}function getScopedTensorName(e){if(!isValidTensorName(e))throw new Error(\"Not a valid tensor name: '\"+e+\"'\");return currentNameScopePrefix()+e}function getUniqueTensorName(e){if(!isValidTensorName(e))throw new Error(\"Not a valid tensor name: '\"+e+\"'\");nameMap.has(e)||nameMap.set(e,0);var t=nameMap.get(e);if(nameMap.set(e,nameMap.get(e)+1),t>0){var n=e+\"_\"+t;return nameMap.set(n,1),n}return e}var tensorNameRegex=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\\._\\/]*$/);function isValidTensorName(e){return!!e.match(tensorNameRegex)}function isInteger(e){return e===parseInt(e.toString(),10)}function arrayProd(e,t,n){null==t&&(t=0),null==n&&(n=e.length);for(var r=1,i=t;i<n;++i)r*=e[i];return r}function toArray1D(e){return e=Array.isArray(e)?new Float32Array(e):e,tensor1d(e)}function min$1(e){return min(toArray1D(e)).dataSync()[0]}function max$1(e){return max(toArray1D(e)).dataSync()[0]}function range(e,t){if(t<e)throw new ValueError(\"end (\"+t+\") < begin (\"+e+\") is forbidden.\");for(var n=[],r=e;r<t;++r)n.push(r);return n}function cast$1(e,t){return e.asType(t)}function expandDims$1(e,t){void 0===t&&(t=-1);var n=e.shape.slice();return t<0&&(t=n.length+t+1),n.splice(t,0,1),e.reshape(n)}function repeat(e,t){return tidy(function(){if(2!==e.shape.length)throw new ValueError(\"repeat() expects a rank-2 tensor, but received a rank-\"+e.shape.length+\" tensor.\");return tile$1(expandDims$1(e,1),[1,t,1])})}function flatten(e){var t=[arrayProd(e.shape)];return e.reshape(t)}function batchFlatten(e){if(e.rank<=1)throw new ValueError(\"batchFlatten requires a minimum rank of 2. Got rank: \"+e.rank+\".\");var t=[e.shape[0],arrayProd(e.shape,1)];return e.reshape(t)}function sliceAlongFirstAxis(e,t,n){return tidy(function(){switch(e.rank){case 1:return slice1d(e,t,n);case 2:return slice2d(e,[t,0],[n,e.shape[1]]);case 3:return slice3d(e,[t,0,0],[n,e.shape[1],e.shape[2]]);case 4:return slice4d(e,[t,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3]]);case 5:return slice(e,[t,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4]]);case 6:return slice(e,[t,0,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4],e.shape[5]]);default:throw new ValueError(\"sliceAlongFirstAxis() received an unsupported tensor rank: \"+e.rank)}})}function sliceAlongLastAxis(e,t,n){return tidy(function(){switch(e.rank){case 1:return slice1d(e,t,n);case 2:return slice2d(e,[0,t],[e.shape[0],n]);case 3:return slice3d(e,[0,0,t],[e.shape[0],e.shape[1],n]);case 4:return slice4d(e,[0,0,0,t],[e.shape[0],e.shape[1],e.shape[2],n]);default:throw new ValueError(\"sliceAlongLastAxis() received an unsupported tensor rank: \"+e.rank)}})}function sliceAlongAxis(e,t,n,r){return tidy(function(){switch(e.rank){case 1:return slice1d(e,t,n);case 2:switch(r){case 1:return sliceAlongFirstAxis(e,t,n);case 2:return sliceAlongLastAxis(e,t,n);default:throw new ValueError(\"The axis is not within the rank of the tensor \"+r)}case 3:switch(r){case 1:return sliceAlongFirstAxis(e,t,n);case 2:return slice3d(e,[0,t,0],[e.shape[0],n,e.shape[2]]);case 3:return sliceAlongLastAxis(e,t,n);default:throw new ValueError(\"The axis is not within the rank of the tensor \"+r)}case 4:switch(r){case 1:return sliceAlongFirstAxis(e,t,n);case 2:return slice4d(e,[0,t,0,0],[e.shape[0],n,e.shape[2],e.shape[3]]);case 3:return slice4d(e,[0,0,t,0],[e.shape[0],e.shape[1],n,e.shape[3]]);case 4:return sliceAlongLastAxis(e,t,n);default:throw new ValueError(\"The axis is not within the rank of the tensor \"+r)}default:throw new ValueError(\"sliceAlongLastAxis() received an unsupported tensor rank: \"+e.rank)}})}function concatenate(e,t){var n;return void 0===t&&(t=-1),t<0&&(t=0!==(n=e[0].rank)?n:0),t===e[0].rank&&(t=-1),concat(e,t)}function concatAlongFirstAxis(e,t){switch(e.rank){case 1:return concat1d([e,t]);case 2:return concat2d([e,t],0);case 3:return concat3d([e,t],0);case 4:return concat4d([e,t],0);default:throw new ValueError(\"concatAlongFirstAxis() received an unsupported tensor rank: \"+e.rank)}}function tile$1(e,t){if(Array.isArray(t)||(t=[t]),e.rank!==t.length)throw new ValueError(\"The length of input n (\"+t.length+\") does not match the number of dimensions in input x (\"+e.rank+\")\");return tile(e,t)}function randomNormal$1(e,t,n,r,i){return void 0===t&&(t=0),void 0===n&&(n=1),randomNormal(e,t,n,r,i)}function dot(e,t,n,r){if(e.rank<2||t.rank<2)throw new NotImplementedError(\"dot requires both inputs to be rank >= 2 but got x shape = \"+e.shape+\" and y shape = \"+t.shape);if(t.rank>=3&&e.shape.slice(-1)[0]!==(c=t.shape.slice(-2)[0]))throw new NotImplementedError(\"If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = \"+e.shape+\" and  y shape = \"+t.shape);if(2===e.rank&&2===t.rank){var i=!1,a=!1;return fused.matMul({a:e,b:t,transposeA:i,transposeB:a,bias:r?reshapeBias(e.rank,r,imageDataFormat()):null,activation:n})}var o=e.shape.slice(),s=o.pop();e=e.reshape([-1,s]);var l=t.shape.slice(),u=l.pop(),c=l.pop(),p=l.concat([u]),h=Array.from({length:t.rank},function(e,n){return 0===n?t.rank-2:n<=t.rank-2?n-1:n});t=t.transpose(h).reshape([c,-1]);var d=o.concat(p);i=!1,a=!1;return fused.matMul({a:e,b:t,transposeA:i,transposeB:a,bias:r?reshapeBias(e.rank,r,imageDataFormat()):null,activation:n}).reshape(d)}function gather$1(e,t,n){return tidy(function(){return t=Array.isArray(t)?tensor1d(t,\"int32\"):t.toInt(),gather(e,t,n)})}function square(e){return mulStrict(e,e)}function reshapeBias(e,t,n){var r=t.shape;if(1!==t.rank&&t.rank!==e)throw new ValueError(\"Unexpected bias dimensions: \"+t.rank+\"; expected it to be 1 or \"+e);if(5===e){if(\"channelsFirst\"===n)return 1===r.length?t.reshape([1,r[0],1,1,1]):t.reshape([1,r[3],r[0],r[1],r[2]]);if(\"channelsLast\"===n)return 1===r.length?t.reshape([1,1,1,1,r[0]]):t.reshape([1].concat(r))}else if(4===e){if(\"channelsFirst\"===n)return 1===r.length?t.reshape([1,r[0],1,1]):t.reshape([1,r[2],r[0],r[1]]);if(\"channelsLast\"===n)return 1===r.length?t.reshape([1,1,1,r[0]]):t.reshape([1].concat(r))}else if(3===e){if(\"channelsFirst\"===n)return 1===r.length?t.reshape([1,r[0],1]):t.reshape([1,r[1],r[0]]);if(\"channelsLast\"===n)return 1===r.length?t.reshape([1,1,r[0]]):t.reshape([1].concat(r))}else if(e<3)return t;throw new ValueError(\"Unsupported input rank by biasAdd: \"+t.rank)}function biasAdd(e,t,n){return tidy(function(){return null==n&&(n=imageDataFormat()),checkDataFormat(n),e.add(reshapeBias(e.rank,t,n))})}function elu$1(e,t){if(void 0===t&&(t=1),1!==t)throw new NotImplementedError(\"Support for alpha values other than 1 (\"+t+\") is not implemented yet.\");return elu(e)}function softsign(e){return tidy(function(){return div(e,abs(e).add(1))})}function dropout$1(e,t,n,r){return tidy(function(){return dropout(e,t,n,r)})}function hardSigmoid(e){return tidy(function(){var t=add(.5,mul(.2,e));return clipByValue(t,0,1)})}function inTrainPhase(e,t,n){return void 0===n&&(n=!1),n?e():t()}var VALID_FAN_MODE_VALUES=[\"fanIn\",\"fanOut\",\"fanAvg\"],VALID_DISTRIBUTION_VALUES=[\"normal\",\"uniform\",\"truncatedNormal\"];function checkFanMode(e){checkStringTypeUnionValue(VALID_FAN_MODE_VALUES,\"FanMode\",e)}function checkDistribution(e){checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES,\"Distribution\",e)}var Initializer=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.fromConfigUsesCustomObjects=function(){return!1},t.prototype.getConfig=function(){return{}},t}(serialization.Serializable),Zeros=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e,t){return zeros(e,t)},t.className=\"Zeros\",t}(Initializer);serialization.registerClass(Zeros);var Ones=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e,t){return ones(e,t)},t.className=\"Ones\",t}(Initializer);serialization.registerClass(Ones);var Constant=function(e){function t(t){var n=e.call(this)||this;if(\"object\"!=typeof t)throw new ValueError(\"Expected argument of type ConstantConfig but got \"+t);if(void 0===t.value)throw new ValueError(\"config must have value set but got \"+t);return n.value=t.value,n}return __extends(t,e),t.prototype.apply=function(e,t){var n=this;return tidy(function(){return mul(scalar(n.value),ones(e,t))})},t.prototype.getConfig=function(){return{value:this.value}},t.className=\"Constant\",t}(Initializer);serialization.registerClass(Constant);var RandomUniform=function(e){function t(t){var n=e.call(this)||this;return n.DEFAULT_MINVAL=-.05,n.DEFAULT_MAXVAL=.05,n.minval=t.minval||n.DEFAULT_MINVAL,n.maxval=t.maxval||n.DEFAULT_MAXVAL,n.seed=t.seed,n}return __extends(t,e),t.prototype.apply=function(e,t){return randomUniform(e,this.minval,this.maxval,t)},t.prototype.getConfig=function(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}},t.className=\"RandomUniform\",t}(Initializer);serialization.registerClass(RandomUniform);var RandomNormal=function(e){function t(t){var n=e.call(this)||this;return n.DEFAULT_MEAN=0,n.DEFAULT_STDDEV=.05,n.mean=t.mean||n.DEFAULT_MEAN,n.stddev=t.stddev||n.DEFAULT_STDDEV,n.seed=t.seed,n}return __extends(t,e),t.prototype.apply=function(e,t){if(\"float32\"!==(t=t||\"float32\")&&\"int32\"!==t)throw new NotImplementedError(\"randomNormal does not support dType \"+t+\".\");return randomNormal$1(e,this.mean,this.stddev,t,this.seed)},t.prototype.getConfig=function(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}},t.className=\"RandomNormal\",t}(Initializer);serialization.registerClass(RandomNormal);var TruncatedNormal=function(e){function t(t){var n=e.call(this)||this;return n.DEFAULT_MEAN=0,n.DEFAULT_STDDEV=.05,n.mean=t.mean||n.DEFAULT_MEAN,n.stddev=t.stddev||n.DEFAULT_STDDEV,n.seed=t.seed,n}return __extends(t,e),t.prototype.apply=function(e,t){if(\"float32\"!==(t=t||\"float32\")&&\"int32\"!==t)throw new NotImplementedError(\"truncatedNormal does not support dType \"+t+\".\");return truncatedNormal(e,this.mean,this.stddev,t,this.seed)},t.prototype.getConfig=function(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}},t.className=\"TruncatedNormal\",t}(Initializer);serialization.registerClass(TruncatedNormal);var Identity=function(e){function t(t){var n=e.call(this)||this;return n.gain=null!=t.gain?t.gain:1,n}return __extends(t,e),t.prototype.apply=function(e,t){var n=this;return tidy(function(){if(2!==e.length||e[0]!==e[1])throw new ValueError(\"Identity matrix initializer can only be used for 2D square matrices.\");return mul(n.gain,eye(e[0]))})},t.prototype.getConfig=function(){return{gain:this.gain}},t.className=\"Identity\",t}(Initializer);function computeFans(e,t){var n,r;if(void 0===t&&(t=\"channelsLast\"),checkDataFormat(t),2===e.length)n=e[0],r=e[1];else if(-1!==[3,4,5].indexOf(e.length)){if(\"channelsFirst\"===t){var i=arrayProd(e,2);n=e[1]*i,r=e[0]*i}else if(\"channelsLast\"===t){i=arrayProd(e,0,e.length-2);n=e[e.length-2]*i,r=e[e.length-1]*i}}else{var a=arrayProd(e);n=Math.sqrt(a),r=Math.sqrt(a)}return[n,r]}serialization.registerClass(Identity);var VarianceScaling=function(e){function t(t){var n=e.call(this)||this;if(t.scale<0)throw new ValueError(\"scale must be a positive float. Got: \"+t.scale);return n.scale=null==t.scale?1:t.scale,n.mode=null==t.mode?\"fanIn\":t.mode,checkFanMode(n.mode),n.distribution=null==t.distribution?\"normal\":t.distribution,checkDistribution(n.distribution),n.seed=t.seed,n}return __extends(t,e),t.prototype.apply=function(e,t){var n=computeFans(e),r=n[0],i=n[1],a=this.scale;if(\"fanIn\"===this.mode?a/=Math.max(1,r):\"fanOut\"===this.mode?a/=Math.max(1,i):a/=Math.max(1,(r+i)/2),\"normal\"===this.distribution){var o=Math.sqrt(a);if(\"float32\"!==(t=t||\"float32\")&&\"int32\"!==t)throw new NotImplementedError(this.getClassName()+\" does not support dType \"+t+\".\");return truncatedNormal(e,0,o,t,this.seed)}var s=Math.sqrt(3*a);return randomUniform(e,-s,s,t)},t.prototype.getConfig=function(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}},t.className=\"VarianceScaling\",t}(Initializer);serialization.registerClass(VarianceScaling);var GlorotUniform=function(e){function t(t){return e.call(this,{scale:1,mode:\"fanAvg\",distribution:\"uniform\",seed:null==t?null:t.seed})||this}return __extends(t,e),t.prototype.getClassName=function(){return VarianceScaling.className},t.className=\"GlorotUniform\",t}(VarianceScaling);serialization.registerClass(GlorotUniform);var GlorotNormal=function(e){function t(t){return e.call(this,{scale:1,mode:\"fanAvg\",distribution:\"normal\",seed:null==t?null:t.seed})||this}return __extends(t,e),t.prototype.getClassName=function(){return VarianceScaling.className},t.className=\"GlorotNormal\",t}(VarianceScaling);serialization.registerClass(GlorotNormal);var HeNormal=function(e){function t(t){return e.call(this,{scale:2,mode:\"fanIn\",distribution:\"normal\",seed:null==t?null:t.seed})||this}return __extends(t,e),t.prototype.getClassName=function(){return VarianceScaling.className},t.className=\"HeNormal\",t}(VarianceScaling);serialization.registerClass(HeNormal);var HeUniform=function(e){function t(t){return e.call(this,{scale:2,mode:\"fanIn\",distribution:\"uniform\",seed:null==t?null:t.seed})||this}return __extends(t,e),t.prototype.getClassName=function(){return VarianceScaling.className},t.className=\"HeUniform\",t}(VarianceScaling);serialization.registerClass(HeUniform);var LeCunNormal=function(e){function t(t){return e.call(this,{scale:1,mode:\"fanIn\",distribution:\"normal\",seed:null==t?null:t.seed})||this}return __extends(t,e),t.prototype.getClassName=function(){return VarianceScaling.className},t.className=\"LeCunNormal\",t}(VarianceScaling);serialization.registerClass(LeCunNormal);var LeCunUniform=function(e){function t(t){return e.call(this,{scale:1,mode:\"fanIn\",distribution:\"uniform\",seed:null==t?null:t.seed})||this}return __extends(t,e),t.prototype.getClassName=function(){return VarianceScaling.className},t.className=\"LeCunNormal\",t}(VarianceScaling);serialization.registerClass(LeCunUniform);var Orthogonal=function(e){function t(t){var n=e.call(this)||this;if(n.DEFAULT_GAIN=1,n.gain=null==t.gain?n.DEFAULT_GAIN:t.gain,n.seed=t.seed,null!=n.seed)throw new NotImplementedError(\"Random seed is not implemented for Orthogonal Initializer yet.\");return n}return __extends(t,e),t.prototype.apply=function(e,t){var n=this;return tidy(function(){if(2!==e.length)throw new NotImplementedError(\"The Orthogonal Initializer does not support non-2D shapes yet.\");e[0]*e[1]>2e3&&console.warn(\"Orthogonal initializer is being called on a matrix with more than 2000 (\"+e[0]*e[1]+\") elements: Slowness may result.\");var t=randomNormal$1(e[0]>e[1]?[e[1],e[0]]:e,0,1,\"float32\"),r=linalg.gramSchmidt(t);return e[0]>e[1]&&(r=r.transpose()),mul(n.gain,r)})},t.prototype.getConfig=function(){return{gain:this.gain,seed:this.seed}},t.className=\"Orthogonal\",t}(Initializer);serialization.registerClass(Orthogonal);var INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={constant:\"Constant\",glorotNormal:\"GlorotNormal\",glorotUniform:\"GlorotUniform\",heNormal:\"HeNormal\",heUniform:\"HeUniform\",identity:\"Identity\",leCunNormal:\"LeCunNormal\",leCunUniform:\"LeCunUniform\",ones:\"Ones\",orthogonal:\"Orthogonal\",randomNormal:\"RandomNormal\",randomUniform:\"RandomUniform\",truncatedNormal:\"TruncatedNormal\",varianceScaling:\"VarianceScaling\",zeros:\"Zeros\"};function deserializeInitializer(e,t){return void 0===t&&(t={}),deserializeKerasObject(e,serialization.SerializationMap.getMap().classNameMap,t,\"initializer\")}function serializeInitializer(e){return serializeKerasObject(e)}function getInitializer(e){if(\"string\"==typeof e){var t=e in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[e]:e;if(\"GlorotNormal\"===t)return new GlorotNormal;if(\"GlorotUniform\"===t)return new GlorotUniform;if(\"HeNormal\"===t)return new HeNormal;if(\"HeUniform\"===t)return new HeUniform;if(\"LeCunNormal\"===t)return new LeCunNormal;if(\"LeCunUniform\"===t)return new LeCunUniform;var n={};return n.className=t,n.config={},deserializeInitializer(n)}return e instanceof Initializer?e:deserializeInitializer(e)}function zeros$1(){return new Zeros}function ones$1(){return new Ones}function constant(e){return new Constant(e)}function randomUniform$1(e){return new RandomUniform(e)}function randomNormal$2(e){return new RandomNormal(e)}function truncatedNormal$1(e){return new TruncatedNormal(e)}function identity(e){return new Identity(e)}function varianceScaling(e){return new VarianceScaling(e)}function glorotUniform(e){return new GlorotUniform(e)}function glorotNormal(e){return new GlorotNormal(e)}function heNormal(e){return new HeNormal(e)}function heUniform(e){return new HeUniform(e)}function leCunNormal(e){return new LeCunNormal(e)}function leCunUniform(e){return new LeCunUniform(e)}function orthogonal(e){return new Orthogonal(e)}var exports_initializers=Object.freeze({zeros:zeros$1,ones:ones$1,constant:constant,randomUniform:randomUniform$1,randomNormal:randomNormal$2,truncatedNormal:truncatedNormal$1,identity:identity,varianceScaling:varianceScaling,glorotUniform:glorotUniform,glorotNormal:glorotNormal,heNormal:heNormal,heUniform:heUniform,leCunNormal:leCunNormal,leCunUniform:leCunUniform,orthogonal:orthogonal}),_nextUniqueTensorId=0;function getNextUniqueTensorId(){return _nextUniqueTensorId++}var _uidPrefixes={};function getUid(e){return void 0===e&&(e=\"\"),e in _uidPrefixes||(_uidPrefixes[e]=0),_uidPrefixes[e]+=1,e+_uidPrefixes[e].toString()}function isArrayOfShapes(e){return Array.isArray(e)&&Array.isArray(e[0])}function normalizeShapeList(e){return 0===e.length?[]:Array.isArray(e[0])?e:[e]}function getExactlyOneTensor(e){var t;if(Array.isArray(e)){if(1!==e.length)throw new ValueError(\"Expected Tensor length to be 1; got \"+e.length);t=e[0]}else t=e;return t}function getExactlyOneShape(e){if(Array.isArray(e)&&Array.isArray(e[0])){if(1===e.length)return(e=e)[0];throw new ValueError(\"Expected exactly 1 Shape; got \"+e.length)}return e}function countParamsInWeights(e){for(var t=0,n=0,r=e;n<r.length;n++){var i=r[n];0===i.shape.length?t+=1:t+=i.shape.reduce(function(e,t){return e*t})}return t}var DEFAULT_VARIABLE_NAME_PREFIX=\"Variable\",LayerVariable=function(){function e(e,t,n,r,i){void 0===t&&(t=\"float32\"),void 0===n&&(n=DEFAULT_VARIABLE_NAME_PREFIX),void 0===r&&(r=!0),void 0===i&&(i=null),this.dtype=null==t?\"float32\":t,this.shape=e.shape,this.id=getNextUniqueTensorId(),n=null==n?DEFAULT_VARIABLE_NAME_PREFIX:n,this.originalName=getScopedTensorName(n),this.name=getUniqueTensorName(this.originalName),this.trainable_=r,this.constraint=i,this.val=variable(e,this.trainable_,this.name,this.dtype)}return e.prototype.read=function(){return this.assertNotDisposed(),this.val},e.prototype.write=function(e){return this.assertNotDisposed(),checkShapesMatch(this.val,e),this.val.id!==e.id&&(this.val.assign(e),null!=this.constraint&&this.val.assign(this.constraint.apply(this.val))),this},e.prototype.dispose=function(){this.assertNotDisposed(),this.val.dispose()},e.prototype.assertNotDisposed=function(){if(this.val.isDisposed)throw new Error(\"LayersVariable \"+this.name+\" is already disposed.\")},Object.defineProperty(e.prototype,\"trainable\",{get:function(){return this.trainable_},set:function(e){this.trainable_=e,this.val.trainable=e},enumerable:!0,configurable:!0}),e}();function checkShapesMatch(e,t){if(e.shape.toString()!==t.shape.toString())throw new Error(\"Shape mismatch: \"+JSON.stringify(e.shape)+\" vs. \"+JSON.stringify(t.shape))}function batchGetValue(e){return e.map(function(e){return e.read()})}function batchSetValue(e){e.forEach(function(e){e[0].write(e[1])})}var InputSpec=function(){return function(e){this.dtype=e.dtype,this.shape=e.shape,null!=e.shape?this.ndim=e.shape.length:this.ndim=e.ndim,this.maxNDim=e.maxNDim,this.minNDim=e.minNDim,this.axes=e.axes||{}}}(),SymbolicTensor=function(){return function(e,t,n,r,i,a,o){this.dtype=e,this.shape=t,this.sourceLayer=n,this.inputs=r,this.callArgs=i,this.outputTensorIndex=o,this.id=getNextUniqueTensorId(),null!=a&&(this.originalName=getScopedTensorName(a),this.name=getUniqueTensorName(this.originalName)),this.rank=t.length}}(),_nextNodeID=0,Node=function(){function e(e,t){this.callArgs=t,this.id=_nextNodeID++,this.outboundLayer=e.outboundLayer,this.inboundLayers=e.inboundLayers,this.nodeIndices=e.nodeIndices,this.tensorIndices=e.tensorIndices,this.inputTensors=e.inputTensors,this.outputTensors=e.outputTensors,this.inputMasks=e.inputMasks,this.outputMasks=e.outputMasks,this.inputShapes=e.inputShapes,this.outputShapes=e.outputShapes;for(var n=0,r=e.inboundLayers;n<r.length;n++){var i=r[n];null!=i&&i.outboundNodes.push(this)}e.outboundLayer.inboundNodes.push(this)}return e.prototype.getConfig=function(){for(var e=[],t=0,n=this.inboundLayers;t<n.length;t++){var r=n[t];null!=r?e.push(r.name):e.push(null)}return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:e,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}},e}(),_nextLayerID=0,Layer=function(e){function t(t){var n=e.call(this)||this;n._callHook=null,n._addedWeightNames=[],n._stateful=!1,n.id=_nextLayerID++,n.activityRegularizer=null,n.inputSpec=null,n.supportsMasking=!1,n._trainableWeights=[],n._nonTrainableWeights=[],n._losses=[],n._updates=[],n._built=!1,n.inboundNodes=[],n.outboundNodes=[];var r=t.name;if(!r){var i=n.getClassName();r=toSnakeCase(i)+\"_\"+getUid(i)}if(n.name=r,n.trainable_=null==t.trainable||t.trainable,null!=t.inputShape||null!=t.batchInputShape){var a=void 0;if(null!=t.batchInputShape)a=t.batchInputShape;else if(null!=t.inputShape){var o=null;null!=t.batchSize&&(o=t.batchSize),a=[o].concat(t.inputShape)}n.batchInputShape=a;var s=t.dtype;null==s&&(s=t.inputDType),null==s&&(s=\"float32\"),n.dtype=s}return null!=t.weights?n.initialWeights=t.weights:n.initialWeights=null,n._refCount=null,n.fastWeightInitDuringBuild=!1,n}return __extends(t,e),t.nodeKey=function(e,t){return e.name+\"_ib-\"+t.toString()},t.prototype.getNodeAtIndex=function(e,t){if(0===this.inboundNodes.length)throw new RuntimeError(\"The layer has never been called and thus has no defined \"+t+\".\");if(this.inboundNodes.length<=e)throw new ValueError(\"Asked to get \"+t+\" at node \"+e+\", but the layer has only \"+this.inboundNodes.length+\" inbound nodes.\");return this.inboundNodes[e]},t.prototype.getInputAt=function(e){return singletonOrArray(this.getNodeAtIndex(e,\"input\").inputTensors)},t.prototype.getOutputAt=function(e){return singletonOrArray(this.getNodeAtIndex(e,\"output\").outputTensors)},Object.defineProperty(t.prototype,\"input\",{get:function(){if(this.inboundNodes.length>1)throw new AttributeError(\"Layer \"+this.name+' has multiple inbound nodes, hence the notion of \"layer input\" is ill-defined. Use `getInputAt(nodeIndex)` instead.');if(0===this.inboundNodes.length)throw new AttributeError(\"Layer \"+this.name+\" is not connected, no input to return.\");return singletonOrArray(this.getNodeAtIndex(0,\"input\").inputTensors)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"output\",{get:function(){if(0===this.inboundNodes.length)throw new AttributeError(\"Layer \"+this.name+\" has no inbound nodes.\");if(this.inboundNodes.length>1)throw new AttributeError(\"Layer \"+this.name+' has multiple inbound nodes, hence the notion of \"layer output\" is ill-defined. Use `getOutputAt(nodeIndex)` instead.');return singletonOrArray(this.getNodeAtIndex(0,\"output\").outputTensors)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"losses\",{get:function(){return this._losses},enumerable:!0,configurable:!0}),t.prototype.calculateLosses=function(){return this.losses.map(function(e){return e()})},Object.defineProperty(t.prototype,\"updates\",{get:function(){return this._updates},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"built\",{get:function(){return this._built},set:function(e){this._built=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"trainable\",{get:function(){return this.trainable_},set:function(e){this._trainableWeights.forEach(function(t){return t.trainable=e}),this.trainable_=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"trainableWeights\",{get:function(){return this.trainable_?this._trainableWeights.filter(function(e){return e.trainable}):[]},set:function(e){this._trainableWeights=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"nonTrainableWeights\",{get:function(){return this.trainable?this._trainableWeights.filter(function(e){return!e.trainable}).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)},set:function(e){this._nonTrainableWeights=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"weights\",{get:function(){return this.trainableWeights.concat(this.nonTrainableWeights)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"stateful\",{get:function(){return this._stateful},enumerable:!0,configurable:!0}),t.prototype.resetStates=function(){if(!this.stateful)throw new Error(\"Cannot call the resetStates() method of a non-stateful Layer object.\")},t.prototype.assertInputCompatibility=function(e){if(e=toList(e),null!=this.inputSpec&&0!==this.inputSpec.length){var t=toList(this.inputSpec);if(e.length!==t.length)throw new ValueError(\"Layer \"+this.name+\" expects \"+t.length+\" inputs, but it received \"+e.length+\" input tensors. Input received: \"+e);for(var n=0;n<e.length;n++){var r=e[n],i=t[n];if(null!=i){var a=r.rank;if(null!=i.ndim&&a!==i.ndim)throw new ValueError(\"Input \"+n+\" is incompatible with layer \"+this.name+\": expected ndim=\"+i.ndim+\", found ndim=\"+a);if(null!=i.maxNDim&&a>i.maxNDim)throw new ValueError(\"Input \"+n+\" is incompatible with layer \"+this.name+\": expected max_ndim=\"+i.maxNDim+\", found ndim=\"+a);if(null!=i.minNDim&&a<i.minNDim)throw new ValueError(\"Input \"+n+\" is incompatible with layer \"+this.name+\": expected min_ndim=\"+i.minNDim+\", found ndim=\"+a+\".\");if(null!=i.dtype&&r.dtype!==i.dtype)throw new ValueError(\"Input \"+n+\" is incompatible with layer \"+this.name+\" : expected dtype=\"+i.dtype+\", found dtype=\"+r.dtype+\".\");if(i.axes){var o=r.shape;for(var s in i.axes){var l=Number(s),u=i.axes[s],c=l>=0?o[l]:o[o.length+l];if(null!=u&&-1===[u,null].indexOf(c))throw new ValueError(\"Input \"+n+\" is incompatible with layer \"+this.name+\": expected axis \"+l+\" of input shape to have value \"+u+\" but got shape \"+o+\".\")}}if(null!=i.shape)for(var p=0;p<i.shape.length;++p){var h=i.shape[p],d=r.shape[p];if(null!=h&&null!=d&&h!==d)throw new ValueError(\"Input \"+n+\" is incompatible with layer \"+this.name+\": expected shape=\"+i.shape+\", found shape=\"+r.shape+\".\")}}}}},t.prototype.call=function(e,t){return e},t.prototype.invokeCallHook=function(e,t){null!=this._callHook&&this._callHook(e,t)},t.prototype.setCallHook=function(e){this._callHook=e},t.prototype.clearCallHook=function(){this._callHook=null},t.prototype.apply=function(e,t){var n=this;t=t||{},this.assertNotDisposed();for(var r=toList(e),i=!0,a=0,o=r;a<o.length;a++){if(!(o[a]instanceof SymbolicTensor)){i=!1;break}}for(var s=!0,l=0,u=r;l<u.length;l++){if(u[l]instanceof SymbolicTensor){s=!1;break}}if(i===s)throw new ValueError(\"Arguments to apply() must be all SymbolicTensors or all Tensors\");return nameScope(this.name,function(){if(!n.built){n.assertInputCompatibility(e);for(var i=[],a=0,o=toList(e);a<o.length;a++){var l=o[a];i.push(l.shape)}n.build(singletonOrArray(i)),n.built=!0,n.initialWeights&&n.setWeights(n.initialWeights),null===n._refCount&&s&&(n._refCount=1)}if(n.assertInputCompatibility(e),s){for(var u=[],c=0,p=toList(g=n.call(e,t));c<p.length;c++){var h=p[c];-1!==r.indexOf(h)&&(h=h.clone()),u.push(h)}if(g=singletonOrArray(u),null!=n.activityRegularizer)throw new NotImplementedError(\"Layer invocation in the presence of activity regularizer(s) is not supported yet.\");return g}var d=collectInputShape(e),f=n.computeOutputShape(d),g=void 0,m=guessOutputDType(e);if(n.warnOnIncompatibleInputShape(Array.isArray(e)?d[0]:d),g=null!=f&&f.length>0&&Array.isArray(f[0])?f.map(function(r,i){return new SymbolicTensor(m,r,n,toList(e),t,n.name,i)}):new SymbolicTensor(m,f,n,toList(e),t,n.name),n.addInboundNode(e,g,null,null,d,f,t),n._refCount++,null!=n.activityRegularizer)throw new NotImplementedError(\"Layer invocation in the presence of activity regularizer(s) is not supported yet.\");return g})},t.prototype.warnOnIncompatibleInputShape=function(e){if(null!=this.batchInputShape)if(e.length!==this.batchInputShape.length)console.warn(\"The rank of the input tensor provided (shape: \"+JSON.stringify(e)+\") does not match that of the batchInputShape (\"+JSON.stringify(this.batchInputShape)+\") of the layer \"+this.name);else{var t=!1;this.batchInputShape.forEach(function(n,r){null!=n&&null!=e[r]&&e[r]!==n&&(t=!0)}),t&&console.warn(\"The shape of the input tensor (\"+JSON.stringify(e)+\") does not match the expectation of layer \"+this.name+\": \"+JSON.stringify(this.batchInputShape))}},Object.defineProperty(t.prototype,\"outputShape\",{get:function(){if(null==this.inboundNodes||0===this.inboundNodes.length)throw new AttributeError(\"The layer \"+this.name+\" has never been called and thus has no defined output shape.\");for(var e=[],t=0,n=this.inboundNodes;t<n.length;t++){var r=n[t],i=JSON.stringify(r.outputShapes);-1===e.indexOf(i)&&e.push(i)}if(1===e.length){var a=this.inboundNodes[0].outputShapes;return Array.isArray(a)&&Array.isArray(a[0])&&1===a.length?a[0]:a}throw new AttributeError(\"The layer \"+this.name+' has multiple inbound nodes with different output shapes. Hence the notion of \"outut shape\" is ill-defined for the layer.')},enumerable:!0,configurable:!0}),t.prototype.countParams=function(){if(!this.built)throw new RuntimeError(\"You tried to call countParams() on \"+this.name+\", but the layer is not built yet. Build it first by calling build(batchInputShape).\");return countParamsInWeights(this.weights)},t.prototype.build=function(e){this.built=!0},t.prototype.getWeights=function(e){return void 0===e&&(e=!1),batchGetValue(e?this.trainableWeights:this.weights)},t.prototype.setWeights=function(e){var t=this;tidy(function(){var n=t.weights;if(n.length!==e.length)throw new ValueError('You called setWeights(weights) on layer \"'+t.name+'\" with a weight list of length '+e.length+\", but the layer was expecting \"+n.length+\" weights. Provided weights: \"+e+\"...\");if(0!==n.length){for(var r=[],i=batchGetValue(n),a=0;a<i.length;++a){var o=i[a],s=n[a],l=e[a];if(!util.arraysEqual(o.shape,l.shape))throw new ValueError(\"Layer weight shape \"+o.shape+\" not compatible with provided weight shape \"+l.shape);r.push([s,l])}batchSetValue(r)}})},t.prototype.addWeight=function(e,t,n,r,i,a,o){if(-1!==this._addedWeightNames.indexOf(e))throw new ValueError(\"Duplicate weight name \"+e+\" for layer \"+this.name);this._addedWeightNames.push(e),null==n&&(n=\"float32\"),this.fastWeightInitDuringBuild&&(r=getInitializer(\"zeros\"));var s=r.apply(t,n),l=new LayerVariable(s,n,e,a,o);return s.dispose(),null!=i&&this.addLoss(function(){return i.apply(l.read())}),null==a&&(a=!0),a?this._trainableWeights.push(l):this._nonTrainableWeights.push(l),l},t.prototype.setFastWeightInitDuringBuild=function(e){this.fastWeightInitDuringBuild=e},t.prototype.addLoss=function(e){var t;null==e||Array.isArray(e)&&0===e.length||(e=toList(e),void 0!==this._losses&&null!==this._losses&&(t=this.losses).push.apply(t,e))},t.prototype.computeOutputShape=function(e){return e},t.prototype.computeMask=function(e,t){var n=this;if(!this.supportsMasking){if(null!=t){if(!Array.isArray(t))throw new TypeError(\"Layer \"+this.name+\" does not support masking, but was passed an inputMask.\");t.forEach(function(e){if(null!=e)throw new TypeError(\"Layer \"+n.name+\" does not support masking, but was passed an inputMask.\")})}return null}return t},t.prototype.addInboundNode=function(e,t,n,r,i,a,o){void 0===o&&(o=null);var s=toList(e);t=toList(t),n=toList(n),r=toList(r),i=normalizeShapeList(i),a=normalizeShapeList(a);for(var l=[],u=[],c=[],p=0,h=s;p<h.length;p++){var d=h[p];l.push(d.sourceLayer),u.push(d.nodeIndex),c.push(d.tensorIndex)}new Node({outboundLayer:this,inboundLayers:l,nodeIndices:u,tensorIndices:c,inputTensors:s,outputTensors:t,inputMasks:n,outputMasks:r,inputShapes:i,outputShapes:a},o);for(var f=0;f<t.length;f++)t[f].sourceLayer=this,t[f].nodeIndex=this.inboundNodes.length-1,t[f].tensorIndex=f},t.prototype.getConfig=function(){var e={name:this.name,trainable:this.trainable};return null!=this.batchInputShape&&(e.batchInputShape=this.batchInputShape),null!=this.dtype&&(e.dtype=this.dtype),e},t.prototype.disposeWeights=function(){return this.weights.forEach(function(e){return e.dispose()}),this.weights.length},t.prototype.assertNotDisposed=function(){if(0===this._refCount)throw new Error(\"Layer '\"+this.name+\"' is already disposed.\")},t.prototype.dispose=function(){if(!this.built)throw new Error(\"Cannot dispose Layer \"+this.name+\" because it has not been built yet.\");if(null===this._refCount)throw new Error(\"Cannot dispose Layer \"+this.name+\" because it has not been used yet.\");this.assertNotDisposed();var e=0;return 0==--this._refCount&&(e=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables:e}},t}(serialization.Serializable);function collectInputShape(e){for(var t=[],n=0,r=e=toList(e);n<r.length;n++){var i=r[n];t.push(i.shape)}return singletonOrArray(t)}function guessOutputDType(e){return\"float32\"}function getSourceInputs(e,t,n){if((null==t||null!=n&&n>0)&&(t=e.sourceLayer,n=e.nodeIndex),0===t.inboundNodes.length)return[e];var r=t.inboundNodes[n];if(0===r.inboundLayers.length)return r.inputTensors;for(var i=[],a=0;a<r.inboundLayers.length;a++)for(var o=0,s=getSourceInputs(r.inputTensors[a],r.inboundLayers[a],r.nodeIndices[a]);o<s.length;o++){var l=s[o];-1===i.indexOf(l)&&i.push(l)}return i}var ModelLoggingVerbosity,InputLayer=function(e){function t(t){var n=e.call(this,{dtype:t.dtype,name:null!=t.name?t.name:getUid(\"input\").toString()})||this;if(null==t.batchSize&&(t.batchSize=null),null==t.sparse&&(t.sparse=!1),n.trainable=!1,n.built=!0,n.sparse=t.sparse,null!=t.inputShape&&null!=t.batchInputShape)throw new ValueError(\"Only provide the inputShape OR batchInputShape argument to inputLayer, not both at the same time.\");var r=t.batchInputShape;if(null==r){if(null==t.inputShape)throw new ValueError(\"An InputLayer should be passed either a `batchInputShape` or an `inputShape`.\");r=[t.batchSize].concat(t.inputShape)}else if(null!=t.batchSize)throw new ValueError(\"Cannot specify batchSize if batchInputShape is specified when creating an InputLayer.\");var i=t.dtype||\"float32\";n.batchInputShape=r,n.dtype=i,n.inputSpec=[{shape:r}];var a=new SymbolicTensor(n.dtype,n.batchInputShape,n,[],{},n.name);return a.nodeIndex=0,a.tensorIndex=0,new Node({outboundLayer:n,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:[a],outputTensors:[a],inputMasks:[null],outputMasks:[null],inputShapes:[r],outputShapes:[r]}),n}return __extends(t,e),t.prototype.apply=function(e,t){throw new ValueError(\"Cannot pass any input to an InputLayer's apply() method. InputLayer name: \"+this.name)},t.prototype.dispose=function(){return{refCountAfterDispose:this._refCount,numDisposedVariables:0}},t.prototype.getConfig=function(){return{batchInputShape:this.batchInputShape,dtype:this.dtype,sparse:this.sparse,name:this.name}},t.className=\"InputLayer\",t}(Layer);function Input(e){if(null==e.batchShape&&null==e.shape)throw new Error(\"Please provide to Input either a `shape` or a `batchShape` argument. Note that `shape` does not include the batch dimension.\");if(null!=e.batchShape&&null!=e.shape)throw new ValueError(\"Please provide either a `shape` or `batchShape` argument to Input, but not both.\");var t=e.batchShape;null!=e.shape&&null==t&&(t=[null].concat(e.shape));var n=e.dtype;return null==n&&(n=\"float32\"),new InputLayer({batchInputShape:t,name:e.name,dtype:n,sparse:e.sparse}).inboundNodes[0].outputTensors[0]}function resolveScalarsInLogs(e){return __awaiter(this,void 0,void 0,function(){var t,n,r,i,a,o,s,l;return __generator(this,function(u){switch(u.label){case 0:if(null==e)return[2];for(i in t=[],n=[],r=[],e)\"number\"!=typeof(a=e[i])&&(o=a,t.push(o.data()),n.push(i),r.push(o));return t.length>0?[4,Promise.all(t)]:[3,2];case 1:for(s=u.sent(),l=0;l<s.length;++l)e[n[l]]=s[l][0];dispose(r),u.label=2;case 2:return[2]}})})}function disposeTensorsInLogs(e){if(null!=e)for(var t in e){var n=e[t];\"number\"!=typeof n&&n.dispose()}}serialization.registerClass(InputLayer),function(e){e[e.SILENT=0]=\"SILENT\",e[e.VERBOSE=1]=\"VERBOSE\"}(ModelLoggingVerbosity||(ModelLoggingVerbosity={}));var DEFAULT_YIELD_EVERY_MS=125,BaseCallback=function(){function e(){this.validationData=null}return e.prototype.setParams=function(e){this.params=e},e.prototype.onEpochBegin=function(e,t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return[2]})})},e.prototype.onEpochEnd=function(e,t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return[2]})})},e.prototype.onBatchBegin=function(e,t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return[2]})})},e.prototype.onBatchEnd=function(e,t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return[2]})})},e.prototype.onTrainBegin=function(e){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return[2]})})},e.prototype.onTrainEnd=function(e){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return[2]})})},e.prototype.setModel=function(e){},e}(),CallbackList=function(){function e(e,t){void 0===t&&(t=10),null==e&&(e=[]),this.callbacks=e,this.queueLength=t}return e.prototype.append=function(e){this.callbacks.push(e)},e.prototype.setParams=function(e){for(var t=0,n=this.callbacks;t<n.length;t++){n[t].setParams(e)}},e.prototype.setModel=function(e){for(var t=0,n=this.callbacks;t<n.length;t++){n[t].setModel(e)}},e.prototype.onEpochBegin=function(e,t){return __awaiter(this,void 0,void 0,function(){var n,r;return __generator(this,function(i){switch(i.label){case 0:null==t&&(t={}),n=0,r=this.callbacks,i.label=1;case 1:return n<r.length?[4,r[n].onEpochBegin(e,t)]:[3,4];case 2:i.sent(),i.label=3;case 3:return n++,[3,1];case 4:return[2]}})})},e.prototype.onEpochEnd=function(e,t){return __awaiter(this,void 0,void 0,function(){var n,r;return __generator(this,function(i){switch(i.label){case 0:null==t&&(t={}),n=0,r=this.callbacks,i.label=1;case 1:return n<r.length?[4,r[n].onEpochEnd(e,t)]:[3,4];case 2:i.sent(),i.label=3;case 3:return n++,[3,1];case 4:return[2]}})})},e.prototype.onBatchBegin=function(e,t){return __awaiter(this,void 0,void 0,function(){var n,r;return __generator(this,function(i){switch(i.label){case 0:null==t&&(t={}),n=0,r=this.callbacks,i.label=1;case 1:return n<r.length?[4,r[n].onBatchBegin(e,t)]:[3,4];case 2:i.sent(),i.label=3;case 3:return n++,[3,1];case 4:return[2]}})})},e.prototype.onBatchEnd=function(e,t){return __awaiter(this,void 0,void 0,function(){var n,r;return __generator(this,function(i){switch(i.label){case 0:null==t&&(t={}),n=0,r=this.callbacks,i.label=1;case 1:return n<r.length?[4,r[n].onBatchEnd(e,t)]:[3,4];case 2:i.sent(),i.label=3;case 3:return n++,[3,1];case 4:return[2]}})})},e.prototype.onTrainBegin=function(e){return __awaiter(this,void 0,void 0,function(){var t,n;return __generator(this,function(r){switch(r.label){case 0:null==e&&(e={}),t=0,n=this.callbacks,r.label=1;case 1:return t<n.length?[4,n[t].onTrainBegin(e)]:[3,4];case 2:r.sent(),r.label=3;case 3:return t++,[3,1];case 4:return[2]}})})},e.prototype.onTrainEnd=function(e){return __awaiter(this,void 0,void 0,function(){var t,n;return __generator(this,function(r){switch(r.label){case 0:null==e&&(e={}),t=0,n=this.callbacks,r.label=1;case 1:return t<n.length?[4,n[t].onTrainEnd(e)]:[3,4];case 2:r.sent(),r.label=3;case 3:return t++,[3,1];case 4:return[2]}})})},e}(),BaseLogger=function(e){function t(){return e.call(this)||this}return __extends(t,e),t.prototype.onEpochBegin=function(e){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return this.seen=0,this.totals={},[2]})})},t.prototype.onBatchEnd=function(e,t){return __awaiter(this,void 0,void 0,function(){var e,n,r,i,a=this;return __generator(this,function(o){for(i in null==t&&(t={}),e=null==t.size?0:t.size,this.seen+=e,n=function(n){var i=t[n];if(\"number\"==typeof i)r.totals.hasOwnProperty(n)||(r.totals[n]=0),r.totals[n]=r.totals[n]+i*e;else{var o=void 0;n in r.totals?o=r.totals[n]:r.totals[n]=0;var s=tidy(function(){return add(a.totals[n],mul(i,e))});r.totals[n]=s,null!=o&&o.dispose()}},r=this,t)n(i);return[2]})})},t.prototype.onEpochEnd=function(e,t){return __awaiter(this,void 0,void 0,function(){var e,n,r,i,a,o=this;return __generator(this,function(s){if(null!=t)for(e=function(e){if(null==n.totals[e])return\"continue\";\"number\"==typeof n.totals[e]?t[e]=n.totals[e]/n.seen:tidy(function(){var n=mul(div(1,o.seen),o.totals[e]);t[e]=n,o.totals[e].dispose(),keep(t[e])})},n=this,r=0,i=this.params.metrics;r<i.length;r++)a=i[r],e(a);return[2]})})},t}(BaseCallback),History=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.onTrainBegin=function(e){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return this.epoch=[],this.history={},[2]})})},t.prototype.onEpochEnd=function(e,t){return __awaiter(this,void 0,void 0,function(){var n;return __generator(this,function(r){for(n in null==t&&(t={}),this.epoch.push(e),t)null==this.history[n]&&(this.history[n]=[]),this.history[n].push(t[n]);return[2]})})},t.prototype.syncData=function(){return __awaiter(this,void 0,void 0,function(){var e,t,n,r,i,a,o,s,l;return __generator(this,function(u){switch(u.label){case 0:for(r in e=[],t=[],n=[],this.history)for(i=this.history[r],a=0;a<i.length;++a)\"number\"!=typeof i[a]&&(o=i[a],e.push(o.data()),t.push(r),n.push(a));return[4,Promise.all(e)];case 1:for(s=u.sent(),l=0;l<s.length;++l)this.history[t[l]][n[l]].dispose(),this.history[t[l]][n[l]]=s[l][0];return[2]}})})},t}(BaseCallback),CustomCallback=function(e){function t(t,n){var r=e.call(this)||this;if(r.currentEpoch=0,r.yieldEvery=n||\"auto\",\"auto\"===r.yieldEvery&&(r.yieldEvery=DEFAULT_YIELD_EVERY_MS),\"never\"===r.yieldEvery&&null!=t.onYield)throw new Error(\"yieldEvery is `never` but you provided an `onYield` callback. Either change `yieldEvery` or remove the callback\");return util.isNumber(r.yieldEvery)&&(r.maybeWait=debounce(r.maybeWait.bind(r),r.yieldEvery)),r.trainBegin=t.onTrainBegin,r.trainEnd=t.onTrainEnd,r.epochBegin=t.onEpochBegin,r.epochEnd=t.onEpochEnd,r.batchBegin=t.onBatchBegin,r.batchEnd=t.onBatchEnd,r.yield=t.onYield,r}return __extends(t,e),t.prototype.maybeWait=function(e,t,n){return __awaiter(this,void 0,void 0,function(){var r;return __generator(this,function(i){switch(i.label){case 0:return r=[],null==this.yield?[3,2]:[4,resolveScalarsInLogs(n)];case 1:i.sent(),r.push(this.yield(e,t,n)),i.label=2;case 2:return r.push(nextFrame()),[4,Promise.all(r)];case 3:return i.sent(),[2]}})})},t.prototype.onEpochBegin=function(e,t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return this.currentEpoch=e,null==this.epochBegin?[3,3]:[4,resolveScalarsInLogs(t)];case 1:return n.sent(),[4,this.epochBegin(e,t)];case 2:n.sent(),n.label=3;case 3:return[2]}})})},t.prototype.onEpochEnd=function(e,t){return __awaiter(this,void 0,void 0,function(){var n;return __generator(this,function(r){switch(r.label){case 0:return n=[],null==this.epochEnd?[3,2]:[4,resolveScalarsInLogs(t)];case 1:r.sent(),n.push(this.epochEnd(e,t)),r.label=2;case 2:return\"epoch\"===this.yieldEvery&&n.push(nextFrame()),[4,Promise.all(n)];case 3:return r.sent(),[2]}})})},t.prototype.onBatchBegin=function(e,t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return null==this.batchBegin?[3,3]:[4,resolveScalarsInLogs(t)];case 1:return n.sent(),[4,this.batchBegin(e,t)];case 2:n.sent(),n.label=3;case 3:return[2]}})})},t.prototype.onBatchEnd=function(e,t){return __awaiter(this,void 0,void 0,function(){var n;return __generator(this,function(r){switch(r.label){case 0:return n=[],null==this.batchEnd?[3,2]:[4,resolveScalarsInLogs(t)];case 1:r.sent(),n.push(this.batchEnd(e,t)),r.label=2;case 2:return\"batch\"===this.yieldEvery?n.push(nextFrame()):util.isNumber(this.yieldEvery)&&n.push(this.maybeWait(this.currentEpoch,e,t)),[4,Promise.all(n)];case 3:return r.sent(),[2]}})})},t.prototype.onTrainBegin=function(e){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return null==this.trainBegin?[3,3]:[4,resolveScalarsInLogs(e)];case 1:return t.sent(),[4,this.trainBegin(e)];case 2:t.sent(),t.label=3;case 3:return[2]}})})},t.prototype.onTrainEnd=function(e){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return null==this.trainEnd?[3,3]:[4,resolveScalarsInLogs(e)];case 1:return t.sent(),[4,this.trainEnd(e)];case 2:t.sent(),t.label=3;case 3:return[2]}})})},t}(BaseCallback);function standardizeCallbacks(e,t){return null==e&&(e={}),e instanceof BaseCallback?[e]:Array.isArray(e)&&e[0]instanceof BaseCallback?e:toList(e).map(function(e){return new CustomCallback(e,t)})}var CallbackConstructorRegistry=function(){function e(){}return e.registerCallbackConstructor=function(t,n){util.assert(t>=0&&Number.isInteger(t),function(){return\"Verbosity level is expected to be an integer >= 0, but got \"+t}),e.checkForDuplicate(n),null==e.constructors[t]&&(e.constructors[t]=[]),e.constructors[t].push(n)},e.checkForDuplicate=function(t){for(var n in e.constructors){e.constructors[+n].forEach(function(e){if(e===t)throw new ValueError(\"Duplicate callback constructor.\")})}},e.clear=function(){e.constructors={}},e.createCallbacks=function(t){var n=[];for(var r in e.constructors){var i=+r;t>=i&&n.push.apply(n,e.constructors[i])}return n.map(function(e){return new e})},e.constructors={},e}();function configureCallbacks(e,t,n,r,i,a,o,s,l){var u=new History,c=[new BaseLogger].concat(CallbackConstructorRegistry.createCallbacks(t));null!=e&&c.push.apply(c,e),c.push(u);var p=new CallbackList(c);return p.setParams({epochs:n,initialEpoch:r,samples:i,steps:a,batchSize:o,verbose:t,doValidation:s,metrics:l}),{callbackList:p,history:u}}function deserialize(e,t,n){return void 0===t&&(t={}),void 0===n&&(n=!1),deserializeKerasObject(e,serialization.SerializationMap.getMap().classNameMap,t,\"layer\",n)}function l2Normalize(e,t){return tidy(function(){\"float32\"!==e.dtype&&(e=e.asType(\"float32\"));var n=sum(square(e),t,!0),r=fill(n.shape,epsilon()),i=sqrt(maximum(n,r));return div(e,i)})}function meanSquaredError(e,t){return tidy(function(){return mean(square(sub(t,e)),-1)})}function meanAbsoluteError(e,t){return tidy(function(){return mean(abs(sub(t,e)),-1)})}function meanAbsolutePercentageError(e,t){return tidy(function(){var n=sub(e,t),r=clipByValue(abs(e),epsilon(),Number.MAX_VALUE),i=abs(div(n,r));return mul(100,mean(i,-1))})}function meanSquaredLogarithmicError(e,t){return tidy(function(){var n=clipByValue(t,epsilon(),Number.MAX_VALUE),r=log(add(1,n)),i=clipByValue(e,epsilon(),Number.MAX_VALUE),a=log(add(1,i));return mean(square(sub(r,a)),-1)})}function squaredHinge(e,t){return tidy(function(){var n=maximum(0,sub(1,mul(e,t)));return mean(square(n),-1)})}function hinge(e,t){return tidy(function(){var n=maximum(0,sub(1,mul(e,t)));return mean(n,-1)})}function categoricalHinge(e,t){return tidy(function(){var n=sum(mul(e,t),-1),r=max(mul(sub(1,e),t),-1);return maximum(0,add(1,sub(r,n)))})}function logcosh(e,t){return tidy(function(){var n=Math.log(2),r=sub(t,e),i=sub(add(r,softplus(mul(-2,r))),n);return mean(i,-1)})}function categoricalCrossentropy(e,t,n){return void 0===n&&(n=!1),tidy(function(){if(n)t=softmax(t);else{var r=sum(t,t.shape.length-1,!0);t=div(t,r)}return t=clipByValue(t,epsilon(),1-epsilon()),neg(sum(mul(e.toFloat(),log(t)),t.shape.length-1))})}function sparseCategoricalCrossentropy(e,t){return tidy(function(){var n=floor(flatten(e)).toInt(),r=(t=clipByValue(t,epsilon(),1-epsilon())).shape;return categoricalCrossentropy(oneHot(n,r[r.length-1]).reshape(r),t,!1)})}function sigmoidCrossEntropyWithLogits(e,t){if(!util.arraysEqual(e.shape,t.shape))throw new ValueError(\"logits and labels must have the same shape, but got shapes \"+JSON.stringify(e.shape)+\" and \"+JSON.stringify(t.shape));return tidy(function(){var n=t.relu(),r=t.abs().neg();return n.sub(t.mul(e)).add(r.exp().log1p())})}function binaryCrossentropy(e,t){return tidy(function(){var n;return n=clipByValue(t,epsilon(),1-epsilon()),n=log(div(n,sub(1,n))),mean(sigmoidCrossEntropyWithLogits(e,n),-1)})}function kullbackLeiblerDivergence(e,t){return tidy(function(){var n=clipByValue(e,epsilon(),1),r=clipByValue(t,epsilon(),1);return sum(mul(e,log(div(n,r))),-1)})}function poisson(e,t){return tidy(function(){var n=log(add(epsilon(),t));return mean(sub(t,mul(e,n)),-1)})}function cosineProximity(e,t){return tidy(function(){var n=l2Normalize(e,-1),r=l2Normalize(t,-1),i=mul(n,r);return neg(sum(i,-1))})}var lossesMap={meanSquaredError:meanSquaredError,meanAbsoluteError:meanAbsoluteError,meanAbsolutePercentageError:meanAbsolutePercentageError,meanSquaredLogarithmicError:meanSquaredLogarithmicError,squaredHinge:squaredHinge,hinge:hinge,categoricalHinge:categoricalHinge,logcosh:logcosh,categoricalCrossentropy:categoricalCrossentropy,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy,binaryCrossentropy:binaryCrossentropy,kullbackLeiblerDivergence:kullbackLeiblerDivergence,poisson:poisson,cosineProximity:cosineProximity};function get(e){if(\"string\"==typeof e){if(e in lossesMap)return lossesMap[e];var t=\"Unknown loss \"+e;throw e.toLowerCase().includes(\"softmaxcrossentropy\")&&(t=\"Unknown loss \"+e+'. Use \"categoricalCrossentropy\" as the string name for tf.losses.softmaxCrossEntropy'),new ValueError(t)}return e}function binaryAccuracy(e,t){return tidy(function(){var n=mul(.5,onesLike(t)),r=cast$1(greater(t,n),e.dtype);return mean(equal(e,r),-1)})}function categoricalAccuracy(e,t){return tidy(function(){return cast$1(equal(argMax(e,-1),argMax(t,-1)),\"float32\")})}function truePositives(e,t){return tidy(function(){return logicalAnd(e.equal(1),t.equal(1)).sum().cast(\"float32\")})}function falseNegatives(e,t){return tidy(function(){return logicalAnd(e.equal(1),t.equal(0)).sum().cast(\"float32\")})}function falsePositives(e,t){return tidy(function(){return logicalAnd(e.equal(0),t.equal(1)).sum().cast(\"float32\")})}function precision(e,t){return tidy(function(){var n=truePositives(e,t),r=falsePositives(e,t),i=n.add(r);return where(greater(i,0),n.div(i),0).cast(\"float32\")})}function recall(e,t){return tidy(function(){var n=truePositives(e,t),r=falseNegatives(e,t),i=n.add(r);return where(greater(i,0),n.div(i),0).cast(\"float32\")})}function binaryCrossentropy$1(e,t){return binaryCrossentropy(e,t)}function sparseCategoricalAccuracy(e,t){return e.rank===t.rank&&(e=e.squeeze([e.rank-1])),(t=t.argMax(-1)).dtype!==e.dtype&&(t=t.asType(e.dtype)),equal(e,t).asType(\"float32\")}var mse$1=meanSquaredError,MSE$1=meanSquaredError,mae$1=meanAbsoluteError,MAE$1=meanAbsoluteError,mape$1=meanAbsolutePercentageError,MAPE$1=meanAbsolutePercentageError,categoricalCrossentropy$1=categoricalCrossentropy,cosine$1=cosineProximity,sparseCategoricalCrossentropy$1=sparseCategoricalCrossentropy,metricsMap={binaryAccuracy:binaryAccuracy,categoricalAccuracy:categoricalAccuracy,precision:precision,categoricalCrossentropy:categoricalCrossentropy$1,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy$1,mse:mse$1,MSE:MSE$1,mae:mae$1,MAE:MAE$1,mape:mape$1,MAPE:MAPE$1,cosine:cosine$1};function get$1(e){if(\"string\"==typeof e&&e in metricsMap)return metricsMap[e];if(\"string\"!=typeof e&&null!=e)return e;throw new ValueError(\"Unknown metric \"+e)}function getLossOrMetricName(e){if(assert(null!==e,\"Unknown LossOrMetricFn \"+e),\"string\"==typeof e)return e;for(var t=void 0,n=0,r=Object.keys(lossesMap);n<r.length;n++){var i=r[n];if(lossesMap[i]===e){t=i;break}}if(void 0!==t)return t;for(var a=0,o=Object.keys(metricsMap);a<o.length;a++){i=o[a];if(metricsMap[i]===e){t=i;break}}return void 0!==t?t:e.name}function getOptimizer(e){var t={Adagrad:function(){return train.adagrad(.01)},Adadelta:function(){return train.adadelta(1,.95,epsilon())},Adam:function(){return train.adam(.001,.9,.999,epsilon())},Adamax:function(){return train.adamax(.002,.9,.999,epsilon(),0)},RMSProp:function(){return train.rmsprop(.001,.9,0,epsilon())},SGD:function(){return train.sgd(.01)}};if(t.adagrad=t.Adagrad,t.adadelta=t.Adadelta,t.adam=t.Adam,t.adamax=t.Adamax,t.rmsprop=t.RMSProp,t.sgd=t.SGD,e in t)return t[e]();throw new ValueError(\"Unknown Optimizer \"+e)}var MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH=1048576;function checkUserDefinedMetadata(e,t,n){if(void 0===n&&(n=!1),null==e||\"object\"!=typeof e||Object.getPrototypeOf(e)!==Object.prototype||!plainObjectCheck(e))throw new Error(\"User-defined metadata is expected to be a JSON object, but is not.\");if(n){var r=JSON.stringify(e);r.length>MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH&&console.warn('User-defined metadata of model \"'+t+'\" is too large in size (length='+r.length+\" when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= \"+MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH+\".\")}}function plainObjectCheck(e){if(null===e)return!0;if(\"object\"==typeof e){if(Object.getPrototypeOf(e)===Object.prototype){for(var t=0,n=Object.keys(e);t<n.length;t++){var r=n[t];if(\"string\"!=typeof r)return!1;if(!plainObjectCheck(e[r]))return!1}return!0}if(Array.isArray(e)){for(var i=0,a=e;i<a.length;i++){if(!plainObjectCheck(a[i]))return!1}return!0}return!1}var o=typeof e;return\"string\"===o||\"number\"===o||\"boolean\"===o}function printSummary(e,t,n,r){void 0===r&&(r=console.log);var i,a=isModelSequentialLike(e),o=[\"Layer (type)\",\"Output shape\",\"Param #\"];if(a?(t=t||65,n=n||[.45,.85,1]):(t=t||98,n=n||[.33,.55,.67,1]),n[n.length-1]<=1&&(n=n.map(function(e){return Math.floor(t*e)})),!a)for(var s in o.push(\"Receives inputs\"),i=[],e.nodesByDepth)i.push.apply(i,e.nodesByDepth[s]);r(\"_\".repeat(t)),printRow(o,n,r),r(\"=\".repeat(t));for(var l=e.layers,u=0;u<l.length;++u)a?printLayerSummary(l[u],n,r):printLayerSummaryWithConnections(l[u],n,i,r),r((u===l.length-1?\"=\":\"_\").repeat(t));e.checkTrainableWeightsConsistency();var c=countTrainableParams(e),p=countParamsInWeights(e.nonTrainableWeights);r(\"Total params: \"+(c+p)),r(\"Trainable params: \"+c),r(\"Non-trainable params: \"+p),r(\"_\".repeat(t))}function countTrainableParams(e){return null!=e.collectedTrainableWeights?countParamsInWeights(e.collectedTrainableWeights):countParamsInWeights(e.trainableWeights)}function isModelSequentialLike(e){var t=!0,n=[],r=[];for(var i in e.nodesByDepth)n.push(e.nodesByDepth[i]);for(var a=0,o=n;a<o.length;a++){var s=o[a];if(s.length>1||1===s.length&&s[0].inboundLayers.length>1){t=!1;break}r.push.apply(r,s)}if(t)for(var l=0,u=e.layers;l<u.length;l++){for(var c=!1,p=0,h=u[l].inboundNodes;p<h.length;p++){var d=h[p];if(-1!==r.indexOf(d)){if(c){t=!1;break}c=!0}}if(!t)break}return t}function printRow(e,t,n){void 0===n&&(n=console.log);for(var r=\"\",i=0;i<e.length;++i)i>0&&(r=r.slice(0,r.length-1)+\" \"),r=(r+=e[i]).slice(0,t[i]),r+=\" \".repeat(t[i]-r.length);n(r)}function printLayerSummary(e,t,n){var r;try{r=JSON.stringify(e.outputShape)}catch(e){r=\"multiple\"}printRow([e.name+\" (\"+e.getClassName()+\")\",r,e.countParams().toString()],t,n)}function printLayerSummaryWithConnections(e,t,n,r){var i;try{i=JSON.stringify(e.outputShape)}catch(e){i=\"multiple\"}for(var a=[],o=0,s=e.inboundNodes;o<s.length;o++){var l=s[o];if(!(null!=n&&n.length>0&&-1===n.indexOf(l)))for(var u=0;u<l.inboundLayers.length;++u){var c=l.inboundLayers[u].name,p=l.nodeIndices[u],h=l.tensorIndices[u];a.push(c+\"[\"+p+\"][\"+h+\"]\")}}var d=e.name,f=e.getClassName(),g=0===a.length?\"\":a[0];printRow([d+\" (\"+f+\")\",i,e.countParams().toString(),g],t,r);for(u=1;u<a.length;++u)printRow([\"\",\"\",\"\",a[u]],t,r)}function isArrayItemInputOrOutputName(e,t,n){return(\"inboundNodes\"===e||\"outputLayers\"===e||\"inputLayers\"===e)&&0===t&&\"string\"==typeof n}function convertPythonicToTs(e,t){if(null===e)return null;if(\"string\"==typeof e)return toCamelCase(e);if(\"number\"==typeof e||\"boolean\"==typeof e)return e;if(e instanceof Array){for(var n=[],r=e.length,i=0;i<r;++i){var a=e[i];isArrayItemInputOrOutputName(t,i,a)?n.push(a):n.push(convertPythonicToTs(a,t))}return n}for(var o={},s=0,l=Object.keys(e);s<l.length;s++){var u=l[s],c=e[u];if(\"name\"===u&&\"string\"==typeof c)o[u]=c;else{var p=toCamelCase(u);o[p]=convertPythonicToTs(c,p)}}return o}function convertTsToPythonic(e,t){if(null===e||void 0===e)return null;if(\"string\"==typeof e)return toSnakeCase(e);if(\"number\"==typeof e||\"boolean\"==typeof e)return e;if(e instanceof Array){for(var n=[],r=e.length,i=0;i<r;++i){var a=e[i];isArrayItemInputOrOutputName(t,i,a)?n.push(a):n.push(convertTsToPythonic(a,t))}return n}for(var o={},s=0,l=Object.keys(e);s<l.length;s++){var u=l[s],c=e[u],p=toSnakeCase(u);o[p]=\"name\"!==u&&\"className\"!==u||\"string\"!=typeof c?convertTsToPythonic(c,u):c}return o}var version=\"1.7.4\";function assertFeedCompatibility(e,t){if(null==e.dtype||e.dtype===t.dtype)return t;try{return cast(t,e.dtype)}catch(n){throw new ValueError(\"The dtype of the feed (\"+t.dtype+\") can not be cast to the dtype of the key '\"+e.name+\"' (\"+e.dtype+\").\")}}var FeedDict=function(){function e(t){if(this.id2Value={},this.id2Mask={},this.name2Id={},t instanceof e)for(var n in t.id2Value)this.id2Value[n]=t.id2Value[n],n in t.id2Mask&&(this.id2Mask[n]=t.id2Mask[n]);else{if(null==t)return;for(var r=0,i=t;r<i.length;r++){var a=i[r];this.add(a.key,a.value)}}}return e.prototype.add=function(e,t,n){if(null!=this.id2Value[e.id])throw new ValueError(\"Duplicate key: name=\"+e.name+\", id=\"+e.id);return this.id2Value[e.id]=assertFeedCompatibility(e,t),this.name2Id[e.name]=e.id,null!=n&&(this.id2Mask[e.id]=n),this},e.prototype.addFeed=function(e){this.add(e.key,e.value)},e.prototype.hasKey=function(e){return null!=this.id2Value[e.id]},e.prototype.names=function(){return Object.keys(this.name2Id)},e.prototype.getValue=function(e){if(e instanceof SymbolicTensor){if(null==this.id2Value[e.id])throw new ValueError(\"Nonexistent key: \"+e.name);return this.id2Value[e.id]}var t=this.name2Id[e];if(null==t)throw new ValueError(\"Feed dict has no SymbolicTensor name: \"+e);return this.id2Value[t]},e.prototype.getMask=function(e){if(e instanceof SymbolicTensor){if(null==this.id2Value[e.id])throw new ValueError(\"Nonexistent key: \"+e.name);return this.id2Mask[e.id]}var t=this.name2Id[e];if(null==t)throw new ValueError(\"Feed dict has no SymbolicTensor name: \"+e);return this.id2Mask[t]},e.prototype.disposeMasks=function(){null!=this.id2Mask&&dispose(this.id2Mask)},e}(),cachedSorted={},cachedRecipientCounts={};function execute(e,t,n,r){for(var i=null!=n&&n.training,a=Array.isArray(e),o=a?e:[e],s=o.map(function(e){return e.name}),l=[],u=t.names(),c=0,p=s;c<p.length;c++){var h=p[c];-1!==u.indexOf(h)?l.push(t.getValue(h)):l.push(null)}null!=r&&(r.maxNumTensors=-1/0,r.minNumTensors=1/0);var d,f,g=s.join(\",\")+\"|\"+t.names().join(\",\");if(null==cachedSorted[g]){var m=getTopologicalSortAndRecipientCounts(o,t);d=m.sorted,f=m.recipientCounts,cachedSorted[g]=d,cachedRecipientCounts[g]=f}d=cachedSorted[g],f={},i||Object.assign(f,cachedRecipientCounts[g]);for(var y=new FeedDict(t),v=0;v<d.length;++v){if(null!=r){var b=memory().numTensors;b>r.maxNumTensors&&(r.maxNumTensors=b),b<r.minNumTensors&&(r.minNumTensors=b)}var w=d[v],z=w.sourceLayer;if(!(z instanceof InputLayer)){for(var S=[],A=[],_=[],I=!1,C=0,E=w.inputs;C<E.length;C++){var N=E[C],k=y.getValue(N),x=y.getMask(N);S.push(k),A.push(x),null!=x&&(I=!0),i||(f[N.name]--,0!==f[N.name]||t.hasKey(N)||-1!==s.indexOf(N.name)||k.isDisposed||!0===N.sourceLayer.stateful||_.push(k))}I&&((n=n||{}).mask=A[0]);var L=toList(z.apply(S,n)),T=null;z.supportsMasking&&(T=z.computeMask(S,A));for(var D=getNodeOutputs(w),O=Array.isArray(D)?D:[D],R=0;R<O.length;++R){y.hasKey(O[R])||y.add(O[R],L[R],Array.isArray(T)?T[0]:T);var M=s.indexOf(O[R].name);-1!==M&&(l[M]=L[R])}i||dispose(_)}}return y.disposeMasks(),a?l:l[0]}function getTopologicalSortAndRecipientCounts(e,t){util.assert(null!=e&&e.length>0,function(){return\"Expected at least one fetch, got none\"});var n=[],r={};if(1===e.length){var i=getTopologicalSortAndRecipientCountsForOneFetch(e[0],t);n=i.sorted,r=i.recipientMap}else for(var a=new Set,o=0,s=e;o<s.length;o++){for(var l=getTopologicalSortAndRecipientCountsForOneFetch(s[o],t),u=l.sorted,c=l.recipientMap,p=0,h=u;p<h.length;p++){var d=h[p];a.has(d.name)||(n.push(d),a.add(d.name))}var f=function(e){null==r[e]&&(r[e]=new Set),c[e].forEach(function(t){return r[e].add(t)})};for(var g in c)f(g)}return{sorted:n,recipientCounts:recipientMap2Counts(r)}}function recipientMap2Counts(e){var t={};for(var n in e)t[n]=e[n].size;return t}function getTopologicalSortAndRecipientCountsForOneFetch(e,t){for(var n=new Set,r=[],i={},a=0,o=t.names();a<o.length;a++){var s=o[a];n.add(s)}var l=[],u=[];for(l.push(e);l.length>0;){var c=l[l.length-1];if(n.has(c.name))l.pop();else{var p=u[u.length-1]===l.length-1;if(0===c.inputs.length||p)l.pop(),r.push(c),n.add(c.name),p&&u.pop();else{u.push(l.length-1);for(var h=0,d=c.inputs;h<d.length;h++){var f=d[h];null==i[f.name]&&(i[f.name]=new Set),i[f.name].add(c.name),n.has(f.name)||l.push(f)}}}}return{sorted:r,recipientMap:i}}function getNodeOutputs(e){var t;if(1===e.sourceLayer.inboundNodes.length)t=e.sourceLayer.output;else{for(var n=null,r=0;r<e.sourceLayer.inboundNodes.length;++r)for(var i=0,a=e.sourceLayer.inboundNodes[r].outputTensors;i<a.length;i++){if(a[i].id===e.id){n=r;break}}t=e.sourceLayer.getOutputAt(n)}return t}var Container=function(e){function t(n){var r=e.call(this,{})||this;if(r.containerNodes=new Set,r.name=n.name,null==r.name){var i=r.getClassName().toLowerCase();r.name=getUid(i)}if(r.supportsMasking=!1,r.trainable_=!0,Array.isArray(n.inputs)?r.inputs=n.inputs.slice():r.inputs=[n.inputs],Array.isArray(n.outputs)?r.outputs=n.outputs.slice():r.outputs=[n.outputs],unique(r.inputs).length!==r.inputs.length)throw new ValueError(\"The list of inputs passed to the model is redundant. All inputs should only appear once. Found: \"+r.inputs.map(function(e){return e.name}));unique(r.outputs).length!==r.outputs.length&&console.warn(\"The list of outputs passed to the model is redundant. All outputs should only appear once. Found: \"+r.outputs.map(function(e){return e.name})),r.inputLayers=[],r.inputLayersNodeIndices=[],r.inputLayersTensorIndices=[],r.outputLayers=[],r.outputLayersNodeIndices=[],r.outputLayersTensorIndices=[],r.layers=[],r.internalContainerRefs=[];for(var a=0,o=r.outputs;a<o.length;a++){var s=(C=o[a]).sourceLayer,l=C.nodeIndex,u=C.tensorIndex;r.outputLayers.push(s),r.outputLayersNodeIndices.push(l),r.outputLayersTensorIndices.push(u)}for(var c=0,p=r.inputs;c<p.length;c++){s=(C=p[c]).sourceLayer,l=C.nodeIndex,u=C.tensorIndex;assert(0===l,\"input layer has >1 nodes\"),assert(0===u,\"input layer has >1 tensors\"),r.inputLayers.push(s),r.inputLayersNodeIndices.push(l),r.inputLayersTensorIndices.push(u)}r.inputNames=[],r.outputNames=[],r.feedInputShapes=[],r.feedInputNames=[],r.feedOutputNames=[];for(var h=0;h<r.inputLayers.length;h++){if(!((s=r.inputLayers[h])instanceof InputLayer))throw new TypeError(\"Input layers to a LayersModel must be InputLayer objects. Received inputs: \"+n.inputs+\". Input \"+h+\" (0-based) originates from layer type \"+s.getClassName()+\".\");r.inputNames.push(s.name),r.feedInputShapes.push(s.batchInputShape),r.feedInputNames.push(s.name)}for(var d=0,f=r.outputLayers;d<f.length;d++){s=f[d];r.outputNames.push(s.name)}r.internalInputShapes=r.inputs.map(function(e){return e.shape}),r.internalOutputShapes=r.outputs.map(function(e){return e.shape});for(var g={},m={},y={},v={},b={},w=[],z=function(e,n,i,a,o,s){null!=a&&null!=o&&null!=s||(a=e.sourceLayer,o=e.nodeIndex,s=e.tensorIndex);var l=a.inboundNodes[o];if(-1!==i.indexOf(l))throw new RuntimeError(\"The tensor \"+e.name+' at layer \"'+a.name+'\" is part of a cycle.');if(-1===n.indexOf(l)){r.containerNodes.add(t.nodeKey(a,o)),a.id in b||(b[a.id]=Object.keys(b).length),-1===i.indexOf(l)&&i.push(l);for(var u=l.inboundLayers.length,c=0;c<u;c++){var p=l.inputTensors[c],h=l.inboundLayers[c],d=l.nodeIndices[c],f=l.tensorIndices[c];z(p,n,i,h,d,f)}for(n.push(l);i.indexOf(l)>=0;)i.splice(i.indexOf(l),1);w.push(l)}},S=[],A=[],_=0,I=r.outputs;_<I.length;_++){var C=I[_];z(C,S,A)}for(var E=0,N=w.slice().reverse();E<N.length;E++){m[(K=N[E]).id]=K,K.id in g||(g[K.id]=0);var k=g[K.id],x=null==y[K.outboundLayer.id]?0:y[K.outboundLayer.id];k=Math.max(k,x),y[K.outboundLayer.id]=k,v[K.outboundLayer.id]=K.outboundLayer,g[K.id]=k;for(h=0;h<K.inboundLayers.length;h++){var L=K.inboundLayers[h],T=(l=K.nodeIndices[h],L.inboundNodes[l]),D=null==g[T.id]?0:g[T.id];g[T.id]=Math.max(k+1,D),m[T.id]=T}}var O={};for(var R in g){(k=g[R])in O||(O[k]=[]),O[k].push(m[R])}var M={};for(var P in y){(k=y[P])in M||(M[k]=[]),M[k].push(v[P])}var F=Object.keys(M).map(function(e){return parseInt(e,10)}).sort(reverseNumberCompare);r.layers=[];for(var V=0,B=F;V<B.length;V++){var U=M[k=B[V]];U.sort(function(e,t){var n=b[e.id],r=b[t.id];return n<r?-1:n>r?1:0});for(var j=0,W=U;j<W.length;j++){(s=W[j])instanceof t&&r.internalContainerRefs.push(s),r.layers.push(s)}}r.layersByDepth=M,F=Object.keys(O).map(function(e){return parseInt(e,10)}).sort(reverseNumberCompare);for(var $=r.inputs.slice(),q=[],G=0,H=F;G<H.length;G++)for(var J=0,Z=O[k=H[G]];J<Z.length;J++){var K;if(null!=(s=(K=Z[J]).outboundLayer)){for(var Y=0,X=K.inputTensors;Y<X.length;Y++){C=X[Y];if(-1===$.indexOf(C))throw new RuntimeError(\"Graph disconnected: cannot obtain value for tensor \"+C+' at layer \"'+s.name+'\". The following previous layers were accessed without issue: '+q)}for(var Q=0,ee=K.outputTensors;Q<ee.length;Q++){C=ee[Q];$.push(C)}q.push(s.name)}}r.nodesByDepth=O;for(var te=r.layers.map(function(e){return e.name}),ne=function(e){var t=te.filter(function(t){return t===e}).length;if(1!==t)throw new RuntimeError('The name \"'+e+'\" is used '+t+\" times in the model. All layer names should be unique. Layer names: \"+JSON.stringify(te))},re=0,ie=te;re<ie.length;re++){ne(ie[re])}return r.outboundNodes=[],r.inboundNodes=[],new Node({outboundLayer:r,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:r.inputs,outputTensors:r.outputs,inputMasks:r.inputs.map(function(e){return null}),outputMasks:r.outputs.map(function(e){return null}),inputShapes:r.inputs.map(function(e){return e.shape}),outputShapes:r.outputs.map(function(e){return e.shape})}),r.built=!0,r._refCount=1,r}return __extends(t,e),t.prototype.assertNotDisposed=function(){if(0===this._refCount)throw new Error(\"Container '\"+this.name+\"' is already disposed.\")},t.prototype.dispose=function(){this.assertNotDisposed();var e={refCountAfterDispose:null,numDisposedVariables:0};if(0==--this._refCount){for(var t=0,n=this.layers;t<n.length;t++){var r=n[t];e.numDisposedVariables+=r.dispose().numDisposedVariables}for(var i=0,a=this.internalContainerRefs;i<a.length;i++){var o=a[i];e.numDisposedVariables+=o.dispose().numDisposedVariables}}return e.refCountAfterDispose=this._refCount,e},Object.defineProperty(t.prototype,\"trainable\",{get:function(){return this.trainable_},set:function(e){this.layers.forEach(function(t){t._trainableWeights.forEach(function(t){return t.trainable=e})}),this.trainable_=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"trainableWeights\",{get:function(){if(this._trainableWeights.length>0)throw new ValueError(\"Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.\");if(!this.trainable)return[];for(var e=[],t=0,n=this.layers;t<n.length;t++){var r=n[t];e=e.concat(r.trainableWeights)}return e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"nonTrainableWeights\",{get:function(){for(var e=[],t=0,n=this.layers;t<n.length;t++){var r=n[t];e.push.apply(e,r.nonTrainableWeights)}if(!this.trainable){for(var i=[],a=0,o=this.layers;a<o.length;a++){r=o[a];i.push.apply(i,r.trainableWeights)}return i.concat(e)}return e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"weights\",{get:function(){return this.trainableWeights.concat(this.nonTrainableWeights)},enumerable:!0,configurable:!0}),t.prototype.loadWeights=function(e,t){void 0===t&&(t=!0);for(var n={},r=0,i=0,a=this.layers;i<a.length;i++)for(var o=0,s=a[i].weights;o<s.length;o++){var l=s[o];if(null!=n[l.originalName])throw new ValueError(\"Duplicate weight name: \"+l.originalName);n[l.originalName]=l,r++}var u=[];for(var c in e){if(null!=n[c])u.push([n[c],e[c]]);else if(t)throw new ValueError(\"Provided weight data has no target variable: \"+c);delete n[c]}if(t){var p=[];for(var h in n)p.push(h);if(p.length>0)throw new ValueError(p.length+\" of \"+r+\" weights are not set: \"+p)}batchSetValue(u)},t.prototype.updatedConfig=function(){var e=this.getConfig(),t={};return t.className=this.getClassName(),t.config=e,t.kerasVersion=\"tfjs-layers \"+version,t.backend=\"TensorFlow.js\",t},t.prototype.toJSON=function(e,t){void 0===t&&(t=!0);var n=convertTsToPythonic(this.updatedConfig());return t?JSON.stringify(n):n},t.prototype.call=function(e,t){var n=this;return tidy(function(){e=toList(e);for(var r=new FeedDict,i=0;i<n.inputs.length;++i)r.add(n.inputs[i],e[i]);return execute(n.outputs,r,t)})},t.prototype.computeMask=function(e,t){var n=this;return tidy(function(){var r;return e=toList(e),r=null==t?pyListRepeat(null,e.length):toList(t),n.runInternalGraph(e,r)[1]})},t.prototype.computeOutputShape=function(e){var t=normalizeShapeList(e);if(t.length!==this.inputLayers.length)throw new ValueError(\"Invalid inputShape argument \"+e+\": model has \"+this.inputLayers.length+\" tensor inputs.\");for(var n={},r=0;r<t.length;r++){var i=this.inputLayers[r],a=t[r];n[A=i.name+\"_0_0\"]=a}var o=Object.keys(this.nodesByDepth).map(function(e){return parseInt(e,10)}).sort(reverseNumberCompare);if(o.length>1)for(var s=0,l=o;s<l.length;s++)for(var u=l[s],c=0,p=this.nodesByDepth[u];c<p.length;c++){var h=p[c];i=h.outboundLayer;if(-1===this.inputLayers.map(function(e){return e.id}).indexOf(i.id)){for(var d=[],f=0;f<h.inboundLayers.length;f++){var g=h.inboundLayers[f],m=h.nodeIndices[f],y=h.tensorIndices[f],v=n[A=g.name+\"_\"+m+\"_\"+y];d.push(v)}var b=normalizeShapeList(i.computeOutputShape(singletonOrArray(d))),w=i.inboundNodes.indexOf(h);for(f=0;f<b.length;f++){n[A=i.name+\"_\"+w+\"_\"+f]=b[f]}}}var z=[],S=[];for(r=0;r<this.outputLayers.length;r++){i=this.outputLayers[r],w=this.outputLayersNodeIndices[r],y=this.outputLayersTensorIndices[r];var A=i.name+\"_\"+w+\"_\"+y;S.push(A)}for(r=0;r<S.length;r++){var _=S[r];assert(_ in n),z.push(n[_])}return singletonOrArray(z)},t.prototype.runInternalGraph=function(e,t){null==t&&(t=pyListRepeat(null,e.length));for(var n={},r=0;r<this.inputs.length;++r){var i=this.inputs[r],a=e[r],o=t[r];n[i.id]=[a,o]}for(var s=0,l=Object.keys(this.nodesByDepth).map(function(e){return parseInt(e,10)}).sort(reverseNumberCompare);s<l.length;s++)for(var u=l[s],c=0,p=this.nodesByDepth[u];c<p.length;c++){for(var h=p[c],d=h.outboundLayer,f=h.inputTensors,g=h.outputTensors,m=new Array,y=0,v=f;y<v.length;y++){(i=v[y]).id in n&&m.push(n[i.id])}if(m.length===f.length){var b={},w=void 0,z=void 0,S=void 0,A=void 0;if(null!=h.callArgs&&(b=h.callArgs),1===m.length){var _=m[0],I=_[0],C=_[1];null==b.mask&&(b.mask=C),S=toList(d.call(I,b)),A=toList(d.computeMask(I,C)),w=[I],z=[C]}else w=m.map(function(e){return e[0]}),z=m.map(function(e){return e[1]}),null==b.mask&&(b.mask=z),S=toList(d.call(w,b)),A=toList(d.computeMask(w,z));if(d.activityRegularizer)throw new NotImplementedError(\"LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.\");for(r=0;r<g.length;++r){i=g[r],a=S[r],o=A[r];n[i.id]=[a,o]}}}for(var E=[],N=[],k=[],x=0,L=this.outputs;x<L.length;x++){assert((i=L[x]).id in n,\"Could not compute output \"+i.name+\" : \"+i.id);var T=n[i.id],D=T[0];o=T[1];k.push(D.shape),E.push(D),N.push(o)}return[E,N,k]},t.prototype.buildNodeConversionMap=function(e){for(var n,r={},i=0,a=this.layers;i<a.length;i++){var o=a[i];n=o instanceof t?1:0;for(var s=0;s<o.inboundNodes.length;s++){var l=t.nodeKey(o,s);this.containerNodes.has(l)&&(r[l]=n,n+=1)}}return r},t.prototype.getLayer=function(e,t){if(null!=t){if(this.layers.length<=t)throw new ValueError(\"Was asked to retrieve layer at index \"+t+\", but model only has \"+this.layers.length+\" layer(s).\");return this.layers[t]}if(null==e)throw new ValueError(\"Provide either a layer name or layer index\");for(var n=0,r=this.layers;n<r.length;n++){var i=r[n];if(i.name===e)return i}throw new ValueError(\"No such layer: \"+e)},t.prototype.calculateLosses=function(){var e=this;return tidy(function(){for(var n=[],r=0,i=e.layers;r<i.length;r++)for(var a=i[r],o=0;o<a.inboundNodes.length;++o){var s=t.nodeKey(a,o);e.containerNodes.has(s)&&n.push.apply(n,a.calculateLosses())}return n})},t.prototype.getConfig=function(){for(var e={name:this.name},n=this.buildNodeConversionMap(this.layers),r=[],i=0,a=this.layers;i<a.length;i++){for(var o=(w=a[i]).getClassName(),s=w.getConfig(),l=[],u=0;u<w.inboundNodes.length;u++){var c=w.inboundNodes[u],p=t.nodeKey(w,u),h={};if(this.containerNodes.has(p)){if(c.callArgs)try{JSON.stringify(c.callArgs),h=c.callArgs}catch(e){console.warn(\"Layer \"+w.name+\" was passed non-serializable keyword arguments: \"+c.callArgs+\". They will not be included in the serialized model (and thus will be missing at deserialization time).\"),h={}}if(c.inboundLayers.length>0){for(var d=[],f=0;f<c.inboundLayers.length;f++){var g=c.inboundLayers[f],m=c.nodeIndices[f],y=c.tensorIndices[f];null==(S=n[t.nodeKey(g,m)])&&(S=0),d.push([g.name,S,y,h])}l.push(d)}}}var v={};v.name=w.name,v.className=o,v.config=s,v.inboundNodes=l,r.push(v)}e.layers=r;var b=[];for(f=0;f<this.inputLayers.length;f++){var w=this.inputLayers[f];m=this.inputLayersNodeIndices[f],p=t.nodeKey(w,m);if(this.containerNodes.has(p)){null!==(S=n[p])&&void 0!==S||(S=0);y=this.inputLayersTensorIndices[f];b.push([w.name,S,y])}}e.inputLayers=b;var z=[];for(f=0;f<this.outputLayers.length;f++){w=this.outputLayers[f],m=this.outputLayersNodeIndices[f],p=t.nodeKey(w,m);if(this.containerNodes.has(p)){var S;null!==(S=n[p])&&void 0!==S||(S=0);y=this.outputLayersTensorIndices[f];z.push([w.name,S,y])}}return e.outputLayers=z,e},t.fromConfig=function(e,t,n,r){void 0===n&&(n={}),void 0===r&&(r=!1);var i={},a={};function o(e,t){e.name in a?a[e.name].push(t):a[e.name]=[t]}function s(e,t){for(var n,r=[],a=0,s=t;a<s.length;a++){var l=s[a],u=l[0],c=l[1],p=l[2];if(n=null==l[3]?{}:l[3],!(u in i))return void o(e,t);var h=i[u];if(h.inboundNodes.length<=c)return void o(e,t);var d=h.inboundNodes[c];r.push(d.outputTensors[p])}r.length>0&&e.apply(singletonOrArray(r),n)}function l(e){var n=e.name,a=deserialize(e,null!=t.customObjects?t.customObjects:{});a.setFastWeightInitDuringBuild(r),i[n]=a,e.inboundNodes.forEach(function(e){if(!(e instanceof Array))throw new ValueError(\"Corrupted configuration, expected array for nodeData: \"+e);o(a,e)})}for(var u=t.name,c=t.layers,p=0,h=c;p<h.length;p++){l(g=h[p])}for(;!isObjectEmpty(a);)for(var d=0,f=c;d<f.length;d++){var g=f[d];if((k=i[g.name]).name in a){var m=a[k.name];delete a[k.name];for(var y=0,v=m;y<v.length;y++){s(k,v[y])}}}for(var b=[],w=[],z=0,S=t.inputLayers;z<S.length;z++){var A=(g=S[z])[0],_=g[1],I=g[2];assert(A in i);var C=(k=i[A]).inboundNodes[_].outputTensors;b.push(C[I])}for(var E=0,N=t.outputLayers;E<N.length;E++){A=(g=N[E])[0],_=g[1],I=g[2];assert(A in i);var k;C=(k=i[A]).inboundNodes[_].outputTensors;w.push(C[I])}return new e({inputs:b,outputs:w,name:u})},Object.defineProperty(t.prototype,\"stateful\",{get:function(){if(this._stateful)throw new ValueError(\"Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.\");for(var e=0,t=this.layers;e<t.length;e++){if(t[e].stateful)return!0}return!1},enumerable:!0,configurable:!0}),t.prototype.resetStates=function(){var e=this;tidy(function(){e.layers.forEach(function(e){e.stateful&&e.resetStates()})})},t}(Layer);function standardizeSampleOrClassWeights(e,t,n){var r=t.length;if(null==e||Array.isArray(e)&&0===e.length)return t.map(function(e){return null});if(1===r)return Array.isArray(e)&&1===e.length?e:\"object\"==typeof e&&t[0]in e?[e[t[0]]]:[e];if(Array.isArray(e)){if(e.length!==r)throw new Error(\"Provided \"+n+\" is an array of \"+e.length+\" element(s), but the model has \"+r+\" outputs. Make sure a set of weights is provided for each model output.\");return e}if(\"object\"==typeof e&&Object.keys(e).length>0&&\"object\"==typeof e[Object.keys(e)[0]]){var i=[];return t.forEach(function(t){t in e?i.push(e[t]):i.push(null)}),i}throw new Error(\"The model has multiple (\"+r+\") outputs, so \"+n+\" must be either an array with \"+r+\" elements or an object with \"+t+\" keys. Provided \"+n+\" not understood: \"+JSON.stringify(e))}function standardizeClassWeights(e,t){return standardizeSampleOrClassWeights(e,t,\"classWeight\")}function standardizeWeights(e,t,n,r){return __awaiter(this,void 0,void 0,function(){var i,a,o,s,l;return __generator(this,function(u){switch(u.label){case 0:if(null!=t||null!=r)throw new Error(\"Support sampleWeight is not implemented yet\");return null==n?[3,2]:(i=tidy(function(){if(1===e.shape.length)return e.clone();if(2===e.shape.length){if(e.shape[1]>1){return e.argMax(1)}if(1===e.shape[1])return e.reshape([e.shape[0]]);throw new Error(\"Encountered unexpected last-dimension size (\"+e.shape[1]+\") during handling of class weights. The size is expected to be >= 1.\")}throw new Error(\"Unexpected rank of target (y) tensor (\"+e.rank+\") during handling of class weights. The rank is expected to be 1 or 2.\")}),s=(o=Array).from,[4,i.data()]);case 1:return a=s.apply(o,[u.sent()]),dispose(i),l=[],a.forEach(function(e){if(null==n[e])throw new Error(\"classWeight must contain all classes in the training data. The class \"+e+\" exists in the data but not in classWeight\");l.push(n[e])}),[2,tensor1d(l,\"float32\")];case 2:return[2,null]}})})}function computeWeightedLoss(e,t){return mul(e,t)}var DEFAULT_VALIDATION_BATCH_SIZE=32;function standardizeDataIteratorOutput(e,t){var n,r,i=t;n=i.xs,r=i.ys,util.assert(null!=n&&null!=r,function(){return\"A Dataset iterator for fitDataset() is expected to generate objects of the form `{xs: xVal, ys: yVal}`, where the two values may be `tf.Tensor`, an array of Tensors, or a map of string to Tensor.  The provided Dataset instead generates \"+t});var a=flattenTensorOrArrayOrMap(\"input\",e.inputNames,n),o=flattenTensorOrArrayOrMap(\"output\",e.outputNames,r),s=a[0].shape[0];util.assert(a.length===e.inputs.length,function(){return\"LayersModel has \"+e.inputs.length+\" inputs, but the dataset provides \"+a.length+\" inputs.  (Expected input keys: \"+JSON.stringify(e.inputNames)+\")\"}),util.assert(o.length===e.outputs.length,function(){return\"LayersModel has \"+e.outputs.length+\" outputs, but the dataset provides \"+o.length+\" outputs.  (Expected output keys: \"+JSON.stringify(e.outputNames)+\")\"});for(var l=function(t){util.assert(a[t].shape[0]===s,function(){return\"Batch size mismatch: input \"+e.inputNames[t]+\" has \"+a[t].shape[0]+\"; expected  \"+s+\" based on input \"+e.inputNames[0]+\".\"})},u=0;u<a.length;u++)l(u);for(var c=function(t){util.assert(o[t].shape[0]===s,function(){return\"Batch size mismatch: output \"+e.outputNames[t]+\" has \"+o[t].shape[0]+\"; expected  \"+s+\" based on input \"+e.inputNames[0]+\".\"})},p=0;p<o.length;p++)c(p);return{xs:a,ys:o}}function flattenTensorOrArrayOrMap(e,t,n){if(n instanceof Tensor)return[n];if(Array.isArray(n))return util.assert(n.length===t.length,function(){return\"Received an array of \"+n.length+\" Tensors, but expected \"+t.length+\" to match the \"+e+\" keys \"+t+\".\"}),n;for(var r=[],i=0,a=t;i<a.length;i++){var o=a[i];if(null==n[o])throw new ValueError(\"The feature data generated by the dataset lacks the required \"+e+\" key '\"+o+\"'.\");r.push(n[o])}return r}function standardizeTensorValidationData(e){if(3===e.length)throw new NotImplementedError(\"Validation with sample weights is not implemented yet.\");return{xs:e[0],ys:e[1]}}function fitDataset(e,t,n){return __awaiter(this,void 0,void 0,function(){var r,i,a,o,s,l,u,c,p,h,d,f,g,m,y,v,b,w,z,S,A,_,I,C,E,N,k,x,L,T,D,O,R,M;return __generator(this,function(P){switch(P.label){case 0:if(r=null!=n.batchesPerEpoch,util.assert(null!=e.optimizer,function(){return\"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig).\"}),util.assert(null!=n,function(){return\"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call.\"}),util.assert(null!=n.epochs&&n.epochs>0&&Number.isInteger(n.epochs),function(){return\"For fitDataset(), config.epochs is expected to be a positive integer, but got \"+n.epochs}),util.assert(!r||n.batchesPerEpoch>0&&Number.isInteger(n.batchesPerEpoch),function(){return\"For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got \"+n.batchesPerEpoch}),util.assert(null==n.validationSplit,function(){return\"`validationSplit` is not supported by `fitDataset()`. Use validationData instead.\"}),e.isTraining)throw new Error(\"Cannot start training because another fit() call is ongoing.\");e.isTraining=!0,P.label=1;case 1:return P.trys.push([1,,26,27]),i=null!=n.validationData,a=void 0,o=void 0,i&&(isDatasetObject(n.validationData)?util.assert(null==n.validationBatches||n.validationBatches>0&&Number.isInteger(n.validationBatches),function(){return\"For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got \"+n.validationBatches}):(s=standardizeTensorValidationData(n.validationData),a=s.xs,o=s.ys)),l=e.makeTrainFunction(),u=e.getDedupedMetricsNames(),c=void 0,c=i?u.slice().concat(u.map(function(e){return\"val_\"+e})):u.slice(),p=standardizeCallbacks(n.callbacks,n.yieldEvery),h=null==n.verbose?1:n.verbose,d=configureCallbacks(p,h,n.epochs,null,null,getStepsPerEpoch(t,n),null,i,c),f=d.callbackList,g=d.history,f.setModel(e),e.history=g,[4,f.onTrainBegin()];case 2:return P.sent(),e.stopTraining_=!1,m=null==n.initialEpoch?0:n.initialEpoch,[4,t.iterator()];case 3:y=P.sent(),P.label=4;case 4:return m<n.epochs?(v={},[4,f.onEpochBegin(m)]):[3,23];case 5:return P.sent(),b=0,w=0,r?[3,7]:[4,t.iterator()];case 6:y=P.sent(),P.label=7;case 7:return!r||b<n.batchesPerEpoch?[4,y.next()]:[3,21];case 8:return z=P.sent(),r&&z.done?(console.warn(\"You provided `batchesPerEpoch` as \"+n.batchesPerEpoch+\", but your dataset iterator ran out of data after \"+b+\" batches; interrupting training. Make sure that your dataset can generate at least `batchesPerEpoch * epochs` batches (in this case, \"+n.batchesPerEpoch*n.epochs+\" batches). You may need to use the repeat() function when building your dataset.\"),[3,21]):null==z.value?[3,15]:(S=standardizeDataIteratorOutput(e,z.value),A=S.xs,_=S.ys,(I={}).batch=w,I.size=A[0].shape[0],[4,f.onBatchBegin(w,I)]);case 9:if(P.sent(),C=[],null==n.classWeight)return[3,13];E=standardizeClassWeights(n.classWeight,e.outputNames),M=0,P.label=10;case 10:return M<E.length?(k=(N=C).push,[4,standardizeWeights(_[M],null,E[M])]):[3,13];case 11:k.apply(N,[P.sent()]),P.label=12;case 12:return++M,[3,10];case 13:for(x=A.concat(_).concat(C),L=l(x),dispose(x),M=0;M<u.length;++M)T=u[M],D=L[M],I[T]=D,keep(D);return[4,f.onBatchEnd(w,I)];case 14:P.sent(),disposeTensorsInLogs(I),w++,b++,P.label=15;case 15:return(r?b>=n.batchesPerEpoch:z.done)?i?(O=void 0,isDatasetObject(n.validationData)?(R=toList,[4,e.evaluateDataset(n.validationData,{batches:n.validationBatches})]):[3,17]):[3,19]:[3,20];case 16:return O=R.apply(void 0,[P.sent()]),[3,18];case 17:O=toList(e.evaluate(a,o,{batchSize:null==n.validationBatchSize?DEFAULT_VALIDATION_BATCH_SIZE:n.validationBatchSize,verbose:0})),P.label=18;case 18:for(M=0;M<e.metricsNames.length;++M)v[\"val_\"+e.metricsNames[M]]=O[M];P.label=19;case 19:return[3,21];case 20:return e.stopTraining_?[3,21]:[3,7];case 21:return[4,f.onEpochEnd(m,v)];case 22:return P.sent(),m++,e.stopTraining_?[3,23]:[3,4];case 23:return[4,f.onTrainEnd()];case 24:return P.sent(),[4,e.history.syncData()];case 25:return P.sent(),[2,e.history];case 26:return e.isTraining=!1,[7];case 27:return[2]}})})}function getStepsPerEpoch(e,t){var n=null;return null!=t.batchesPerEpoch?n=t.batchesPerEpoch:Number.isFinite(e.size)&&(n=e.size),n}function isDatasetObject(e){return\"function\"==typeof e.iterator}function isLazyIteratorObject(e){return\"function\"==typeof e.next}function evaluateDataset(e,t,n){return __awaiter(this,void 0,void 0,function(){var r,i,a,o,s,l,u,c,p,h;return __generator(this,function(d){switch(d.label){case 0:if(r=null!=(n=n||{}).batches,i=e.testFunction,a=[],n.verbose>0)throw new NotImplementedError(\"Verbose mode is not implemented yet.\");return util.assert(!r||n.batches>0&&Number.isInteger(n.batches),function(){return\"Test loop expects `batches` to be a positive integer, but received \"+JSON.stringify(n.batches)}),isLazyIteratorObject(t)?(s=t,[3,3]):[3,1];case 1:return[4,t.iterator()];case 2:s=d.sent(),d.label=3;case 3:o=s,l=0,u=0,c=function(){var t;return __generator(this,function(s){switch(s.label){case 0:return[4,o.next()];case 1:return t=s.sent(),a=tidy(function(){if(t.value){var n=standardizeDataIteratorOutput(e,t.value),r=n.xs,o=n.ys,s=r.concat(o),c=tidy(function(){return i(s)});if(dispose(s),0===u)for(var p=0;p<c.length;++p)a.push(scalar(0));var h=s[0].shape[0],d=function(e){var t=c[e],n=a[e];a[e]=tidy(function(){return add(a[e],mul(h,t))}),u>0&&dispose(n)};for(p=0;p<c.length;++p)d(p);dispose(c),l+=h,++u}return a}),t.done?(r&&console.warn(\"Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least `batches` batches (in this case, \"+n.batches+\" batches). You may need to use the repeat() function when building your dataset.\"),[2,\"break\"]):[2]}})},d.label=4;case 4:return!r||u<n.batches?[5,c()]:[3,6];case 5:return\"break\"===d.sent()?[3,6]:[3,4];case 6:for(p=0;p<a.length;++p)h=a[p],a[p]=div(a[p],l),dispose(h);return[2,singletonOrArray(a)]}})})}function checkBatchSize(e){util.assert(e>0&&Number.isInteger(e),function(){return\"batchSize is required to be a positive integer, but got \"+e})}function sliceArrays(e,t,n){return null==e?[null]:Array.isArray(e)?e.map(function(e){return sliceAlongFirstAxis(e,t,n-t)}):sliceAlongFirstAxis(e,t,n-t)}function sliceArraysByIndices(e,t){return tidy(function(){return null==e?null:Array.isArray(e)?e.map(function(e){return sliceArraysByIndices(e,t)}):gather$1(e,\"int32\"===t.dtype?t:t.toInt())})}function makeBatches(e,t){for(var n=[],r=0,i=null;r<e;)(i=r+t)>=e&&(i=e),n.push([r,i]),r=i;return n}function fitLoop(e,t,n,r,i,a,o,s,l,u,c,p,h,d,f){return __awaiter(this,void 0,void 0,function(){var g,m,y,v,b,w,z,S;return __generator(this,function(A){switch(A.label){case 0:if(null==i&&(i=32),null==a&&(a=1),null==c&&(c=!0),null==h&&(h=0),g=!1,null!=l&&null!=u&&(g=!0),null!=f&&(g=!0,null==d))throw new ValueError(\"Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.\");return null!=(m=e.checkNumSamples(n,i,d,\"steps_per_epoch\"))&&(y=range(0,m)),null==o&&(o=1),v=configureCallbacks(s,o,a,h,m,d,i,g,p),b=v.callbackList,w=v.history,b.setModel(e),e.history=w,[4,b.onTrainBegin()];case 1:A.sent(),e.stopTraining_=!1,z=function(a){var o,s,p,h,f;return __generator(this,function(v){switch(v.label){case 0:return[4,b.onEpochBegin(a)];case 1:if(v.sent(),o={},null==d)return[3,2];throw new NotImplementedError(\"stepsPerEpoch mode is not implemented yet.\");case 2:if(\"batch\"===c)throw new NotImplementedError(\"batch shuffling is not implemneted yet\");c&&util.shuffle(y),s=tensor1d(y),p=makeBatches(m,i),h=function(a){var c;return __generator(this,function(h){switch(h.label){case 0:return c={},[4,b.onBatchBegin(a,c)];case 1:return h.sent(),tidy(function(){var h=p[a][0],d=p[a][1],f=sliceAlongFirstAxis(s,h,d-h);c.batch=a,c.size=d-h;for(var m=sliceArraysByIndices(n,f),y=t(m),v=0;v<r.length;++v){var b=r[v],w=y[v];c[b]=w,keep(w)}if(a===p.length-1&&g){var z=e.testLoop(l,u,i);for(v=0;v<r.length;++v){b=r[v],w=z[v];keep(w),o[\"val_\"+b]=w}}}),[4,b.onBatchEnd(a,c)];case 2:return h.sent(),disposeTensorsInLogs(c),e.stopTraining_?[2,\"break\"]:[2]}})},f=0,v.label=3;case 3:return f<p.length?[5,h(f)]:[3,6];case 4:if(\"break\"===v.sent())return[3,6];v.label=5;case 5:return++f,[3,3];case 6:s.dispose(),v.label=7;case 7:return[4,b.onEpochEnd(a,o)];case 8:return v.sent(),e.stopTraining_?[2,\"break\"]:[2]}})},S=h,A.label=2;case 2:return S<a?[5,z(S)]:[3,5];case 3:if(\"break\"===A.sent())return[3,5];A.label=4;case 4:return++S,[3,2];case 5:return[4,b.onTrainEnd()];case 6:return A.sent(),[4,e.history.syncData()];case 7:return A.sent(),[2,e.history]}})})}function fitTensors(e,t,n,r){return void 0===r&&(r={}),__awaiter(this,void 0,void 0,function(){var i,a,o,s,l,u,c,p,h,d,f,g,m,y,v,b,w,z,S,A,_,I;return __generator(this,function(C){switch(C.label){case 0:if(e.isTraining)throw new Error(\"Cannot start training because another fit() call is ongoing.\");e.isTraining=!0,C.label=1;case 1:return C.trys.push([1,,7,8]),checkBatchSize(p=null==r.batchSize?32:r.batchSize),h=!1,[4,e.standardizeUserData(t,n,r.sampleWeight,r.classWeight,h,p)];case 2:if(d=C.sent(),i=d[0],a=d[1],c=d[2],f=!1,g=void 0,!(null!=r.validationData&&r.validationData.length>0))return[3,4];if(f=!0,2!==r.validationData.length)throw 3===r.validationData.length?new NotImplementedError(\"validationData including sample weights is not supported yet.\"):new ValueError(\"When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; \"+r.validationData+\" is invalid.\");return o=r.validationData[0],s=r.validationData[1],m=!0,[4,e.standardizeUserData(o,s,null,null,m,p)];case 3:return y=C.sent(),l=y[0],u=y[1],g=l.concat(u),[3,5];case 4:null!=r.validationSplit&&r.validationSplit>0&&r.validationSplit<1?(f=!0,v=Math.floor(i[0].shape[0]*(1-r.validationSplit)),b=i[0].shape[0],l=sliceArrays(i,v,b),i=sliceArrays(i,0,v),u=sliceArrays(a,v,b),a=sliceArrays(a,0,v),g=l.concat(u)):null!=r.validationSteps&&(f=!0),C.label=5;case 5:return w=i.concat(a).concat(c),e.checkTrainableWeightsConsistency(),z=e.makeTrainFunction(),S=e.getDedupedMetricsNames(),A=void 0,_=void 0,f?(e.makeTestFunction(),A=e.testFunction,_=S.slice().concat(S.map(function(e){return\"val_\"+e}))):(A=null,g=[],_=S.slice()),I=standardizeCallbacks(r.callbacks,r.yieldEvery),[4,fitLoop(e,z,w,S,p,r.epochs,r.verbose,I,A,g,r.shuffle,_,r.initialEpoch,null,null)];case 6:return[2,C.sent()];case 7:return e.isTraining=!1,disposeNewTensors(i,t),disposeNewTensors(a,n),disposeNewTensors(l,o),disposeNewTensors(u,s),null!=c&&dispose(c),[7];case 8:return[2]}})})}function ensureTensorsRank2OrHigher(e){var t=[];e instanceof Tensor&&(e=[e]);for(var n=0;n<e.length;++n){var r=e[n];if(1===r.rank)t.push(expandDims$1(r,1));else{if(0===r.rank)throw new Error(\"Expected tensor to be at least 1D, but received a 0D tensor (scalar).\");t.push(r)}}return t}function disposeNewTensors(e,t){if(null!=e){var n=[];if(t instanceof Tensor)n.push(t.id);else if(Array.isArray(t))t.forEach(function(e){return n.push(e.id)});else if(null!=t)for(var r in t){var i=t[r];n.push(i.id)}var a=[];if(e instanceof Tensor)-1===n.indexOf(e.id)&&a.push(e);else if(Array.isArray(e))e.forEach(function(e){-1===n.indexOf(e.id)&&a.push(e)});else if(null!=e)for(var o in e){var s=e[o];-1===n.indexOf(s.id)&&a.push(s)}a.forEach(function(e){e.isDisposed||e.dispose()})}}function isDataTensor(e){return e instanceof Tensor}function isDataArray(e){return Array.isArray(e)}function isDataDict(e){return!isDataTensor(e)&&!isDataArray(e)}function standardizeInputData(e,t,n,r,i){if(void 0===r&&(r=!0),void 0===i&&(i=\"\"),null==t||0===t.length){if(null!=e){var a=!1;if(isDataArray(e)&&e.length>0)a=!0;else if(isDataDict(e)){for(var o in e)if(e.hasOwnProperty(o)){a=!0;break}}else a=!0;if(a)throw new ValueError(\"Error when checking model \"+i+\" expected no data, but got \"+e)}return[]}if(null==e)return t.map(function(e){return null});var s;if(isDataDict(e)){e=e,s=[];for(var l=0,u=t;l<u.length;l++){var c=u[l];if(null==e[c])throw new ValueError('No data provided for \"'+c+'\". Need data for each key in: '+t);s.push(e[c])}}else if(isDataArray(e)){if((e=e).length!==t.length)throw new ValueError(\"Error when checking model \"+i+\": the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see \"+t.length+\" Tensor(s), but instead got the following list of Tensor(s): \"+e);s=e}else{if(e=e,t.length>1)throw new ValueError(\"The model \"+i+\" expects \"+t.length+\" Tensor(s), but only received one Tensor. Found: Tensor with shape \"+e.shape);s=[e]}if(s=ensureTensorsRank2OrHigher(s),null!=n)for(var p=0;p<t.length;++p)if(null!=n[p]){var h=s[p];if(h.shape.length!==n[p].length)throw new ValueError(\"Error when checking \"+i+\": expected \"+t[p]+\" to have \"+n[p].length+\" dimension(s). but got array with shape \"+h.shape);for(var d=0;d<n[p].length;++d)if(0!==d||r){var f=h.shape[d],g=n[p][d];if(null!=g&&g>=0&&f!==g)throw new ValueError(\"Error when checking \"+i+\": expected \"+t[p]+\" to have shape [\"+n[p]+\"], but got array with shape [\"+h.shape+\"].\")}}return s}function checkArrayLengths(e,t,n){var r=unique(e.map(function(e){return e.shape[0]}));r.sort();var i=unique(t.map(function(e){return e.shape[0]}));if(i.sort(),r.length>1)throw new ValueError(\"All input Tensors (x) should have the same number of samples. Got array shapes: \"+JSON.stringify(e.map(function(e){return e.shape})));if(i.length>1)throw new ValueError(\"All target Tensors (y) should have the same number of samples. Got array shapes: \"+JSON.stringify(t.map(function(e){return e.shape})));if(r.length>0&&i.length>0&&!util.arraysEqual(r,i))throw new ValueError(\"Input Tensors should have the same number of samples as target Tensors. Found \"+r[0]+\" input sample(s) and \"+i[0]+\" target sample(s).\")}function checkLossAndTargetCompatibility(e,t,n){for(var r=[meanSquaredError,binaryCrossentropy,categoricalCrossentropy],i=0;i<e.length;++i){var a=e[i],o=t[i],s=n[i];if(null!=o){if(o===categoricalCrossentropy&&1===a.shape[a.shape.length-1])throw new ValueError(\"You are passing a target array of shape \"+a.shape+\" while using a loss 'categorical_crossentropy'. 'categorical_crossentropy'expects targets to be binary matrices (1s and 0s) of shape [samples, classes].\");if(-1!==r.indexOf(o))for(var l=a.shape.slice(1),u=s.slice(1),c=0;c<l.length;++c){var p=l[c],h=u[c];if(null!=h&&p!==h)throw new ValueError(\"A target Tensor with shape \"+a.shape+\" was passed for an output of shape \"+s+\", while using a loss function that expects targets to have the same shape as the output.\")}}}}function checkInputData(e,t,n,r,i){var a;if(void 0===r&&(r=!0),void 0===i&&(i=\"\"),Array.isArray(e)){if(e.length!==t.length)throw new ValueError(\"Error when checking model \"+i+\": the Array of Tensors that you are passing to your model is not the size the the model expected. Expected to see \"+t.length+\" Tensor(s), but instead got \"+e.length+\" Tensors(s).\");a=e}else{if(t.length>1)throw new ValueError(\"The model expects \"+t.length+\" \"+i+\" Tensors, but only received one Tensor. Found: array with shape \"+JSON.stringify(e.shape)+\".\");a=[e]}if(null!=n)for(var o=0;o<t.length;++o)if(null!=n[o]){var s=a[o];if(s.shape.length!==n[o].length)throw new ValueError(\"Error when checking \"+i+\": expected \"+t[o]+\" to have \"+n[o].length+\" dimension(s), but got array with shape \"+JSON.stringify(s.shape));for(var l=0;l<n[o].length;++l)if(0!==l||r){var u=s.shape[l],c=n[o][l];if(null!=c&&c!==u)throw new ValueError(\"Error when checking \"+i+\": expected \"+t[o]+\" to have shape \"+JSON.stringify(n[o])+\" but got array with shape \"+JSON.stringify(s.shape)+\".\")}}}function collectMetrics(e,t){if(null==e||Array.isArray(e)&&0===e.length)return t.map(function(e){return[]});var n;if(\"string\"==typeof e||\"function\"==typeof e)n=[e];else{if(!Array.isArray(e)&&\"object\"!=typeof e)throw new TypeError(\"Type of metrics argument not understood. Expected an string,function, Array, or Object, found: \"+e);n=e}if(Array.isArray(n))return t.map(function(e){return n});for(var r=[],i=0,a=t;i<a.length;i++){var o=a[i],s=n.hasOwnProperty(o)?n[o]:[];Array.isArray(s)||(s=[s]),r.push(s)}return r}var LAYERS_MODEL_FORMAT_NAME=\"layers-model\",LayersModel=function(e){function t(t){var n=e.call(this,t)||this;return n.isTraining=!1,n}return __extends(t,e),t.prototype.summary=function(e,t,n){if(void 0===n&&(n=console.log),!this.built)throw new ValueError(\"This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).\");printSummary(this,e,t,n)},t.prototype.compile=function(e){var t=this;if(null==e.loss&&(e.loss=[]),this.loss=e.loss,\"string\"==typeof e.optimizer)this.optimizer_=getOptimizer(e.optimizer),this.isOptimizerOwned=!0;else{if(!(e.optimizer instanceof Optimizer))throw new ValueError(\"User-defined optimizer must be an instance of tf.Optimizer.\");this.optimizer_=e.optimizer,this.isOptimizerOwned=!1}var n=[];if(Array.isArray(e.loss)||\"string\"==typeof e.loss||\"function\"==typeof e.loss)if(Array.isArray(e.loss)){if(e.loss.length!==this.outputs.length)throw new ValueError(\"When passing an Array as loss, it should have one entry per model output. The model has \"+this.outputs.length+\" output(s), but you passed loss=\"+e.loss+\".\");var r=e.loss;n=r.map(function(e){return get(e)})}else{var i=get(e.loss);this.outputs.forEach(function(e){n.push(i)})}else{for(var a in e.loss=e.loss,e.loss)if(-1===this.outputNames.indexOf(a))throw new ValueError('Unknown entry in loss dictionary: \"'+a+'\". Only expected the following keys: '+this.outputNames);for(var o=0,s=this.outputNames;o<s.length;o++){var l=s[o];null==e.loss[l]&&console.warn('Output \"'+l+'\" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to '+l+\" during training\"),n.push(get(e.loss[l]))}}this.lossFunctions=n,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(var u=0;u<this.outputs.length;++u){var c=this.internalOutputShapes[u],p=this.outputNames[u];this.feedOutputNames.push(p),this.feedOutputShapes.push(c),this.feedLossFns.push(this.lossFunctions[u])}var h=[];this.metrics=e.metrics,this.metricsNames=[\"loss\"],this.metricsTensors=[],nameScope(\"loss\",function(){for(var e=0;e<t.outputs.length;++e)if(-1===h.indexOf(e)){var n=t.lossFunctions[e];t.outputs.length>1&&(t.metricsTensors.push([n,e]),t.metricsNames.push(t.outputNames[e]+\"_loss\"))}});var d=collectMetrics(e.metrics,this.outputNames);nameScope(\"metric\",function(){for(var e=function(e){if(-1!==h.indexOf(e))return\"continue\";!function(n){for(var r,i,a,o=function(n){if(\"string\"==typeof n&&-1!==[\"accuracy\",\"acc\",\"crossentropy\",\"ce\"].indexOf(n)){var o=t.internalOutputShapes[e];1===o[o.length-1]||t.lossFunctions[e]===binaryCrossentropy?-1!==[\"accuracy\",\"acc\"].indexOf(n)?i=binaryAccuracy:-1!==[\"crossentropy\",\"ce\"].indexOf(n)&&(i=binaryCrossentropy$1):t.lossFunctions[e]===sparseCategoricalCrossentropy?-1!==[\"accuracy\",\"acc\"].indexOf(n)?i=sparseCategoricalAccuracy:-1!==[\"crossentropy\",\"ce\"].indexOf(n)&&(i=sparseCategoricalCrossentropy$1):-1!==[\"accuracy\",\"acc\"].indexOf(n)?i=categoricalAccuracy:-1!==[\"crossentropy\",\"ce\"].indexOf(n)&&(i=categoricalCrossentropy$1);var s=void 0;-1!==[\"accuracy\",\"acc\"].indexOf(n)?s=\"acc\":-1!==[\"crossentropy\",\"ce\"].indexOf(n)&&(s=\"ce\"),a=i,r=\"\"+s}else{var l=get$1(n);a=l,r=\"\"+getLossOrMetricName(n)}var u;nameScope(r,function(){u=a}),function(e,n,r){t.outputNames.length>1&&(n=t.outputNames[e]+\"_\"+n),t.metricsNames.push(n),t.metricsTensors.push([r,e])}(e,r,u)},s=0,l=n;s<l.length;s++)o(l[s])}(d[e])},n=0;n<t.outputs.length;++n)e(n)}),this.collectedTrainableWeights=this.trainableWeights},t.prototype.checkTrainableWeightsConsistency=function(){null!=this.collectedTrainableWeights&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn(\"Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?\")},t.prototype.evaluate=function(e,t,n){void 0===n&&(n={});var r=null==n.batchSize?32:n.batchSize;checkBatchSize(r);var i=this.standardizeUserDataXY(e,t,!0,r);try{var a=i[0].concat(i[1]);this.makeTestFunction();var o=this.testFunction;return singletonOrArray(this.testLoop(o,a,r,n.verbose,n.steps))}finally{disposeNewTensors(i[0],e),disposeNewTensors(i[1],t)}},t.prototype.evaluateDataset=function(e,t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){return this.makeTestFunction(),[2,evaluateDataset(this,e,t)]})})},t.prototype.checkNumSamples=function(e,t,n,r){var i;if(void 0===r&&(r=\"steps\"),null!=n){if(i=null,null!=t)throw new ValueError(\"If \"+r+\" is set, batchSize must be null or undefined.Got batchSize = \"+t)}else{if(null==e)throw new ValueError(\"Either the input data should have a defined shape, or \"+r+\" shoud be specified.\");i=Array.isArray(e)?e[0].shape[0]:e.shape[0]}return i},t.prototype.execute=function(e,t){if(Array.isArray(t)&&0===t.length)throw new ValueError(\"`outputs` is an empty Array, which is not allowed.\");var n=Array.isArray(t),r=n?t:[t],i=this.retrieveSymbolicTensors(r),a=new FeedDict;if(e instanceof Tensor&&(e=[e]),Array.isArray(e)){if(e.length!==this.inputs.length)throw new ValueError(\"The number of inputs provided (\"+e.length+\") does not match the number of inputs of this model (\"+this.inputs.length+\").\");for(var o=0;o<this.inputs.length;++o)a.add(this.inputs[o],e[o])}else for(var s=0,l=this.inputs;s<l.length;s++){var u=l[s],c=e[u.name];if(null==c)throw new ValueError(\"No value is provided for the model's input \"+u.name);a.add(u,c)}var p=execute(i,a);return n?p:p[0]},t.prototype.retrieveSymbolicTensors=function(e){for(var t=pyListRepeat(null,e.length),n=e.length,r=0,i=this.layers;r<i.length;r++){for(var a=i[r],o=Array.isArray(a.output)?a.output:[a.output],s=o.map(function(e){return e.name}),l=0;l<e.length;++l){var u=s.indexOf(e[l]);if(-1!==u&&(t[l]=o[u],n--),0===n)break}if(0===n)break}if(n>0){var c=[];throw t.forEach(function(t,n){null==t&&c.push(e[n])}),new ValueError(\"Cannot find SymbolicTensors for output name(s): \"+JSON.stringify(c))}return t},t.prototype.predictLoop=function(e,t,n){var r=this;return void 0===t&&(t=32),void 0===n&&(n=!1),tidy(function(){var i=r.checkNumSamples(e);if(n)throw new NotImplementedError(\"Verbose predictLoop() is not implemented yet.\");for(var a=makeBatches(i,t),o=r.outputs.map(function(e){return[]}),s=function(t){tidy(function(){var n=a[t][0],i=a[t][1],o=sliceArrays(e,n,i),s=[];if(Array.isArray(o))for(var l=0;l<o.length;++l)s.push({key:r.inputs[l],value:o[l]});else s.push({key:r.inputs[0],value:o});var u=new FeedDict(s);return execute(r.outputs,u)}).forEach(function(e,t){return o[t].push(e)})},l=0;l<a.length;++l)s(l);return singletonOrArray(o.map(function(e){return concat(e,0)}))})},t.prototype.predict=function(e,t){void 0===t&&(t={});var n=ensureTensorsRank2OrHigher(e);checkInputData(n,this.inputNames,this.feedInputShapes,!1);try{var r=null==t.batchSize?32:t.batchSize;return checkBatchSize(r),this.predictLoop(n,r)}finally{disposeNewTensors(n,e)}},t.prototype.predictOnBatch=function(e){checkInputData(e,this.inputNames,this.feedInputShapes,!0);var t=(Array.isArray(e)?e[0]:e).shape[0];return this.predictLoop(e,t)},t.prototype.standardizeUserDataXY=function(e,t,n,r){if(void 0===n&&(n=!0),null==this.optimizer_)throw new RuntimeError(\"You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).\");for(var i=[],a=0;a<this.feedOutputShapes.length;++a){var o=this.feedOutputShapes[a];this.feedLossFns[a]===sparseCategoricalCrossentropy?i.push(o.slice(0,o.length-1).concat([1])):i.push(o)}if(checkArrayLengths(e=standardizeInputData(e,this.feedInputNames,this.feedInputShapes,!1,\"input\"),t=standardizeInputData(t,this.feedOutputNames,i,!1,\"target\"),null),checkLossAndTargetCompatibility(t,this.feedLossFns,this.feedOutputShapes),this.stateful&&null!=r&&r>0&&e[0].shape[0]%r!=0)throw new ValueError(\"In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size \"+r+\". Found: \"+e[0].shape[0]+\" sample(s).\");return[e,t]},t.prototype.standardizeUserData=function(e,t,n,r,i,a){return void 0===i&&(i=!0),__awaiter(this,void 0,void 0,function(){var o,s,l,u,c,p,h,d;return __generator(this,function(f){switch(f.label){case 0:if(o=this.standardizeUserDataXY(e,t,i,a),s=o[0],l=o[1],null!=n)throw new Error(\"sample weight is not supported yet.\");if(u=null,null==r)return[3,4];c=standardizeClassWeights(r,this.outputNames),u=[],p=0,f.label=1;case 1:return p<c.length?(d=(h=u).push,[4,standardizeWeights(l[p],null,c[p])]):[3,4];case 2:d.apply(h,[f.sent()]),f.label=3;case 3:return++p,[3,1];case 4:return[2,[s,l,u]]}})})},t.prototype.testLoop=function(e,t,n,r,i){var a=this;return void 0===r&&(r=0),tidy(function(){var o=a.checkNumSamples(t,n,i,\"steps\"),s=[];if(r>0)throw new NotImplementedError(\"Verbose mode is not implemented yet.\");if(null!=i)throw new NotImplementedError(\"steps mode in testLoop() is not implemented yet\");for(var l=makeBatches(o,n),u=tensor1d(range(0,o)),c=0;c<l.length;++c){var p=l[c][0],h=l[c][1],d=sliceAlongFirstAxis(u,p,h-p),f=sliceArraysByIndices(t,d),g=e(f);if(0===c)for(var m=0;m<g.length;++m)s.push(scalar(0));for(m=0;m<g.length;++m){var y=g[m];s[m]=add(s[m],mul(h-p,y))}}for(m=0;m<s.length;++m)s[m]=div(s[m],o);return s})},t.prototype.getDedupedMetricsNames=function(){for(var e=this.metricsNames,t=[],n=0;n<e.length;++n){var r=e[n],i=r;if(count(e,r)>1)i+=\"_\"+count(e.slice(0,n),r);t.push(i)}return t},t.prototype.makeTrainFunction=function(){var e=this;return function(t){var n=[],r=t.slice(0,e.inputs.length),i=t.slice(e.inputs.length,e.inputs.length+e.outputs.length),a=t.slice(e.inputs.length+e.outputs.length,e.inputs.length+2*e.outputs.length),o=[],s=e.collectedTrainableWeights.map(function(e){return e.read()});return[e.optimizer_.minimize(function(){for(var t=[],s=0;s<e.inputs.length;++s)t.push({key:e.inputs[s],value:r[s]});var l,u=new FeedDict(t),c=execute(e.outputs,u,{training:!0});for(s=0;s<e.lossFunctions.length;++s){var p=(0,e.lossFunctions[s])(i[s],c[s]);null!=a[s]&&(p=computeWeightedLoss(p,a[s]));var h=mean(p);n.push(h),l=0===s?p:add(l,p)}for(s=0;s<e.metricsTensors.length;++s){var d=void 0;if(e.outputs.length>1&&s<e.outputs.length)d=n[s];else{var f=e.metricsTensors[s][0],g=e.metricsTensors[s][1];d=mean(f(i[g],c[g]))}keep(d),o.push(d)}return l=mean(l),e.calculateLosses().forEach(function(e){l=add(l,e)}),l},!0,s)].concat(o)}},t.prototype.makeTestFunction=function(){var e=this;this.testFunction=function(t){return tidy(function(){for(var n,r=[],i=t.slice(0,e.inputs.length),a=t.slice(e.inputs.length,e.inputs.length+e.outputs.length),o=[],s=0;s<e.inputs.length;++s)o.push({key:e.inputs[s],value:i[s]});var l=new FeedDict(o),u=execute(e.outputs,l);for(s=0;s<e.lossFunctions.length;++s){var c=e.lossFunctions[s],p=mean(c(a[s],u[s]));n=0===s?p:add(n,p),r.push(n)}for(s=0;s<e.metricsTensors.length;++s){var h=e.metricsTensors[s][0],d=e.metricsTensors[s][1],f=mean(h(a[d],u[d]));r.push(f)}return r})}},t.prototype.fit=function(e,t,n){return void 0===n&&(n={}),__awaiter(this,void 0,void 0,function(){return __generator(this,function(r){return[2,fitTensors(this,e,t,n)]})})},t.prototype.fitDataset=function(e,t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){return[2,fitDataset(this,e,t)]})})},t.prototype.trainOnBatch=function(e,t){return __awaiter(this,void 0,void 0,function(){var n,r,i,a,o,s,l,u,c;return __generator(this,function(p){switch(p.label){case 0:return[4,this.standardizeUserData(e,t)];case 1:n=p.sent(),r=n[0],i=n[1],a=this.makeTrainFunction(),o=a(r.concat(i)),s=[],l=0,u=o,p.label=2;case 2:return l<u.length?[4,u[l].data()]:[3,5];case 3:c=p.sent(),s.push(c[0]),p.label=4;case 4:return l++,[3,2];case 5:return dispose(o),[2,singletonOrArray(s)]}})})},t.prototype.getNamedWeights=function(e){for(var t=[],n=null!=e&&e.trainableOnly,r=n?this.trainableWeights:this.weights,i=this.getWeights(n),a=0;a<r.length;++a)n&&!r[a].trainable||t.push({name:r[a].originalName,tensor:i[a]});return t},Object.defineProperty(t.prototype,\"stopTraining\",{get:function(){return this.stopTraining_},set:function(e){this.stopTraining_=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"optimizer\",{get:function(){return this.optimizer_},set:function(e){this.optimizer_!==e&&(this.optimizer_=e,this.isOptimizerOwned=!1)},enumerable:!0,configurable:!0}),t.prototype.dispose=function(){var t=e.prototype.dispose.call(this);if(0===t.refCountAfterDispose&&null!=this.optimizer&&this.isOptimizerOwned){var n=memory().numTensors;this.optimizer_.dispose(),t.numDisposedVariables+=n-memory().numTensors}return t},t.prototype.getLossIdentifiers=function(){var e;if(\"string\"==typeof this.loss)e=toSnakeCase(this.loss);else if(Array.isArray(this.loss)){for(var t=0,n=this.loss;t<n.length;t++){if(\"string\"!=typeof n[t])throw new Error(\"Serialization of non-string loss is not supported.\")}e=this.loss.map(function(e){return toSnakeCase(e)})}else{var r=Object.keys(this.loss);e={};for(var i=this.loss,a=0,o=r;a<o.length;a++){var s=o[a];if(\"string\"!=typeof i[s])throw new Error(\"Serialization of non-string loss is not supported.\");e[s]=toSnakeCase(i[s])}}return e},t.prototype.getMetricIdentifiers=function(){if(\"string\"==typeof this.metrics||\"function\"==typeof this.metrics)return[toSnakeCase(getLossOrMetricName(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(function(e){return toSnakeCase(getLossOrMetricName(e))});var e={};for(var t in this.metrics)e[t]=toSnakeCase(getLossOrMetricName(this.metrics[t]));return e},t.prototype.getTrainingConfig=function(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}},t.prototype.loadTrainingConfig=function(e){if(null!=e.weighted_metrics)throw new Error(\"Loading weight_metrics is not supported yet.\");if(null!=e.loss_weights)throw new Error(\"Loading loss_weights is not supported yet.\");if(null!=e.sample_weight_mode)throw new Error(\"Loading sample_weight_mode is not supported yet.\");var t,n,r=deserialize(convertPythonicToTs(e.optimizer_config));if(\"string\"==typeof e.loss)t=toCamelCase(e.loss);else if(Array.isArray(e.loss))t=e.loss.map(function(e){return toCamelCase(e)});else if(null!=e.loss)for(var i in t={},e.loss)t[i]=toCamelCase(e.loss[i]);if(Array.isArray(e.metrics))n=e.metrics.map(function(e){return toCamelCase(e)});else if(null!=e.metrics)for(var i in n={},e.metrics)n[i]=toCamelCase(e.metrics[i]);this.compile({loss:t,metrics:n,optimizer:r})},t.prototype.save=function(e,t){return __awaiter(this,void 0,void 0,function(){var n,r,i,a,o,s,l,u,c,p,h,d,f,g;return __generator(this,function(m){switch(m.label){case 0:if(\"string\"==typeof e){if(0===(n=io.getSaveHandlers(e)).length)throw new ValueError(\"Cannot find any save handlers for URL '\"+e+\"'\");if(n.length>1)throw new ValueError(\"Found more than one (\"+n.length+\") save handlers for URL '\"+e+\"'\");e=n[0]}if(null==e.save)throw new ValueError(\"LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.\");return[4,io.encodeWeights(this.getNamedWeights(t))];case 1:return r=m.sent(),i=!1,a=null,o=this.toJSON(a,i),s={modelTopology:o,format:LAYERS_MODEL_FORMAT_NAME,generatedBy:\"TensorFlow.js tfjs-layers v\"+version,convertedBy:null},null!=t&&t.includeOptimizer&&null!=this.optimizer?(s.trainingConfig=this.getTrainingConfig(),l=\"optimizer\",d=(h=io).encodeWeights,[4,this.optimizer.getWeights()]):[3,4];case 2:return[4,d.apply(h,[m.sent(),l])];case 3:u=m.sent(),c=u.data,p=u.specs,(g=r.specs).push.apply(g,p),r.data=io.concatenateArrayBuffers([r.data,c]),m.label=4;case 4:return null!=this.userDefinedMetadata&&(f=!0,checkUserDefinedMetadata(this.userDefinedMetadata,this.name,f),s.userDefinedMetadata=this.userDefinedMetadata),s.weightData=r.data,s.weightSpecs=r.specs,[2,e.save(s)]}})})},t.prototype.setUserDefinedMetadata=function(e){checkUserDefinedMetadata(e,this.name),this.userDefinedMetadata=e},t.prototype.getUserDefinedMetadata=function(){return this.userDefinedMetadata},t.className=\"Model\",t}(Container);function modelFromJSON(e,t){return __awaiter(this,void 0,void 0,function(){var n,r,i,a,o,s,l,u;return __generator(this,function(c){switch(c.label){case 0:return\"modelTopology\"in e||(e={modelTopology:e}),null!=(n=(e=e).modelTopology).model_config&&(n=n.model_config),r=convertPythonicToTs(n),i=deserialize(r,t),null==e.weightsManifest?[3,2]:[4,io.loadWeights(e.weightsManifest,e.pathPrefix,i.weights.map(function(e){return e.originalName}))];case 1:for(a=c.sent(),o={},s=0,l=i.weights;s<l.length;s++)u=l[s],o[u.originalName]=a[u.originalName];i.loadWeights(o),dispose(a),c.label=2;case 2:return[2,i]}})})}function loadLayersModelInternal(e,t){return __awaiter(this,void 0,void 0,function(){var n;return __generator(this,function(r){if(null==t&&(t={}),\"string\"==typeof e){if(0===(n=io.getLoadHandlers(e,t.onProgress)).length)n.push(io.browserHTTPRequest(e,t));else if(n.length>1)throw new ValueError(\"Found more than one (\"+n.length+\") load handlers for URL '\"+e+\"'\");e=n[0]}return[2,loadLayersModelFromIOHandler(e,void 0,t)]})})}function loadLayersModelFromIOHandler(e,t,n){return __awaiter(this,void 0,void 0,function(){var r,i,a,o,s,l,u,c,p;return __generator(this,function(h){switch(h.label){case 0:if(null==n&&(n={}),null==e.load)throw new ValueError(\"Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.\");return[4,e.load()];case 1:if(r=h.sent(),null!=(i=r.modelTopology).model_config&&(i=i.model_config),a=null==n.strict||n.strict,o=null!=r.weightData&&null!=r.weightSpecs&&a,s=deserialize(convertPythonicToTs(i),t,o),null!=(l=r.trainingConfig)&&s.loadTrainingConfig(l),null!=r.userDefinedMetadata&&s.setUserDefinedMetadata(r.userDefinedMetadata),null==r.weightData)return[3,4];if(null==r.weightSpecs)throw new ValueError(\"LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.\");return u=decodeModelAndOptimizerWeights(r.weightData,r.weightSpecs),c=u.modelWeights,p=u.optimizerWeights,s.loadWeights(c,a),null!=s.optimizer&&p.length>0?[4,s.optimizer.setWeights(p)]:[3,3];case 2:h.sent(),h.label=3;case 3:dispose(c),dispose(p.map(function(e){return e.tensor})),h.label=4;case 4:return[2,s]}})})}function decodeModelAndOptimizerWeights(e,t){var n=io.decodeWeights(e,t),r={},i=[];return t.forEach(function(e){\"optimizer\"===e.group?i.push({name:e.name,tensor:n[e.name]}):r[e.name]=n[e.name]}),{modelWeights:r,optimizerWeights:i}}serialization.registerClass(LayersModel);var Sequential=function(e){function t(t){var n=e.call(this,{inputs:[],outputs:[]})||this;if(t=t||{},n.trainable=!0,n.built=!1,n.name=null!=t.name?t.name:getUid(\"sequential_\"),null!=t.layers)for(var r=0,i=t.layers;r<i.length;r++){var a=i[r];n.add(a)}return n}return __extends(t,e),t.prototype.checkShape=function(e){if(e.inboundNodes[0].outputTensors[0].shape.some(function(e){return e<0}))throw new ValueError(\"Negative dimension size caused by adding layer \"+e.name+\" with input shape [\"+e.inboundNodes[0].inputTensors[0].shape+\"]\")},t.prototype.add=function(e){var n,r=e instanceof t||e instanceof LayersModel;if(r){if(1!==(n=e).outputs.length)throw new ValueError(\"All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.\");if(1!==n.inputs.length)throw new ValueError(\"All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.\")}if(0===this.outputs.length){if(0===e.inboundNodes.length){if(null==e.batchInputShape)throw new ValueError(\"The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.\");var i=Input({batchShape:e.batchInputShape,dtype:e.dtype,name:e.name+\"_input\"});e.apply(i)}if(r)this.outputs=n.outputs,this.inputs=n.inputs;else{if(1!==e.inboundNodes.length)throw new ValueError(\"A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer \"+e.name+\" which has \"+e.inboundNodes.length+\" pre-existing inbound connections.\");if(1!==e.inboundNodes[0].outputTensors.length)throw new ValueError(\"All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.\");this.checkShape(e),this.outputs=[e.inboundNodes[0].outputTensors[0]],this.inputs=getSourceInputs(this.outputs[0])}this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:pyListRepeat(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(function(e){return e.shape}),outputShapes:this.outputs[0].shape})}else{var a=e.apply(this.outputs[0]);if(Array.isArray(a))throw new TypeError(\"All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.\");this.checkShape(e),this.outputs=[a],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(e),this.built=!1},t.prototype.pop=function(){if(0===this.layers.length)throw new TypeError(\"There are no layers in the model.\");if(this.layers.pop(),0===this.layers.length)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{var e=this.layers.length-1;this.layers[e].outboundNodes=[],this.outputs=[this.layers[e].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}},t.prototype.call=function(e,t){return null==this.model&&this.build(),this.model.call(e,t)},t.prototype.build=function(e){if(getExactlyOneShape(e),0===this.inputs.length||0===this.outputs.length)throw new TypeError(\"Sequential model cannot be built: model is empty. Add some layers first.\");this.model=new LayersModel({inputs:this.inputs,outputs:this.outputs[0],name:this.name+\"_model\"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0},t.prototype.countParams=function(){return this.built||this.build(),e.prototype.countParams.call(this)},t.prototype.summary=function(t,n,r){void 0===r&&(r=console.log),this.built||this.build(),e.prototype.summary.call(this,t,n,r)},t.prototype.setWeights=function(e){null==this.model&&this.build(),this.model.setWeights(e)},t.prototype.evaluate=function(e,t,n){if(void 0===n&&(n={}),!this.built)throw new RuntimeError(\"The model needs to be compiled before being used.\");return this.model.evaluate(e,t,n)},t.prototype.evaluateDataset=function(e,t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){if(!this.built)throw new RuntimeError(\"The model needs to be compiled before being used.\");return[2,this.model.evaluateDataset(e,t)]})})},t.prototype.predict=function(e,t){return void 0===t&&(t={}),null==this.model&&this.build(),this.model.predict(e,t)},t.prototype.predictOnBatch=function(e){return null==this.model&&this.build(),this.model.predictOnBatch(e)},t.prototype.compile=function(e){this.build(),this.model.compile(e),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames},Object.defineProperty(t.prototype,\"optimizer\",{get:function(){return null==this.model?void 0:this.model.optimizer},set:function(e){this.model.optimizer=e},enumerable:!0,configurable:!0}),t.prototype.fit=function(e,t,n){return void 0===n&&(n={}),__awaiter(this,void 0,void 0,function(){return __generator(this,function(r){if(!this.built)throw new RuntimeError(\"The model needs to be compiled before being used.\");return[2,this.model.fit(e,t,n)]})})},t.prototype.fitDataset=function(e,t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){if(!this.built)throw new RuntimeError(\"The model needs to be compiled before being used.\");return[2,this.model.fitDataset(e,t)]})})},t.prototype.trainOnBatch=function(e,t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){return[2,this.model.trainOnBatch(e,t)]})})},t.fromConfig=function(e,n,r,i){var a;void 0===r&&(r={}),void 0===i&&(i=!1);var o={};if(n instanceof Array){if(null==n[0].className||\"Merge\"===n[0].className)throw new ValueError(\"Legacy serialization format not supported yet.\");a=n}else util.assert(null!=n.layers,function(){return\"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field.\"}),a=n.layers,delete n.layers,o=n;var s=new e(o);if(!(s instanceof t))throw new NotImplementedError(\"Sequential.fromConfig called on non-Sequential input: \"+s);for(var l=0,u=a;l<u.length;l++){var c=deserialize(u[l],void 0,i);i&&c.setFastWeightInitDuringBuild(!0),s.add(c)}return s},Object.defineProperty(t.prototype,\"stopTraining\",{get:function(){if(null==this.model)throw new ValueError(\"Cannot get the stopTraining property of a sequential model before it is compiled.\");return this.model.stopTraining},set:function(e){if(null==this.model)throw new ValueError(\"Cannot set the stopTraining property of a sequential model before it is compiled.\");this.model.stopTraining=e},enumerable:!0,configurable:!0}),t.prototype.getConfig=function(){for(var e=[],t=0,n=this.layers;t<n.length;t++){var r=n[t],i={};i.className=r.getClassName(),i.config=r.getConfig(),e.push(i)}return{name:this.name,layers:e}},t.className=\"Sequential\",t}(LayersModel);function model(e){return new LayersModel(e)}function sequential(e){return new Sequential(e)}function loadLayersModel(e,t){return null==t&&(t={}),loadLayersModelInternal(e,t)}function input(e){return Input(e)}function registerCallbackConstructor(e,t){CallbackConstructorRegistry.registerCallbackConstructor(e,t)}serialization.registerClass(Sequential);var Activation=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.getConfig=function(){return{}},t}(serialization.Serializable),Elu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e,t){return void 0===t&&(t=1),elu$1(e,t)},t.className=\"elu\",t}(Activation);serialization.registerClass(Elu);var Selu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e){return selu(e)},t.className=\"selu\",t}(Activation);serialization.registerClass(Selu);var Relu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e){return relu(e)},t.className=\"relu\",t}(Activation);serialization.registerClass(Relu);var Relu6=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e){return tidy(function(){return minimum(6,relu(e))})},t.className=\"relu6\",t}(Activation);serialization.registerClass(Relu6);var Linear=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e){return e},t.className=\"linear\",t}(Activation);serialization.registerClass(Linear);var Sigmoid=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e){return sigmoid(e)},t.className=\"sigmoid\",t}(Activation);serialization.registerClass(Sigmoid);var HardSigmoid=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e){return hardSigmoid(e)},t.className=\"hardSigmoid\",t}(Activation);serialization.registerClass(HardSigmoid);var Softplus=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e){return softplus(e)},t.className=\"softplus\",t}(Activation);serialization.registerClass(Softplus);var Softsign=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e){return softsign(e)},t.className=\"softsign\",t}(Activation);serialization.registerClass(Softsign);var Tanh=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e){return tanh(e)},t.className=\"tanh\",t}(Activation);serialization.registerClass(Tanh);var Softmax=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e,t){return void 0===t&&(t=-1),softmax(e,t)},t.className=\"softmax\",t}(Activation);serialization.registerClass(Softmax);var LogSoftmax=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e,t){return void 0===t&&(t=-1),logSoftmax(e,t)},t.className=\"logSoftmax\",t}(Activation);function serializeActivation(e){return e.getClassName()}function deserializeActivation(e,t){return void 0===t&&(t={}),deserializeKerasObject(e,serialization.SerializationMap.getMap().classNameMap,t,\"activation\")}function getActivation(e){var t;return null==e?deserializeActivation(t={className:\"linear\",config:{}}):\"string\"==typeof e?((t={}).className=e,t.config={},deserializeActivation(t)):e instanceof Activation?e:deserializeActivation(e)}function assertObjectArgs(e){if(null!=e&&\"object\"!=typeof e)throw new Error(\"Argument to L1L2 regularizer's constructor is expected to be an object, but received: \"+e)}serialization.registerClass(LogSoftmax);var Regularizer=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t}(serialization.Serializable),L1L2=function(e){function t(t){var n=e.call(this)||this;return assertObjectArgs(t),n.l1=null==t||null==t.l1?.01:t.l1,n.l2=null==t||null==t.l2?.01:t.l2,n.hasL1=0!==n.l1,n.hasL2=0!==n.l2,n}return __extends(t,e),t.prototype.apply=function(e){var t=this;return tidy(function(){var n=zeros([1]);return t.hasL1&&(n=add(n,sum(mul(t.l1,abs(e))))),t.hasL2&&(n=add(n,sum(mul(t.l2,square(e))))),n.asScalar()})},t.prototype.getConfig=function(){return{l1:this.l1,l2:this.l2}},t.fromConfig=function(e,t){return new e({l1:t.l1,l2:t.l2})},t.className=\"L1L2\",t}(Regularizer);function l1(e){return assertObjectArgs(e),new L1L2({l1:null!=e?e.l1:null,l2:0})}function l2(e){return assertObjectArgs(e),new L1L2({l2:null!=e?e.l2:null,l1:0})}serialization.registerClass(L1L2);var REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={l1l2:\"L1L2\"};function serializeRegularizer(e){return serializeKerasObject(e)}function deserializeRegularizer(e,t){return void 0===t&&(t={}),deserializeKerasObject(e,serialization.SerializationMap.getMap().classNameMap,t,\"regularizer\")}function getRegularizer(e){return null==e?null:\"string\"==typeof e?deserializeRegularizer({className:e in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[e]:e,config:{}}):e instanceof Regularizer?e:deserializeRegularizer(e)}var ReLU=function(e){function t(t){var n=e.call(this,null==t?{}:t)||this;return n.supportsMasking=!0,null!=t&&(n.maxValue=t.maxValue),n}return __extends(t,e),t.prototype.call=function(e,t){e=getExactlyOneTensor(e);var n=relu(e);return null!=this.maxValue&&(n=clipByValue(n,0,this.maxValue)),n},t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var t={maxValue:this.maxValue},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"ReLU\",t}(Layer);serialization.registerClass(ReLU);var LeakyReLU=function(e){function t(t){var n=e.call(this,null==t?{}:t)||this;return n.DEFAULT_ALPHA=.3,null==t&&(t={}),n.alpha=null==t.alpha?n.DEFAULT_ALPHA:t.alpha,n}return __extends(t,e),t.prototype.call=function(e,t){var n=getExactlyOneTensor(e);return leakyRelu(n,this.alpha)},t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var t={alpha:this.alpha},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"LeakyReLU\",t}(Layer);serialization.registerClass(LeakyReLU);var PReLU=function(e){function t(t){var n=e.call(this,null==t?{}:t)||this;if(n.DEFAULT_ALPHA_INITIALIZER=\"zeros\",null==t&&(t={}),n.supportsMasking=!0,n.alphaInitializer=getInitializer(t.alphaInitializer||n.DEFAULT_ALPHA_INITIALIZER),n.alphaRegularizer=getRegularizer(t.alphaRegularizer),n.alphaConstraint=getConstraint(t.alphaConstraint),null==t.sharedAxes)n.sharedAxes=null;else if(Array.isArray(t.sharedAxes))n.sharedAxes=t.sharedAxes;else{if(\"number\"!=typeof t.sharedAxes)throw new ValueError(\"Expected sharedAxes to be a number or an array of numbers, but got \"+t.sharedAxes);n.sharedAxes=[t.sharedAxes]}return n}return __extends(t,e),t.prototype.build=function(e){var t=(e=getExactlyOneShape(e)).slice(1);if(null!=this.sharedAxes)for(var n=0,r=this.sharedAxes;n<r.length;n++){t[(a=r[n])-1]=1}this.alpha=this.addWeight(\"alpha\",t,\"float32\",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);var i={};if(null!=this.sharedAxes)for(var a=1;a<e.length;++a)i[a]=e[a];this.inputSpec=[new InputSpec({ndim:e.length,axes:i})],this.built=!0},t.prototype.call=function(e,t){return e=getExactlyOneTensor(e),prelu(e,this.alpha.read())},t.prototype.getConfig=function(){var t={alphaInitializer:serializeInitializer(this.alphaInitializer),alphaRegularizer:serializeRegularizer(this.alphaRegularizer),alphaConstraint:serializeConstraint(this.alphaConstraint),sharedAxes:this.sharedAxes},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"PReLU\",t}(Layer);serialization.registerClass(PReLU);var ELU=function(e){function t(t){var n=e.call(this,null==t?{}:t)||this;if(n.DEFAULT_ALPHA=1,null==t&&(t={}),null!=t.alpha&&t.alpha!==n.DEFAULT_ALPHA)throw new NotImplementedError(\"Non-default alpha value (\"+t.alpha+\") is not supported by the ELU layer yet.\");return n.alpha=null==t.alpha?n.DEFAULT_ALPHA:t.alpha,n}return __extends(t,e),t.prototype.call=function(e,t){var n=getExactlyOneTensor(e);return elu(n)},t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var t={alpha:this.alpha},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"ELU\",t}(Layer);serialization.registerClass(ELU);var ThresholdedReLU=function(e){function t(t){var n=e.call(this,null==t?{}:t)||this;return n.DEFAULT_THETA=1,null==t&&(t={}),n.theta=null==t.theta?n.DEFAULT_THETA:t.theta,n}return __extends(t,e),t.prototype.call=function(e,t){var n=getExactlyOneTensor(e);return n.mul(cast$1(n.greater(this.theta),\"float32\"))},t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var t={theta:this.theta},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"ThresholdedReLU\",t}(Layer);serialization.registerClass(ThresholdedReLU);var Softmax$1=function(e){function t(t){var n=e.call(this,null==t?{}:t)||this;return n.DEFAULT_AXIS=1,null==t&&(t={}),n.softmax=(new Softmax).apply,n.axis=null==t.axis?n.DEFAULT_AXIS:t.axis,n}return __extends(t,e),t.prototype.call=function(e,t){var n=getExactlyOneTensor(e);return this.softmax(n,this.axis)},t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var t={axis:this.axis},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"Softmax\",t}(Layer);function normalizeArray(e,t,n){if(\"number\"==typeof e)return pyListRepeat(e,t);if(e.length!==t)throw new ValueError(\"The \"+n+\" argument must be an integer or tuple of \"+t+\" integers. Received: \"+e.length+\" elements.\");for(var r=0;r<t;++r){var i=e[r];if(!isInteger(i))throw new ValueError(\"The \"+n+\" argument must be an integer or tuple of \"+t+\" integers. Received: \"+JSON.stringify(e)+\" including a non-integer number \"+i)}return e}function convOutputLength(e,t,n,r,i){return void 0===i&&(i=1),null==e?e:(a=\"same\"===n?e:e-(t+(t-1)*(i-1))+1,Math.floor((a+r-1)/r));var a}function deconvLength(e,t,n,r){if(null==e)return null;if(\"valid\"===r)e=e*t+max$1([n-t,0]);else{if(\"same\"!==r)throw new ValueError(\"Unsupport padding mode: \"+r+\".\");e*=t}return e}function preprocessConv2DInput(e,t){return tidy(function(){return checkDataFormat(t),\"channelsFirst\"===t?transpose(e,[0,2,3,1]):e})}function preprocessConv3DInput(e,t){return tidy(function(){return checkDataFormat(t),\"channelsFirst\"===t?transpose(e,[0,2,3,4,1]):e})}function conv1dWithBias(e,t,n,r,i,a,o){return void 0===r&&(r=1),void 0===i&&(i=\"valid\"),void 0===o&&(o=1),tidy(function(){if(null==a&&(a=imageDataFormat()),checkDataFormat(a),3!==e.shape.length)throw new ValueError(\"The input of a conv1dWithBias operation should be 3, but is \"+e.shape.length+\" instead.\");if(3!==t.shape.length)throw new ValueError(\"The kernel for a conv1dWithBias operation should be 3, but is \"+t.shape.length+\" instead\");if(null!=n&&1!==n.shape.length)throw new ValueError(\"The bias for a conv1dWithBias operation should be 1, but is \"+t.shape.length+\" instead\");if(\"channelsFirst\"===a&&(e=transpose(e,[0,2,1])),\"causal\"===i)throw new NotImplementedError(\"The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.\");var s=conv1d(e,t,r,\"same\"===i?\"same\":\"valid\",\"NWC\",o);return null!=n&&(s=biasAdd(s,n)),s})}function conv2dWithBiasActivation(e,t,n,r,i,a,o,s){return void 0===r&&(r=[1,1]),void 0===i&&(i=\"valid\"),void 0===s&&(s=null),tidy(function(){if(null==a&&(a=imageDataFormat()),checkDataFormat(a),3!==e.rank&&4!==e.rank)throw new ValueError(\"conv2dWithBiasActivation expects input to be of rank 3 or 4, but received \"+e.rank+\".\");if(3!==t.rank&&4!==t.rank)throw new ValueError(\"conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received \"+e.rank+\".\");var l=preprocessConv2DInput(e,a);if(\"causal\"===i)throw new NotImplementedError(\"The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.\");return l=fused.conv2d({x:l,filter:t,strides:r,pad:\"same\"===i?\"same\":\"valid\",dilations:o,dataFormat:\"NHWC\",bias:n,activation:s}),\"channelsFirst\"===a&&(l=transpose(l,[0,3,1,2])),l})}function conv3dWithBias(e,t,n,r,i,a,o){return void 0===r&&(r=[1,1,1]),void 0===i&&(i=\"valid\"),tidy(function(){if(null==a&&(a=imageDataFormat()),checkDataFormat(a),4!==e.rank&&5!==e.rank)throw new ValueError(\"conv3dWithBias expects input to be of rank 4 or 5, but received \"+e.rank+\".\");if(4!==t.rank&&5!==t.rank)throw new ValueError(\"conv3dWithBias expects kernel to be of rank 4 or 5, but received \"+e.rank+\".\");var s=preprocessConv3DInput(e,a);if(\"causal\"===i)throw new NotImplementedError(\"The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.\");return s=conv3d(s,t,r,\"same\"===i?\"same\":\"valid\",\"NDHWC\",o),null!=n&&(s=biasAdd(s,n)),\"channelsFirst\"===a&&(s=transpose(s,[0,4,1,2,3])),s})}serialization.registerClass(Softmax$1);var BaseConv=function(e){function t(n,r){var i=e.call(this,r)||this;if(i.bias=null,i.DEFAULT_KERNEL_INITIALIZER=\"glorotNormal\",i.DEFAULT_BIAS_INITIALIZER=\"zeros\",t.verifyArgs(r),i.rank=n,assertPositiveInteger(i.rank,\"rank\"),1!==i.rank&&2!==i.rank&&3!==i.rank)throw new NotImplementedError(\"Convolution layer for rank other than 1, 2, or 3 (\"+i.rank+\") is not implemented yet.\");if(i.kernelSize=normalizeArray(r.kernelSize,n,\"kernelSize\"),i.strides=normalizeArray(null==r.strides?1:r.strides,n,\"strides\"),i.padding=null==r.padding?\"valid\":r.padding,checkPaddingMode(i.padding),i.dataFormat=null==r.dataFormat?\"channelsLast\":r.dataFormat,checkDataFormat(i.dataFormat),i.activation=getActivation(r.activation),i.useBias=null==r.useBias||r.useBias,i.biasInitializer=getInitializer(r.biasInitializer||i.DEFAULT_BIAS_INITIALIZER),i.biasConstraint=getConstraint(r.biasConstraint),i.biasRegularizer=getRegularizer(r.biasRegularizer),i.activityRegularizer=getRegularizer(r.activityRegularizer),i.dilationRate=normalizeArray(null==r.dilationRate?1:r.dilationRate,n,\"dilationRate\"),1===i.rank&&Array.isArray(i.dilationRate)&&1!==i.dilationRate.length)throw new ValueError(\"dilationRate must be a number or an array of a single number for 1D convolution, but received \"+JSON.stringify(i.dilationRate));if(2===i.rank){if(\"number\"==typeof i.dilationRate)i.dilationRate=[i.dilationRate,i.dilationRate];else if(2!==i.dilationRate.length)throw new ValueError(\"dilationRate must be a number or array of two numbers for 2D convolution, but received \"+JSON.stringify(i.dilationRate))}else if(3===i.rank)if(\"number\"==typeof i.dilationRate)i.dilationRate=[i.dilationRate,i.dilationRate,i.dilationRate];else if(3!==i.dilationRate.length)throw new ValueError(\"dilationRate must be a number or array of three numbers for 3D convolution, but received \"+JSON.stringify(i.dilationRate));return i}return __extends(t,e),t.verifyArgs=function(e){if(assert(\"kernelSize\"in e,\"required key 'kernelSize' not in config\"),\"number\"!=typeof e.kernelSize&&!checkArrayTypeAndLength(e.kernelSize,\"number\",1,3))throw new ValueError(\"BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received \"+JSON.stringify(e.kernelSize)+\".\")},t.prototype.getConfig=function(){var t={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:serializeActivation(this.activation),useBias:this.useBias,biasInitializer:serializeInitializer(this.biasInitializer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),biasConstraint:serializeConstraint(this.biasConstraint)},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t}(Layer),Conv=function(e){function t(n,r){var i=e.call(this,n,r)||this;return i.kernel=null,t.verifyArgs(r),i.filters=r.filters,assertPositiveInteger(i.filters,\"filters\"),i.kernelInitializer=getInitializer(r.kernelInitializer||i.DEFAULT_KERNEL_INITIALIZER),i.kernelConstraint=getConstraint(r.kernelConstraint),i.kernelRegularizer=getRegularizer(r.kernelRegularizer),i}return __extends(t,e),t.prototype.build=function(e){var t;e=getExactlyOneShape(e);var n=\"channelsFirst\"===this.dataFormat?1:e.length-1;if(null==e[n])throw new ValueError(\"The channel dimension of the input should be defined. Found \"+e[n]);var r=e[n],i=this.kernelSize.concat([r,this.filters]);this.kernel=this.addWeight(\"kernel\",i,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight(\"bias\",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:(t={},t[n]=r,t)}],this.built=!0},t.prototype.call=function(e,t){var n=this;return tidy(function(){var t;e=getExactlyOneTensor(e);var r=null==n.bias?null:n.bias.read(),i=mapActivationToFusedKernel(n.activation.getClassName());if(null!=i&&2===n.rank)t=conv2dWithBiasActivation(e,n.kernel.read(),r,n.strides,n.padding,n.dataFormat,n.dilationRate,i);else{if(1===n.rank)t=conv1dWithBias(e,n.kernel.read(),r,n.strides[0],n.padding,n.dataFormat,n.dilationRate[0]);else if(2===n.rank)t=conv2dWithBiasActivation(e,n.kernel.read(),r,n.strides,n.padding,n.dataFormat,n.dilationRate);else{if(3!==n.rank)throw new NotImplementedError(\"convolutions greater than 3D are not implemented yet.\");t=conv3dWithBias(e,n.kernel.read(),r,n.strides,n.padding,n.dataFormat,n.dilationRate)}null!=n.activation&&(t=n.activation.apply(t))}return t})},t.prototype.computeOutputShape=function(e){e=getExactlyOneShape(e);for(var t=[],n=\"channelsLast\"===this.dataFormat?e.slice(1,e.length-1):e.slice(2),r=0;r<n.length;++r){var i=convOutputLength(n[r],this.kernelSize[r],this.padding,this.strides[r],\"number\"==typeof this.dilationRate?this.dilationRate:this.dilationRate[r]);t.push(i)}var a=[e[0]];return\"channelsLast\"===this.dataFormat?(a=a.concat(t)).push(this.filters):(a.push(this.filters),a=a.concat(t)),a},t.prototype.getConfig=function(){var t={filters:this.filters,kernelInitializer:serializeInitializer(this.kernelInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint)},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.verifyArgs=function(e){if(!(\"filters\"in e)||\"number\"!=typeof e.filters||e.filters<1)throw new ValueError(\"Convolution layer expected config.filters to be a 'number' > 0 but got \"+JSON.stringify(e.filters))},t}(BaseConv),Conv2D=function(e){function t(n){var r=e.call(this,2,n)||this;return t.verifyArgs(n),r}return __extends(t,e),t.prototype.getConfig=function(){var t=e.prototype.getConfig.call(this);return delete t.rank,t},t.verifyArgs=function(e){if(\"number\"!=typeof e.kernelSize&&!checkArrayTypeAndLength(e.kernelSize,\"number\",1,2))throw new ValueError(\"Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received \"+JSON.stringify(e.kernelSize)+\".\")},t.className=\"Conv2D\",t}(Conv);serialization.registerClass(Conv2D);var Conv3D=function(e){function t(n){var r=e.call(this,3,n)||this;return t.verifyArgs(n),r}return __extends(t,e),t.prototype.getConfig=function(){var t=e.prototype.getConfig.call(this);return delete t.rank,t},t.verifyArgs=function(e){if(\"number\"!=typeof e.kernelSize&&(!Array.isArray(e.kernelSize)||1!==e.kernelSize.length&&3!==e.kernelSize.length))throw new ValueError(\"Conv3D expects config.kernelSize to be number or [number, number, number], but received \"+JSON.stringify(e.kernelSize)+\".\")},t.className=\"Conv3D\",t}(Conv);serialization.registerClass(Conv3D);var Conv2DTranspose=function(e){function t(t){var n=e.call(this,t)||this;if(n.inputSpec=[new InputSpec({ndim:4})],\"same\"!==n.padding&&\"valid\"!==n.padding)throw new ValueError(\"Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode \"+n.padding);return n}return __extends(t,e),t.prototype.build=function(e){var t;if(4!==(e=getExactlyOneShape(e)).length)throw new ValueError(\"Input should have rank 4; Received input shape: \"+JSON.stringify(e));var n=\"channelsFirst\"===this.dataFormat?1:e.length-1;if(null==e[n])throw new ValueError(\"The channel dimension of the inputs should be defined. Found `None`.\");var r=e[n],i=this.kernelSize.concat([this.filters,r]);this.kernel=this.addWeight(\"kernel\",i,\"float32\",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight(\"bias\",[this.filters],\"float32\",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new InputSpec({ndim:4,axes:(t={},t[n]=r,t)})],this.built=!0},t.prototype.call=function(e,t){var n=this;return tidy(function(){var t=getExactlyOneTensor(e);if(4!==t.shape.length)throw new ValueError(\"Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-\"+t.shape.length);var r,i,a=t.shape,o=a[0];\"channelsFirst\"===n.dataFormat?(r=2,i=3):(r=1,i=2);var s=a[r],l=a[i],u=n.kernelSize[0],c=n.kernelSize[1],p=n.strides[0],h=n.strides[1],d=[o,deconvLength(s,p,u,n.padding),deconvLength(l,h,c,n.padding),n.filters];\"channelsLast\"!==n.dataFormat&&(t=transpose(t,[0,2,3,1]));var f=conv2dTranspose(t,n.kernel.read(),d,n.strides,n.padding);return\"channelsLast\"!==n.dataFormat&&(f=transpose(f,[0,3,1,2])),null!=n.bias&&(f=biasAdd(f,n.bias.read(),n.dataFormat)),null!=n.activation&&(f=n.activation.apply(f)),f})},t.prototype.computeOutputShape=function(e){var t,n,r,i=(e=getExactlyOneShape(e)).slice();\"channelsFirst\"===this.dataFormat?(t=1,n=2,r=3):(t=3,n=1,r=2);var a=this.kernelSize[0],o=this.kernelSize[1],s=this.strides[0],l=this.strides[1];return i[t]=this.filters,i[n]=deconvLength(i[n],s,a,this.padding),i[r]=deconvLength(i[r],l,o,this.padding),i},t.prototype.getConfig=function(){var t=e.prototype.getConfig.call(this);return delete t.dilationRate,t},t.className=\"Conv2DTranspose\",t}(Conv2D);serialization.registerClass(Conv2DTranspose);var SeparableConv=function(e){function t(t,n){var r=e.call(this,t,n)||this;if(r.DEFAULT_DEPTHWISE_INITIALIZER=\"glorotUniform\",r.DEFAULT_POINTWISE_INITIALIZER=\"glorotUniform\",r.depthwiseKernel=null,r.pointwiseKernel=null,null==n.filters)throw new ValueError(\"The `filters` configuration field is required by SeparableConv, but is unspecified.\");if(null!=n.kernelInitializer||null!=n.kernelRegularizer||null!=n.kernelConstraint)throw new ValueError(\"Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.\");if(null!=n.padding&&\"same\"!==n.padding&&\"valid\"!==n.padding)throw new ValueError(\"SeparableConv\"+r.rank+\"D supports only padding modes: 'same' and 'valid', but received \"+JSON.stringify(n.padding));return r.depthMultiplier=null==n.depthMultiplier?1:n.depthMultiplier,r.depthwiseInitializer=getInitializer(n.depthwiseInitializer||r.DEFAULT_DEPTHWISE_INITIALIZER),r.depthwiseRegularizer=getRegularizer(n.depthwiseRegularizer),r.depthwiseConstraint=getConstraint(n.depthwiseConstraint),r.pointwiseInitializer=getInitializer(n.depthwiseInitializer||r.DEFAULT_POINTWISE_INITIALIZER),r.pointwiseRegularizer=getRegularizer(n.pointwiseRegularizer),r.pointwiseConstraint=getConstraint(n.pointwiseConstraint),r}return __extends(t,e),t.prototype.build=function(e){var t;if((e=getExactlyOneShape(e)).length<this.rank+2)throw new ValueError(\"Inputs to SeparableConv\"+this.rank+\"D should have rank \"+(this.rank+2)+\", but received input shape: \"+JSON.stringify(e));var n=\"channelsFirst\"===this.dataFormat?1:e.length-1;if(null==e[n]||e[n]<0)throw new ValueError(\"The channel dimension of the inputs should be defined, but found \"+JSON.stringify(e[n]));for(var r=e[n],i=this.kernelSize.concat([r,this.depthMultiplier]),a=[],o=0;o<this.rank;++o)a.push(1);a.push(r*this.depthMultiplier,this.filters);this.depthwiseKernel=this.addWeight(\"depthwise_kernel\",i,\"float32\",this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.pointwiseKernel=this.addWeight(\"pointwise_kernel\",a,\"float32\",this.pointwiseInitializer,this.pointwiseRegularizer,!0,this.pointwiseConstraint),this.useBias?this.bias=this.addWeight(\"bias\",[this.filters],\"float32\",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.inputSpec=[new InputSpec({ndim:this.rank+2,axes:(t={},t[n]=r,t)})],this.built=!0},t.prototype.call=function(e,t){var n=this;return tidy(function(){var t;if(e=getExactlyOneTensor(e),1===n.rank)throw new NotImplementedError(\"1D separable convolution is not implemented yet.\");return 2===n.rank&&(\"channelsFirst\"===n.dataFormat&&(e=transpose(e,[0,2,3,1])),t=separableConv2d(e,n.depthwiseKernel.read(),n.pointwiseKernel.read(),n.strides,n.padding,n.dilationRate,\"NHWC\")),n.useBias&&(t=biasAdd(t,n.bias.read(),n.dataFormat)),null!=n.activation&&(t=n.activation.apply(t)),\"channelsFirst\"===n.dataFormat&&(t=transpose(t,[0,3,1,2])),t})},t.prototype.getConfig=function(){var t=e.prototype.getConfig.call(this);return delete t.rank,delete t.kernelInitializer,delete t.kernelRegularizer,delete t.kernelConstraint,t.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),t.pointwiseInitializer=serializeInitializer(this.pointwiseInitializer),t.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),t.pointwiseRegularizer=serializeRegularizer(this.pointwiseRegularizer),t.depthwiseConstraint=serializeConstraint(this.depthwiseConstraint),t.pointwiseConstraint=serializeConstraint(this.pointwiseConstraint),t},t.className=\"SeparableConv\",t}(Conv),SeparableConv2D=function(e){function t(t){return e.call(this,2,t)||this}return __extends(t,e),t.className=\"SeparableConv2D\",t}(SeparableConv);serialization.registerClass(SeparableConv2D);var Conv1D=function(e){function t(n){var r=e.call(this,1,n)||this;return t.verifyArgs(n),r.inputSpec=[{ndim:3}],r}return __extends(t,e),t.prototype.getConfig=function(){var t=e.prototype.getConfig.call(this);return delete t.rank,delete t.dataFormat,t},t.verifyArgs=function(e){if(\"number\"!=typeof e.kernelSize&&!checkArrayTypeAndLength(e.kernelSize,\"number\",1,1))throw new ValueError(\"Conv1D expects config.kernelSize to be number or number[] with length 1, but received \"+JSON.stringify(e.kernelSize)+\".\")},t.className=\"Conv1D\",t}(Conv);serialization.registerClass(Conv1D);var Cropping2D=function(e){function t(t){var n=e.call(this,t)||this;return\"number\"==typeof t.cropping?n.cropping=[[t.cropping,t.cropping],[t.cropping,t.cropping]]:\"number\"==typeof t.cropping[0]?n.cropping=[[t.cropping[0],t.cropping[0]],[t.cropping[1],t.cropping[1]]]:n.cropping=t.cropping,n.dataFormat=void 0===t.dataFormat?\"channelsLast\":t.dataFormat,n.inputSpec=[{ndim:4}],n}return __extends(t,e),t.prototype.computeOutputShape=function(e){return\"channelsFirst\"===this.dataFormat?[e[0],e[1],e[2]-this.cropping[0][0]-this.cropping[0][1],e[3]-this.cropping[1][0]-this.cropping[1][1]]:[e[0],e[1]-this.cropping[0][0]-this.cropping[0][1],e[2]-this.cropping[1][0]-this.cropping[1][1],e[3]]},t.prototype.call=function(e,t){var n=this;return tidy(function(){return e=getExactlyOneTensor(e),\"channelsLast\"===n.dataFormat?sliceAlongAxis(sliceAlongAxis(e,n.cropping[0][0],e.shape[1]-n.cropping[0][0]-n.cropping[0][1],2),n.cropping[1][0],e.shape[2]-n.cropping[1][1]-n.cropping[1][0],3):sliceAlongAxis(sliceAlongAxis(e,n.cropping[0][0],e.shape[2]-n.cropping[0][0]-n.cropping[0][1],3),n.cropping[1][0],e.shape[3]-n.cropping[1][1]-n.cropping[1][0],4)})},t.prototype.getConfig=function(){var t={cropping:this.cropping,dataFormat:this.dataFormat},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"Cropping2D\",t}(Layer);serialization.registerClass(Cropping2D);var UpSampling2D=function(e){function t(t){var n=e.call(this,t)||this;return n.DEFAULT_SIZE=[2,2],n.inputSpec=[{ndim:4}],n.size=null==t.size?n.DEFAULT_SIZE:t.size,n.dataFormat=null==t.dataFormat?\"channelsLast\":t.dataFormat,n}return __extends(t,e),t.prototype.computeOutputShape=function(e){if(\"channelsFirst\"===this.dataFormat){var t=null==e[2]?null:this.size[0]*e[2],n=null==e[3]?null:this.size[1]*e[3];return[e[0],e[1],t,n]}t=null==e[1]?null:this.size[0]*e[1],n=null==e[2]?null:this.size[1]*e[2];return[e[0],t,n,e[3]]},t.prototype.call=function(e,t){var n=this;return tidy(function(){var t=getExactlyOneTensor(e),r=t.shape;if(\"channelsFirst\"===n.dataFormat){t=transpose(t,[0,2,3,1]);var i=n.size[0]*r[2],a=n.size[1]*r[3],o=t.resizeNearestNeighbor([i,a]);return transpose(o,[0,3,1,2])}i=n.size[0]*r[1],a=n.size[1]*r[2];return t.resizeNearestNeighbor([i,a])})},t.prototype.getConfig=function(){var t={size:this.size,dataFormat:this.dataFormat},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"UpSampling2D\",t}(Layer);function depthwiseConv2d$1(e,t,n,r,i,a){return void 0===n&&(n=[1,1]),void 0===r&&(r=\"valid\"),tidy(function(){null==i&&(i=imageDataFormat()),checkDataFormat(i);var o=preprocessConv2DInput(e,i);if(4!==e.rank)throw new ValueError(\"Input for depthwiseConv2d is required to be 4-D, but is instead \"+e.rank+\"-D\");if(4!==t.rank)throw new ValueError(\"depthwiseKernel is required to be 4-D, but is instead \"+t.rank+\"-D\");return o=depthwiseConv2d(o,t,n,\"same\"===r?\"same\":\"valid\",\"NHWC\",a),\"channelsFirst\"===i&&(o=transpose(o,[0,3,1,2])),o})}serialization.registerClass(UpSampling2D);var DepthwiseConv2D=function(e){function t(t){var n=e.call(this,2,t)||this;return n.depthwiseKernel=null,n.depthMultiplier=null==t.depthMultiplier?1:t.depthMultiplier,n.depthwiseInitializer=getInitializer(t.depthwiseInitializer||n.DEFAULT_KERNEL_INITIALIZER),n.depthwiseConstraint=getConstraint(t.depthwiseConstraint),n.depthwiseRegularizer=getRegularizer(t.depthwiseRegularizer),n}return __extends(t,e),t.prototype.build=function(e){if((e=getExactlyOneShape(e)).length<4)throw new ValueError(\"Inputs to DepthwiseConv2D should have rank 4. Received input shape: \"+JSON.stringify(e)+\".\");var t=\"channelsFirst\"===this.dataFormat?1:3;if(null==e[t]||e[t]<0)throw new ValueError(\"The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (\"+e[t]+\").\");var n=e[t],r=[this.kernelSize[0],this.kernelSize[1],n,this.depthMultiplier];this.depthwiseKernel=this.addWeight(\"depthwise_kernel\",r,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight(\"bias\",[n*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0},t.prototype.call=function(e,t){var n=this;return tidy(function(){var t=depthwiseConv2d$1(e=getExactlyOneTensor(e),n.depthwiseKernel.read(),n.strides,n.padding,n.dataFormat,null);return n.useBias&&(t=biasAdd(t,n.bias.read(),n.dataFormat)),null!=n.activation&&(t=n.activation.apply(t)),t})},t.prototype.computeOutputShape=function(e){e=getExactlyOneShape(e);var t=\"channelsFirst\"===this.dataFormat?e[2]:e[1],n=\"channelsFirst\"===this.dataFormat?e[3]:e[2],r=\"channelsFirst\"===this.dataFormat?e[1]*this.depthMultiplier:e[3]*this.depthMultiplier,i=convOutputLength(t,this.kernelSize[0],this.padding,this.strides[0]),a=convOutputLength(n,this.kernelSize[1],this.padding,this.strides[1]);return\"channelsFirst\"===this.dataFormat?[e[0],r,i,a]:[e[0],i,a,r]},t.prototype.getConfig=function(){var t=e.prototype.getConfig.call(this);return t.depthMultiplier=this.depthMultiplier,t.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),t.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),t.depthwiseConstraint=serializeConstraint(this.depthwiseRegularizer),t},t.className=\"DepthwiseConv2D\",t}(BaseConv);serialization.registerClass(DepthwiseConv2D);var Dropout=function(e){function t(t){var n=e.call(this,t)||this;return n.rate=Math.max(Math.min(t.rate,1),0),n.noiseShape=t.noiseShape,n.seed=t.seed,n.supportsMasking=!0,n}return __extends(t,e),t.prototype.getNoiseShape=function(e){if(null==this.noiseShape)return this.noiseShape;for(var t=e.shape,n=[],r=0;r<this.noiseShape.length;++r)n.push(null==this.noiseShape[r]?t[r]:this.noiseShape[r]);return n},t.prototype.call=function(e,t){var n=this;return tidy(function(){n.invokeCallHook(e,t);var r=getExactlyOneTensor(e);if(0<n.rate&&n.rate<1){var i=null!=t.training&&t.training,a=n.getNoiseShape(r);return inTrainPhase(function(){return dropout$1(r,n.rate,a,n.seed)},function(){return r},i)}return e})},t.prototype.getConfig=function(){var t={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.prototype.dispose=function(){return e.prototype.dispose.call(this)},t.className=\"Dropout\",t}(Layer);serialization.registerClass(Dropout);var SpatialDropout1D=function(e){function t(t){var n=e.call(this,t)||this;return n.inputSpec=[{ndim:3}],n}return __extends(t,e),t.prototype.getNoiseShape=function(e){var t=e.shape;return[t[0],1,t[2]]},t.className=\"SpatialDropout1D\",t}(Dropout);serialization.registerClass(SpatialDropout1D);var Dense=function(e){function t(t){var n=e.call(this,t)||this;if(n.activation=null,n.useBias=!0,n.kernel=null,n.bias=null,n.DEFAULT_KERNEL_INITIALIZER=\"glorotNormal\",n.DEFAULT_BIAS_INITIALIZER=\"zeros\",null==t.batchInputShape&&null==t.inputShape&&null!=t.inputDim){var r=null;null!=t.batchSize&&(r=t.batchSize),n.batchInputShape=[r,t.inputDim]}return n.units=t.units,assertPositiveInteger(n.units,\"units\"),n.activation=getActivation(t.activation),null!=t.useBias&&(n.useBias=t.useBias),n.kernelInitializer=getInitializer(t.kernelInitializer||n.DEFAULT_KERNEL_INITIALIZER),n.biasInitializer=getInitializer(t.biasInitializer||n.DEFAULT_BIAS_INITIALIZER),n.kernelConstraint=getConstraint(t.kernelConstraint),n.biasConstraint=getConstraint(t.biasConstraint),n.kernelRegularizer=getRegularizer(t.kernelRegularizer),n.biasRegularizer=getRegularizer(t.biasRegularizer),n.activityRegularizer=getRegularizer(t.activityRegularizer),n.supportsMasking=!0,n.inputSpec=[{minNDim:2}],n}return __extends(t,e),t.prototype.build=function(e){var t,n=(e=getExactlyOneShape(e))[e.length-1];null==this.kernel&&(this.kernel=this.addWeight(\"kernel\",[n,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight(\"bias\",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:(t={},t[-1]=n,t)}],this.built=!0},t.prototype.computeOutputShape=function(e){var t=(e=getExactlyOneShape(e)).slice();return t[t.length-1]=this.units,t},t.prototype.call=function(e,t){var n=this;return tidy(function(){n.invokeCallHook(e,t);var r,i=getExactlyOneTensor(e),a=mapActivationToFusedKernel(n.activation.getClassName());return null!=a?r=dot(i,n.kernel.read(),a,n.bias?n.bias.read():null):(r=dot(i,n.kernel.read()),null!=n.bias&&(r=biasAdd(r,n.bias.read())),null!=n.activation&&(r=n.activation.apply(r))),r})},t.prototype.getConfig=function(){var t={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),biasConstraint:serializeConstraint(this.biasConstraint)},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"Dense\",t}(Layer);serialization.registerClass(Dense);var Flatten=function(e){function t(t){var n=this;return t=t||{},(n=e.call(this,t)||this).inputSpec=[{minNDim:3}],n.dataFormat=t.dataFormat,n}return __extends(t,e),t.prototype.computeOutputShape=function(e){for(var t=0,n=(e=getExactlyOneShape(e)).slice(1);t<n.length;t++){if(null==n[t])throw new ValueError('The shape of the input to \"Flatten\" is not fully defined (got '+e.slice(1)+'). Make sure to pass a complete \"input_shape\" or \"batch_input_shape\" argument to the first layer in your model.')}return[e[0],arrayProd(e,1)]},t.prototype.call=function(e,t){var n=this;return tidy(function(){n.invokeCallHook(e,t);var r=getExactlyOneTensor(e);if(\"channelsFirst\"===n.dataFormat&&r.rank>1){for(var i=[0],a=2;a<r.rank;++a)i.push(a);i.push(1),r=r.transpose(i)}return batchFlatten(r)})},t.prototype.getConfig=function(){var t={};null!=this.dataFormat&&(t.dataFormat=this.dataFormat);var n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"Flatten\",t}(Layer);serialization.registerClass(Flatten);var Activation$1=function(e){function t(t){var n=e.call(this,t)||this;return n.supportsMasking=!0,n.activation=getActivation(t.activation),n}return __extends(t,e),t.prototype.call=function(e,t){var n=this;return tidy(function(){n.invokeCallHook(e,t);var r=getExactlyOneTensor(e);return n.activation.apply(r)})},t.prototype.getConfig=function(){var t={activation:serializeActivation(this.activation)},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"Activation\",t}(Layer);serialization.registerClass(Activation$1);var RepeatVector=function(e){function t(t){var n=e.call(this,t)||this;return n.n=t.n,n.inputSpec=[{ndim:2}],n}return __extends(t,e),t.prototype.computeOutputShape=function(e){return[e[0],this.n,e[1]]},t.prototype.call=function(e,t){var n=this;return tidy(function(){return repeat(e=getExactlyOneTensor(e),n.n)})},t.prototype.getConfig=function(){var t={n:this.n},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"RepeatVector\",t}(Layer);serialization.registerClass(RepeatVector);var Reshape=function(e){function t(t){var n=e.call(this,t)||this;n.targetShape=t.targetShape;for(var r=0;r<n.targetShape.length;++r)n.isUnknown(n.targetShape[r])&&(n.targetShape[r]=null);return n}return __extends(t,e),t.prototype.isUnknown=function(e){return e<0||null==e},t.prototype.fixUnknownDimension=function(e,t){for(var n=\"Total size of new array must be unchanged.\",r=t.slice(),i=1,a=null,o=0;o<r.length;++o){var s=r[o];if(this.isUnknown(s)){if(null!==a)throw new ValueError(\"Can only specifiy one unknown dimension.\");a=o}else i*=s}var l=arrayProd(e);if(null!==a){if(0===i||l%i!=0)throw new ValueError(n);r[a]=l/i}else if(l!==i)throw new ValueError(n);return r},t.prototype.computeOutputShape=function(e){for(var t=!1,n=0;n<e.length;++n)if(this.isUnknown(e[n])){t=!0;break}return t?e.slice(0,1).concat(this.targetShape):e.slice(0,1).concat(this.fixUnknownDimension(e.slice(1),this.targetShape))},t.prototype.call=function(e,t){var n=this;return tidy(function(){n.invokeCallHook(e,t);var r=getExactlyOneTensor(e),i=r.shape,a=i.slice(0,1).concat(n.fixUnknownDimension(i.slice(1),n.targetShape));return r.reshape(a)})},t.prototype.getConfig=function(){var t={targetShape:this.targetShape},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"Reshape\",t}(Layer);serialization.registerClass(Reshape);var Permute=function(e){function t(t){var n=e.call(this,t)||this;if(null==t.dims)throw new Error(\"Required configuration field `dims` is missing during Permute constructor call.\");if(!Array.isArray(t.dims))throw new Error(\"Permute constructor requires `dims` to be an Array, but received \"+t.dims+\" instead.\");var r=range(1,t.dims.length+1);if(!util.arraysEqual(t.dims.slice().sort(),r))throw new Error(\"Invalid permutation `dims`: \"+JSON.stringify(t.dims)+\" `dims` must contain consecutive integers starting from 1.\");return n.dims=t.dims,n.dimsIncludingBatch=[0].concat(n.dims),n.inputSpec=[new InputSpec({ndim:n.dims.length+1})],n}return __extends(t,e),t.prototype.computeOutputShape=function(e){var t=(e=getExactlyOneShape(e)).slice();return this.dims.forEach(function(n,r){t[r+1]=e[n]}),t},t.prototype.call=function(e,t){return transpose(getExactlyOneTensor(e),this.dimsIncludingBatch)},t.prototype.getConfig=function(){var t={dims:this.dims},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"Permute\",t}(Layer);serialization.registerClass(Permute);var Masking=function(e){function t(t){var n=e.call(this,null==t?{}:t)||this;return n.supportsMasking=!0,n.maskValue=null!=t?null==t.maskValue?0:t.maskValue:0,n}return __extends(t,e),t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var t=e.prototype.getConfig.call(this),n={maskValue:this.maskValue};return Object.assign(n,t),n},t.prototype.computeMask=function(e,t){var n=getExactlyOneTensor(e);return any(notEqual(n,this.maskValue),-1)},t.prototype.call=function(e,t){var n=this;return tidy(function(){n.invokeCallHook(e,t);var r=getExactlyOneTensor(e),i=any(notEqual(r,n.maskValue),-1,!0);return r.mul(i.asType(r.dtype))})},t.className=\"Masking\",t}(Layer);serialization.registerClass(Masking);var Embedding=function(e){function t(t){var n=e.call(this,t)||this;if(n.embeddings=null,n.DEFAULT_EMBEDDINGS_INITIALIZER=\"randomUniform\",null==t.batchInputShape&&null==t.inputShape){var r=null;null!=t.batchSize&&(r=t.batchSize),null==t.inputLength?n.batchInputShape=[r,null]:n.batchInputShape=[r].concat(toList(t.inputLength))}return n.inputDim=t.inputDim,assertPositiveInteger(n.inputDim,\"inputDim\"),n.outputDim=t.outputDim,assertPositiveInteger(n.outputDim,\"outputDim\"),n.embeddingsInitializer=getInitializer(t.embeddingsInitializer||n.DEFAULT_EMBEDDINGS_INITIALIZER),n.embeddingsRegularizer=getRegularizer(t.embeddingsRegularizer),n.activityRegularizer=getRegularizer(t.activityRegularizer),n.embeddingsConstraint=getConstraint(t.embeddingsConstraint),n.maskZero=t.maskZero,n.supportsMasking=t.maskZero,n.inputLength=t.inputLength,n}return __extends(t,e),t.prototype.build=function(e){this.embeddings=this.addWeight(\"embeddings\",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0},t.prototype.warnOnIncompatibleInputShape=function(e){},t.prototype.computeMask=function(e,t){var n=this;return tidy(function(){return n.maskZero?(e=getExactlyOneTensor(e),notEqual(e,zerosLike(e))):null})},t.prototype.computeOutputShape=function(e){if(e=getExactlyOneShape(e),null==this.inputLength)return e.concat([this.outputDim]);var t=toList(this.inputLength);if(t.length!==e.length-1)throw new ValueError('\"inputLength\" is '+this.inputLength+\", but received input shape has shape \"+e);for(var n=0,r=0;r<t.length;++r){var i=t[r],a=e[r+1];if(null!=i&&null!=a&&i!==a)throw new ValueError('\"inputLength\" is '+this.inputLength+\", but received input shape has shape \"+e);null==i&&(t[n]=a),n++}return[e[0]].concat(t,[this.outputDim])},t.prototype.call=function(e,t){var n=this;return tidy(function(){n.invokeCallHook(e,t);var r=getExactlyOneTensor(e);return\"int32\"!==r.dtype&&(r=cast$1(r,\"int32\")),gather$1(n.embeddings.read(),r.as1D()).reshape(getExactlyOneShape(n.computeOutputShape(r.shape)))})},t.prototype.getConfig=function(){var t={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:serializeInitializer(this.embeddingsInitializer),embeddingsRegularizer:serializeRegularizer(this.embeddingsRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),embeddingsConstraint:serializeConstraint(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"Embedding\",t}(Layer);serialization.registerClass(Embedding);var Merge=function(e){function t(t){var n=e.call(this,t||{})||this;return n.supportsMasking=!0,n}return __extends(t,e),t.prototype.mergeFunction=function(e){throw new NotImplementedError},t.prototype.computeElementwiseOpOutputShape=function(e,t){if(null==e||null==t)return null;if(e.length<t.length)return this.computeElementwiseOpOutputShape(t,e);if(0===t.length)return e;for(var n=e.slice(0,e.length-t.length),r=0;r<t.length;++r){var i=e[e.length-t.length+r],a=t[r];if(null==i||null==a||i<0||a<0)n.push(null);else if(1===i)n.push(a);else if(1===a)n.push(i);else{if(i!==a)throw new ValueError(\"Operands could not be broadcast together with shapes \"+JSON.stringify(e)+\" \"+JSON.stringify(t));n.push(i)}}return n},t.prototype.build=function(e){if(Array.isArray(e)&&!Array.isArray(e[0])&&(e=[getExactlyOneShape(e)]),(e=e).length<2)throw new ValueError(\"A merge layer should be called on an Array of at least 2 inputs. Got \"+e.length+\" input(s).\");for(var t=[],n=0,r=e;n<r.length;n++){null!=(o=r[n])&&null!==o[0]&&t.push(o[0])}if((t=unique(t)).length>1)throw new ValueError(\"Can not merge tensors with different batch sizes. Got tensors with shapes: \"+JSON.stringify(e)+\".\");for(var i=null==e[0]?null:e[0].slice(1),a=1;a<e.length;++a){var o=null==e[a]?null:e[a].slice(1);i=this.computeElementwiseOpOutputShape(i,o)}var s=e.map(function(e){return e.length});-1===e.indexOf(null)&&1===unique(s).length?this.reshapeRequired=!1:this.reshapeRequired=!0},t.prototype.call=function(e,t){var n=this;return tidy(function(){if(e=e,n.reshapeRequired){var t=[],r=e.map(function(e){return e.rank});if(-1===r.indexOf(null)){for(var i=max$1(r),a=0,o=e;a<o.length;a++){for(var s=(h=o[a]).rank,l=0;l<i-s;++l)h=expandDims$1(h,1);t.push(h)}return n.mergeFunction(t)}for(var u=!1,c=0,p=e;c<p.length;c++){var h;if(null==(s=(h=p[c]).rank)){var d=h.shape,f=d[0],g=d.slice(1).concat([f]),m=h.reshape([f].concat(arrayProd(d.slice(1))));m=(m=transpose(m,[1,0])).reshape(g),t.push(m),u=!0}else if(s>1){var y=range(1,s).concat([0]);t.push(transpose(h,y)),u=!0}else t.push(h)}var v=n.mergeFunction(t),b=v.rank;if(u)if(null==b){var w=v.shape;g=[f=w[w.length-1]].concat(w.slice(0,w.length-1));v=transpose(v.reshape([-1,f]),[1,0]).reshape(g)}else if(b>1){y=[b-1].concat(range(0,b-1));v=transpose(v,y)}return v}return n.mergeFunction(e)})},t.prototype.computeOutputShape=function(e){var t;t=null==(e=e)[0]?null:e[0].slice(1);for(var n=1;n<e.length;++n){var r=null==e[n]?null:e[n].slice(1);t=this.computeElementwiseOpOutputShape(t,r)}for(var i=[],a=0,o=e;a<o.length;a++){null!=(r=o[a])&&null!==r[0]&&i.push(r[0])}return t=1===(i=unique(i)).length?i.concat(t):[null].concat(t)},t.prototype.computeMask=function(e,t){return tidy(function(){if(null==t)return null;if(!Array.isArray(t))throw new ValueError(\"`mask` should be an Array\");if(!Array.isArray(e))throw new ValueError(\"`inputs` should be an Array\");if(t.length!==e.length)throw new ValueError(\"The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (\"+e.length+\" vs \"+t.length+\")\");if(t.every(function(e){return null==e}))return null;for(var n=(t=t.map(function(e){return null==e?e:expandDims(e,0)}))[0],r=1;r<t.length-1;++r)n=logicalAnd(n,t[r]);return n})},t}(Layer),Add=function(e){function t(t){return e.call(this,t)||this}return __extends(t,e),t.prototype.mergeFunction=function(e){return tidy(function(){for(var t=e[0].clone(),n=1;n<e.length;++n)t=add(t,e[n]);return t})},t.className=\"Add\",t}(Merge);serialization.registerClass(Add);var Multiply=function(e){function t(t){return e.call(this,t)||this}return __extends(t,e),t.prototype.mergeFunction=function(e){return tidy(function(){for(var t=e[0].clone(),n=1;n<e.length;++n)t=mul(t,e[n]);return t})},t.className=\"Multiply\",t}(Merge);serialization.registerClass(Multiply);var Average=function(e){function t(t){return e.call(this,t)||this}return __extends(t,e),t.prototype.mergeFunction=function(e){return tidy(function(){for(var t=e[0].clone(),n=1;n<e.length;++n)t=add(t,e[n]);return mul(1/e.length,t)})},t.className=\"Average\",t}(Merge);serialization.registerClass(Average);var Maximum=function(e){function t(t){return e.call(this,t)||this}return __extends(t,e),t.prototype.mergeFunction=function(e){return tidy(function(){for(var t=e[0],n=1;n<e.length;++n)t=maximum(t,e[n]);return t})},t.className=\"Maximum\",t}(Merge);serialization.registerClass(Maximum);var Minimum=function(e){function t(t){return e.call(this,t)||this}return __extends(t,e),t.prototype.mergeFunction=function(e){return tidy(function(){for(var t=e[0],n=1;n<e.length;++n)t=minimum(t,e[n]);return t})},t.className=\"Minimum\",t}(Merge);serialization.registerClass(Minimum);var Concatenate=function(e){function t(t){var n=e.call(this,t)||this;return n.DEFAULT_AXIS=-1,null==t&&(t={}),n.axis=null==t.axis?n.DEFAULT_AXIS:t.axis,n.supportsMasking=!0,n.reshapeRequired=!1,n}return __extends(t,e),t.prototype.build=function(e){if(!Array.isArray(e)||!Array.isArray(e[0])||1===e.length)throw new ValueError(\"A `Concatenate` layer should be called on a list of at least 2 inputs\");for(var t=!0,n=0,r=e=e;n<r.length;n++){if(null!=(c=r[n])){t=!1;break}}if(!t){for(var i=[],a=0;a<e.length;++a){var o=e[a].slice();o.splice(this.axis,1);for(var s=!1,l=0,u=i;l<u.length;l++){var c=u[l];if(util.arraysEqual(c,o)){s=!0;break}}s||i.push(o)}if(i.length>1)throw new ValueError(\"A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: \"+JSON.stringify(e))}},t.prototype.mergeFunction=function(e){var t=this;return tidy(function(){return concatenate(e,t.axis)})},t.prototype.computeOutputShape=function(e){if(!Array.isArray(e)||!Array.isArray(e[0]))throw new ValueError(\"A `Concatenate` layer should be called on a list of inputs.\");for(var t=e,n=t[0].slice(),r=this.axis<0?n.length+this.axis:this.axis,i=0,a=t.slice(1);i<a.length;i++){var o=a[i];if(null==n[r]||null==o[r]){n[r]=null;break}n[r]+=o[r]}return n},t.prototype.computeMask=function(e,t){var n=this;if(null==t)return null;if(!Array.isArray(t))throw new ValueError(\"`mask` should be an array for Concatenate\");if(!Array.isArray(e))throw new ValueError(\"`inputs` should be an array for Concatenate\");if(t.length!==e.length)throw new ValueError(\"Mismatch in the length of mask (\"+t.length+\") and the legnth of inputs (\"+e.length+\")\");return tidy(function(){var r=!0;if(t.forEach(function(e){null==e||(r=!1)}),r)return null;for(var i=[],a=0;a<e.length;++a)null==t[a]?i.push(onesLike(e[a]).asType(\"bool\")):t[a].rank<e[a].rank?i.push(expandDims(t[a],-1)):i.push(t[a]);var o=concat(i,n.axis);return all(o,-1,!1)})},t.prototype.getConfig=function(){var t={axis:this.axis},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"Concatenate\",t}(Merge);function interpretAxis(e,t){for(;e<0;)e+=t;return e}function batchDot(e,t,n){if(e.shape.length>3||t.shape.length>3)throw new NotImplementedError(\"batchDot is not implemented for tensors of 4D or higher rank yet\");if(util.assert(e.shape.length>=2,function(){return\"batchDot requires the rank of x to be >= 2, but got \"+e.shape.length}),util.assert(e.shape.length>=2,function(){return\"batchDot requires the rank of y to be >= 2, but got \"+t.shape.length}),\"number\"==typeof n&&(n=[n,n]),\"complex64\"===e.dtype||\"complex64\"===t.dtype)throw new NotImplementedError(\"batchDot is not implemented for complex64-type Tensors yet.\");var r=e.shape.length,i=t.shape.length;null==n&&(n=[r-1,i-2]);var a=n;return tidy(function(){var n,o;if(r>i){n=r-i;for(var s=[],l=0;l<n;++l)s.push(1);t=t.reshape(t.shape.concat(s))}else if(i>r){n=i-r;for(s=[],l=0;l<n;++l)s.push(1);e=e.reshape(e.shape.concat(s))}else n=0;if(2===e.shape.length&&2===t.shape.length)o=a[0]===a[1]?e.mulStrict(t).sum(a[0]):e.transpose([1,0]).mulStrict(t).sum(a[1]);else{var u=a[0]!==e.shape.length-1,c=a[1]===t.shape.length-1;o=e.matMul(t,u,c)}if(n>0){var p=void 0,h=[];for(l=p=r>i?r+i-3:r-1;l<p+n;++l)h.push(l);o=o.squeeze(h)}return 1===o.shape.length&&(o=o.expandDims(1)),o})}serialization.registerClass(Concatenate);var Dot=function(e){function t(t){var n=e.call(this,t)||this;return n.axes=t.axes,n.normalize=null!=t.normalize&&t.normalize,n.supportsMasking=!0,n.reshapeRequired=!1,n}return __extends(t,e),t.prototype.build=function(e){util.assert(Array.isArray(e)&&2===e.length&&Array.isArray(e[0])&&Array.isArray(e[1]),function(){return\"A `Dot` layer should be called on a list of exactly 2 inputs.\"});var t=e[0],n=e[1];if(t.length>3||n.length>3)throw new NotImplementedError(\"Dot layer does not support tensors of 4D or higher rank yet.\");var r=this.interpretAxes(t,n);if(t[r[0]]!==n[r[1]])throw new ValueError(\"Dimension incompatibility: \"+t[r[0]]+\" !== \"+n[r[1]])},t.prototype.mergeFunction=function(e){if(2!==e.length)throw new ValueError(\"A `Dot` layer must be called on exactly 2 inputs, but received \"+e.length+\" input(s).\");var t,n=e[0],r=e[1];return t=Array.isArray(this.axes)?this.axes.map(function(t,n){return interpretAxis(t,e[n].shape.length)}):[interpretAxis(this.axes,n.shape.length),interpretAxis(this.axes,r.shape.length)],this.normalize&&(n=l2Normalize(n,t[0]),r=l2Normalize(r,t[1])),batchDot(n,r,t)},t.prototype.interpretAxes=function(e,t){return Array.isArray(this.axes)?this.axes:[interpretAxis(this.axes,e.length),interpretAxis(this.axes,t.length)]},t.prototype.computeOutputShape=function(e){util.assert(Array.isArray(e)&&2===e.length&&Array.isArray(e[0])&&Array.isArray(e[1]),function(){return\"A `Dot` layer should be called on a list of exactly 2 inputs.\"});var t=e[0].slice(),n=e[1].slice();if(t.length>3||n.length>3)throw new NotImplementedError(\"Dot layer does not support tensors of 4D or higher rank yet.\");var r=this.interpretAxes(t,n);t.splice(r[0],1),n.splice(r[1],1),n.splice(0,1);var i=t.concat(n);return 1===i.length&&i.push(1),i},t.prototype.computeMask=function(e,t){return null},t.prototype.getConfig=function(){var t={axes:this.axes,normalize:this.normalize},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"Dot\",t}(Merge);serialization.registerClass(Dot);var GaussianNoise=function(e){function t(t){var n=e.call(this,t)||this;return n.supportsMasking=!0,n.stddev=t.stddev,n}return __extends(t,e),t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var t=e.prototype.getConfig.call(this),n={stddev:this.stddev};return Object.assign(n,t),n},t.prototype.call=function(e,t){var n=this;return tidy(function(){n.invokeCallHook(e,t);var r=getExactlyOneTensor(e);return inTrainPhase(function(){return randomNormal$1(r.shape,0,n.stddev).add(r)},function(){return r},t.training||!1)})},t.className=\"GaussianNoise\",t}(Layer);serialization.registerClass(GaussianNoise);var GaussianDropout=function(e){function t(t){var n=e.call(this,t)||this;return n.supportsMasking=!0,n.rate=t.rate,n}return __extends(t,e),t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var t=e.prototype.getConfig.call(this),n={rate:this.rate};return Object.assign(n,t),n},t.prototype.call=function(e,t){var n=this;return tidy(function(){n.invokeCallHook(e,t);var r=getExactlyOneTensor(e);if(n.rate>0&&n.rate<1){return inTrainPhase(function(){var e=Math.sqrt(n.rate/(1-n.rate));return r.mul(randomNormal$1(r.shape,1,e))},function(){return r},t.training||!1)}return r})},t.className=\"GaussianDropout\",t}(Layer);serialization.registerClass(GaussianDropout);var AlphaDropout=function(e){function t(t){var n=e.call(this,t)||this;return n.supportsMasking=!0,n.rate=t.rate,n.noiseShape=t.noiseShape,n}return __extends(t,e),t.prototype._getNoiseShape=function(e){return this.noiseShape||getExactlyOneTensor(e).shape},t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var t=e.prototype.getConfig.call(this),n={rate:this.rate};return Object.assign(n,t),n},t.prototype.call=function(e,t){var n=this;return tidy(function(){if(n.rate<1&&n.rate>0){var r=n._getNoiseShape(e);return inTrainPhase(function(){var t=getExactlyOneTensor(e),i=-1.7580993408473766,a=greaterEqual(randomUniform(r),n.rate);a=cast$1(a,\"float32\");var o=Math.pow((1-n.rate)*(1+n.rate*Math.pow(i,2)),-.5),s=-o*i*n.rate;return t.mul(a).add(a.add(-1).mul(i)).mul(o).add(s)},function(){return getExactlyOneTensor(e)},t.training||!1)}return e})},t.className=\"AlphaDropout\",t}(Layer);function batchNormalization(e,t,n,r,i,a){var o;if(void 0===a&&(a=.001),2===e.rank)o=batchNorm2d(e,t,n,r,i,a);else if(3===e.rank)o=batchNorm3d(e,t,n,r,i,a);else{if(4!==e.rank)throw new NotImplementedError(\"batchNormalization is not implemented for array of rank \"+e.rank+\" yet\");o=batchNorm4d(e,t,n,r,i,a)}return o}function regularNormalizeBatchInTraining(e,t,n,r,i){return void 0===i&&(i=.001),tidy(function(){var a=moments(e,r),o=a.mean,s=a.variance;return[batchNormalization(e,o,s,n,t,i),o,s]})}function broadcastNormalizeBatchInTraining(e,t,n,r,i){return void 0===i&&(i=.001),tidy(function(){for(var a=moments(e,r),o=a.mean,s=a.variance,l=[],u=0,c=range(0,e.rank);u<c.length;u++){var p=c[u];-1!==r.indexOf(p)?l.push(1):l.push(e.shape[p])}var h=o.reshape(l),d=s.reshape(l),f=null==t?null:t.reshape(l),g=null==n?null:n.reshape(l);return[batchNormalization(e,h,d,g,f,i),o,s]})}function normalizeBatchInTraining(e,t,n,r,i){return void 0===i&&(i=.001),util.arraysEqual(r.slice().sort(),range(0,e.rank-1))?regularNormalizeBatchInTraining(e,t,n,r,i):broadcastNormalizeBatchInTraining(e,t,n,r,i)}serialization.registerClass(AlphaDropout);var BatchNormalization=function(e){function t(t){var n=this;return null==t&&(t={}),(n=e.call(this,t)||this).supportsMasking=!0,n.axis=null==t.axis?-1:t.axis,n.momentum=null==t.momentum?.99:t.momentum,n.epsilon=null==t.epsilon?.001:t.epsilon,n.center=null==t.center||t.center,n.scale=null==t.scale||t.scale,n.betaInitializer=getInitializer(t.betaInitializer||\"zeros\"),n.gammaInitializer=getInitializer(t.gammaInitializer||\"ones\"),n.movingMeanInitializer=getInitializer(t.movingMeanInitializer||\"zeros\"),n.movingVarianceInitializer=getInitializer(t.movingVarianceInitializer||\"ones\"),n.betaConstraint=getConstraint(t.betaConstraint),n.gammaConstraint=getConstraint(t.gammaConstraint),n.betaRegularizer=getRegularizer(t.betaRegularizer),n.gammaRegularizer=getRegularizer(t.gammaRegularizer),n}return __extends(t,e),t.prototype.build=function(e){var t;e=getExactlyOneShape(e);var n=this.axis>=0?this.axis:this.axis+e.length,r=e[n];if(null==r)throw new ValueError(\"Axis \"+n+\" of input tensor should have a defined dimension but the layer received an input with shape \"+JSON.stringify(e)+\".\");this.inputSpec=[new InputSpec({ndim:e.length,axes:(t={},t[n]=r,t)})];var i=[r];this.scale&&(this.gamma=this.addWeight(\"gamma\",i,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight(\"beta\",i,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight(\"moving_mean\",i,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight(\"moving_variance\",i,null,this.movingVarianceInitializer,null,!1),this.built=!0},t.prototype.call=function(e,t){var n=this;return tidy(function(){var r=null!=t.training&&t.training,i=getExactlyOneTensor(e),a=i.shape,o=a.length,s=range(0,o),l=n.axis>=0?n.axis:n.axis+o;s.splice(l,1);var u=pyListRepeat(1,o);u[l]=a[l];var c=s.slice();c.sort();var p=!util.arraysEqual(c,range(0,o).slice(0,o-1));if(!r)return function(){if(p){var e=n.movingMean.read().reshape(u),t=n.movingVariance.read().reshape(u),r=n.center?n.beta.read().reshape(u):null,a=n.scale?n.gamma.read().reshape(u):null;return batchNormalization(i,e,t,r,a,n.epsilon)}return batchNormalization(i,n.movingMean.read(),n.movingVariance.read(),null==n.beta?null:n.beta.read(),null==n.gamma?null:n.gamma.read(),n.epsilon)}();var h=normalizeBatchInTraining(i,n.gamma.read(),n.beta.read(),s,n.epsilon),d=h[0],f=h[1],g=h[2],m=function(e,t,n){tidy(function(){var r=1-n,i=e.read(),a=i.sub(t).mul(r);e.write(i.sub(a))})};return m(n.movingMean,f,n.momentum),m(n.movingVariance,g,n.momentum),d})},t.prototype.getConfig=function(){var t={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),movingMeanInitializer:serializeInitializer(this.movingMeanInitializer),movingVarianceInitializer:serializeInitializer(this.movingVarianceInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer),betaConstraint:serializeConstraint(this.betaConstraint),gammaConstraint:serializeConstraint(this.gammaConstraint)},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"BatchNormalization\",t}(Layer);serialization.registerClass(BatchNormalization);var LayerNormalization=function(e){function t(t){var n=this;if(null==t&&(t={}),(n=e.call(this,t)||this).axis=null==t.axis?-1:t.axis,\"number\"==typeof n.axis){if(!Number.isInteger(n.axis))throw new Error(\"Expected axis to be an integer, but received \"+n.axis)}else{if(!Array.isArray(n.axis))throw new Error(\"Expected axis to be an integer or an array of integers, but received \"+JSON.stringify(n.axis));for(var r=0,i=n.axis;r<i.length;r++){var a=i[r];if(!Number.isInteger(a))throw new Error(\"Expected axis to be an array of integers, but received \"+JSON.stringify(n.axis))}}return n.epsilon=null==t.epsilon?.001:t.epsilon,n.center=null==t.center||t.center,n.scale=null==t.scale||t.scale,n.betaInitializer=getInitializer(t.betaInitializer||\"zeros\"),n.gammaInitializer=getInitializer(t.gammaInitializer||\"ones\"),n.betaRegularizer=getRegularizer(t.betaRegularizer),n.gammaRegularizer=getRegularizer(t.gammaRegularizer),n.supportsMasking=!0,n}return __extends(t,e),t.prototype.build=function(e){var t=(e=getExactlyOneShape(e)).length;\"number\"==typeof this.axis&&(this.axis=[this.axis]);for(var n=0;n<this.axis.length;++n)this.axis[n]<0&&(this.axis[n]+=t);for(var r=0,i=this.axis;r<i.length;r++){var a=i[r];if(a<0||a>=t)throw new Error(\"Invalid axis: \"+a)}if(this.axis.length!==unique(this.axis).length)throw new Error(\"Found duplicate axes in: \"+this.axis);var o=this.axis.map(function(t){return e[t]});this.scale?this.gamma=this.addWeight(\"gamma\",o,\"float32\",this.gammaInitializer,this.gammaRegularizer,!0):this.gamma=null,this.center?this.beta=this.addWeight(\"beta\",o,\"float32\",this.betaInitializer,this.betaRegularizer,!0):this.beta=null,this.built=!0},t.prototype.call=function(e,t){var n=this,r=getExactlyOneTensor(e),i=r.shape,a=i.length;return tidy(function(){for(var e=moments(r,n.axis,!0),t=e.mean,o=e.variance,s=pyListRepeat(1,a),l=0,u=n.axis;l<u.length;l++){var c=u[l];s[c]=i[c]}for(var p=function(e){return null!=e&&e.shape.length!==a&&n.axis!==[a-1]?e.reshape(s):e},h=p(n.gamma.read()),d=p(n.beta.read()),f=[],g=[],m=0;m<a;++m)-1!==n.axis.indexOf(m)?(f.push(i[m]),g.push(1)):(f.push(1),g.push(i[m]));return t=t.tile(f),o=o.tile(f),h=h.tile(g),d=d.tile(g),batchNormalization(r,t,o,d,h,n.epsilon)})},t.prototype.getConfig=function(){var t={axis:this.axis,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer)},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"LayerNormalization\",t}(Layer);function spatial2dPadding(e,t,n){return tidy(function(){if(4!==e.rank)throw new ValueError(\"temporalPadding expects input tensor to be 4-D, but received a \"+e.rank+\"-D tensor.\");if(null==t&&(t=[[1,1],[1,1]]),2!==t.length||2!==t[0].length||2!==t[1].length)throw new ValueError(\"spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.\");if(null==n&&(n=imageDataFormat()),\"channelsLast\"!==n&&\"channelsFirst\"!==n)throw new ValueError(\"Unknown data format: \"+n+\". Supported data formats are 'channelsLast' and 'channelsFirst.\");var r;return r=\"channelsFirst\"===n?[[0,0],[0,0],t[0],t[1]]:[[0,0],t[0],t[1],[0,0]],pad(e,r)})}serialization.registerClass(LayerNormalization);var ZeroPadding2D=function(e){function t(t){var n=this;if(null==t&&(t={}),(n=e.call(this,t)||this).dataFormat=null==t.dataFormat?imageDataFormat():t.dataFormat,null==t.padding)n.padding=[[1,1],[1,1]];else if(\"number\"==typeof t.padding)n.padding=[[t.padding,t.padding],[t.padding,t.padding]];else{if(t.padding=t.padding,2!==t.padding.length)throw new ValueError(\"ZeroPadding2D expects padding to be a length-2 array, but received a length-\"+t.padding.length+\" array.\");var r=void 0,i=void 0;if(\"number\"==typeof t.padding[0])r=[t.padding[0],t.padding[0]],i=[t.padding[1],t.padding[1]];else{if(t.padding=t.padding,2!==t.padding[0].length)throw new ValueError(\"ZeroPadding2D expects height padding to be a length-2 array, but received a length-\"+t.padding[0].length+\" array.\");if(r=t.padding[0],2!==t.padding[1].length)throw new ValueError(\"ZeroPadding2D expects width padding to be a length-2 array, but received a length-\"+t.padding[1].length+\" array.\");i=t.padding[1]}n.padding=[r,i]}return n.inputSpec=[new InputSpec({ndim:4})],n}return __extends(t,e),t.prototype.computeOutputShape=function(e){var t,n;return e=getExactlyOneShape(e),\"channelsFirst\"===this.dataFormat?(t=null!=e[2]&&e[2]>=0?e[2]+this.padding[0][0]+this.padding[0][1]:null,n=null!=e[3]&&e[3]>=0?e[3]+this.padding[1][0]+this.padding[1][1]:null,[e[0],e[1],t,n]):(t=null!=e[1]&&e[1]>=0?e[1]+this.padding[0][0]+this.padding[0][1]:null,n=null!=e[2]&&e[2]>=0?e[2]+this.padding[1][0]+this.padding[1][1]:null,[e[0],t,n,e[3]])},t.prototype.call=function(e,t){var n=this;return tidy(function(){return spatial2dPadding(getExactlyOneTensor(e),n.padding,n.dataFormat)})},t.prototype.getConfig=function(){var t={padding:this.padding,dataFormat:this.dataFormat},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"ZeroPadding2D\",t}(Layer);function pool2d(e,t,n,r,i,a){return tidy(function(){var o;checkDataFormat(i),checkPoolMode(a),checkPaddingMode(r),null==n&&(n=[1,1]),null==r&&(r=\"valid\"),null==i&&(i=imageDataFormat()),null==a&&(a=\"max\"),e=preprocessConv2DInput(e,i);var s=\"same\"===r?\"same\":\"valid\";return o=\"max\"===a?maxPool(e,t,n,s):avgPool(e,t,n,s),\"channelsFirst\"===i&&(o=transpose(o,[0,3,1,2])),o})}function pool3d(e,t,n,r,i,a){return tidy(function(){var o;checkDataFormat(i),checkPoolMode(a),checkPaddingMode(r),null==n&&(n=[1,1,1]),null==r&&(r=\"valid\"),null==i&&(i=imageDataFormat()),null==a&&(a=\"max\"),e=preprocessConv3DInput(e,i);var s=\"same\"===r?\"same\":\"valid\";return o=\"max\"===a?maxPool3d(e,t,n,s):avgPool3d(e,t,n,s),\"channelsFirst\"===i&&(o=transpose(o,[0,4,1,2,3])),o})}serialization.registerClass(ZeroPadding2D);var Pooling1D=function(e){function t(t){var n=this;if(null==t.poolSize&&(t.poolSize=2),n=e.call(this,t)||this,\"number\"==typeof t.poolSize)n.poolSize=[t.poolSize];else{if(!Array.isArray(t.poolSize)||1!==t.poolSize.length||\"number\"!=typeof t.poolSize[0])throw new ValueError(\"poolSize for 1D convolutional layer must be a number or an Array of a single number, but received \"+JSON.stringify(t.poolSize));n.poolSize=t.poolSize}if(assertPositiveInteger(n.poolSize,\"poolSize\"),null==t.strides)n.strides=n.poolSize;else if(\"number\"==typeof t.strides)n.strides=[t.strides];else{if(!Array.isArray(t.strides)||1!==t.strides.length||\"number\"!=typeof t.strides[0])throw new ValueError(\"strides for 1D convolutional layer must be a number or an Array of a single number, but received \"+JSON.stringify(t.strides));n.strides=t.strides}return assertPositiveInteger(n.strides,\"strides\"),n.padding=null==t.padding?\"valid\":t.padding,checkPaddingMode(n.padding),n.inputSpec=[new InputSpec({ndim:3})],n}return __extends(t,e),t.prototype.computeOutputShape=function(e){var t=convOutputLength((e=getExactlyOneShape(e))[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],t,e[2]]},t.prototype.call=function(e,t){var n=this;return tidy(function(){n.invokeCallHook(e,t),e=expandDims$1(getExactlyOneTensor(e),2);var r=n.poolingFunction(getExactlyOneTensor(e),[n.poolSize[0],1],[n.strides[0],1],n.padding,\"channelsLast\");return squeeze(r,[2])})},t.prototype.getConfig=function(){var t={poolSize:this.poolSize,padding:this.padding,strides:this.strides},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t}(Layer),MaxPooling1D=function(e){function t(t){return e.call(this,t)||this}return __extends(t,e),t.prototype.poolingFunction=function(e,t,n,r,i){return checkDataFormat(i),checkPaddingMode(r),pool2d(e,t,n,r,i,\"max\")},t.className=\"MaxPooling1D\",t}(Pooling1D);serialization.registerClass(MaxPooling1D);var AveragePooling1D=function(e){function t(t){return e.call(this,t)||this}return __extends(t,e),t.prototype.poolingFunction=function(e,t,n,r,i){return checkDataFormat(i),checkPaddingMode(r),pool2d(e,t,n,r,i,\"avg\")},t.className=\"AveragePooling1D\",t}(Pooling1D);serialization.registerClass(AveragePooling1D);var Pooling2D=function(e){function t(t){var n=this;if(null==t.poolSize&&(t.poolSize=[2,2]),(n=e.call(this,t)||this).poolSize=Array.isArray(t.poolSize)?t.poolSize:[t.poolSize,t.poolSize],null==t.strides)n.strides=n.poolSize;else if(Array.isArray(t.strides)){if(2!==t.strides.length)throw new ValueError(\"If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length \"+t.strides.length+\".\");n.strides=t.strides}else n.strides=[t.strides,t.strides];return assertPositiveInteger(n.poolSize,\"poolSize\"),assertPositiveInteger(n.strides,\"strides\"),n.padding=null==t.padding?\"valid\":t.padding,n.dataFormat=null==t.dataFormat?\"channelsLast\":t.dataFormat,checkDataFormat(n.dataFormat),checkPaddingMode(n.padding),n.inputSpec=[new InputSpec({ndim:4})],n}return __extends(t,e),t.prototype.computeOutputShape=function(e){e=getExactlyOneShape(e);var t=\"channelsFirst\"===this.dataFormat?e[2]:e[1],n=\"channelsFirst\"===this.dataFormat?e[3]:e[2];return t=convOutputLength(t,this.poolSize[0],this.padding,this.strides[0]),n=convOutputLength(n,this.poolSize[1],this.padding,this.strides[1]),\"channelsFirst\"===this.dataFormat?[e[0],e[1],t,n]:[e[0],t,n,e[3]]},t.prototype.call=function(e,t){var n=this;return tidy(function(){return n.invokeCallHook(e,t),n.poolingFunction(getExactlyOneTensor(e),n.poolSize,n.strides,n.padding,n.dataFormat)})},t.prototype.getConfig=function(){var t={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t}(Layer),MaxPooling2D=function(e){function t(t){return e.call(this,t)||this}return __extends(t,e),t.prototype.poolingFunction=function(e,t,n,r,i){return checkDataFormat(i),checkPaddingMode(r),pool2d(e,t,n,r,i,\"max\")},t.className=\"MaxPooling2D\",t}(Pooling2D);serialization.registerClass(MaxPooling2D);var AveragePooling2D=function(e){function t(t){return e.call(this,t)||this}return __extends(t,e),t.prototype.poolingFunction=function(e,t,n,r,i){return checkDataFormat(i),checkPaddingMode(r),pool2d(e,t,n,r,i,\"avg\")},t.className=\"AveragePooling2D\",t}(Pooling2D);serialization.registerClass(AveragePooling2D);var Pooling3D=function(e){function t(t){var n=this;if(null==t.poolSize&&(t.poolSize=[2,2,2]),(n=e.call(this,t)||this).poolSize=Array.isArray(t.poolSize)?t.poolSize:[t.poolSize,t.poolSize,t.poolSize],null==t.strides)n.strides=n.poolSize;else if(Array.isArray(t.strides)){if(3!==t.strides.length)throw new ValueError(\"If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length \"+t.strides.length+\".\");n.strides=t.strides}else n.strides=[t.strides,t.strides,t.strides];return assertPositiveInteger(n.poolSize,\"poolSize\"),assertPositiveInteger(n.strides,\"strides\"),n.padding=null==t.padding?\"valid\":t.padding,n.dataFormat=null==t.dataFormat?\"channelsLast\":t.dataFormat,checkDataFormat(n.dataFormat),checkPaddingMode(n.padding),n.inputSpec=[new InputSpec({ndim:5})],n}return __extends(t,e),t.prototype.computeOutputShape=function(e){e=getExactlyOneShape(e);var t=\"channelsFirst\"===this.dataFormat?e[2]:e[1],n=\"channelsFirst\"===this.dataFormat?e[3]:e[2],r=\"channelsFirst\"===this.dataFormat?e[4]:e[3];return t=convOutputLength(t,this.poolSize[0],this.padding,this.strides[0]),n=convOutputLength(n,this.poolSize[1],this.padding,this.strides[1]),r=convOutputLength(r,this.poolSize[2],this.padding,this.strides[2]),\"channelsFirst\"===this.dataFormat?[e[0],e[1],t,n,r]:[e[0],t,n,r,e[4]]},t.prototype.call=function(e,t){var n=this;return tidy(function(){return n.invokeCallHook(e,t),n.poolingFunction(getExactlyOneTensor(e),n.poolSize,n.strides,n.padding,n.dataFormat)})},t.prototype.getConfig=function(){var t={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t}(Layer),MaxPooling3D=function(e){function t(t){return e.call(this,t)||this}return __extends(t,e),t.prototype.poolingFunction=function(e,t,n,r,i){return checkDataFormat(i),checkPaddingMode(r),pool3d(e,t,n,r,i,\"max\")},t.className=\"MaxPooling3D\",t}(Pooling3D);serialization.registerClass(MaxPooling3D);var AveragePooling3D=function(e){function t(t){return e.call(this,t)||this}return __extends(t,e),t.prototype.poolingFunction=function(e,t,n,r,i){return checkDataFormat(i),checkPaddingMode(r),pool3d(e,t,n,r,i,\"avg\")},t.className=\"AveragePooling3D\",t}(Pooling3D);serialization.registerClass(AveragePooling3D);var GlobalPooling1D=function(e){function t(t){var n=e.call(this,t)||this;return n.inputSpec=[new InputSpec({ndim:3})],n}return __extends(t,e),t.prototype.computeOutputShape=function(e){return[e[0],e[2]]},t.prototype.call=function(e,t){throw new NotImplementedError},t}(Layer),GlobalAveragePooling1D=function(e){function t(t){return e.call(this,t||{})||this}return __extends(t,e),t.prototype.call=function(e,t){return tidy(function(){var t=getExactlyOneTensor(e);return mean(t,1)})},t.className=\"GlobalAveragePooling1D\",t}(GlobalPooling1D);serialization.registerClass(GlobalAveragePooling1D);var GlobalMaxPooling1D=function(e){function t(t){return e.call(this,t||{})||this}return __extends(t,e),t.prototype.call=function(e,t){return tidy(function(){var t=getExactlyOneTensor(e);return max(t,1)})},t.className=\"GlobalMaxPooling1D\",t}(GlobalPooling1D);serialization.registerClass(GlobalMaxPooling1D);var GlobalPooling2D=function(e){function t(t){var n=e.call(this,t)||this;return n.dataFormat=null==t.dataFormat?\"channelsLast\":t.dataFormat,checkDataFormat(n.dataFormat),n.inputSpec=[new InputSpec({ndim:4})],n}return __extends(t,e),t.prototype.computeOutputShape=function(e){return e=e,\"channelsLast\"===this.dataFormat?[e[0],e[3]]:[e[0],e[1]]},t.prototype.call=function(e,t){throw new NotImplementedError},t.prototype.getConfig=function(){var t={dataFormat:this.dataFormat},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t}(Layer),GlobalAveragePooling2D=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.call=function(e,t){var n=this;return tidy(function(){var t=getExactlyOneTensor(e);return\"channelsLast\"===n.dataFormat?mean(t,[1,2]):mean(t,[2,3])})},t.className=\"GlobalAveragePooling2D\",t}(GlobalPooling2D);serialization.registerClass(GlobalAveragePooling2D);var GlobalMaxPooling2D=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.call=function(e,t){var n=this;return tidy(function(){var t=getExactlyOneTensor(e);return\"channelsLast\"===n.dataFormat?max(t,[1,2]):max(t,[2,3])})},t.className=\"GlobalMaxPooling2D\",t}(GlobalPooling2D);function standardizeArgs(e,t,n,r){if(Array.isArray(e)){if(null!=t||null!=n)throw new ValueError(\"When inputs is an array, neither initialState or constants should be provided\");null!=r&&(n=e.slice(e.length-r,e.length),e=e.slice(0,e.length-r)),e.length>1&&(t=e.slice(1,e.length)),e=e[0]}function i(e){return null==e||Array.isArray(e)?e:[e]}return{inputs:e,initialState:t=i(t),constants:n=i(n)}}function rnn(e,t,n,r,i,a,o,s){return void 0===r&&(r=!1),void 0===o&&(o=!1),void 0===s&&(s=!1),tidy(function(){var l=t.shape.length;if(l<3)throw new ValueError(\"Input should be at least 3D, but is \"+l+\"D.\");var u=[1,0].concat(range(2,l));if(t=transpose(t,u),null!=a)throw new NotImplementedError(\"The rnn() functoin of the deeplearn.js backend does not support constants yet.\");o&&console.warn(\"Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend.\"),null!=i&&((i=i.asType(\"bool\").asType(\"float32\")).rank===l-1&&(i=expandDims(i,-1)),i=transpose(i,u)),r&&(t=reverse(t,0),null!=i&&(i=reverse(i,0)));var c,p,h=[],d=n,f=t.shape[0],g=unstack(t);null!=i&&(p=unstack(i));for(var m,y=function(t){var n=g[t],r=tidy(function(){return e(n,d)});if(null==i)c=r[0],d=r[1];else{var a=tidy(function(){var e=p[t],n=onesLike(e).sub(e);return{output:r[0].mul(e).addStrict(d[0].mul(n)),newStates:d.map(function(t,i){return r[1][i].mul(e).addStrict(t.mul(n))})}});c=a.output,d=a.newStates}s&&h.push(c)},v=0;v<f;++v)y(v);if(s){m=stack(h,1)}return[c,m,d]})}serialization.registerClass(GlobalMaxPooling2D);var RNN=function(e){function t(t){var n,r=e.call(this,t)||this;if(null==t.cell)throw new ValueError(\"cell property is missing for the constructor of RNN.\");if(null==(n=Array.isArray(t.cell)?new StackedRNNCells({cells:t.cell}):t.cell).stateSize)throw new ValueError(\"The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).\");return r.cell=n,r.returnSequences=null!=t.returnSequences&&t.returnSequences,r.returnState=null!=t.returnState&&t.returnState,r.goBackwards=null!=t.goBackwards&&t.goBackwards,r._stateful=null!=t.stateful&&t.stateful,r.unroll=null!=t.unroll&&t.unroll,r.supportsMasking=!0,r.inputSpec=[new InputSpec({ndim:3})],r.stateSpec=null,r.states_=null,r.numConstants=null,r.keptStates=[],r}return __extends(t,e),t.prototype.getStates=function(){return null==this.states_?range(0,Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1).map(function(e){return null}):this.states_},t.prototype.setStates=function(e){this.states_=e},t.prototype.computeOutputShape=function(e){isArrayOfShapes(e)&&(e=e[0]),e=e;var t=this.cell.stateSize;Array.isArray(t)||(t=[t]);var n,r=t[0];if(n=this.returnSequences?[e[0],e[1],r]:[e[0],r],this.returnState){for(var i=[],a=0,o=t;a<o.length;a++){var s=o[a];i.push([e[0],s])}return[n].concat(i)}return n},t.prototype.computeMask=function(e,t){var n=this;return tidy(function(){Array.isArray(t)&&(t=t[0]);var e=n.returnSequences?t:null;if(n.returnState){var r=n.states.map(function(e){return null});return[e].concat(r)}return e})},Object.defineProperty(t.prototype,\"states\",{get:function(){if(null==this.states_){for(var e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,t=[],n=0;n<e;++n)t.push(null);return t}return this.states_},set:function(e){this.states_=e},enumerable:!0,configurable:!0}),t.prototype.build=function(e){if(null!=this.numConstants)throw new NotImplementedError(\"Constants support is not implemented in RNN yet.\");isArrayOfShapes(e)&&(e=e[0]),e=e;var t=this.stateful?e[0]:null,n=e[e.length-1];this.inputSpec[0]=new InputSpec({shape:[t,null,n]});var r,i=[e[0]].concat(e.slice(2));if(this.cell.build(i),r=Array.isArray(this.cell.stateSize)?this.cell.stateSize:[this.cell.stateSize],null!=this.stateSpec){if(!util.arraysEqual(this.stateSpec.map(function(e){return e.shape[e.shape.length-1]}),r))throw new ValueError(\"An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=\"+this.stateSpec+\"; However cell.stateSize is \"+this.cell.stateSize)}else this.stateSpec=r.map(function(e){return new InputSpec({shape:[null,e]})});this.stateful&&this.resetStates()},t.prototype.resetStates=function(e,t){var n=this;void 0===t&&(t=!1),tidy(function(){if(!n.stateful)throw new AttributeError(\"Cannot call resetStates() on an RNN Layer that is not stateful.\");var r=n.inputSpec[0].shape[0];if(null==r)throw new ValueError(\"If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \\n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.\");if(null==n.states_)Array.isArray(n.cell.stateSize)?n.states_=n.cell.stateSize.map(function(e){return zeros([r,e])}):n.states_=[zeros([r,n.cell.stateSize])];else if(null==e)dispose(n.states_),null!=n.keptStates&&(dispose(n.keptStates),n.keptStates=[]),Array.isArray(n.cell.stateSize)?n.states_=n.cell.stateSize.map(function(e){return zeros([r,e])}):n.states_[0]=zeros([r,n.cell.stateSize]);else{if(Array.isArray(e)||(e=[e]),e.length!==n.states_.length)throw new ValueError(\"Layer \"+n.name+\" expects \"+n.states_.length+\" state(s), but it received \"+e.length+\" state value(s). Input received: \"+e);!0===t?n.keptStates.push(n.states_.slice()):dispose(n.states_);for(var i=0;i<n.states_.length;++i){var a=e[i],o=Array.isArray(n.cell.stateSize)?n.cell.stateSize[i]:n.cell.stateSize,s=[r,o];if(!util.arraysEqual(a.shape,s))throw new ValueError(\"State \"+i+\" is incompatible with layer \"+n.name+\": expected shape=\"+s+\", received shape=\"+a.shape);n.states_[i]=a}}n.states_=n.states_.map(function(e){return keep(e.clone())})})},t.prototype.apply=function(t,n){var r=null==n?null:n.initialState,i=null==n?null:n.constants;null==n&&(n={});var a=standardizeArgs(t,r,i,this.numConstants);t=a.inputs,r=a.initialState,i=a.constants;var o=[],s=[];if(null!=r){n.initialState=r,o=o.concat(r),this.stateSpec=[];for(var l=0,u=r;l<u.length;l++){var c=u[l];this.stateSpec.push(new InputSpec({shape:c.shape}))}s=s.concat(this.stateSpec)}if(null!=i&&(n.constants=i,o=o.concat(i),this.numConstants=i.length),o[0]instanceof SymbolicTensor){var p=[t].concat(o),h=this.inputSpec.concat(s),d=this.inputSpec;this.inputSpec=h;var f=e.prototype.apply.call(this,p,n);return this.inputSpec=d,f}return e.prototype.apply.call(this,t,n)},t.prototype.call=function(e,t){var n=this;return tidy(function(){var r=null==t?null:t.mask,i=null==t?null:t.training,a=null==t?null:t.initialState;e=getExactlyOneTensor(e),null==a&&(a=n.stateful?n.states_:n.getInitialState(e));var o=Array.isArray(n.cell.stateSize)?n.cell.stateSize.length:1;if(a.length!==o)throw new ValueError(\"RNN Layer has \"+o+\" state(s) but was passed \"+a.length+\" initial state(s).\");n.unroll&&console.warn(\"Ignoring unroll = true for RNN layer, due to imperative backend.\");var s={training:i},l=rnn(function(e,t){var r=n.cell.call([e].concat(t),s);return[r[0],r.slice(1)]},e,a,n.goBackwards,r,null,n.unroll,n.returnSequences),u=l[0],c=l[1],p=l[2];n.stateful&&n.resetStates(p,i);var h=n.returnSequences?c:u;return n.returnState?[h].concat(p):h})},t.prototype.getInitialState=function(e){var t=this;return tidy(function(){var n=zeros(e.shape);return n=expandDims$1(n=sum(n,[1,2])),Array.isArray(t.cell.stateSize)?t.cell.stateSize.map(function(e){return e>1?tile$1(n,[1,e]):n}):t.cell.stateSize>1?[tile$1(n,[1,t.cell.stateSize])]:[n]})},Object.defineProperty(t.prototype,\"trainableWeights\",{get:function(){return this.trainable?this.cell.trainableWeights:[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"nonTrainableWeights\",{get:function(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights},enumerable:!0,configurable:!0}),t.prototype.setFastWeightInitDuringBuild=function(t){e.prototype.setFastWeightInitDuringBuild.call(this,t),null!=this.cell&&this.cell.setFastWeightInitDuringBuild(t)},t.prototype.getConfig=function(){var t={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};null!=this.numConstants&&(t.numConstants=this.numConstants);var n=this.cell.getConfig();t.cell={className:this.cell.getClassName(),config:n};var r=e.prototype.getConfig.call(this);return Object.assign(t,r),t},t.fromConfig=function(e,t,n){void 0===n&&(n={});var r=deserialize(t.cell,n);return new e(Object.assign(t,{cell:r}))},t.className=\"RNN\",t}(Layer);serialization.registerClass(RNN);var RNNCell=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t}(Layer),SimpleRNNCell=function(e){function t(t){var n=e.call(this,t)||this;return n.DEFAULT_ACTIVATION=\"tanh\",n.DEFAULT_KERNEL_INITIALIZER=\"glorotNormal\",n.DEFAULT_RECURRENT_INITIALIZER=\"orthogonal\",n.DEFAULT_BIAS_INITIALIZER=\"zeros\",n.units=t.units,assertPositiveInteger(n.units,\"units\"),n.activation=getActivation(null==t.activation?n.DEFAULT_ACTIVATION:t.activation),n.useBias=null==t.useBias||t.useBias,n.kernelInitializer=getInitializer(t.kernelInitializer||n.DEFAULT_KERNEL_INITIALIZER),n.recurrentInitializer=getInitializer(t.recurrentInitializer||n.DEFAULT_RECURRENT_INITIALIZER),n.biasInitializer=getInitializer(t.biasInitializer||n.DEFAULT_BIAS_INITIALIZER),n.kernelRegularizer=getRegularizer(t.kernelRegularizer),n.recurrentRegularizer=getRegularizer(t.recurrentRegularizer),n.biasRegularizer=getRegularizer(t.biasRegularizer),n.kernelConstraint=getConstraint(t.kernelConstraint),n.recurrentConstraint=getConstraint(t.recurrentConstraint),n.biasConstraint=getConstraint(t.biasConstraint),n.dropout=min$1([1,max$1([0,null==t.dropout?0:t.dropout])]),n.recurrentDropout=min$1([1,max$1([0,null==t.recurrentDropout?0:t.recurrentDropout])]),n.stateSize=n.units,n.dropoutMask=null,n.recurrentDropoutMask=null,n}return __extends(t,e),t.prototype.build=function(e){e=getExactlyOneShape(e),this.kernel=this.addWeight(\"kernel\",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight(\"recurrent_kernel\",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight(\"bias\",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0},t.prototype.call=function(e,t){var n=this;return tidy(function(){if(2!==(e=e).length)throw new ValueError(\"SimpleRNNCell expects 2 input Tensors, got \"+e.length+\".\");var r=e[1];e=e[0];var i,a=null!=t.training&&t.training;0<n.dropout&&n.dropout<1&&null==n.dropoutMask&&(n.dropoutMask=generateDropoutMask(function(){return onesLike(e)},n.dropout,a)),0<n.recurrentDropout&&n.recurrentDropout<1&&null==n.recurrentDropoutMask&&(n.recurrentDropoutMask=generateDropoutMask(function(){return onesLike(r)},n.recurrentDropout,a));var o=n.dropoutMask,s=n.recurrentDropoutMask;i=dot(null!=o?mul(e,o):e,n.kernel.read()),null!=n.bias&&(i=biasAdd(i,n.bias.read())),null!=s&&(r=mul(r,s));var l=add(i,dot(r,n.recurrentKernel.read()));return null!=n.activation&&(l=n.activation.apply(l)),[l,l]})},t.prototype.getConfig=function(){var t={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"SimpleRNNCell\",t}(RNNCell);serialization.registerClass(SimpleRNNCell);var SimpleRNN=function(e){function t(t){return t.cell=new SimpleRNNCell(t),e.call(this,t)||this}return __extends(t,e),t.prototype.call=function(t,n){var r=this;return tidy(function(){null!=r.cell.dropoutMask&&(dispose(r.cell.dropoutMask),r.cell.dropoutMask=null),null!=r.cell.recurrentDropoutMask&&(dispose(r.cell.recurrentDropoutMask),r.cell.recurrentDropoutMask=null);var i=null==n?null:n.mask,a=null==n?null:n.training,o=null==n?null:n.initialState;return e.prototype.call.call(r,t,{mask:i,training:a,initialState:o})})},Object.defineProperty(t.prototype,\"units\",{get:function(){return this.cell.units},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"activation\",{get:function(){return this.cell.activation},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"useBias\",{get:function(){return this.cell.useBias},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"kernelInitializer\",{get:function(){return this.cell.kernelInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"recurrentInitializer\",{get:function(){return this.cell.recurrentInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"biasInitializer\",{get:function(){return this.cell.biasInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"kernelRegularizer\",{get:function(){return this.cell.kernelRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"recurrentRegularizer\",{get:function(){return this.cell.recurrentRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"biasRegularizer\",{get:function(){return this.cell.biasRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"kernelConstraint\",{get:function(){return this.cell.kernelConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"recurrentConstraint\",{get:function(){return this.cell.recurrentConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"biasConstraint\",{get:function(){return this.cell.biasConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"dropout\",{get:function(){return this.cell.dropout},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"recurrentDropout\",{get:function(){return this.cell.recurrentDropout},enumerable:!0,configurable:!0}),t.prototype.getConfig=function(){var t={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout},n=e.prototype.getConfig.call(this);return delete n.cell,Object.assign(t,n),t},t.fromConfig=function(e,t){return new e(t)},t.className=\"SimpleRNN\",t}(RNN);serialization.registerClass(SimpleRNN);var GRUCell=function(e){function t(t){var n=e.call(this,t)||this;return n.DEFAULT_ACTIVATION=\"tanh\",n.DEFAULT_RECURRENT_ACTIVATION=\"hardSigmoid\",n.DEFAULT_KERNEL_INITIALIZER=\"glorotNormal\",n.DEFAULT_RECURRENT_INITIALIZER=\"orthogonal\",n.DEFAULT_BIAS_INITIALIZER=\"zeros\",n.units=t.units,assertPositiveInteger(n.units,\"units\"),n.activation=getActivation(void 0===t.activation?n.DEFAULT_ACTIVATION:t.activation),n.recurrentActivation=getActivation(void 0===t.recurrentActivation?n.DEFAULT_RECURRENT_ACTIVATION:t.recurrentActivation),n.useBias=null==t.useBias||t.useBias,n.kernelInitializer=getInitializer(t.kernelInitializer||n.DEFAULT_KERNEL_INITIALIZER),n.recurrentInitializer=getInitializer(t.recurrentInitializer||n.DEFAULT_RECURRENT_INITIALIZER),n.biasInitializer=getInitializer(t.biasInitializer||n.DEFAULT_BIAS_INITIALIZER),n.kernelRegularizer=getRegularizer(t.kernelRegularizer),n.recurrentRegularizer=getRegularizer(t.recurrentRegularizer),n.biasRegularizer=getRegularizer(t.biasRegularizer),n.kernelConstraint=getConstraint(t.kernelConstraint),n.recurrentConstraint=getConstraint(t.recurrentConstraint),n.biasConstraint=getConstraint(t.biasConstraint),n.dropout=min$1([1,max$1([0,null==t.dropout?0:t.dropout])]),n.recurrentDropout=min$1([1,max$1([0,null==t.recurrentDropout?0:t.recurrentDropout])]),n.implementation=t.implementation,n.stateSize=n.units,n.dropoutMask=null,n.recurrentDropoutMask=null,n}return __extends(t,e),t.prototype.build=function(e){var t=(e=getExactlyOneShape(e))[e.length-1];this.kernel=this.addWeight(\"kernel\",[t,3*this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight(\"recurrent_kernel\",[this.units,3*this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight(\"bias\",[3*this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0},t.prototype.call=function(e,t){var n=this;return tidy(function(){if(2!==(e=e).length)throw new ValueError(\"GRUCell expects 2 input Tensors (inputs, h, c), got \"+e.length+\".\");var r=null!=t.training&&t.training,i=e[1];e=e[0],0<n.dropout&&n.dropout<1&&null==n.dropoutMask&&(n.dropoutMask=generateDropoutMask(function(){return onesLike(e)},n.dropout,r,3)),0<n.recurrentDropout&&n.recurrentDropout<1&&null==n.recurrentDropoutMask&&(n.recurrentDropoutMask=generateDropoutMask(function(){return onesLike(i)},n.recurrentDropout,r,3));var a,o,s,l=n.dropoutMask,u=n.recurrentDropoutMask;0<n.dropout&&n.dropout<1&&(e=mul(e,l[0]));var c=dot(e,n.kernel.read());n.useBias&&(c=biasAdd(c,n.bias.read())),0<n.recurrentDropout&&n.recurrentDropout<1&&(i=mul(i,u[0]));var p=n.recurrentKernel.read(),h=split(p,[2*n.units,n.units],p.rank-1),d=h[0],f=h[1],g=dot(i,d),m=split(c,3,c.rank-1),y=m[0],v=m[1],b=m[2],w=split(g,2,g.rank-1),z=w[0],S=w[1];a=n.recurrentActivation.apply(add(y,z)),o=n.recurrentActivation.apply(add(v,S));var A=dot(mul(o,i),f);s=n.activation.apply(add(b,A));var _=add(mul(a,i),mul(add(1,neg(a)),s));return[_,_]})},t.prototype.getConfig=function(){var t={units:this.units,activation:serializeActivation(this.activation),recurrentActivation:serializeActivation(this.recurrentActivation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout,implementation:this.implementation},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"GRUCell\",t}(RNNCell);serialization.registerClass(GRUCell);var GRU=function(e){function t(t){return 0===t.implementation&&console.warn(\"`implementation=0` has been deprecated, and now defaults to `implementation=1`. Please update your layer call.\"),t.cell=new GRUCell(t),e.call(this,t)||this}return __extends(t,e),t.prototype.call=function(t,n){var r=this;return tidy(function(){null!=r.cell.dropoutMask&&(dispose(r.cell.dropoutMask),r.cell.dropoutMask=null),null!=r.cell.recurrentDropoutMask&&(dispose(r.cell.recurrentDropoutMask),r.cell.recurrentDropoutMask=null);var i=null==n?null:n.mask,a=null==n?null:n.training,o=null==n?null:n.initialState;return e.prototype.call.call(r,t,{mask:i,training:a,initialState:o})})},Object.defineProperty(t.prototype,\"units\",{get:function(){return this.cell.units},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"activation\",{get:function(){return this.cell.activation},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"recurrentActivation\",{get:function(){return this.cell.recurrentActivation},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"useBias\",{get:function(){return this.cell.useBias},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"kernelInitializer\",{get:function(){return this.cell.kernelInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"recurrentInitializer\",{get:function(){return this.cell.recurrentInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"biasInitializer\",{get:function(){return this.cell.biasInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"kernelRegularizer\",{get:function(){return this.cell.kernelRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"recurrentRegularizer\",{get:function(){return this.cell.recurrentRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"biasRegularizer\",{get:function(){return this.cell.biasRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"kernelConstraint\",{get:function(){return this.cell.kernelConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"recurrentConstraint\",{get:function(){return this.cell.recurrentConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"biasConstraint\",{get:function(){return this.cell.biasConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"dropout\",{get:function(){return this.cell.dropout},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"recurrentDropout\",{get:function(){return this.cell.recurrentDropout},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"implementation\",{get:function(){return this.cell.implementation},enumerable:!0,configurable:!0}),t.prototype.getConfig=function(){var t={units:this.units,activation:serializeActivation(this.activation),recurrentActivation:serializeActivation(this.recurrentActivation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout,implementation:this.implementation},n=e.prototype.getConfig.call(this);return delete n.cell,Object.assign(t,n),t},t.fromConfig=function(e,t){return 0===t.implmentation&&(t.implementation=1),new e(t)},t.className=\"GRU\",t}(RNN);serialization.registerClass(GRU);var LSTMCell=function(e){function t(t){var n=e.call(this,t)||this;return n.DEFAULT_ACTIVATION=\"tanh\",n.DEFAULT_RECURRENT_ACTIVATION=\"hardSigmoid\",n.DEFAULT_KERNEL_INITIALIZER=\"glorotNormal\",n.DEFAULT_RECURRENT_INITIALIZER=\"orthogonal\",n.DEFAULT_BIAS_INITIALIZER=\"zeros\",n.units=t.units,assertPositiveInteger(n.units,\"units\"),n.activation=getActivation(void 0===t.activation?n.DEFAULT_ACTIVATION:t.activation),n.recurrentActivation=getActivation(void 0===t.recurrentActivation?n.DEFAULT_RECURRENT_ACTIVATION:t.recurrentActivation),n.useBias=null==t.useBias||t.useBias,n.kernelInitializer=getInitializer(t.kernelInitializer||n.DEFAULT_KERNEL_INITIALIZER),n.recurrentInitializer=getInitializer(t.recurrentInitializer||n.DEFAULT_RECURRENT_INITIALIZER),n.biasInitializer=getInitializer(t.biasInitializer||n.DEFAULT_BIAS_INITIALIZER),n.unitForgetBias=t.unitForgetBias,n.kernelRegularizer=getRegularizer(t.kernelRegularizer),n.recurrentRegularizer=getRegularizer(t.recurrentRegularizer),n.biasRegularizer=getRegularizer(t.biasRegularizer),n.kernelConstraint=getConstraint(t.kernelConstraint),n.recurrentConstraint=getConstraint(t.recurrentConstraint),n.biasConstraint=getConstraint(t.biasConstraint),n.dropout=min$1([1,max$1([0,null==t.dropout?0:t.dropout])]),n.recurrentDropout=min$1([1,max$1([0,null==t.recurrentDropout?0:t.recurrentDropout])]),n.implementation=t.implementation,n.stateSize=[n.units,n.units],n.dropoutMask=null,n.recurrentDropoutMask=null,n}return __extends(t,e),t.prototype.build=function(e){var t,n,r=(e=getExactlyOneShape(e))[e.length-1];if(this.kernel=this.addWeight(\"kernel\",[r,4*this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight(\"recurrent_kernel\",[this.units,4*this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){if(this.unitForgetBias){var i=this.biasInitializer,a=this.units;n=new((t=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),t.prototype.apply=function(e,t){var n=i.apply([a]),r=(new Ones).apply([a]),o=i.apply([2*a]);return concatAlongFirstAxis(concatAlongFirstAxis(n,r),o)},t}(Initializer)).className=\"CustomInit\",t)}else n=this.biasInitializer;this.bias=this.addWeight(\"bias\",[4*this.units],null,n,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0},t.prototype.call=function(e,t){var n=this;return tidy(function(){var r=null!=t.training&&t.training;if(3!==(e=e).length)throw new ValueError(\"LSTMCell expects 3 input Tensors (inputs, h, c), got \"+e.length+\".\");var i=e[1],a=e[2];e=e[0],0<n.dropout&&n.dropout<1&&null==n.dropoutMask&&(n.dropoutMask=generateDropoutMask(function(){return onesLike(e)},n.dropout,r,4)),0<n.recurrentDropout&&n.recurrentDropout<1&&null==n.recurrentDropoutMask&&(n.recurrentDropoutMask=generateDropoutMask(function(){return onesLike(i)},n.recurrentDropout,r,4));var o,s,l,u,c=n.dropoutMask,p=n.recurrentDropoutMask;0<n.dropout&&n.dropout<1&&(e=mul(e,c[0]));var h=dot(e,n.kernel.read());0<n.recurrentDropout&&n.recurrentDropout<1&&(i=mul(i,p[0])),h=add(h,dot(i,n.recurrentKernel.read())),n.useBias&&(h=biasAdd(h,n.bias.read()));var d=split(h,4,h.rank-1),f=d[0],g=d[1],m=d[2],y=d[3];o=n.recurrentActivation.apply(f),s=n.recurrentActivation.apply(g),l=add(mul(s,a),mul(o,n.activation.apply(m))),u=n.recurrentActivation.apply(y);var v=mul(u,n.activation.apply(l));return[v,v,l]})},t.prototype.getConfig=function(){var t={units:this.units,activation:serializeActivation(this.activation),recurrentActivation:serializeActivation(this.recurrentActivation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),unitForgetBias:this.unitForgetBias,kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout,implementation:this.implementation},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className=\"LSTMCell\",t}(RNNCell);serialization.registerClass(LSTMCell);var LSTM=function(e){function t(t){return 0===t.implementation&&console.warn(\"`implementation=0` has been deprecated, and now defaults to `implementation=1`. Please update your layer call.\"),t.cell=new LSTMCell(t),e.call(this,t)||this}return __extends(t,e),t.prototype.call=function(t,n){var r=this;return tidy(function(){null!=r.cell.dropoutMask&&(dispose(r.cell.dropoutMask),r.cell.dropoutMask=null),null!=r.cell.recurrentDropoutMask&&(dispose(r.cell.recurrentDropoutMask),r.cell.recurrentDropoutMask=null);var i=null==n?null:n.mask,a=null==n?null:n.training,o=null==n?null:n.initialState;return e.prototype.call.call(r,t,{mask:i,training:a,initialState:o})})},Object.defineProperty(t.prototype,\"units\",{get:function(){return this.cell.units},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"activation\",{get:function(){return this.cell.activation},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"recurrentActivation\",{get:function(){return this.cell.recurrentActivation},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"useBias\",{get:function(){return this.cell.useBias},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"kernelInitializer\",{get:function(){return this.cell.kernelInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"recurrentInitializer\",{get:function(){return this.cell.recurrentInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"biasInitializer\",{get:function(){return this.cell.biasInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"unitForgetBias\",{get:function(){return this.cell.unitForgetBias},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"kernelRegularizer\",{get:function(){return this.cell.kernelRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"recurrentRegularizer\",{get:function(){return this.cell.recurrentRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"biasRegularizer\",{get:function(){return this.cell.biasRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"kernelConstraint\",{get:function(){return this.cell.kernelConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"recurrentConstraint\",{get:function(){return this.cell.recurrentConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"biasConstraint\",{get:function(){return this.cell.biasConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"dropout\",{get:function(){return this.cell.dropout},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"recurrentDropout\",{get:function(){return this.cell.recurrentDropout},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"implementation\",{get:function(){return this.cell.implementation},enumerable:!0,configurable:!0}),t.prototype.getConfig=function(){var t={units:this.units,activation:serializeActivation(this.activation),recurrentActivation:serializeActivation(this.recurrentActivation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),unitForgetBias:this.unitForgetBias,kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout,implementation:this.implementation},n=e.prototype.getConfig.call(this);return delete n.cell,Object.assign(t,n),t},t.fromConfig=function(e,t){return 0===t.implmentation&&(t.implementation=1),new e(t)},t.className=\"LSTM\",t}(RNN);serialization.registerClass(LSTM);var StackedRNNCells=function(e){function t(t){var n=e.call(this,t)||this;return n.cells=t.cells,n}return __extends(t,e),Object.defineProperty(t.prototype,\"stateSize\",{get:function(){for(var e=[],t=0,n=this.cells.slice().reverse();t<n.length;t++){var r=n[t];Array.isArray(r.stateSize)?e.push.apply(e,r.stateSize):e.push(r.stateSize)}return e},enumerable:!0,configurable:!0}),t.prototype.call=function(e,t){var n=this;return tidy(function(){for(var r=(e=e).slice(1),i=[],a=0,o=n.cells.slice().reverse();a<o.length;a++){var s=o[a];Array.isArray(s.stateSize)?i.push(r.splice(0,s.stateSize.length)):i.push(r.splice(0,1))}i.reverse();for(var l,u=[],c=0;c<n.cells.length;++c){s=n.cells[c];r=i[c],l=0===c?[e[0]].concat(r):[l[0]].concat(r),l=s.call(l,t),u.push(l.slice(1))}r=[];for(var p=0,h=u.slice().reverse();p<h.length;p++){var d=h[p];r.push.apply(r,d)}return[l[0]].concat(r)})},t.prototype.build=function(e){var t;isArrayOfShapes(e)&&(e=e[0]),e=e,this.cells.forEach(function(n,r){nameScope(\"RNNCell_\"+r,function(){n.build(e),t=Array.isArray(n.stateSize)?n.stateSize[0]:n.stateSize,e=[e[0],t]})}),this.built=!0},t.prototype.getConfig=function(){for(var t=[],n=0,r=this.cells;n<r.length;n++){var i=r[n];t.push({className:i.getClassName(),config:i.getConfig()})}var a={cells:t},o=e.prototype.getConfig.call(this);return Object.assign(a,o),a},t.fromConfig=function(e,t,n){void 0===n&&(n={});for(var r=[],i=0,a=t.cells;i<a.length;i++){var o=a[i];r.push(deserialize(o,n))}return new e({cells:r})},Object.defineProperty(t.prototype,\"trainableWeights\",{get:function(){if(!this.trainable)return[];for(var e=[],t=0,n=this.cells;t<n.length;t++){var r=n[t];e.push.apply(e,r.trainableWeights)}return e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"nonTrainableWeights\",{get:function(){for(var e=[],t=0,n=this.cells;t<n.length;t++){var r=n[t];e.push.apply(e,r.nonTrainableWeights)}if(!this.trainable){for(var i=[],a=0,o=this.cells;a<o.length;a++){r=o[a];i.push.apply(i,r.trainableWeights)}return i.concat(e)}return e},enumerable:!0,configurable:!0}),t.prototype.getWeights=function(){for(var e=[],t=0,n=this.cells;t<n.length;t++){var r=n[t];e.push.apply(e,r.weights)}return batchGetValue(e)},t.prototype.setWeights=function(e){for(var t=[],n=0,r=this.cells;n<r.length;n++)for(var i=r[n],a=i.weights.length,o=e.splice(a),s=0;s<i.weights.length;++s)t.push([i.weights[s],o[s]]);batchSetValue(t)},t.className=\"StackedRNNCells\",t}(RNNCell);function generateDropoutMask(e,t,n,r){function i(){return dropout$1(e(),t)}if(void 0===n&&(n=null),void 0===r&&(r=1),r>1){for(var a=[],o=0;o<r;o++)a.push(inTrainPhase(i,e,n));return a.map(function(e){return keep(e.clone())})}return keep(inTrainPhase(i,e,n).clone())}serialization.registerClass(StackedRNNCells);var Wrapper=function(e){function t(t){var n=e.call(this,t)||this;return n.layer=t.layer,n}return __extends(t,e),t.prototype.build=function(e){this.built=!0},Object.defineProperty(t.prototype,\"trainable\",{get:function(){return null!=this.layer&&this.layer.trainable},set:function(e){null!=this.layer&&(this.layer.trainable=e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"trainableWeights\",{get:function(){return this.layer.trainableWeights},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"nonTrainableWeights\",{get:function(){return this.layer.nonTrainableWeights},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"updates\",{get:function(){return this.layer._updates},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"losses\",{get:function(){return this.layer.losses},enumerable:!0,configurable:!0}),t.prototype.getWeights=function(){return this.layer.getWeights()},t.prototype.setWeights=function(e){this.layer.setWeights(e)},t.prototype.getConfig=function(){var t={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.prototype.setFastWeightInitDuringBuild=function(t){e.prototype.setFastWeightInitDuringBuild.call(this,t),null!=this.layer&&this.layer.setFastWeightInitDuringBuild(t)},t.fromConfig=function(e,t,n){void 0===n&&(n={});var r=deserialize(t.layer,n);delete t.layer;var i={layer:r};return Object.assign(i,t),new e(i)},t}(Layer),TimeDistributed=function(e){function t(t){var n=e.call(this,t)||this;return n.supportsMasking=!0,n}return __extends(t,e),t.prototype.build=function(t){if((t=getExactlyOneShape(t)).length<3)throw new ValueError(\"TimeDistributed layer expects an input shape >= 3D, but received input shape \"+JSON.stringify(t));this.inputSpec=[{shape:t}];var n=[t[0]].concat(t.slice(2));this.layer.built||(this.layer.build(n),this.layer.built=!0),e.prototype.build.call(this,t)},t.prototype.computeOutputShape=function(e){var t=[(e=getExactlyOneShape(e))[0]].concat(e.slice(2)),n=this.layer.computeOutputShape(t),r=e[1];return[n[0],r].concat(n.slice(1))},t.prototype.call=function(e,t){var n=this;return tidy(function(){return rnn(function(e,r){return[getExactlyOneTensor(n.layer.call(e,t)),[]]},e=getExactlyOneTensor(e),[],!1,null,null,!1,!0)[1]})},t.className=\"TimeDistributed\",t}(Wrapper);function checkBidirectionalMergeMode(e){checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES,\"BidirectionalMergeMode\",e)}serialization.registerClass(TimeDistributed);var DEFAULT_BIDIRECTIONAL_MERGE_MODE=\"concat\",Bidirectional=function(e){function t(t){var n=e.call(this,t)||this,r=t.layer.getConfig(),i={};i.className=t.layer.getClassName(),i.config=r,n.forwardLayer=deserialize(i),r.goBackwards=!0!==r.goBackwards;var a={};if(a.className=t.layer.getClassName(),a.config=r,n.backwardLayer=deserialize(a),n.forwardLayer.name=\"forward_\"+n.forwardLayer.name,n.backwardLayer.name=\"backward_\"+n.backwardLayer.name,n.mergeMode=void 0===t.mergeMode?DEFAULT_BIDIRECTIONAL_MERGE_MODE:t.mergeMode,checkBidirectionalMergeMode(n.mergeMode),t.weights)throw new NotImplementedError(\"weights support is not implemented for Bidirectional layer yet.\");return n._stateful=t.layer.stateful,n.returnSequences=t.layer.returnSequences,n.returnState=t.layer.returnState,n.supportsMasking=!0,n._trainable=!0,n.inputSpec=t.layer.inputSpec,n.numConstants=null,n}return __extends(t,e),Object.defineProperty(t.prototype,\"trainable\",{get:function(){return this._trainable},set:function(e){this._trainable=e,null!=this.forwardLayer&&(this.forwardLayer.trainable=e),null!=this.backwardLayer&&(this.backwardLayer.trainable=e)},enumerable:!0,configurable:!0}),t.prototype.getWeights=function(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())},t.prototype.setWeights=function(e){var t=e.length,n=Math.floor(t/2);this.forwardLayer.setWeights(e.slice(0,n)),this.backwardLayer.setWeights(e.slice(n))},t.prototype.computeOutputShape=function(e){var t,n,r,i=this.forwardLayer.computeOutputShape(e);return Array.isArray(i)&&Array.isArray(i[0])||(i=[i]),i=i,this.returnState?(r=i.slice(1),t=i[0]):t=i[0],t=t,\"concat\"===this.mergeMode?(t[t.length-1]*=2,n=[t]):n=null==this.mergeMode?[t,t.slice()]:[t],this.returnState?null==this.mergeMode?n.concat(r).concat(r.slice()):[t].concat(r).concat(r.slice()):singletonOrArray(n)},t.prototype.apply=function(t,n){var r=null==n?null:n.initialState,i=null==n?null:n.constants;null==n&&(n={});var a=standardizeArgs(t,r,i,this.numConstants);if(t=a.inputs,r=a.initialState,i=a.constants,Array.isArray(t)&&(r=t.slice(1),t=t[0]),(null==r||0===r.length)&&null==i)return e.prototype.apply.call(this,t,n);var o=[],s=[];if(null!=r){var l=r.length;if(l%2>0)throw new ValueError(\"When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.\");n.initialState=r,o.push.apply(o,r);var u=r.map(function(e){return new InputSpec({shape:e.shape})});this.forwardLayer.stateSpec=u.slice(0,l/2),this.backwardLayer.stateSpec=u.slice(l/2),s.push.apply(s,u)}if(null!=i)throw new NotImplementedError(\"Support for constants in Bidirectional layers is not implemented yet.\");for(var c=o[0]instanceof SymbolicTensor,p=0,h=o;p<h.length;p++){if(h[p]instanceof SymbolicTensor!==c)throw new ValueError(\"The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors\")}if(c){var d=[t].concat(o),f=this.inputSpec.concat(s),g=this.inputSpec;this.inputSpec=f;var m=e.prototype.apply.call(this,d,n);return this.inputSpec=g,m}return e.prototype.apply.call(this,t,n)},t.prototype.call=function(e,t){var n=this;return tidy(function(){var r,i,a,o,s=t.initialState;if(null==s)r=n.forwardLayer.call(e,t),i=n.backwardLayer.call(e,t);else{var l=s.slice(0,s.length/2),u=s.slice(s.length/2);r=n.forwardLayer.call(e,Object.assign(t,{initialState:l})),i=n.backwardLayer.call(e,Object.assign(t,{initialState:u}))}return n.returnState&&(Array.isArray(r)&&(a=r.slice(1).concat(i.slice(1))),r=r[0],i=i[0]),n.returnSequences&&(i=reverse(i,1)),\"concat\"===n.mergeMode?o=concatenate([r,i]):\"sum\"===n.mergeMode?o=add(r,i):\"ave\"===n.mergeMode?o=mul(.5,add(r,i)):\"mul\"===n.mergeMode?o=mul(r,i):null==n.mergeMode&&(o=[r,i]),n.returnState?null==n.mergeMode?o.concat(a):[o].concat(a):o})},t.prototype.resetStates=function(e){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()},t.prototype.build=function(e){var t=this;nameScope(this.forwardLayer.name,function(){t.forwardLayer.build(e)}),nameScope(this.backwardLayer.name,function(){t.backwardLayer.build(e)}),this.built=!0},t.prototype.computeMask=function(e,t){var n;if(Array.isArray(t)&&(t=t[0]),n=this.returnSequences?null==this.mergeMode?[t,t]:t:null==this.mergeMode?[null,null]:null,this.returnState){var r=this.forwardLayer.states.map(function(e){return null});return Array.isArray(n)?n.concat(r).concat(r):[n].concat(r).concat(r)}return n},Object.defineProperty(t.prototype,\"trainableWeights\",{get:function(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"nonTrainableWeights\",{get:function(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)},enumerable:!0,configurable:!0}),t.prototype.setFastWeightInitDuringBuild=function(t){e.prototype.setFastWeightInitDuringBuild.call(this,t),null!=this.forwardLayer&&this.forwardLayer.setFastWeightInitDuringBuild(t),null!=this.backwardLayer&&this.backwardLayer.setFastWeightInitDuringBuild(t)},t.prototype.getConfig=function(){var t={mergeMode:this.mergeMode},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.fromConfig=function(e,t){var n=deserialize(t.layer);if(delete t.layer,null!=t.numConstants)throw new NotImplementedError(\"Deserialization of a Bidirectional layer with numConstants present is not supported yet.\");var r=t;return r.layer=n,new e(r)},t.className=\"Bidirectional\",t}(Wrapper);function inputLayer(e){return new InputLayer(e)}function elu$2(e){return new ELU(e)}function reLU(e){return new ReLU(e)}function leakyReLU(e){return new LeakyReLU(e)}function prelu$1(e){return new PReLU(e)}function softmax$1(e){return new Softmax$1(e)}function thresholdedReLU(e){return new ThresholdedReLU(e)}function conv1d$2(e){return new Conv1D(e)}function conv2d$1(e){return new Conv2D(e)}function conv2dTranspose$1(e){return new Conv2DTranspose(e)}function conv3d$2(e){return new Conv3D(e)}function separableConv2d$1(e){return new SeparableConv2D(e)}function cropping2D(e){return new Cropping2D(e)}function upSampling2d(e){return new UpSampling2D(e)}function depthwiseConv2d$2(e){return new DepthwiseConv2D(e)}function activation(e){return new Activation$1(e)}function dense(e){return new Dense(e)}function dropout$2(e){return new Dropout(e)}function spatialDropout1d(e){return new SpatialDropout1D(e)}function flatten$1(e){return new Flatten(e)}function repeatVector(e){return new RepeatVector(e)}function reshape(e){return new Reshape(e)}function permute(e){return new Permute(e)}function embedding(e){return new Embedding(e)}function add$2(e){return new Add(e)}function average$1(e){return new Average(e)}function concatenate$2(e){return new Concatenate(e)}function maximum$2(e){return new Maximum(e)}function minimum$2(e){return new Minimum(e)}function multiply$1(e){return new Multiply(e)}function dot$1(e){return new Dot(e)}function batchNormalization$1(e){return new BatchNormalization(e)}function layerNormalization(e){return new LayerNormalization(e)}function zeroPadding2d(e){return new ZeroPadding2D(e)}function averagePooling1d(e){return new AveragePooling1D(e)}function avgPool1d(e){return averagePooling1d(e)}function avgPooling1d(e){return averagePooling1d(e)}function averagePooling2d(e){return new AveragePooling2D(e)}function avgPool2d(e){return averagePooling2d(e)}function avgPooling2d(e){return averagePooling2d(e)}function averagePooling3d(e){return new AveragePooling3D(e)}function avgPool3d$1(e){return averagePooling3d(e)}function avgPooling3d(e){return averagePooling3d(e)}function globalAveragePooling1d(e){return new GlobalAveragePooling1D(e)}function globalAveragePooling2d(e){return new GlobalAveragePooling2D(e)}function globalMaxPooling1d(e){return new GlobalMaxPooling1D(e)}function globalMaxPooling2d(e){return new GlobalMaxPooling2D(e)}function maxPooling1d(e){return new MaxPooling1D(e)}function maxPooling2d(e){return new MaxPooling2D(e)}function maxPooling3d(e){return new MaxPooling3D(e)}function gru(e){return new GRU(e)}function gruCell(e){return new GRUCell(e)}function lstm(e){return new LSTM(e)}function lstmCell(e){return new LSTMCell(e)}function simpleRNN(e){return new SimpleRNN(e)}function simpleRNNCell(e){return new SimpleRNNCell(e)}function rnn$1(e){return new RNN(e)}function stackedRNNCells(e){return new StackedRNNCells(e)}function bidirectional(e){return new Bidirectional(e)}function timeDistributed(e){return new TimeDistributed(e)}serialization.registerClass(Bidirectional);var globalMaxPool1d=globalMaxPooling1d,globalMaxPool2d=globalMaxPooling2d,maxPool1d=maxPooling1d,maxPool2d=maxPooling2d;function gaussianNoise(e){return new GaussianNoise(e)}function gaussianDropout(e){return new GaussianDropout(e)}function alphaDropout(e){return new AlphaDropout(e)}function masking(e){return new Masking(e)}var exports_layers=Object.freeze({inputLayer:inputLayer,elu:elu$2,reLU:reLU,leakyReLU:leakyReLU,prelu:prelu$1,softmax:softmax$1,thresholdedReLU:thresholdedReLU,conv1d:conv1d$2,conv2d:conv2d$1,conv2dTranspose:conv2dTranspose$1,conv3d:conv3d$2,separableConv2d:separableConv2d$1,cropping2D:cropping2D,upSampling2d:upSampling2d,depthwiseConv2d:depthwiseConv2d$2,activation:activation,dense:dense,dropout:dropout$2,spatialDropout1d:spatialDropout1d,flatten:flatten$1,repeatVector:repeatVector,reshape:reshape,permute:permute,embedding:embedding,add:add$2,average:average$1,concatenate:concatenate$2,maximum:maximum$2,minimum:minimum$2,multiply:multiply$1,dot:dot$1,batchNormalization:batchNormalization$1,layerNormalization:layerNormalization,zeroPadding2d:zeroPadding2d,averagePooling1d:averagePooling1d,avgPool1d:avgPool1d,avgPooling1d:avgPooling1d,averagePooling2d:averagePooling2d,avgPool2d:avgPool2d,avgPooling2d:avgPooling2d,averagePooling3d:averagePooling3d,avgPool3d:avgPool3d$1,avgPooling3d:avgPooling3d,globalAveragePooling1d:globalAveragePooling1d,globalAveragePooling2d:globalAveragePooling2d,globalMaxPooling1d:globalMaxPooling1d,globalMaxPooling2d:globalMaxPooling2d,maxPooling1d:maxPooling1d,maxPooling2d:maxPooling2d,maxPooling3d:maxPooling3d,gru:gru,gruCell:gruCell,lstm:lstm,lstmCell:lstmCell,simpleRNN:simpleRNN,simpleRNNCell:simpleRNNCell,rnn:rnn$1,stackedRNNCells:stackedRNNCells,bidirectional:bidirectional,timeDistributed:timeDistributed,globalMaxPool1d:globalMaxPool1d,globalMaxPool2d:globalMaxPool2d,maxPool1d:maxPool1d,maxPool2d:maxPool2d,Layer:Layer,RNN:RNN,RNNCell:RNNCell,input:input,gaussianNoise:gaussianNoise,gaussianDropout:gaussianDropout,alphaDropout:alphaDropout,masking:masking});function binaryAccuracy$1(e,t){return binaryAccuracy(e,t)}function binaryCrossentropy$2(e,t){return binaryCrossentropy$1(e,t)}function sparseCategoricalAccuracy$1(e,t){return sparseCategoricalAccuracy(e,t)}function categoricalAccuracy$1(e,t){return categoricalAccuracy(e,t)}function categoricalCrossentropy$2(e,t){return categoricalCrossentropy$1(e,t)}function precision$1(e,t){return precision(e,t)}function recall$1(e,t){return recall(e,t)}function cosineProximity$1(e,t){return cosineProximity(e,t)}function meanAbsoluteError$1(e,t){return meanAbsoluteError(e,t)}function meanAbsolutePercentageError$1(e,t){return meanAbsolutePercentageError(e,t)}function MAPE$2(e,t){return meanAbsolutePercentageError(e,t)}function mape$2(e,t){return meanAbsolutePercentageError(e,t)}function meanSquaredError$1(e,t){return meanSquaredError(e,t)}function MSE$2(e,t){return meanSquaredError(e,t)}function mse$2(e,t){return meanSquaredError(e,t)}var exports_metrics=Object.freeze({binaryAccuracy:binaryAccuracy$1,binaryCrossentropy:binaryCrossentropy$2,sparseCategoricalAccuracy:sparseCategoricalAccuracy$1,categoricalAccuracy:categoricalAccuracy$1,categoricalCrossentropy:categoricalCrossentropy$2,precision:precision$1,recall:recall$1,cosineProximity:cosineProximity$1,meanAbsoluteError:meanAbsoluteError$1,meanAbsolutePercentageError:meanAbsolutePercentageError$1,MAPE:MAPE$2,mape:mape$2,meanSquaredError:meanSquaredError$1,MSE:MSE$2,mse:mse$2}),exports_models=Object.freeze({modelFromJSON:modelFromJSON});function l1l2(e){return new L1L2(e)}function l1$1(e){return l1(e)}function l2$1(e){return l2(e)}var exports_regularizers=Object.freeze({l1l2:l1l2,l1:l1$1,l2:l2$1}),Callback=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.model=null,t}return __extends(t,e),t.prototype.setModel=function(e){if(!(e instanceof LayersModel))throw new Error(\"model must be a LayersModel, not some other Container\");this.model=e},t}(BaseCallback);function less(e,t){return e<t}function greater$1(e,t){return e>t}var EarlyStopping=function(e){function t(t){var n=e.call(this)||this;if(null==t&&(t={}),t.restoreBestWeights)throw new NotImplementedError(\"restoreBestWeights = True is not implemented in EarlyStopping yet.\");return n.monitor=t.monitor||\"val_loss\",n.minDelta=Math.abs(t.minDelta||0),n.patience=t.patience||0,n.verbose=t.verbose||0,n.mode=t.mode||\"auto\",n.baseline=t.baseline,-1===[\"auto\",\"min\",\"max\"].indexOf(n.mode)&&(console.warn(\"EarlyStopping mode '\"+n.mode+\"' is invalid. Falling back to mode 'auto'.\"),n.mode=\"auto\"),\"min\"===n.mode?n.monitorFunc=less:\"max\"===n.mode?n.monitorFunc=greater$1:-1!==n.monitor.indexOf(\"acc\")?n.monitorFunc=greater$1:n.monitorFunc=less,n.monitorFunc===less&&(n.minDelta*=-1),n}return __extends(t,e),t.prototype.onTrainBegin=function(e){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return this.wait=0,this.stoppedEpoch=0,null!=this.baseline?this.best=this.baseline:this.best=this.monitorFunc===less?1/0:-1/0,[2]})})},t.prototype.onEpochEnd=function(e,t){return __awaiter(this,void 0,void 0,function(){var n;return __generator(this,function(r){switch(r.label){case 0:return[4,resolveScalarsInLogs(t)];case 1:return r.sent(),null==(n=this.getMonitorValue(t))?[2]:(this.monitorFunc(n-this.minDelta,this.best)?(this.best=n,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=e,this.model.stopTraining=!0)),[2])}})})},t.prototype.onTrainEnd=function(e){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return this.stoppedEpoch>0&&this.verbose&&console.log(\"Epoch \"+this.stoppedEpoch+\": early stopping.\"),[2]})})},t.prototype.getMonitorValue=function(e){null==e&&(e={});var t=e[this.monitor];return null==t&&console.warn(\"Metric for EarlyStopping \"+this.monitor+\" is not available. Available metrics are: \"+Object.keys(e)),t},t}(Callback);function earlyStopping(e){return new EarlyStopping(e)}var callbacks={earlyStopping:earlyStopping};export{exports_constraints as constraints,exports_initializers as initializers,exports_layers as layers,exports_metrics as metrics,exports_models as models,exports_regularizers as regularizers,CallbackList,CustomCallback,History,Callback,callbacks,EarlyStopping,InputSpec,SymbolicTensor,LayersModel,input,loadLayersModel,model,registerCallbackConstructor,sequential,RNN,Sequential,LayerVariable,version as version_layers};\n//# sourceMappingURL=tf-layers.esm.js.map\n","// @tensorflow/tfjs Copyright 2020 Google\nimport{version_core}from\"@tensorflow/tfjs-core\";export*from\"@tensorflow/tfjs-core\";import{version_layers}from\"@tensorflow/tfjs-layers\";export*from\"@tensorflow/tfjs-layers\";import{version_converter}from\"@tensorflow/tfjs-converter\";export*from\"@tensorflow/tfjs-converter\";import*as tfjsData from\"@tensorflow/tfjs-data\";import{version_data}from\"@tensorflow/tfjs-data\";export{tfjsData as data};var version=\"1.7.4\",version$1={\"tfjs-core\":version_core,\"tfjs-data\":version_data,\"tfjs-layers\":version_layers,\"tfjs-converter\":version_converter,tfjs:version};export{version$1 as version};\n//# sourceMappingURL=tf.esm.js.map\n","/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nvar t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(e,n)};function e(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}function n(t,e,n,r){return new(n||(n=Promise))((function(o,a){function i(t){try{u(r.next(t))}catch(t){a(t)}}function s(t){try{u(r.throw(t))}catch(t){a(t)}}function u(t){t.done?o(t.value):new n((function(e){e(t.value)})).then(i,s)}u((r=r.apply(t,e||[])).next())}))}function r(t,e){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError(\"Generator is already executing.\");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=e.call(t,i)}catch(t){a=[6,t],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}}var o=function(){function t(t){this.global=t,this.flags={},this.flagRegistry={},this.urlFlags={},this.populateURLFlags()}return t.prototype.setPlatform=function(t,e){null!=this.platform&&console.warn(\"Platform \"+this.platformName+\" has already been set. Overwriting the platform with \"+e+\".\"),this.platformName=t,this.platform=e},t.prototype.registerFlag=function(t,e,n){if(this.flagRegistry[t]={evaluationFn:e,setHook:n},null!=this.urlFlags[t]){var r=this.urlFlags[t];console.warn(\"Setting feature override from URL \"+t+\": \"+r+\".\"),this.set(t,r)}},t.prototype.get=function(t){return t in this.flags?this.flags[t]:(this.flags[t]=this.evaluateFlag(t),this.flags[t])},t.prototype.getNumber=function(t){return this.get(t)},t.prototype.getBool=function(t){return this.get(t)},t.prototype.getFlags=function(){return this.flags},Object.defineProperty(t.prototype,\"features\",{get:function(){return this.flags},enumerable:!0,configurable:!0}),t.prototype.set=function(t,e){if(null==this.flagRegistry[t])throw new Error(\"Cannot set flag \"+t+\" as it has not been registered.\");this.flags[t]=e,null!=this.flagRegistry[t].setHook&&this.flagRegistry[t].setHook(e)},t.prototype.evaluateFlag=function(t){if(null==this.flagRegistry[t])throw new Error(\"Cannot evaluate flag '\"+t+\"': no evaluation function found.\");return this.flagRegistry[t].evaluationFn()},t.prototype.setFlags=function(t){this.flags=Object.assign({},t)},t.prototype.reset=function(){this.flags={},this.urlFlags={},this.populateURLFlags()},t.prototype.populateURLFlags=function(){var t=this;if(void 0!==this.global&&void 0!==this.global.location&&void 0!==this.global.location.search){var e,n,r=(e=this.global.location.search,n={},e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return a(n,e[0],e[1]),e.join(\"=\")})),n);if(\"tfjsflags\"in r)r.tfjsflags.split(\",\").forEach((function(e){var n=e.split(\":\"),r=n[0],o=n[1];t.urlFlags[r]=function(t,e){if(\"true\"===(e=e.toLowerCase())||\"false\"===e)return\"true\"===e;if(\"\"+ +e===e)return+e;throw new Error(\"Could not parse value flag value \"+e+\" for flag \"+t+\".\")}(r,o)}))}},t}();function a(t,e,n){t[decodeURIComponent(e)]=decodeURIComponent(n||\"\")}function i(){return s}var s=null;var u=new Map,c=new Map;function l(t,e){var n=g(t,e);return u.get(n)}function h(t){return c.get(t)}function f(t){for(var e=u.entries(),n=[];;){var r=e.next(),o=r.done,a=r.value;if(o)break;var i=a[0],s=a[1];i.split(\"_\")[0]===t&&n.push(s)}return n}function d(t){var e=t.kernelName,n=t.backendName,r=g(e,n);if(u.has(r))throw new Error(\"The kernel '\"+e+\"' for backend '\"+n+\"' is already registered\");u.set(r,t)}function p(t){var e=t.kernelName;c.has(e)&&console.warn(\"Overriding the gradient for '\"+e+\"'\"),c.set(e,t)}function v(t,e){var n=g(t,e);if(!u.has(n))throw new Error(\"The kernel '\"+t+\"' for backend '\"+e+\"' is not registered\");u.delete(n)}function m(t){if(!c.has(t))throw new Error(\"The gradient '\"+t+\"' for backend is not registered\");c.delete(t)}function g(t,e){return e+\"_\"+t}function y(t){for(var e=t.length,n=0,r=0;e>0;)r=Math.random()*e|0,n=t[--e],t[e]=t[r],t[r]=n}function x(t,e,n){return Math.max(t,Math.min(e,n))}function b(t){return t%2==0?t:t+1}function w(t){for(var e=0,n=0;n<t.length;n++)e+=t[n];return e}function C(t,e){if(!t)throw new Error(\"string\"==typeof e?e:e())}function E(t,e,n){void 0===n&&(n=\"\"),C(S(t,e),(function(){return n+\" Shapes \"+t+\" and \"+e+\" must match\"}))}function R(t){C(null!=t,(function(){return\"The input to the tensor constructor must be a non-null value.\"}))}function I(t,e,n){if(void 0===e&&(e=[]),void 0===n&&(n=!1),null==e&&(e=[]),Array.isArray(t)||V(t)&&!n)for(var r=0;r<t.length;++r)I(t[r],e,n);else e.push(t);return e}function k(t){if(0===t.length)return 1;for(var e=t[0],n=1;n<t.length;n++)e*=t[n];return e}function S(t,e){if(t===e)return!0;if(null==t||null==e)return!1;if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}function A(t){return t%1==0}function D(t){if(null!=Math.tanh)return Math.tanh(t);if(t===1/0)return 1;if(t===-1/0)return-1;var e=Math.exp(2*t);return(e-1)/(e+1)}function T(t){var e=Math.ceil(Math.sqrt(t));return[e,Math.ceil(t/e)]}function N(t,e){return e<=t.length?t:t+\" \".repeat(e-t.length)}function F(t,e,n){return void 0===e&&(e=function(t){return 0}),new Promise((function(r,o){var a=0,i=function(){if(t())r();else{a++;var s=e(a);null!=n&&a>=n?o():setTimeout(i,s)}};i()}))}function _(t,e){for(var n=1,r=-1,o=0;o<t.length;++o)if(t[o]>=0)n*=t[o];else if(-1===t[o]){if(-1!==r)throw Error(\"Shapes can only have 1 implicit size. Found -1 at dim \"+r+\" and dim \"+o);r=o}else if(t[o]<0)throw Error(\"Shapes can not be < 0. Found \"+t[o]+\" at dim \"+o);if(-1===r){if(e>0&&e!==n)throw Error(\"Size(\"+e+\") must match the product of shape \"+t);return t}if(0===n)throw Error(\"Cannot infer the missing size in [\"+t+\"] when there are 0 elements\");if(e%n!=0)throw Error(\"The implicit shape can't be a fractional number. Got \"+e+\" / \"+n);var a=t.slice();return a[r]=e/n,a}function O(t,e){var n=e.length;return C((t=null==t?e.map((function(t,e){return e})):[].concat(t)).every((function(t){return t>=-n&&t<n})),(function(){return\"All values in axis param must be in range [-\"+n+\", \"+n+\") but got axis \"+t})),C(t.every((function(t){return A(t)})),(function(){return\"All values in axis param must be integers but got axis \"+t})),t.map((function(t){return t<0?n+t:t}))}function M(t,e){for(var n=[],r=[],o=null!=e&&Array.isArray(e)&&0===e.length,a=null==e||o?null:O(e,t).sort(),i=0,s=0;s<t.length;++s){if(null!=a){if(a[i]===s&&1!==t[s])throw new Error(\"Can't squeeze axis \"+s+\" since its dim '\"+t[s]+\"' is not 1\");(null==a[i]||a[i]>s)&&1===t[s]&&(n.push(t[s]),r.push(s)),a[i]<=s&&i++}1!==t[s]&&(n.push(t[s]),r.push(s))}return{newShape:n,keptDims:r}}function B(t,e){var n=null;if(null==t||\"float32\"===t)n=new Float32Array(e);else if(\"int32\"===t)n=new Int32Array(e);else{if(\"bool\"!==t)throw new Error(\"Unknown data type \"+t);n=new Uint8Array(e)}return n}function P(t,e){var n=null;if(null==t||\"float32\"===t)n=new Float32Array(e);else if(\"int32\"===t)n=new Int32Array(e);else if(\"bool\"===t)n=new Uint8Array(e);else{if(\"string\"!==t)throw new Error(\"Unknown data type \"+t);n=new Array(e)}return n}function L(t,e){for(var n=0;n<t.length;n++){var r=t[n];if(isNaN(r)||!isFinite(r))throw Error(\"A tensor of type \"+e+\" being uploaded contains \"+r+\".\")}}function W(t){return\"bool\"===t||\"complex64\"===t||\"float32\"===t||\"int32\"===t||\"string\"===t}function U(t,e){return\"complex64\"!==e&&((\"float32\"!==e||\"complex64\"===t)&&((\"int32\"!==e||\"float32\"===t||\"complex64\"===t)&&(\"bool\"!==e||\"bool\"!==t)))}function V(t){return t instanceof Float32Array||t instanceof Int32Array||t instanceof Uint8Array}function z(t){if(\"float32\"===t||\"int32\"===t)return 4;if(\"complex64\"===t)return 8;if(\"bool\"===t)return 1;throw new Error(\"Unknown dtype \"+t)}function G(t){if(null==t)return 0;var e=0;return t.forEach((function(t){return e+=t.length})),e}function H(t){return\"string\"==typeof t||t instanceof String}function q(t){return\"boolean\"==typeof t}function K(t){return\"number\"==typeof t}function j(t){return Array.isArray(t)?j(t[0]):t instanceof Float32Array?\"float32\":t instanceof Int32Array||t instanceof Uint8Array?\"int32\":K(t)?\"float32\":H(t)?\"string\":q(t)?\"bool\":\"float32\"}function X(t){return!!(t&&t.constructor&&t.call&&t.apply)}function Y(t,e){for(var n=e;n<t;++n)if(t%n==0)return n;return t}function $(t){var e=t.length;if(e<2)return[];var n=new Array(e-1);n[e-2]=t[e-1];for(var r=e-3;r>=0;--r)n[r]=n[r+1]*t[r+1];return n}function Q(t,e,n){if(\"string\"===e)throw new Error(\"Cannot convert a string[] to a TypedArray\");if(Array.isArray(t)&&(t=I(t)),n&&L(t,e),function(t,e){return t instanceof Float32Array&&\"float32\"===e||t instanceof Int32Array&&\"int32\"===e||t instanceof Uint8Array&&\"bool\"===e}(t,e))return t;if(null==e||\"float32\"===e||\"complex64\"===e)return new Float32Array(t);if(\"int32\"===e)return new Int32Array(t);if(\"bool\"===e){for(var r=new Uint8Array(t.length),o=0;o<r.length;++o)0!==Math.round(t[o])&&(r[o]=1);return r}throw new Error(\"Unknown data type \"+e)}function J(t,e){if(0===t.length)return e[0];var n=t.reduce((function(t,e){return t*e}));if(0===n)return[];if(n!==e.length)throw new Error(\"[\"+t+\"] does not match the input size.\");return function t(e,n,r){var o=new Array;if(1===n.length)for(var a=n[0],i=0;i<a;i++)o[i]=r[e+i];else{a=n[0];var s=n.slice(1),u=s.reduce((function(t,e){return t*e}));for(i=0;i<a;i++)o[i]=t(e+i*u,s,r)}return o}(0,t,e)}function Z(t,e){for(var n=tt(t,e),r=0;r<n.length;r++)n[r]=1;return n}function tt(t,e){if(null==e||\"float32\"===e||\"complex64\"===e)return new Float32Array(t);if(\"int32\"===e)return new Int32Array(t);if(\"bool\"===e)return new Uint8Array(t);throw new Error(\"Unknown data type \"+e)}function et(){return i().platform.now()}function nt(t){t.forEach((function(e){C(Number.isInteger(e)&&e>=0,(function(){return\"Tensor must have a shape comprised of positive integers but got shape [\"+t+\"].\"}))}))}function rt(t,e){return void 0===e&&(e=\"utf-8\"),e=e||\"utf-8\",i().platform.encode(t,e)}function ot(t,e){return void 0===e&&(e=\"utf-8\"),e=e||\"utf-8\",i().platform.decode(t,e)}function at(t,e,n){if(0===e)return 0;if(1===e)return t[0];for(var r=t[t.length-1],o=0;o<t.length-1;++o)r+=n[o]*t[o];return r}function it(t,e,n){if(0===e)return[];if(1===e)return[t];for(var r=new Array(e),o=0;o<r.length-1;++o)r[o]=Math.floor(t/n[o]),t-=r[o]*n[o];return r[r.length-1]=t,r}var st=Object.freeze({shuffle:y,clamp:x,nearestLargerEven:b,sum:w,randUniform:function(t,e){var n=Math.random();return e*n+(1-n)*t},distSquared:function(t,e){for(var n=0,r=0;r<t.length;r++){var o=Number(t[r])-Number(e[r]);n+=o*o}return n},assert:C,assertShapesMatch:E,assertNonNull:R,flatten:I,sizeFromShape:k,isScalarShape:function(t){return 0===t.length},arraysEqual:S,isInt:A,tanh:D,sizeToSquarishShape:T,createShuffledIndices:function(t){for(var e=new Uint32Array(t),n=0;n<t;++n)e[n]=n;return y(e),e},rightPad:N,repeatedTry:F,inferFromImplicitShape:_,parseAxisParam:O,squeezeShape:M,getTypedArrayFromDType:B,getArrayFromDType:P,checkConversionForErrors:L,isValidDtype:W,hasEncodingLoss:U,isTypedArray:V,bytesPerElement:z,bytesFromStringArray:G,isString:H,isBoolean:q,isNumber:K,inferDtype:j,isFunction:X,nearestDivisor:Y,computeStrides:$,toTypedArray:Q,toNestedArray:J,makeOnesTypedArray:Z,makeZerosTypedArray:tt,now:et,assertNonNegativeIntegerDimensions:nt,fetch:function(t,e){return i().platform.fetch(t,e)},encodeString:rt,decodeString:ot,locToIndex:at,indexToLoc:it}),ut=function(){function t(t,e){this.backendTimer=t,this.logger=e,null==e&&(this.logger=new ct)}return t.prototype.profileKernel=function(t,e,n){var r,o=this,a=this.backendTimer.time((function(){r=n()}));return r.forEach((function(n){n.data().then((function(r){!function(t,e,n){if(\"float32\"!==e)return!1;for(var r=0;r<t.length;r++){var o=t[r];if(isNaN(o)||!isFinite(o))return console.warn(\"Found \"+o+\" in the result of '\"+n+\"'\"),!0}}(r,n.dtype,t),a.then((function(a){var i=\"\";null!=a.getExtraProfileInfo&&(i=a.getExtraProfileInfo()),o.logger.logKernelProfile(t,n,r,a.kernelMs,e,i)}))}))})),r},t}();var ct=function(){function t(){}return t.prototype.logKernelProfile=function(t,e,n,r,o,a){var i=\"number\"==typeof r?N(r+\"ms\",9):r.error,s=N(t,25),u=e.rank,c=e.size,l=N(e.shape.toString(),14),h=\"\";for(var f in o){var d=o[f].shape||e.shape,p=d.length;h+=f+\": \"+p+\"D \"+(p>0?d:\"\")+\" \"}console.log(\"%c\"+s+\"\\t%c\"+i+\"\\t%c\"+u+\"D \"+l+\"\\t%c\"+c+\"\\t%c\"+h+\"\\t%c\"+a,\"font-weight:bold\",\"color:red\",\"color:blue\",\"color: orange\",\"color: green\",\"color: steelblue\")},t}();var lt=20,ht=3,ft=7;function dt(t,e,n,r){var o=$(e),a=function(t,e,n,r){var o=k(e),a=r[r.length-1],i=new Array(a).fill(0),s=e.length,u=\"complex64\"===n?mt(t):t;if(s>1)for(var c=0;c<o/a;c++)for(var l=c*a,h=0;h<a;h++)i[h]=Math.max(i[h],pt(u[l+h],0,n).length);return i}(t,e,n,o),i=e.length,s=function t(e,n,r,o,a,i){void 0===i&&(i=!0);var s=\"complex64\"===r?2:1,u=n[0],c=n.length;if(0===c){return\"complex64\"===r?[pt(mt(e)[0],0,r)]:\"bool\"===r?[vt(e[0])]:[e[0].toString()]}if(1===c){if(u>lt){var l=ht*s,h=Array.from(e.slice(0,l)),f=Array.from(e.slice((u-ht)*s,u*s));return\"complex64\"===r&&(h=mt(h),f=mt(f)),[\"[\"+h.map((function(t,e){return pt(t,a[e],r)})).join(\", \")+\", ..., \"+f.map((function(t,e){return pt(t,a[u-ht+e],r)})).join(\", \")+\"]\"]}return[\"[\"+(\"complex64\"===r?mt(e):Array.from(e)).map((function(t,e){return pt(t,a[e],r)})).join(\", \")+\"]\"]}var d=n.slice(1),p=o.slice(1),v=o[0]*s,m=[];if(u>lt){for(var g=0;g<ht;g++){var y=(x=g*v)+v;m.push.apply(m,t(e.slice(x,y),d,r,p,a,!1))}m.push(\"...\");for(g=u-ht;g<u;g++){y=(x=g*v)+v;m.push.apply(m,t(e.slice(x,y),d,r,p,a,g===u-1))}}else for(g=0;g<u;g++){var x;y=(x=g*v)+v;m.push.apply(m,t(e.slice(x,y),d,r,p,a,g===u-1))}var b=2===c?\",\":\"\";m[0]=\"[\"+m[0]+b;for(g=1;g<m.length-1;g++)m[g]=\" \"+m[g]+b;var w=\",\\n\";for(g=2;g<c;g++)w+=\"\\n\";return m[m.length-1]=\" \"+m[m.length-1]+\"]\"+(i?\"\":w),m}(t,e,n,o,a),u=[\"Tensor\"];return r&&(u.push(\"  dtype: \"+n),u.push(\"  rank: \"+i),u.push(\"  shape: [\"+e+\"]\"),u.push(\"  values:\")),u.push(s.map((function(t){return\"    \"+t})).join(\"\\n\")),u.join(\"\\n\")}function pt(t,e,n){return N(Array.isArray(t)?parseFloat(t[0].toFixed(ft))+\" + \"+parseFloat(t[1].toFixed(ft))+\"j\":H(t)?\"'\"+t+\"'\":\"bool\"===n?vt(t):parseFloat(t.toFixed(ft)).toString(),e)}function vt(t){return 0===t?\"false\":\"true\"}function mt(t){for(var e=[],n=0;n<t.length;n+=2)e.push([t[n],t[n+1]]);return e}var gt=function(){function t(t,e,n){var r=this;if(this.dtype=e,this.shape=t.slice(),this.size=k(t),null!=n){var o=n.length;C(o===this.size,(function(){return\"Length of values '\"+o+\"' does not match the size inferred by the shape '\"+r.size+\"'.\"}))}if(\"complex64\"===e)throw new Error(\"complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).\");this.values=n||P(e,this.size),this.strides=$(t)}return t.prototype.set=function(t){for(var e=this,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];0===n.length&&(n=[0]),C(n.length===this.rank,(function(){return\"The number of provided coordinates (\"+n.length+\") must match the rank (\"+e.rank+\")\"}));var o=this.locToIndex(n);this.values[o]=t},t.prototype.get=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];0===t.length&&(t=[0]);for(var n=0,r=0,o=t;r<o.length;r++){var a=o[r];if(a<0||a>=this.shape[n]){var i=\"Requested out of range element at \"+t+\".   Buffer shape=\"+this.shape;throw new Error(i)}n++}for(var s=t[t.length-1],u=0;u<t.length-1;++u)s+=this.strides[u]*t[u];return this.values[s]},t.prototype.locToIndex=function(t){if(0===this.rank)return 0;if(1===this.rank)return t[0];for(var e=t[t.length-1],n=0;n<t.length-1;++n)e+=this.strides[n]*t[n];return e},t.prototype.indexToLoc=function(t){if(0===this.rank)return[];if(1===this.rank)return[t];for(var e=new Array(this.shape.length),n=0;n<e.length-1;++n)e[n]=Math.floor(t/this.strides[n]),t-=e[n]*this.strides[n];return e[e.length-1]=t,e},Object.defineProperty(t.prototype,\"rank\",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),t.prototype.toTensor=function(){return yt().makeTensor(this.values,this.shape,this.dtype)},t}(),yt=null,xt=null,bt=null;var wt=function(){function t(t,e,n,r){this.kept=!1,this.isDisposedInternal=!1,this.shape=t.slice(),this.dtype=e||\"float32\",this.size=k(t),this.strides=$(t),this.dataId=n,this.id=r,this.rankType=this.rank<5?this.rank.toString():\"higher\"}return t.prototype.flatten=function(){return this.throwIfDisposed(),this.as1D()},t.prototype.asScalar=function(){return this.throwIfDisposed(),C(1===this.size,(function(){return\"The array must have only 1 element.\"})),this.reshape([])},t.prototype.as1D=function(){return this.throwIfDisposed(),this.reshape([this.size])},t.prototype.as2D=function(t,e){return this.throwIfDisposed(),this.reshape([t,e])},t.prototype.as3D=function(t,e,n){return this.throwIfDisposed(),this.reshape([t,e,n])},t.prototype.as4D=function(t,e,n,r){return this.throwIfDisposed(),this.reshape([t,e,n,r])},t.prototype.as5D=function(t,e,n,r,o){return this.throwIfDisposed(),this.reshape([t,e,n,r,o])},t.prototype.asType=function(t){return this.throwIfDisposed(),xt.cast(this,t)},Object.defineProperty(t.prototype,\"rank\",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),t.prototype.buffer=function(){return n(this,void 0,void 0,(function(){var t;return r(this,(function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,xt.buffer(this.shape,this.dtype,t)]}}))}))},t.prototype.bufferSync=function(){return xt.buffer(this.shape,this.dtype,this.dataSync())},t.prototype.array=function(){return n(this,void 0,void 0,(function(){var t;return r(this,(function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,J(this.shape,t)]}}))}))},t.prototype.arraySync=function(){return J(this.shape,this.dataSync())},t.prototype.data=function(){return n(this,void 0,void 0,(function(){var t,e;return r(this,(function(n){switch(n.label){case 0:return this.throwIfDisposed(),t=yt().read(this.dataId),\"string\"!==this.dtype?[3,2]:[4,t];case 1:e=n.sent();try{return[2,e.map((function(t){return ot(t)}))]}catch(t){throw new Error(\"Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().\")}n.label=2;case 2:return[2,t]}}))}))},t.prototype.dataSync=function(){this.throwIfDisposed();var t=yt().readSync(this.dataId);if(\"string\"===this.dtype)try{return t.map((function(t){return ot(t)}))}catch(t){throw new Error(\"Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().\")}return t},t.prototype.bytes=function(){return n(this,void 0,void 0,(function(){var t;return r(this,(function(e){switch(e.label){case 0:return this.throwIfDisposed(),[4,yt().read(this.dataId)];case 1:return t=e.sent(),\"string\"===this.dtype?[2,t]:[2,new Uint8Array(t.buffer)]}}))}))},t.prototype.dispose=function(){this.isDisposed||(yt().disposeTensor(this),this.isDisposedInternal=!0)},Object.defineProperty(t.prototype,\"isDisposed\",{get:function(){return this.isDisposedInternal},enumerable:!0,configurable:!0}),t.prototype.throwIfDisposed=function(){if(this.isDisposed)throw new Error(\"Tensor is disposed.\")},t.prototype.toFloat=function(){return this.asType(\"float32\")},t.prototype.toInt=function(){return this.asType(\"int32\")},t.prototype.toBool=function(){return this.asType(\"bool\")},t.prototype.print=function(t){return void 0===t&&(t=!1),xt.print(this,t)},t.prototype.reshape=function(t){return this.throwIfDisposed(),xt.reshape(this,t)},t.prototype.reshapeAs=function(t){return this.throwIfDisposed(),this.reshape(t.shape)},t.prototype.expandDims=function(t){return void 0===t&&(t=0),xt.expandDims(this,t)},t.prototype.cumsum=function(t,e,n){return void 0===t&&(t=0),void 0===e&&(e=!1),void 0===n&&(n=!1),xt.cumsum(this,t,e,n)},t.prototype.squeeze=function(t){return this.throwIfDisposed(),xt.squeeze(this,t)},t.prototype.clone=function(){return this.throwIfDisposed(),xt.clone(this)},t.prototype.oneHot=function(t,e,n){return this.throwIfDisposed(),xt.oneHot(this,t,e,n)},t.prototype.toString=function(t){return void 0===t&&(t=!1),dt(this.dataSync(),this.shape,this.dtype,t)},t.prototype.tile=function(t){return this.throwIfDisposed(),xt.tile(this,t)},t.prototype.gather=function(t,e){return void 0===e&&(e=0),this.throwIfDisposed(),xt.gather(this,t,e)},t.prototype.matMul=function(t,e,n){return void 0===e&&(e=!1),void 0===n&&(n=!1),this.throwIfDisposed(),xt.matMul(this,t,e,n)},t.prototype.dot=function(t){return this.throwIfDisposed(),xt.dot(this,t)},t.prototype.norm=function(t,e,n){return void 0===t&&(t=\"euclidean\"),void 0===e&&(e=null),void 0===n&&(n=!1),this.throwIfDisposed(),xt.norm(this,t,e,n)},t.prototype.slice=function(t,e){return this.throwIfDisposed(),xt.slice(this,t,e)},t.prototype.reverse=function(t){return this.throwIfDisposed(),xt.reverse(this,t)},t.prototype.concat=function(e,n){return void 0===n&&(n=0),this.throwIfDisposed(),e instanceof t&&(e=[e]),xt.concat([this].concat(e),n)},t.prototype.split=function(t,e){return void 0===e&&(e=0),this.throwIfDisposed(),xt.split(this,t,e)},t.prototype.stack=function(t,e){return void 0===e&&(e=0),xt.stack([this,t],e)},t.prototype.unstack=function(t){return void 0===t&&(t=0),xt.unstack(this,t)},t.prototype.pad=function(t,e){return void 0===e&&(e=0),xt.pad(this,t,e)},t.prototype.batchNormalization=function(t,e,n,r,o){return void 0===n&&(n=.001),bt(\"tf.batchNormalization() is going away. Use tf.batchNorm() instead, and note the positional argument change of scale, offset, and varianceEpsilon\"),this.batchNorm(t,e,o,r,n)},t.prototype.batchNorm=function(t,e,n,r,o){return void 0===o&&(o=.001),this.throwIfDisposed(),xt.batchNorm(this,t,e,n,r,o)},t.prototype.all=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.all(this,t,e)},t.prototype.any=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.any(this,t,e)},t.prototype.logSumExp=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.logSumExp(this,t,e)},t.prototype.sum=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.sum(this,t,e)},t.prototype.prod=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.prod(this,t,e)},t.prototype.mean=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.mean(this,t,e)},t.prototype.min=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.min(this,t,e)},t.prototype.max=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),xt.max(this,t,e)},t.prototype.argMin=function(t){return void 0===t&&(t=null),this.throwIfDisposed(),xt.argMin(this,t)},t.prototype.argMax=function(t){return void 0===t&&(t=null),this.throwIfDisposed(),xt.argMax(this,t)},t.prototype.cast=function(t){return this.throwIfDisposed(),xt.cast(this,t)},t.prototype.add=function(t){return this.throwIfDisposed(),xt.add(this,t)},t.prototype.addStrict=function(t){return this.throwIfDisposed(),xt.addStrict(this,t)},t.prototype.atan2=function(t){return this.throwIfDisposed(),xt.atan2(this,t)},t.prototype.sub=function(t){return this.throwIfDisposed(),xt.sub(this,t)},t.prototype.subStrict=function(t){return this.throwIfDisposed(),xt.subStrict(this,t)},t.prototype.pow=function(t){return this.throwIfDisposed(),xt.pow(this,t)},t.prototype.powStrict=function(t){return this.throwIfDisposed(),xt.powStrict(this,t)},t.prototype.mul=function(t){return this.throwIfDisposed(),xt.mul(this,t)},t.prototype.mulStrict=function(t){return this.throwIfDisposed(),xt.mulStrict(this,t)},t.prototype.div=function(t){return this.throwIfDisposed(),xt.div(this,t)},t.prototype.divNoNan=function(t){return this.throwIfDisposed(),xt.divNoNan(this,t)},t.prototype.floorDiv=function(t){return this.throwIfDisposed(),xt.floorDiv(this,t)},t.prototype.divStrict=function(t){return this.throwIfDisposed(),xt.divStrict(this,t)},t.prototype.minimum=function(t){return this.throwIfDisposed(),xt.minimum(this,t)},t.prototype.minimumStrict=function(t){return this.throwIfDisposed(),xt.minimumStrict(this,t)},t.prototype.maximum=function(t){return this.throwIfDisposed(),xt.maximum(this,t)},t.prototype.maximumStrict=function(t){return this.throwIfDisposed(),xt.maximumStrict(this,t)},t.prototype.mod=function(t){return this.throwIfDisposed(),xt.mod(this,t)},t.prototype.modStrict=function(t){return this.throwIfDisposed(),xt.modStrict(this,t)},t.prototype.squaredDifferenceStrict=function(t){return this.throwIfDisposed(),xt.squaredDifferenceStrict(this,t)},t.prototype.transpose=function(t){return this.throwIfDisposed(),xt.transpose(this,t)},t.prototype.notEqual=function(t){return this.throwIfDisposed(),xt.notEqual(this,t)},t.prototype.notEqualStrict=function(t){return this.throwIfDisposed(),xt.notEqualStrict(this,t)},t.prototype.less=function(t){return this.throwIfDisposed(),xt.less(this,t)},t.prototype.lessStrict=function(t){return this.throwIfDisposed(),xt.lessStrict(this,t)},t.prototype.equal=function(t){return this.throwIfDisposed(),xt.equal(this,t)},t.prototype.equalStrict=function(t){return this.throwIfDisposed(),xt.equalStrict(this,t)},t.prototype.lessEqual=function(t){return this.throwIfDisposed(),xt.lessEqual(this,t)},t.prototype.lessEqualStrict=function(t){return this.throwIfDisposed(),xt.lessEqualStrict(this,t)},t.prototype.greater=function(t){return this.throwIfDisposed(),xt.greater(this,t)},t.prototype.greaterStrict=function(t){return this.throwIfDisposed(),xt.greaterStrict(this,t)},t.prototype.greaterEqual=function(t){return this.throwIfDisposed(),xt.greaterEqual(this,t)},t.prototype.greaterEqualStrict=function(t){return this.throwIfDisposed(),xt.greaterEqualStrict(this,t)},t.prototype.logicalAnd=function(t){return this.throwIfDisposed(),xt.logicalAnd(this,t)},t.prototype.logicalOr=function(t){return this.throwIfDisposed(),xt.logicalOr(this,t)},t.prototype.logicalNot=function(){return this.throwIfDisposed(),xt.logicalNot(this)},t.prototype.logicalXor=function(t){return this.throwIfDisposed(),xt.logicalXor(this,t)},t.prototype.where=function(t,e){return this.throwIfDisposed(),xt.where(t,this,e)},t.prototype.neg=function(){return this.throwIfDisposed(),xt.neg(this)},t.prototype.ceil=function(){return this.throwIfDisposed(),xt.ceil(this)},t.prototype.floor=function(){return this.throwIfDisposed(),xt.floor(this)},t.prototype.sign=function(){return this.throwIfDisposed(),xt.sign(this)},t.prototype.isNaN=function(){return this.throwIfDisposed(),xt.isNaN(this)},t.prototype.isInf=function(){return this.throwIfDisposed(),xt.isInf(this)},t.prototype.isFinite=function(){return this.throwIfDisposed(),xt.isFinite(this)},t.prototype.exp=function(){return this.throwIfDisposed(),xt.exp(this)},t.prototype.expm1=function(){return this.throwIfDisposed(),xt.expm1(this)},t.prototype.log=function(){return this.throwIfDisposed(),xt.log(this)},t.prototype.log1p=function(){return this.throwIfDisposed(),xt.log1p(this)},t.prototype.sqrt=function(){return this.throwIfDisposed(),xt.sqrt(this)},t.prototype.rsqrt=function(){return this.throwIfDisposed(),xt.rsqrt(this)},t.prototype.square=function(){return this.throwIfDisposed(),xt.square(this)},t.prototype.reciprocal=function(){return this.throwIfDisposed(),xt.reciprocal(this)},t.prototype.abs=function(){return this.throwIfDisposed(),xt.abs(this)},t.prototype.clipByValue=function(t,e){return this.throwIfDisposed(),xt.clipByValue(this,t,e)},t.prototype.relu=function(){return this.throwIfDisposed(),xt.relu(this)},t.prototype.relu6=function(){return this.throwIfDisposed(),xt.relu6(this)},t.prototype.elu=function(){return this.throwIfDisposed(),xt.elu(this)},t.prototype.selu=function(){return this.throwIfDisposed(),xt.selu(this)},t.prototype.leakyRelu=function(t){return void 0===t&&(t=.2),this.throwIfDisposed(),xt.leakyRelu(this,t)},t.prototype.prelu=function(t){return this.throwIfDisposed(),xt.prelu(this,t)},t.prototype.sigmoid=function(){return this.throwIfDisposed(),xt.sigmoid(this)},t.prototype.logSigmoid=function(){return this.throwIfDisposed(),xt.logSigmoid(this)},t.prototype.softplus=function(){return this.throwIfDisposed(),xt.softplus(this)},t.prototype.zerosLike=function(){return this.throwIfDisposed(),xt.zerosLike(this)},t.prototype.onesLike=function(){return this.throwIfDisposed(),xt.onesLike(this)},t.prototype.sin=function(){return this.throwIfDisposed(),xt.sin(this)},t.prototype.cos=function(){return this.throwIfDisposed(),xt.cos(this)},t.prototype.tan=function(){return this.throwIfDisposed(),xt.tan(this)},t.prototype.asin=function(){return this.throwIfDisposed(),xt.asin(this)},t.prototype.acos=function(){return this.throwIfDisposed(),xt.acos(this)},t.prototype.atan=function(){return this.throwIfDisposed(),xt.atan(this)},t.prototype.sinh=function(){return this.throwIfDisposed(),xt.sinh(this)},t.prototype.cosh=function(){return this.throwIfDisposed(),xt.cosh(this)},t.prototype.tanh=function(){return this.throwIfDisposed(),xt.tanh(this)},t.prototype.asinh=function(){return this.throwIfDisposed(),xt.asinh(this)},t.prototype.acosh=function(){return this.throwIfDisposed(),xt.acosh(this)},t.prototype.atanh=function(){return this.throwIfDisposed(),xt.atanh(this)},t.prototype.erf=function(){return this.throwIfDisposed(),xt.erf(this)},t.prototype.round=function(){return this.throwIfDisposed(),xt.round(this)},t.prototype.step=function(t){return void 0===t&&(t=0),this.throwIfDisposed(),xt.step(this,t)},t.prototype.softmax=function(t){return void 0===t&&(t=-1),this.throwIfDisposed(),xt.softmax(this,t)},t.prototype.logSoftmax=function(t){return void 0===t&&(t=-1),this.throwIfDisposed(),xt.logSoftmax(this,t)},t.prototype.resizeBilinear=function(t,e){return void 0===e&&(e=!1),this.throwIfDisposed(),xt.image.resizeBilinear(this,t,e)},t.prototype.resizeNearestNeighbor=function(t,e){return void 0===e&&(e=!1),this.throwIfDisposed(),xt.image.resizeNearestNeighbor(this,t,e)},t.prototype.conv1d=function(t,e,n,r,o,a){return void 0===r&&(r=\"NWC\"),void 0===o&&(o=1),this.throwIfDisposed(),xt.conv1d(this,t,e,n,r,o,a)},t.prototype.conv2d=function(t,e,n,r,o,a){return void 0===r&&(r=\"NHWC\"),void 0===o&&(o=[1,1]),this.throwIfDisposed(),xt.conv2d(this,t,e,n,r,o,a)},t.prototype.conv2dTranspose=function(t,e,n,r,o){return this.throwIfDisposed(),xt.conv2dTranspose(this,t,e,n,r,o)},t.prototype.depthwiseConv2D=function(t,e,n,r,o,a){return void 0===r&&(r=\"NHWC\"),void 0===o&&(o=[1,1]),this.throwIfDisposed(),xt.depthwiseConv2d(this,t,e,n,r,o,a)},t.prototype.separableConv2d=function(t,e,n,r,o,a){return void 0===o&&(o=[1,1]),void 0===a&&(a=\"NHWC\"),this.throwIfDisposed(),xt.separableConv2d(this,t,e,n,r,o,a)},t.prototype.avgPool=function(t,e,n,r){return this.throwIfDisposed(),xt.avgPool(this,t,e,n,r)},t.prototype.maxPool=function(t,e,n,r){return this.throwIfDisposed(),xt.maxPool(this,t,e,n,r)},t.prototype.localResponseNormalization=function(t,e,n,r){return void 0===t&&(t=5),void 0===e&&(e=1),void 0===n&&(n=1),void 0===r&&(r=.5),xt.localResponseNormalization(this,t,e,n,r)},t.prototype.pool=function(t,e,n,r,o){return this.throwIfDisposed(),xt.pool(this,t,e,n,r,o)},t.prototype.variable=function(t,e,n){return void 0===t&&(t=!0),this.throwIfDisposed(),yt().makeVariable(this,t,e,n)},t.prototype.unsortedSegmentSum=function(t,e){return this.throwIfDisposed(),xt.unsortedSegmentSum(this,t,e)},t.prototype.batchToSpaceND=function(t,e){return this.throwIfDisposed(),xt.batchToSpaceND(this,t,e)},t.prototype.spaceToBatchND=function(t,e){return this.throwIfDisposed(),xt.spaceToBatchND(this,t,e)},t.prototype.topk=function(t,e){return void 0===t&&(t=1),void 0===e&&(e=!0),this.throwIfDisposed(),xt.topk(this,t,e)},t.prototype.stridedSlice=function(t,e,n,r,o,a,i,s){return void 0===r&&(r=0),void 0===o&&(o=0),void 0===a&&(a=0),void 0===i&&(i=0),void 0===s&&(s=0),this.throwIfDisposed(),xt.stridedSlice(this,t,e,n,r,o,a,i,s)},t.prototype.depthToSpace=function(t,e){return this.throwIfDisposed(),xt.depthToSpace(this,t,e)},t.prototype.fft=function(){return this.throwIfDisposed(),xt.spectral.fft(this)},t.prototype.ifft=function(){return this.throwIfDisposed(),xt.spectral.ifft(this)},t.prototype.rfft=function(){return this.throwIfDisposed(),xt.spectral.rfft(this)},t.prototype.irfft=function(){return this.throwIfDisposed(),xt.spectral.irfft(this)},t}();Object.defineProperty(wt,Symbol.hasInstance,{value:function(t){return!!t&&null!=t.dataId&&null!=t.shape&&null!=t.dtype}});var Ct,Et,Rt,It,kt,St=function(t){function n(e,n,r,o){var a=t.call(this,e.shape,e.dtype,e.dataId,o)||this;return a.trainable=n,a.name=r,a}return e(n,t),n.prototype.assign=function(t){if(t.dtype!==this.dtype)throw new Error(\"dtype of the new value (\"+t.dtype+\") and previous value (\"+this.dtype+\") must match\");if(!S(t.shape,this.shape))throw new Error(\"shape of the new value (\"+t.shape+\") and previous value (\"+this.shape+\") must match\");yt().disposeTensor(this),this.dataId=t.dataId,yt().incRef(this,null)},n.prototype.dispose=function(){yt().disposeVariable(this),this.isDisposedInternal=!0},n}(wt);Object.defineProperty(St,Symbol.hasInstance,{value:function(t){return t instanceof wt&&null!=t.assign&&t.assign instanceof Function}}),function(t){t.R0=\"R0\",t.R1=\"R1\",t.R2=\"R2\",t.R3=\"R3\",t.R4=\"R4\",t.R5=\"R5\",t.R6=\"R6\"}(Ct||(Ct={})),function(t){t.float32=\"float32\",t.int32=\"int32\",t.bool=\"int32\",t.complex64=\"complex64\"}(Et||(Et={})),function(t){t.float32=\"float32\",t.int32=\"int32\",t.bool=\"bool\",t.complex64=\"complex64\"}(Rt||(Rt={})),function(t){t.float32=\"float32\",t.int32=\"float32\",t.bool=\"float32\",t.complex64=\"complex64\"}(It||(It={})),function(t){t.float32=\"complex64\",t.int32=\"complex64\",t.bool=\"complex64\",t.complex64=\"complex64\"}(kt||(kt={}));var At={float32:It,int32:Et,bool:Rt,complex64:kt};function Dt(t,e){if(\"string\"===t||\"string\"===e){if(\"string\"===t&&\"string\"===e)return\"string\";throw new Error(\"Can not upcast \"+t+\" with \"+e)}return At[t][e]}function Tt(t){return Dt(t,\"int32\")}function Nt(t,e){if(t.dtype===e.dtype)return[t,e];var n=Dt(t.dtype,e.dtype);return[t.cast(n),e.cast(n)]}function Ft(t,e){C(t.dtype===e.dtype,(function(){return\"The dtypes of the first(\"+t.dtype+\") and second(\"+e.dtype+\") input must match\"}))}function _t(t){var e=[];return function t(e,n,r){if(null==e)return;if(e instanceof wt)return void n.push(e);if(o=e,!Array.isArray(o)&&\"object\"!=typeof o)return;var o;var a=e;for(var i in a){var s=a[i];r.has(s)||(r.add(s),t(s,n,r))}}(t,e,new Set),e}var Ot,Mt=Object.freeze({makeTypesMatch:Nt,assertTypesMatch:Ft,isTensorInList:function(t,e){return e.some((function(e){return e.id===t.id}))},getTensorsInContainer:_t}),Bt=function(){function t(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}return t.prototype.dispose=function(){for(var t in this.registeredVariables)this.registeredVariables[t].dispose()},t}(),Pt=function(){function t(t){this.ENV=t,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new Bt}return t.prototype.ready=function(){return n(this,void 0,void 0,(function(){var t,e,n;return r(this,(function(r){switch(r.label){case 0:if(null!=this.pendingBackendInit)return[2,this.pendingBackendInit.then((function(){}))];if(null!=this.backendInstance)return[2];t=this.getSortedBackends(),e=0,r.label=1;case 1:return e<t.length?(n=t[e],[4,this.initializeBackend(n).success]):[3,5];case 2:return r.sent()?[4,this.setBackend(n)]:[3,4];case 3:return r.sent(),[2];case 4:return e++,[3,1];case 5:throw new Error(\"Could not initialize any backends, all backend initializations failed.\")}}))}))},Object.defineProperty(t.prototype,\"backend\",{get:function(){if(null!=this.pendingBackendInit)throw new Error(\"Backend '\"+this.backendName+\"' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods\");if(null==this.backendInstance){var t=this.initializeBackendsAndReturnBest(),e=t.name;if(t.asyncInit)throw new Error(\"The highest priority backend '\"+e+\"' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods\");this.setBackend(e)}return this.backendInstance},enumerable:!0,configurable:!0}),t.prototype.backendNames=function(){return Object.keys(this.registryFactory)},t.prototype.findBackend=function(t){if(!(t in this.registry)){if(!(t in this.registryFactory))return null;if(this.initializeBackend(t).asyncInit)return null}return this.registry[t]},t.prototype.findBackendFactory=function(t){return t in this.registryFactory?this.registryFactory[t].factory:null},t.prototype.registerBackend=function(t,e,n){return void 0===n&&(n=1),t in this.registryFactory?(console.warn(t+\" backend was already registered. Reusing existing backend factory.\"),!1):(this.registryFactory[t]={factory:e,priority:n},!0)},t.prototype.setBackend=function(t){return n(this,void 0,void 0,(function(){var e,n,o;return r(this,(function(r){switch(r.label){case 0:if(null==this.registryFactory[t])throw new Error(\"Backend name '\"+t+\"' not found in registry\");return this.backendName=t,null!=this.registry[t]?[3,4]:(this.backendInstance=null,e=this.initializeBackend(t),n=e.success,e.asyncInit?[4,n]:[3,2]);case 1:return o=r.sent(),[3,3];case 2:o=n,r.label=3;case 3:if(!o)return[2,!1];r.label=4;case 4:return this.backendInstance=this.registry[t],this.setupRegisteredKernels(),this.profiler=new ut(this.backendInstance),[2,!0]}}))}))},t.prototype.setupRegisteredKernels=function(){var t=this;f(this.backendName).forEach((function(e){null!=e.setupFunc&&e.setupFunc(t.backendInstance)}))},t.prototype.disposeRegisteredKernels=function(t){var e=this;f(t).forEach((function(n){null!=n.disposeFunc&&n.disposeFunc(e.registry[t])}))},t.prototype.initializeBackend=function(t){var e=this,n=this.registryFactory[t];if(null==n)throw new Error(\"Cannot initialize backend \"+t+\", no registration found.\");try{var r=n.factory();if(Promise.resolve(r)===r){var o=++this.pendingBackendInitId,a=r.then((function(n){return!(o<e.pendingBackendInitId)&&(e.registry[t]=n,e.pendingBackendInit=null,!0)})).catch((function(n){return!(o<e.pendingBackendInitId)&&(e.pendingBackendInit=null,console.warn(\"Initialization of backend \"+t+\" failed\"),console.warn(n.stack||n.message),!1)}));return this.pendingBackendInit=a,{success:a,asyncInit:!0}}return this.registry[t]=r,{success:!0,asyncInit:!1}}catch(e){return console.warn(\"Initialization of backend \"+t+\" failed\"),console.warn(e.stack||e.message),{success:!1,asyncInit:!1}}},t.prototype.removeBackend=function(t){if(!(t in this.registryFactory))throw new Error(t+\" backend not found in registry\");this.backendName===t&&null!=this.pendingBackendInit&&this.pendingBackendInitId++,t in this.registry&&(this.disposeRegisteredKernels(t),this.registry[t].dispose(),delete this.registry[t]),delete this.registryFactory[t],this.backendName===t&&(this.pendingBackendInit=null,this.backendName=null,this.backendInstance=null)},t.prototype.getSortedBackends=function(){var t=this;if(0===Object.keys(this.registryFactory).length)throw new Error(\"No backend found in registry.\");return Object.keys(this.registryFactory).sort((function(e,n){return t.registryFactory[n].priority-t.registryFactory[e].priority}))},t.prototype.initializeBackendsAndReturnBest=function(){for(var t=this.getSortedBackends(),e=0;e<t.length;e++){var n=t[e],r=this.initializeBackend(n),o=r.success,a=r.asyncInit;if(a||o)return{name:n,asyncInit:a}}throw new Error(\"Could not initialize any backends, all backend initializations failed.\")},t.prototype.moveData=function(t,e){var n=this.state.tensorInfo.get(e),r=n.backend,o=this.readSync(e);r.disposeData(e),n.backend=t,t.move(e,o,n.shape,n.dtype),this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack[this.state.numDataMovesStack.length-1]++},t.prototype.tidy=function(t,e){var n,r=this,o=null;if(null==e){if(\"function\"!=typeof t)throw new Error(\"Please provide a function to tidy()\");e=t}else{if(\"string\"!=typeof t&&!(t instanceof String))throw new Error(\"When calling with two arguments, the first argument to tidy() must be a string\");if(\"function\"!=typeof e)throw new Error(\"When calling with two arguments, the 2nd argument to tidy() must be a function\");o=t}return this.scopedRun((function(){return r.startScope(o)}),(function(){return r.endScope(n)}),(function(){return(n=e())instanceof Promise&&console.error(\"Cannot return a Promise inside of tidy.\"),n}))},t.prototype.scopedRun=function(t,e,n){t();try{var r=n();return e(),r}catch(t){throw e(),t}},t.prototype.nextTensorId=function(){return t.nextTensorId++},t.prototype.nextVariableId=function(){return t.nextVariableId++},t.prototype.clone=function(t){var e=this.makeTensorFromDataId(t.dataId,t.shape,t.dtype),n={x:t};return this.addTapeNode(this.state.activeScope.name,n,[e],(function(t){return{x:function(){return t.toFloat()}}}),[]),e},t.prototype.runKernel=function(t,e,n,r,o){return this.runKernelFunc(null,e,null,t,n,r,o)},t.prototype.shouldCheckForMemLeaks=function(){return this.ENV.getBool(\"IS_TEST\")},t.prototype.checkKernelForMemLeak=function(t,e,n){var r=this.backend.numDataIds(),o=0;n.forEach((function(t){o+=\"complex64\"===t.dtype?3:1}));var a=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=r-e-o-a;if(i>0)throw new Error(\"Backend '\"+this.backendName+\"' has an internal memory leak (\"+i+\" data ids) after running '\"+t+\"'\")},t.prototype.runKernelFunc=function(t,e,n,r,o,a,i){var s,u=this;void 0===a&&(a=[]),void 0===i&&(i=[]);var c=[],h=this.isTapeOn();null==r&&(r=null!=this.state.activeScope?this.state.activeScope.name:\"\");var f,d=function(t){h&&(c=t.map((function(t){return u.keep(u.clone(t))})))},p=this.state.numBytes,v=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);var m,g=l(r,this.backendName);return f=null!=g?function(){var t=u.backend.numDataIds();m=g.kernelFunc({inputs:e,attrs:o,backend:u.backend});var n=Array.isArray(m)?m:[m];u.shouldCheckForMemLeaks()&&u.checkKernelForMemLeak(r,t,n);var s=n.map((function(t){var e=t.dataId,n=t.shape,r=t.dtype;return u.makeTensorFromDataId(e,n,r)})),c=s.filter((function(t,e){return i[e]}));return d((a||[]).slice().concat(c)),s}:function(){var e=u.backend.numDataIds();m=u.tidy((function(){return t(u.backend,d)}));var n=Array.isArray(m)?m:[m];return u.shouldCheckForMemLeaks()&&u.checkKernelForMemLeak(r,e,n),n},this.scopedRun((function(){return u.state.kernelDepth++}),(function(){return u.state.kernelDepth--}),(function(){s=u.ENV.getBool(\"DEBUG\")?u.profiler.profileKernel(r,e,(function(){return f()})):f()})),h&&this.addTapeNode(r,e,s,n,c),this.state.profiling&&this.state.activeProfile.kernels.push({name:r,bytesAdded:this.state.numBytes-p,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-v,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(e).map((function(t){return e[t].shape})),outputShapes:s.map((function(t){return t.shape}))}),Array.isArray(m)?s:s[0]},t.prototype.makeTensor=function(t,e,n,r){if(null==t)throw new Error(\"Values passed to engine.makeTensor() are null\");n=n||\"float32\",r=r||this.backend;var o=t;\"string\"===n&&H(t[0])&&(o=t.map((function(t){return rt(t)})));var a=r.write(o,e,n),i=new wt(e,n,a,this.nextTensorId());if(this.incRef(i,r),\"string\"===n){var s=this.state.tensorInfo.get(a),u=G(o);this.state.numBytes+=u-s.bytes,s.bytes=u}return i},t.prototype.makeTensorFromDataId=function(t,e,n,r){var o=new wt(e,n=n||\"float32\",t,this.nextTensorId());return this.incRef(o,r),o},t.prototype.makeVariable=function(t,e,n,r){void 0===e&&(e=!0),n=n||this.nextVariableId().toString(),null!=r&&r!==t.dtype&&(t=t.asType(r));var o=new St(t,e,n,this.nextTensorId());if(null!=this.state.registeredVariables[o.name])throw new Error(\"Variable with name \"+o.name+\" was already registered\");return this.state.registeredVariables[o.name]=o,this.incRef(o,this.backend),o},t.prototype.incRef=function(t,e){var n=this.state.tensorInfo.has(t.dataId)?this.state.tensorInfo.get(t.dataId).refCount:0;if(this.state.numTensors++,\"string\"===t.dtype&&this.state.numStringTensors++,0===n){this.state.numDataBuffers++;var r=0;\"complex64\"!==t.dtype&&\"string\"!==t.dtype&&(r=t.size*z(t.dtype)),this.state.tensorInfo.set(t.dataId,{backend:e||this.backend,dtype:t.dtype,shape:t.shape,bytes:r,refCount:0}),this.state.numBytes+=r}this.state.tensorInfo.get(t.dataId).refCount++,t instanceof St||this.track(t)},t.prototype.disposeTensor=function(t){if(this.state.tensorInfo.has(t.dataId)){this.state.numTensors--,\"string\"===t.dtype&&this.state.numStringTensors--;var e=this.state.tensorInfo.get(t.dataId);e.refCount<=1?(\"complex64\"!==t.dtype&&(this.state.numBytes-=e.bytes),this.state.numDataBuffers--,e.backend.disposeData(t.dataId),this.state.tensorInfo.delete(t.dataId)):this.state.tensorInfo.get(t.dataId).refCount--}},t.prototype.disposeVariables=function(){for(var t in this.state.registeredVariables){var e=this.state.registeredVariables[t];this.disposeVariable(e)}},t.prototype.disposeVariable=function(t){this.disposeTensor(t),null!=this.state.registeredVariables[t.name]&&delete this.state.registeredVariables[t.name]},t.prototype.memory=function(){var t=this.backend.memory();return t.numTensors=this.state.numTensors,t.numDataBuffers=this.state.numDataBuffers,t.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(t.unreliable=!0,null==t.reasons&&(t.reasons=[]),t.reasons.push(\"Memory usage by string tensors is approximate (2 bytes per character)\")),t},t.prototype.profile=function(t){return n(this,void 0,void 0,(function(){var e,n;return r(this,(function(r){return this.state.profiling=!0,e=this.state.numBytes,n=this.state.numTensors,this.state.activeProfile.kernels=[],this.state.activeProfile.result=t(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max.apply(Math,this.state.activeProfile.kernels.map((function(t){return t.totalBytesSnapshot}))),this.state.activeProfile.newBytes=this.state.numBytes-e,this.state.activeProfile.newTensors=this.state.numTensors-n,[2,this.state.activeProfile]}))}))},t.prototype.isTapeOn=function(){return this.state.gradientDepth>0&&0===this.state.kernelDepth},t.prototype.addTapeNode=function(t,e,n,r,o){var a=this,i={id:this.state.nextTapeNodeId++,kernelName:t,inputs:e,outputs:n,saved:o},s=h(t);null!=s&&(r=s.gradFunc),null!=r&&(i.gradient=function(t){return t=t.map((function(t,e){if(null==t){var r=n[e],o=tt(r.size,r.dtype);return a.makeTensor(o,r.shape,r.dtype)}return t})),r(t.length>1?t:t[0],o)}),this.state.activeTape.push(i)},t.prototype.keep=function(t){return t.kept=!0,t},t.prototype.startTape=function(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++},t.prototype.endTape=function(){this.state.gradientDepth--},t.prototype.startScope=function(t){var e={track:[],name:\"unnamed scope\",id:this.state.nextScopeId++};t&&(e.name=t),this.state.scopeStack.push(e),this.state.activeScope=e},t.prototype.endScope=function(t){for(var e=this,n=_t(t),r=new Set(n.map((function(t){return t.id}))),o=0;o<this.state.activeScope.track.length;o++){var a=this.state.activeScope.track[o];a.kept||r.has(a.id)||a.dispose()}var i=this.state.scopeStack.pop();this.state.activeScope=0===this.state.scopeStack.length?null:this.state.scopeStack[this.state.scopeStack.length-1],n.forEach((function(t){t.kept||t.scopeId!==i.id||e.track(t)}))},t.prototype.gradients=function(t,e,n,r){var o=this;if(void 0===r&&(r=!1),C(e.length>0,(function(){return\"gradients() received an empty list of xs.\"})),null!=n&&\"float32\"!==n.dtype)throw new Error(\"dy must have 'float32' dtype, but has '\"+n.dtype+\"'\");var a=this.scopedRun((function(){return o.startTape()}),(function(){return o.endTape()}),(function(){return o.tidy(\"forward\",t)}));C(a instanceof wt,(function(){return\"The result y returned by f() must be a tensor.\"}));var i=function(t,e,n){for(var r={},o={},a=0;a<e.length;a++)r[e[a].id]=!0;for(a=0;a<t.length;a++){var i=(p=t[a]).inputs;for(var s in i){for(var u=i[s],c=!1,l=0;l<e.length;l++)if(r[u.id]){p.outputs.forEach((function(t){return r[t.id]=!0})),c=!0,o[p.id]=!0;break}if(c)break}}var h={};h[n.id]=!0;var f={};for(a=t.length-1;a>=0;a--)for(i=(p=t[a]).inputs,l=0;l<p.outputs.length;l++)if(h[p.outputs[l].id]){for(var s in i)h[i[s].id]=!0,f[p.id]=!0;break}var d=[];for(a=0;a<t.length;a++){var p;if(o[(p=t[a]).id]&&f[p.id]){var v={};for(var s in p.inputs){var m=p.inputs[s];r[m.id]&&(v[s]=m)}var g=Object.assign({},p);g.inputs=v,g.outputs=p.outputs,d.push(g)}}return d}(this.state.activeTape,e,a);if(!r&&0===i.length&&e.length>0)throw new Error(\"Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.\");return this.tidy(\"backward\",(function(){var t,r,s={};s[a.id]=null==n?(t=a.shape,r=Z(k(t),\"float32\"),Lt.makeTensor(r,t,\"float32\")):n,function(t,e,n){for(var r=function(r){var o=e[r],a=[];if(o.outputs.forEach((function(e){var n=t[e.id];null!=n?a.push(n):a.push(null)})),null==o.gradient)throw new Error(\"Cannot compute gradient: gradient function not found for \"+o.kernelName+\".\");var i=o.gradient(a),s=function(e){if(!(e in i))throw new Error(\"Cannot backprop through input \"+e+\". Available gradients found: \"+Object.keys(i)+\".\");var r=n((function(){return i[e]()}));if(\"float32\"!==r.dtype)throw new Error(\"Error in gradient for op \"+o.kernelName+\". The gradient of input \"+e+\" must have 'float32' dtype, but has '\"+r.dtype+\"'\");var a=o.inputs[e];if(!S(r.shape,a.shape))throw new Error(\"Error in gradient for op \"+o.kernelName+\". The gradient of input '\"+e+\"' has shape '\"+r.shape+\"', which does not match the shape of the input '\"+a.shape+\"'\");if(null==t[a.id])t[a.id]=r;else{var s=t[a.id];t[a.id]=s.add(r),s.dispose()}};for(var u in o.inputs)s(u)},o=e.length-1;o>=0;o--)r(o)}(s,i,(function(t){return o.tidy(t)}));var u=e.map((function(t){return s[t.id]}));return 0===o.state.gradientDepth&&(o.state.activeTape.forEach((function(t){for(var e=0,n=t.saved;e<n.length;e++){n[e].dispose()}})),o.state.activeTape=null),{value:a,grads:u}}))},t.prototype.customGrad=function(t){var e=this;return C(X(t),(function(){return\"The f passed in customGrad(f) must be a function.\"})),function(){for(var n,r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];C(r.every((function(t){return t instanceof wt})),(function(){return\"The args passed in customGrad(f)(x1, x2,...) must all be tensors\"}));var a={};return r.forEach((function(t,e){a[e]=t})),e.runKernelFunc((function(e,o){return C((n=t.apply(void 0,r.concat([o]))).value instanceof wt,(function(){return\"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor\"})),C(X(n.gradFunc),(function(){return\"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function.\"})),n.value}),a,(function(t,e){var o=n.gradFunc(t,e),a=Array.isArray(o)?o:[o];C(a.length===r.length,(function(){return\"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...).\"})),C(a.every((function(t){return t instanceof wt})),(function(){return\"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.\"}));var i={};return a.forEach((function(t,e){i[e]=function(){return t}})),i}))}},t.prototype.readSync=function(t){return this.state.tensorInfo.get(t).backend.readSync(t)},t.prototype.read=function(t){return this.state.tensorInfo.get(t).backend.read(t)},t.prototype.time=function(t){return n(this,void 0,void 0,(function(){var e,n;return r(this,(function(r){switch(r.label){case 0:return e=et(),[4,this.backend.time(t)];case 1:return(n=r.sent()).wallMs=et()-e,[2,n]}}))}))},t.prototype.track=function(t){return null!=this.state.activeScope&&(t.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(t)),t},Object.defineProperty(t.prototype,\"registeredVariables\",{get:function(){return this.state.registeredVariables},enumerable:!0,configurable:!0}),t.prototype.reset=function(){for(var t in this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new Bt,this.registry)this.disposeRegisteredKernels(t),this.registry[t].dispose(),delete this.registry[t];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null},t.nextTensorId=0,t.nextVariableId=0,t}();var Lt=function(){var t=function(){if(null==Ot){var t=void 0;if(\"undefined\"!=typeof window)t=window;else if(\"undefined\"!=typeof global)t=global;else if(\"undefined\"!=typeof process)t=process;else{if(\"undefined\"==typeof self)throw new Error(\"Could not find a global object\");t=self}Ot=t}return Ot}();if(null==t._tfengine){var e=new o(t);t._tfengine=new Pt(e)}return function(t){s=t}(t._tfengine.ENV),yt=function(){return t._tfengine},t._tfengine}();function Wt(){return\"undefined\"!=typeof window&&null!=window.document||\"undefined\"!=typeof WorkerGlobalScope}var Ut=i();Ut.registerFlag(\"DEBUG\",(function(){return!1}),(function(t){t&&console.warn(\"Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.\")})),Ut.registerFlag(\"IS_BROWSER\",(function(){return Wt()})),Ut.registerFlag(\"IS_NODE\",(function(){return\"undefined\"!=typeof process&&void 0!==process.versions&&void 0!==process.versions.node})),Ut.registerFlag(\"IS_CHROME\",(function(){return\"undefined\"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)})),Ut.registerFlag(\"PROD\",(function(){return!1})),Ut.registerFlag(\"TENSORLIKE_CHECK_SHAPE_CONSISTENCY\",(function(){return Ut.getBool(\"DEBUG\")})),Ut.registerFlag(\"DEPRECATION_WARNINGS_ENABLED\",(function(){return!0})),Ut.registerFlag(\"IS_TEST\",(function(){return!1}));var Vt,zt,Gt,Ht={},qt={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function Kt(t,e){Ht[t]=e}function jt(t){t in Ht||(Ht[t]=function(t){if(1!==t&&2!==t)throw new Error(\"Cannot get WebGL rendering context, WebGL is disabled.\");var e=function(t){if(\"undefined\"!=typeof OffscreenCanvas&&2===t)return new OffscreenCanvas(300,150);if(\"undefined\"!=typeof document)return document.createElement(\"canvas\");throw new Error(\"Cannot create a canvas in this context\")}(t);if(e.addEventListener(\"webglcontextlost\",(function(e){e.preventDefault(),delete Ht[t]}),!1),1===t)return e.getContext(\"webgl\",qt)||e.getContext(\"experimental-webgl\",qt);return e.getContext(\"webgl2\",qt)}(t));var e=Ht[t];return e.isContextLost()?(delete Ht[t],jt(t)):(e.disable(e.DEPTH_TEST),e.disable(e.STENCIL_TEST),e.disable(e.BLEND),e.disable(e.DITHER),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SAMPLE_COVERAGE),e.enable(e.SCISSOR_TEST),e.enable(e.CULL_FACE),e.cullFace(e.BACK),Ht[t])}function Xt(t,e){return[e,t]}function Yt(t){var e=k(t);return T(Math.ceil(e/4))}function $t(t,e){return[Math.max(1,Math.ceil(e/2)),Math.max(1,Math.ceil(t/2))]}function Qt(t,e){var n,r,o,a,s,u,c,l,h,f=t;return 2===i().getNumber(\"WEBGL_VERSION\")?(n=f.R32F,r=f.R16F,o=f.RGBA16F,a=f.RGBA32F,s=f.RED,u=4,c=1,l=f.HALF_FLOAT,h=f.FLOAT):(n=t.RGBA,r=t.RGBA,o=t.RGBA,a=f.RGBA,s=t.RGBA,u=4,c=4,l=null!=e?e.HALF_FLOAT_OES:null,h=t.FLOAT),{internalFormatFloat:n,internalFormatHalfFloat:r,internalFormatPackedHalfFloat:o,internalFormatPackedFloat:a,textureFormatFloat:s,downloadTextureFormat:t.RGBA,downloadUnpackNumChannels:u,defaultNumChannels:c,textureTypeHalfFloat:l,textureTypeFloat:h}}function Jt(t,e,n){var r=n();return e&&function(t){var e=t.getError();if(e!==t.NO_ERROR)throw new Error(\"WebGL Error: \"+ne(t,e))}(t),r}!function(t){t[t.DENSE=0]=\"DENSE\",t[t.SHARED_BATCH=1]=\"SHARED_BATCH\"}(Vt||(Vt={})),function(t){t[t.RENDER=0]=\"RENDER\",t[t.UPLOAD=1]=\"UPLOAD\",t[t.PIXELS=2]=\"PIXELS\",t[t.DOWNLOAD=3]=\"DOWNLOAD\"}(zt||(zt={})),function(t){t[t.UNPACKED_FLOAT16=0]=\"UNPACKED_FLOAT16\",t[t.UNPACKED_FLOAT32=1]=\"UNPACKED_FLOAT32\",t[t.PACKED_4X1_UNSIGNED_BYTE=2]=\"PACKED_4X1_UNSIGNED_BYTE\",t[t.PACKED_2X2_FLOAT32=3]=\"PACKED_2X2_FLOAT32\",t[t.PACKED_2X2_FLOAT16=4]=\"PACKED_2X2_FLOAT16\"}(Gt||(Gt={}));var Zt=5.96e-8,te=65504;function ee(t){return!!(i().getBool(\"WEBGL_RENDER_FLOAT32_ENABLED\")||0===t||Zt<Math.abs(t)&&Math.abs(t)<te)}function ne(t,e){switch(e){case t.NO_ERROR:return\"NO_ERROR\";case t.INVALID_ENUM:return\"INVALID_ENUM\";case t.INVALID_VALUE:return\"INVALID_VALUE\";case t.INVALID_OPERATION:return\"INVALID_OPERATION\";case t.INVALID_FRAMEBUFFER_OPERATION:return\"INVALID_FRAMEBUFFER_OPERATION\";case t.OUT_OF_MEMORY:return\"OUT_OF_MEMORY\";case t.CONTEXT_LOST_WEBGL:return\"CONTEXT_LOST_WEBGL\";default:return\"Unknown error code \"+e}}function re(t,e,n){return ke(t,e,(function(){return t.getExtension(n)}),'Extension \"'+n+'\" not supported on this browser.')}function oe(t,e,n){var r=ke(t,e,(function(){return t.createShader(t.VERTEX_SHADER)}),\"Unable to create vertex WebGLShader.\");if(Jt(t,e,(function(){return t.shaderSource(r,n)})),Jt(t,e,(function(){return t.compileShader(r)})),!1===t.getShaderParameter(r,t.COMPILE_STATUS))throw console.log(t.getShaderInfoLog(r)),new Error(\"Failed to compile vertex shader.\");return r}function ae(t,e,n){var r=ke(t,e,(function(){return t.createShader(t.FRAGMENT_SHADER)}),\"Unable to create fragment WebGLShader.\");if(Jt(t,e,(function(){return t.shaderSource(r,n)})),Jt(t,e,(function(){return t.compileShader(r)})),!1===t.getShaderParameter(r,t.COMPILE_STATUS))throw function(t,e){var n=ue.exec(e);if(null==n)return console.log(\"Couldn't parse line number in error: \"+e),void console.log(t);for(var r=+n[1],o=t.split(\"\\n\"),a=o.length.toString().length+2,i=o.map((function(t,e){return N((e+1).toString(),a)+t})),s=0,u=0;u<i.length;u++)s=Math.max(i[u].length,s);var c=i.slice(0,r-1),l=i.slice(r-1,r),h=i.slice(r);console.log(c.join(\"\\n\")),console.log(e.split(\"\\n\")[0]),console.log(\"%c \"+N(l[0],s),\"border:1px solid red; background-color:#e3d2d2; color:#a61717\"),console.log(h.join(\"\\n\"))}(n,t.getShaderInfoLog(r)),new Error(\"Failed to compile fragment shader.\");return r}var ie,se,ue=/ERROR: [0-9]+:([0-9]+):/g;function ce(t,e){return ke(t,e,(function(){return t.createProgram()}),\"Unable to create WebGLProgram.\")}function le(t,e,n){if(Jt(t,e,(function(){return t.linkProgram(n)})),!1===t.getProgramParameter(n,t.LINK_STATUS))throw console.log(t.getProgramInfoLog(n)),new Error(\"Failed to link vertex and fragment shaders.\")}function he(t,e,n){if(Jt(t,e,(function(){return t.validateProgram(n)})),!1===t.getProgramParameter(n,t.VALIDATE_STATUS))throw console.log(t.getProgramInfoLog(n)),new Error(\"Shader program validation failed.\")}function fe(t,e,n){var r=ke(t,e,(function(){return t.createBuffer()}),\"Unable to create WebGLBuffer\");return Jt(t,e,(function(){return t.bindBuffer(t.ARRAY_BUFFER,r)})),Jt(t,e,(function(){return t.bufferData(t.ARRAY_BUFFER,n,t.STATIC_DRAW)})),r}function de(t,e,n){var r=ke(t,e,(function(){return t.createBuffer()}),\"Unable to create WebGLBuffer\");return Jt(t,e,(function(){return t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,r)})),Jt(t,e,(function(){return t.bufferData(t.ELEMENT_ARRAY_BUFFER,n,t.STATIC_DRAW)})),r}function pe(t,e){return ke(t,e,(function(){return t.createTexture()}),\"Unable to create WebGLTexture.\")}function ve(t,e){var n=i().getNumber(\"WEBGL_MAX_TEXTURE_SIZE\");if(t<=0||e<=0){var r=\"[\"+t+\"x\"+e+\"]\";throw new Error(\"Requested texture size \"+r+\" is invalid.\")}if(t>n||e>n){r=\"[\"+t+\"x\"+e+\"]\";throw new Error(\"Requested texture size \"+r+\" greater than WebGL maximum on this browser / GPU \"+(\"[\"+n+\"x\"+n+\"]\")+\".\")}}function me(t,e){return ke(t,e,(function(){return t.createFramebuffer()}),\"Unable to create WebGLFramebuffer.\")}function ge(t,e,n,r,o,a,i,s){var u=t.getAttribLocation(n,r);return-1!==u&&(Jt(t,e,(function(){return t.bindBuffer(t.ARRAY_BUFFER,o)})),Jt(t,e,(function(){return t.vertexAttribPointer(u,a,t.FLOAT,!1,i,s)})),Jt(t,e,(function(){return t.enableVertexAttribArray(u)})),!0)}function ye(t,e,n,r){Se(t,r),Jt(t,e,(function(){return t.activeTexture(t.TEXTURE0+r)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)}))}function xe(t,e,n,r){return ke(t,e,(function(){return t.getUniformLocation(n,r)}),'uniform \"'+r+'\" not present in program.')}function be(t,e,n){return t.getUniformLocation(e,n)}function we(t,e,n,r,o,a){Jt(t,e,(function(){return ye(t,e,r,a)})),Jt(t,e,(function(){return t.uniform1i(o,a)}))}function Ce(t,e,n,r){Jt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,r)})),Jt(t,e,(function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,n,0)}))}function Ee(t,e,n){Jt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,n)})),Jt(t,e,(function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,null,0)}))}function Re(t){var e=t.checkFramebufferStatus(t.FRAMEBUFFER);if(e!==t.FRAMEBUFFER_COMPLETE)throw new Error(\"Error binding framebuffer: \"+Ie(t,e))}function Ie(t,e){switch(e){case t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return\"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\";case t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return\"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\";case t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return\"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\";case t.FRAMEBUFFER_UNSUPPORTED:return\"FRAMEBUFFER_UNSUPPORTED\";default:return\"unknown error \"+e}}function ke(t,e,n,r){var o=Jt(t,e,(function(){return n()}));if(null==o)throw new Error(r);return o}function Se(t,e){var n=t.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=e+t.TEXTURE0;if(r<t.TEXTURE0||r>n)throw new Error(\"textureUnit must be in \"+(\"[gl.TEXTURE0, gl.TEXTURE\"+n+\"]\")+\".\")}function Ae(t,e){return void 0===e&&(e=2),k(t.slice(0,t.length-e))}function De(t){if(0===t.length)throw Error(\"Cannot get rows and columns of an empty shape array.\");return[t.length>1?t[t.length-2]:1,t[t.length-1]]}function Te(t){var e=[1,1,1];return 0===t.length||1===t.length&&1===t[0]||(e=[Ae(t)].concat(De(t))),e}function Ne(t,e){var n;void 0===e&&(e=!1);var r=i().getNumber(\"WEBGL_MAX_TEXTURE_SIZE\");if(e&&(r*=2,1===(t=t.map((function(e,n){return n>=t.length-2?b(t[n]):t[n]}))).length&&(t=[2,t[0]])),2!==t.length){var o=M(t);t=o.newShape}var a=k(t);if(t.length<=1&&a<=r)return[1,a];if(2===t.length&&t[0]<=r&&t[1]<=r)return t;if(3===t.length&&t[0]*t[1]<=r&&t[2]<=r)return[t[0]*t[1],t[2]];if(3===t.length&&t[0]<=r&&t[1]*t[2]<=r)return[t[0],t[1]*t[2]];if(4===t.length&&t[0]*t[1]*t[2]<=r&&t[3]<=r)return[t[0]*t[1]*t[2],t[3]];if(4===t.length&&t[0]<=r&&t[1]*t[2]*t[3]<=r)return[t[0],t[1]*t[2]*t[3]];if(e){var s=Ae(t),u=2,c=2;return t.length&&(u=(n=De(t))[0],c=n[1]),T(a=s*(u/2)*(c/2)).map((function(t){return 2*t}))}return T(a)}function Fe(t){return t%2==0}function _e(t,e){if(S(t=t.slice(-2),e=e.slice(-2)))return!0;if(!t.length||!e.length)return!0;if(0===t[0]||0===t[1]||0===e[0]||0===e[1])return!0;if(t.length!==e.length){var n=t.slice(-1)[0],r=e.slice(-1)[0];if(n===r)return!0;if(Fe(n)&&Fe(r)&&(1===t[0]||1===e[0]))return!0}return t[1]===e[1]&&Fe(t[0])&&Fe(e[0])}function Oe(t){if(null==ie){var e=jt(t);ie=e.getParameter(e.MAX_TEXTURE_SIZE)}return ie}function Me(t){if(null==se){var e=jt(t);se=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,se)}function Be(t){if(0===t)return 0;var e=jt(t);return Pe(e,\"EXT_disjoint_timer_query_webgl2\")&&2===t?2:Pe(e,\"EXT_disjoint_timer_query\")?1:0}function Pe(t,e){return null!=t.getExtension(e)}function Le(t){try{if(null!=jt(t))return!0}catch(t){return!1}return!1}function We(t){if(0===t)return!1;var e=jt(t);if(1===t){if(!Pe(e,\"OES_texture_float\"))return!1}else if(!Pe(e,\"EXT_color_buffer_float\"))return!1;return Ve(e)}function Ue(t){if(0===t)return!1;var e=jt(t);if(1!==t){if(Pe(e,\"EXT_color_buffer_float\"))return Ve(e);if(Pe(e,\"EXT_color_buffer_half_float\")){var n=e.getExtension(\"EXT_color_buffer_half_float\");return function(t,e){var n=Qt(t,e),r=t.createTexture();t.bindTexture(t.TEXTURE_2D,r);t.texImage2D(t.TEXTURE_2D,0,n.internalFormatHalfFloat,1,1,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);var o=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,o),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0);var a=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(r),t.deleteFramebuffer(o),a}(e,n)}return!1}return!!Pe(e,\"OES_texture_float\")&&(!!Pe(e,\"WEBGL_color_buffer_float\")&&Ve(e))}function Ve(t){var e=Qt(t),n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n);t.texImage2D(t.TEXTURE_2D,0,e.internalFormatFloat,1,1,0,e.textureFormatFloat,e.textureTypeFloat,null);var r=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,n,0);var o=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(n),t.deleteFramebuffer(r),o}function ze(t){return 2===t&&null!=jt(t).fenceSync}var Ge=Object.freeze({callAndCheck:Jt,canBeRepresented:ee,getWebGLErrorMessage:ne,getExtensionOrThrow:re,createVertexShader:oe,createFragmentShader:ae,createProgram:ce,linkProgram:le,validateProgram:he,createStaticVertexBuffer:fe,createStaticIndexBuffer:de,getNumChannels:function(){return 2===i().getNumber(\"WEBGL_VERSION\")?1:4},createTexture:pe,validateTextureSize:ve,createFramebuffer:me,bindVertexBufferToProgramAttribute:ge,bindTextureUnit:ye,unbindTextureUnit:function(t,e,n){Se(t,n),Jt(t,e,(function(){return t.activeTexture(t.TEXTURE0+n)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}))},getProgramUniformLocationOrThrow:xe,getProgramUniformLocation:be,bindTextureToProgramUniformSampler:we,bindCanvasToFramebuffer:function(t,e){Jt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,null)})),Jt(t,e,(function(){return t.viewport(0,0,t.canvas.width,t.canvas.height)})),Jt(t,e,(function(){return t.scissor(0,0,t.canvas.width,t.canvas.height)}))},bindColorTextureToFramebuffer:Ce,unbindColorTextureFromFramebuffer:Ee,validateFramebuffer:Re,getFramebufferErrorMessage:Ie,getBatchDim:Ae,getRowsCols:De,getShapeAs3D:Te,getTextureShapeFromLogicalShape:Ne,isReshapeFree:_e,getWebGLMaxTextureSize:Oe,resetMaxTextureSize:function(){ie=null},resetMaxTexturesInShader:function(){se=null},getMaxTexturesInShader:Me,getWebGLDisjointQueryTimerVersion:Be,hasExtension:Pe,isWebGLVersionEnabled:Le,isCapableOfRenderingToFloatTexture:We,isDownloadFloatTextureEnabled:Ue,isWebGLFenceEnabled:ze}),He=i();function qe(){i().set(\"PROD\",!0)}function Ke(){i().set(\"DEBUG\",!0)}function je(){i().set(\"DEPRECATION_WARNINGS_ENABLED\",!1),console.warn(\"TensorFlow.js deprecation warnings have been disabled.\")}function Xe(t){i().getBool(\"DEPRECATION_WARNINGS_ENABLED\")&&console.warn(t+\" You can disable deprecation warnings with tf.disableDeprecationWarnings().\")}function Ye(){Lt.disposeVariables()}function $e(){return Lt}function Qe(){return Lt.memory()}function Je(t){return Lt.profile(t)}function Ze(t,e){return Lt.tidy(t,e)}function tn(t){_t(t).forEach((function(t){return t.dispose()}))}function en(t){return Lt.keep(t)}function nn(t){return Lt.time(t)}function rn(t){return Lt.setBackend(t)}function on(){return Lt.ready()}function an(){return Lt.backendName}function sn(t){Lt.removeBackend(t)}function un(t){return Lt.findBackend(t)}function cn(t){return Lt.findBackendFactory(t)}function ln(t,e,n){return void 0===n&&(n=1),Lt.registerBackend(t,e,n)}function hn(){return Lt.backend}function fn(t,e){i().setPlatform(t,e)}function dn(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];i().getBool(\"IS_TEST\")||console.warn.apply(console,t)}function pn(t,e){var n=t;if(V(t))return\"string\"===e?[]:[t.length];if(!Array.isArray(t))return[];for(var r=[];Array.isArray(n)||V(n)&&\"string\"!==e;)r.push(n.length),n=n[0];return Array.isArray(t)&&i().getBool(\"TENSORLIKE_CHECK_SHAPE_CONSISTENCY\")&&function t(e,n,r){if(r=r||[],!Array.isArray(e)&&!V(e))return void C(0===n.length,(function(){return\"Element arr[\"+r.join(\"][\")+\"] is a primitive, but should be an array/TypedArray of \"+n[0]+\" elements\"}));C(n.length>0,(function(){return\"Element arr[\"+r.join(\"][\")+\"] should be a primitive, but is an array of \"+e.length+\" elements\"})),C(e.length===n[0],(function(){return\"Element arr[\"+r.join(\"][\")+\"] should have \"+n[0]+\" elements, but has \"+e.length+\" elements\"}));for(var o=n.slice(1),a=0;a<e.length;++a)t(e[a],o,r.concat(a))}(t,r,[]),r}function vn(t,e,n,r){if(null!=t&&(\"numeric\"!==t&&t!==e||\"numeric\"===t&&\"string\"===e))throw new Error(\"Argument '\"+n+\"' passed to '\"+r+\"' must be \"+t+\" tensor, but got \"+e+\" tensor\")}function mn(t,e,n,r){if(void 0===r&&(r=\"numeric\"),t instanceof wt)return vn(r,t.dtype,e,n),t;var o=j(t);if(\"string\"!==o&&[\"bool\",\"int32\",\"float32\"].indexOf(r)>=0&&(o=r),vn(r,o,e,n),null==t||!V(t)&&!Array.isArray(t)&&\"number\"!=typeof t&&\"boolean\"!=typeof t&&\"string\"!=typeof t){var a=null==t?\"null\":t.constructor.name;throw new Error(\"Argument '\"+e+\"' passed to '\"+n+\"' must be a Tensor or TensorLike, but got '\"+a+\"'\")}var s=pn(t,o);V(t)||Array.isArray(t)||(t=[t]);var u=\"string\"!==o?Q(t,o,i().getBool(\"DEBUG\")):I(t,[],!0);return Lt.makeTensor(u,s,o)}function gn(t,e,n,r){if(void 0===r&&(r=\"numeric\"),!Array.isArray(t))throw new Error(\"Argument \"+e+\" passed to \"+n+\" must be a `Tensor[]` or `TensorLike[]`\");return t.map((function(t,r){return mn(t,e+\"[\"+r+\"]\",n)}),r)}function yn(t,e){for(var n=0;n<t.length;++n)if(t[t.length-n-1]!==e-1-n)return!1;return!0}function xn(t,e,n){for(var r=t.length+e.length,o=[],a=0,i=0,s=0;s<r;s++)-1===n.indexOf(s)?o.push(t[a++]):o.push(e[i++]);return o}function bn(t,e){for(var n=[],r=t.length,o=0;o<r;o++)-1===e.indexOf(o)&&n.push(t[o]);return[n,e.map((function(e){return t[e]}))]}function wn(t,e){return xn(t,e.map((function(t){return 1})),e)}function Cn(t,e,n){C(yn(e,n),(function(){return t+\" supports only inner-most axes for now. Got axes \"+e+\" and rank-\"+n+\" input.\"}))}function En(t,e){if(yn(t,e))return null;for(var n=[],r=0;r<e;++r)-1===t.indexOf(r)&&n.push(r);return t.forEach((function(t){return n.push(t)})),n}function Rn(t){return t.map((function(t,e){return[e,t]})).sort((function(t,e){return t[1]-e[1]})).map((function(t){return t[0]}))}function In(t,e){for(var n=[],r=e-t;r<e;++r)n.push(r);return n}function kn(t,e){var n=t[0].length;t.forEach((function(t,e){C(t.length===n,(function(){return\"Error in concat\"+n+\"D: rank of tensors[\"+e+\"] must be the same as the rank of the rest (\"+n+\")\"}))})),C(e>=0&&e<n,(function(){return\"Error in concat\"+n+\"D: axis must be between 0 and \"+(n-1)+\".\"}));var r=t[0];t.forEach((function(t,o){for(var a=0;a<n;a++)C(a===e||t[a]===r[a],(function(){return\"Error in concat\"+n+\"D: Shape of tensors[\"+o+\"] (\"+t+\") does not match the shape of the rest (\"+r+\") along the non-concatenated axis \"+o+\".\"}))}))}function Sn(t,e){for(var n=t[0].slice(),r=1;r<t.length;r++)n[e]+=t[r][e];return n}function An(t){var e=Object.keys(t);if(1!==e.length)throw new Error(\"Please provide an object with a single key (operation name) mapping to a function. Got an object with \"+e.length+\" keys.\");var n=e[0],r=t[n];n.endsWith(\"_\")&&(n=n.substring(0,n.length-1));var o=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];Lt.startScope(n);try{var o=r.apply(void 0,t);return o instanceof Promise&&console.error(\"Cannot return a Promise inside of tidy.\"),Lt.endScope(o),o}catch(t){throw Lt.endScope(null),t}};return Object.defineProperty(o,\"name\",{value:n,configurable:!0}),o}He.registerFlag(\"HAS_WEBGL\",(function(){return He.getNumber(\"WEBGL_VERSION\")>0})),He.registerFlag(\"WEBGL_VERSION\",(function(){return Le(2)?2:Le(1)?1:0})),He.registerFlag(\"WEBGL_BUFFER_SUPPORTED\",(function(){return 2===He.get(\"WEBGL_VERSION\")})),He.registerFlag(\"WEBGL_CPU_FORWARD\",(function(){return!0})),He.registerFlag(\"WEBGL_FORCE_F16_TEXTURES\",(function(){return!1})),He.registerFlag(\"WEBGL_PACK\",(function(){return He.getBool(\"HAS_WEBGL\")})),He.registerFlag(\"WEBGL_PACK_NORMALIZATION\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_PACK_CLIP\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_PACK_DEPTHWISECONV\",(function(){return!1})),He.registerFlag(\"WEBGL_PACK_BINARY_OPERATIONS\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_PACK_UNARY_OPERATIONS\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_PACK_ARRAY_OPERATIONS\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_PACK_IMAGE_OPERATIONS\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_PACK_REDUCE\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_LAZILY_UNPACK\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_CONV_IM2COL\",(function(){return He.getBool(\"WEBGL_PACK\")})),He.registerFlag(\"WEBGL_MAX_TEXTURE_SIZE\",(function(){return Oe(He.getNumber(\"WEBGL_VERSION\"))})),He.registerFlag(\"WEBGL_MAX_TEXTURES_IN_SHADER\",(function(){return Me(He.getNumber(\"WEBGL_VERSION\"))})),He.registerFlag(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\",(function(){var t=He.getNumber(\"WEBGL_VERSION\");return 0===t?0:Be(t)})),He.registerFlag(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\",(function(){return He.getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\")>0&&(t=navigator.userAgent||navigator.vendor||window.opera,!(/(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|xda|xiino/i.test(t)||/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(t.substr(0,4))));var t})),He.registerFlag(\"WEBGL_RENDER_FLOAT32_CAPABLE\",(function(){return We(He.getNumber(\"WEBGL_VERSION\"))})),He.registerFlag(\"WEBGL_RENDER_FLOAT32_ENABLED\",(function(){return!He.getBool(\"WEBGL_FORCE_F16_TEXTURES\")&&He.getBool(\"WEBGL_RENDER_FLOAT32_CAPABLE\")})),He.registerFlag(\"WEBGL_DOWNLOAD_FLOAT_ENABLED\",(function(){return Ue(He.getNumber(\"WEBGL_VERSION\"))})),He.registerFlag(\"WEBGL_FENCE_API_ENABLED\",(function(){return ze(He.getNumber(\"WEBGL_VERSION\"))})),He.registerFlag(\"WEBGL_SIZE_UPLOAD_UNIFORM\",(function(){return He.getBool(\"WEBGL_RENDER_FLOAT32_ENABLED\")?4:0})),bt=Xe;var Dn=An({complex_:function(t,e){var n=mn(t,\"real\",\"complex\"),r=mn(e,\"imag\",\"complex\");return E(n.shape,r.shape,\"real and imag shapes, \"+n.shape+\" and \"+r.shape+\", must match in call to tf.complex().\"),Lt.runKernelFunc((function(t){return t.complex(n,r)}),{$real:n,$imag:r})}}),Tn=An({real_:function(t){var e=mn(t,\"input\",\"real\");return Lt.runKernelFunc((function(t){return t.real(e)}),{$input:e})}}),Nn=An({imag_:function(t){var e=mn(t,\"input\",\"imag\");return Lt.runKernelFunc((function(t){return t.imag(e)}),{$input:e})}});function Fn(t,e,n){return _n(t,e,pn(t,n),n)}function _n(t,e,n,r){if(null==r&&(r=j(t)),\"complex64\"===r)throw new Error(\"Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).\");if(!V(t)&&!Array.isArray(t)&&\"number\"!=typeof t&&\"boolean\"!=typeof t&&\"string\"!=typeof t)throw new Error(\"values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray\");if(null!=e){nt(e);var o=k(e),a=k(n);C(o===a,(function(){return\"Based on the provided shape, [\"+e+\"], the tensor should have \"+o+\" values but has \"+a}));for(var s=0;s<n.length;++s){var u=n[s],c=s!==n.length-1||u!==k(e.slice(s));C(n[s]===e[s]||!c,(function(){return\"Error creating a new Tensor. Inferred shape (\"+n+\") does not match the provided shape (\"+e+\"). \"}))}}return V(t)||Array.isArray(t)||(t=[t]),e=e||n,t=\"string\"!==r?Q(t,r,i().getBool(\"DEBUG\")):I(t,[],!0),Lt.makeTensor(t,e,r)}function On(t,e){if((V(t)&&\"string\"!==e||Array.isArray(t))&&\"complex64\"!==e)throw new Error(\"Error creating a new Scalar: value must be a primitive (number|boolean|string)\");if(\"string\"===e&&V(t)&&!(t instanceof Uint8Array))throw new Error(\"When making a scalar from encoded string, the value must be `Uint8Array`.\");return _n(t,[],[],e)}function Mn(t,e){R(t);var n=pn(t,e);if(1!==n.length)throw new Error(\"tensor1d() requires values to be a flat/TypedArray\");return _n(t,null,n,e)}function Bn(t,e,n){if(R(t),null!=e&&2!==e.length)throw new Error(\"tensor2d() requires shape to have two numbers\");var r=pn(t,n);if(2!==r.length&&1!==r.length)throw new Error(\"tensor2d() requires values to be number[][] or flat/TypedArray\");if(1===r.length&&null==e)throw new Error(\"tensor2d() requires shape to be provided when `values` are a flat/TypedArray\");return _n(t,e,r,n)}function Pn(t,e,n){if(R(t),null!=e&&3!==e.length)throw new Error(\"tensor3d() requires shape to have three numbers\");var r=pn(t,n);if(3!==r.length&&1!==r.length)throw new Error(\"tensor3d() requires values to be number[][][] or flat/TypedArray\");if(1===r.length&&null==e)throw new Error(\"tensor3d() requires shape to be provided when `values` are a flat array\");return _n(t,e,r,n)}function Ln(t,e,n){if(R(t),null!=e&&4!==e.length)throw new Error(\"tensor4d() requires shape to have four numbers\");var r=pn(t,n);if(4!==r.length&&1!==r.length)throw new Error(\"tensor4d() requires values to be number[][][][] or flat/TypedArray\");if(1===r.length&&null==e)throw new Error(\"tensor4d() requires shape to be provided when `values` are a flat array\");return _n(t,e,r,n)}function Wn(t,e,n){if(R(t),null!=e&&5!==e.length)throw new Error(\"tensor5d() requires shape to have five numbers\");var r=pn(t,n);if(5!==r.length&&1!==r.length)throw new Error(\"tensor5d() requires values to be number[][][][][] or flat/TypedArray\");if(1===r.length&&null==e)throw new Error(\"tensor5d() requires shape to be provided when `values` are a flat array\");return _n(t,e,r,n)}function Un(t,e,n){if(R(t),null!=e&&6!==e.length)throw new Error(\"tensor6d() requires shape to have six numbers\");var r=pn(t,n);if(6!==r.length&&1!==r.length)throw new Error(\"tensor6d() requires values to be number[][][][][][] or flat/TypedArray\");if(1===r.length&&null==e)throw new Error(\"tensor6d() requires shape to be provided when `values` are a flat array\");return _n(t,e=e||r,r,n)}function Vn(t,e,n,r){return void 0===e&&(e=!0),Lt.makeVariable(t,e,n,r)}function zn(t,e){if(void 0===e&&(e=\"float32\"),\"complex64\"===e){var n=zn(t,\"float32\"),r=Gn(t,\"float32\");return Dn(n,r)}var o=Z(k(t),e);return Lt.makeTensor(o,t,e)}function Gn(t,e){if(void 0===e&&(e=\"float32\"),\"complex64\"===e){var n=Gn(t,\"float32\"),r=Gn(t,\"float32\");return Dn(n,r)}var o=tt(k(t),e);return Lt.makeTensor(o,t,e)}function Hn(t,e,n){return Lt.runKernelFunc((function(r){return r.fill(t,e,n)}),{})}function qn(t,e,n){if(n<=0)throw new Error(\"The number of values should be positive.\");return Lt.runKernelFunc((function(r){return r.linspace(t,e,n)}),{})}function Kn(t,e,n,r){if(void 0===n&&(n=1),void 0===r&&(r=\"float32\"),0===n)throw new Error(\"Cannot have a step of zero\");if(t===e||t<e&&n<0||e<t&&n>1)return Gn([0],r);var o=tt(Math.abs(Math.ceil((e-t)/n)),r);e<t&&1===n&&(n=-1),o[0]=t;for(var a=1;a<o.length;a++)o[a]=o[a-1]+n;return Mn(o,r)}var jn=An({onesLike_:function(t){var e=mn(t,\"x\",\"onesLike\");if(\"complex64\"===e.dtype){var n=jn(Tn(e)),r=Xn(Nn(e));return Dn(n,r)}return Lt.runKernelFunc((function(t){return t.onesLike(e)}),{$x:e},(function(t,e){return{$x:function(){return Xn(t)}}}))}}),Xn=An({zerosLike_:function(t){var e=mn(t,\"x\",\"zerosLike\");return Lt.runKernelFunc((function(t){return t.zerosLike(e)}),{$x:e},(function(t,e){return{$x:function(){return Xn(t)}}}))}});var Yn=An({concat_:function(t,e){void 0===e&&(e=0),C(t.length>=1,(function(){return\"Pass at least one tensor to concat\"}));var n=gn(t,\"tensors\",\"concat\");\"complex64\"===n[0].dtype&&n.forEach((function(t){if(\"complex64\"!==t.dtype)throw new Error(\"Cannot concatenate complex64 tensors with a tensor\\n          with dtype \"+t.dtype+\". \")})),e=O(e,n[0].shape)[0];var r=Sn(n.map((function(t){return t.shape})),e);if(0===k(r))return Fn([],r);if(1===(n=n.filter((function(t){return t.size>0}))).length)return n[0];var o=n.map((function(t){return t.shape}));kn(o,e);var a=n,i={axis:e};return Lt.runKernelFunc((function(t){return t.concat(n,e)}),a,(function(t){var n=o.map((function(t){return t[e]}));return tr(t,n,e).map((function(t){return function(){return t}}))}),\"Concat\",i)}}),$n=An({concat1d_:function(t){return Yn(t,0)}}),Qn=An({concat2d_:function(t,e){return Yn(t,e)}}),Jn=An({concat3d_:function(t,e){return Yn(t,e)}}),Zn=An({concat4d_:function(t,e){return Yn(t,e)}}),tr=An({split_:function(t,e,n){void 0===n&&(n=0);var r,o=mn(t,\"x\",\"split\");return n=O(n,o.shape)[0],\"number\"==typeof e?(C(o.shape[n]%e==0,(function(){return\"Number of splits must evenly divide the axis.\"})),r=new Array(e).fill(o.shape[n]/e)):(C(o.shape[n]===e.reduce((function(t,e){return t+e})),(function(){return\"The sum of sizes must match the size of the axis dimension.\"})),r=e),Lt.runKernelFunc((function(t){return t.split(o,r,n)}),{$x:o},(function(t){return{$x:function(){return Yn(t,n)}}}))}});\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self&&self;function er(t,e){return t(e={exports:{}},e.exports),e.exports}var nr=er((function(t){!function(t,e,n){function r(t){var e,n=this,r=(e=4022871197,function(t){t=t.toString();for(var n=0;n<t.length;n++){var r=.02519603282416938*(e+=t.charCodeAt(n));r-=e=r>>>0,e=(r*=e)>>>0,e+=4294967296*(r-=e)}return 2.3283064365386963e-10*(e>>>0)});n.next=function(){var t=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=t-(n.c=0|t)},n.c=1,n.s0=r(\" \"),n.s1=r(\" \"),n.s2=r(\" \"),n.s0-=r(t),n.s0<0&&(n.s0+=1),n.s1-=r(t),n.s1<0&&(n.s1+=1),n.s2-=r(t),n.s2<0&&(n.s2+=1),r=null}function o(t,e){return e.c=t.c,e.s0=t.s0,e.s1=t.s1,e.s2=t.s2,e}function a(t,e){var n=new r(t),a=e&&e.state,i=n.next;return i.int32=function(){return 4294967296*n.next()|0},i.double=function(){return i()+11102230246251565e-32*(2097152*i()|0)},i.quick=i,a&&(\"object\"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.alea=a}(0,t,!1)})),rr=er((function(t){!function(t,e,n){function r(t){var e=this,n=\"\";e.x=0,e.y=0,e.z=0,e.w=0,e.next=function(){var t=e.x^e.x<<11;return e.x=e.y,e.y=e.z,e.z=e.w,e.w^=e.w>>>19^t^t>>>8},t===(0|t)?e.x=t:n+=t;for(var r=0;r<n.length+64;r++)e.x^=0|n.charCodeAt(r),e.next()}function o(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e}function a(t,e){var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(\"object\"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.xor128=a}(0,t,!1)})),or=er((function(t){!function(t,e,n){function r(t){var e=this,n=\"\";e.next=function(){var t=e.x^e.x>>>2;return e.x=e.y,e.y=e.z,e.z=e.w,e.w=e.v,(e.d=e.d+362437|0)+(e.v=e.v^e.v<<4^t^t<<1)|0},e.x=0,e.y=0,e.z=0,e.w=0,e.v=0,t===(0|t)?e.x=t:n+=t;for(var r=0;r<n.length+64;r++)e.x^=0|n.charCodeAt(r),r==n.length&&(e.d=e.x<<10^e.x>>>4),e.next()}function o(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e.v=t.v,e.d=t.d,e}function a(t,e){var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(\"object\"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.xorwow=a}(0,t,!1)})),ar=er((function(t){!function(t,e,n){function r(t){var e=this;e.next=function(){var t,n,r=e.x,o=e.i;return t=r[o],n=(t^=t>>>7)^t<<24,n^=(t=r[o+1&7])^t>>>10,n^=(t=r[o+3&7])^t>>>3,n^=(t=r[o+4&7])^t<<7,t=r[o+7&7],n^=(t^=t<<13)^t<<9,r[o]=n,e.i=o+1&7,n},function(t,e){var n,r=[];if(e===(0|e))r[0]=e;else for(e=\"\"+e,n=0;n<e.length;++n)r[7&n]=r[7&n]<<15^e.charCodeAt(n)+r[n+1&7]<<13;for(;r.length<8;)r.push(0);for(n=0;n<8&&0===r[n];++n);for(8==n?r[7]=-1:r[n],t.x=r,t.i=0,n=256;n>0;--n)t.next()}(e,t)}function o(t,e){return e.x=t.x.slice(),e.i=t.i,e}function a(t,e){null==t&&(t=+new Date);var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(a.x&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.xorshift7=a}(0,t,!1)})),ir=er((function(t){!function(t,e,n){function r(t){var e=this;e.next=function(){var t,n,r=e.w,o=e.X,a=e.i;return e.w=r=r+1640531527|0,n=o[a+34&127],t=o[a=a+1&127],n^=n<<13,t^=t<<17,n^=n>>>15,t^=t>>>12,n=o[a]=n^t,e.i=a,n+(r^r>>>16)|0},function(t,e){var n,r,o,a,i,s=[],u=128;for(e===(0|e)?(r=e,e=null):(e+=\"\\0\",r=0,u=Math.max(u,e.length)),o=0,a=-32;a<u;++a)e&&(r^=e.charCodeAt((a+32)%e.length)),0===a&&(i=r),r^=r<<10,r^=r>>>15,r^=r<<4,r^=r>>>13,a>=0&&(i=i+1640531527|0,o=0==(n=s[127&a]^=r+i)?o+1:0);for(o>=128&&(s[127&(e&&e.length||0)]=-1),o=127,a=512;a>0;--a)r=s[o+34&127],n=s[o=o+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[o]=r^n;t.w=i,t.X=s,t.i=o}(e,t)}function o(t,e){return e.i=t.i,e.w=t.w,e.X=t.X.slice(),e}function a(t,e){null==t&&(t=+new Date);var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(a.X&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.xor4096=a}(0,t,!1)})),sr=er((function(t){!function(t,e,n){function r(t){var e=this,n=\"\";e.next=function(){var t=e.b,n=e.c,r=e.d,o=e.a;return t=t<<25^t>>>7^n,n=n-r|0,r=r<<24^r>>>8^o,o=o-t|0,e.b=t=t<<20^t>>>12^n,e.c=n=n-r|0,e.d=r<<16^n>>>16^o,e.a=o-t|0},e.a=0,e.b=0,e.c=-1640531527,e.d=1367130551,t===Math.floor(t)?(e.a=t/4294967296|0,e.b=0|t):n+=t;for(var r=0;r<n.length+20;r++)e.b^=0|n.charCodeAt(r),e.next()}function o(t,e){return e.a=t.a,e.b=t.b,e.c=t.c,e.d=t.d,e}function a(t,e){var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(\"object\"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.tychei=a}(0,t,!1)})),ur=er((function(t){!function(e,n){var r,o=this,a=256,i=6,s=\"random\",u=n.pow(a,i),c=n.pow(2,52),l=2*c,h=a-1;function f(t,h,f){var g=[],y=v(function t(e,n){var r,o=[],a=typeof e;if(n&&\"object\"==a)for(r in e)try{o.push(t(e[r],n-1))}catch(t){}return o.length?o:\"string\"==a?e:e+\"\\0\"}((h=1==h?{entropy:!0}:h||{}).entropy?[t,m(e)]:null==t?function(){try{var t;return r&&(t=r.randomBytes)?t=t(a):(t=new Uint8Array(a),(o.crypto||o.msCrypto).getRandomValues(t)),m(t)}catch(t){var n=o.navigator,i=n&&n.plugins;return[+new Date,o,i,o.screen,m(e)]}}():t,3),g),x=new d(g),b=function(){for(var t=x.g(i),e=u,n=0;t<c;)t=(t+n)*a,e*=a,n=x.g(1);for(;t>=l;)t/=2,e/=2,n>>>=1;return(t+n)/e};return b.int32=function(){return 0|x.g(4)},b.quick=function(){return x.g(4)/4294967296},b.double=b,v(m(x.S),e),(h.pass||f||function(t,e,r,o){return o&&(o.S&&p(o,x),t.state=function(){return p(x,{})}),r?(n[s]=t,e):t})(b,y,\"global\"in h?h.global:this==n,h.state)}function d(t){var e,n=t.length,r=this,o=0,i=r.i=r.j=0,s=r.S=[];for(n||(t=[n++]);o<a;)s[o]=o++;for(o=0;o<a;o++)s[o]=s[i=h&i+t[o%n]+(e=s[o])],s[i]=e;(r.g=function(t){for(var e,n=0,o=r.i,i=r.j,s=r.S;t--;)e=s[o=h&o+1],n=n*a+s[h&(s[o]=s[i=h&i+e])+(s[i]=e)];return r.i=o,r.j=i,n})(a)}function p(t,e){return e.i=t.i,e.j=t.j,e.S=t.S.slice(),e}function v(t,e){for(var n,r=t+\"\",o=0;o<r.length;)e[h&o]=h&(n^=19*e[h&o])+r.charCodeAt(o++);return m(e)}function m(t){return String.fromCharCode.apply(0,t)}if(n[\"seed\"+s]=f,v(n.random(),e),t.exports){t.exports=f;try{r=require(\"crypto\")}catch(t){}}}([],Math)}));ur.alea=nr,ur.xor128=rr,ur.xorwow=or,ur.xorshift7=ar,ur.xor4096=ir,ur.tychei=sr;var cr=ur.alea,lr=function(){function t(t,e,n,r,o){this.mean=t,this.stdDev=e,this.dtype=n,this.nextVal=NaN,this.truncated=r,this.truncated&&(this.upper=this.mean+2*this.stdDev,this.lower=this.mean-2*this.stdDev);var a=o||Math.random();this.random=cr(a.toString())}return t.prototype.nextValue=function(){if(!isNaN(this.nextVal)){var t=this.nextVal;return this.nextVal=NaN,t}for(var e,n,r=!1;!r;){var o=void 0,a=void 0,i=void 0;do{i=(o=2*this.random()-1)*o+(a=2*this.random()-1)*a}while(i>=1||0===i);var s=Math.sqrt(-2*Math.log(i)/i);e=this.mean+this.stdDev*o*s,n=this.mean+this.stdDev*a*s,this.truncated&&!this.isValidTruncated(e)||(r=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(e)},t.prototype.convertValue=function(t){return null==this.dtype||\"float32\"===this.dtype?t:Math.round(t)},t.prototype.isValidTruncated=function(t){return t<=this.upper&&t>=this.lower},t}(),hr=function(){function t(t,e,n,r){this.alpha=t,this.beta=1/e,this.dtype=n;var o=r||Math.random();this.randu=cr(o.toString()),this.randn=new lr(0,1,n,!1,this.randu()),this.d=t<1?t+2/3:t-1/3,this.c=1/Math.sqrt(9*this.d)}return t.prototype.nextValue=function(){for(var t,e,n,r,o,a;;){do{r=this.randn.nextValue(),a=1+this.c*r}while(a<=0);if(a*=a*a,e=1-.331*(t=r*r)*t,n=.5*t+this.d*(1-a+Math.log(a)),(o=this.randu())<e||Math.log(o)<n)break}return a=1/this.beta*this.d*a,this.alpha<1&&(a*=Math.pow(this.randu(),1/this.alpha)),this.convertValue(a)},t.prototype.convertValue=function(t){return\"float32\"===this.dtype?t:Math.round(t)},t}(),fr=function(){function t(t,e,n,r){var o=this;if(void 0===t&&(t=0),void 0===e&&(e=1),this.canReturnFloat=function(){return null==o.dtype||\"float32\"===o.dtype},this.min=t,this.range=e-t,this.dtype=n,null==r&&(r=Math.random()),\"number\"==typeof r&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(\"The difference between \"+t+\" - \"+e+\" <= 1 and dtype is not float\");this.random=cr(r)}return t.prototype.convertValue=function(t){return this.canReturnFloat()?t:Math.round(t)},t.prototype.nextValue=function(){return this.convertValue(this.min+this.range*this.random())},t}();function dr(t,e,n){return void 0===e&&(e=\"float32\"),e=e||\"float32\",nt(t),new gt(t,e,n)}function pr(t,e){void 0===e&&(e=!1),console.log(t.toString(e))}var vr=An({batchToSpaceND_:function(t,e,n){var r=mn(t,\"x\",\"batchToSpaceND\"),o=e.reduce((function(t,e){return t*e}));return C(r.rank>=1+e.length,(function(){return\"input rank is \"+r.rank+\" but should be > than blockShape.length \"+e.length})),C(n.length===e.length,(function(){return\"crops.length is \"+n.length+\" but should be equal to blockShape.length  \"+e.length})),C(r.shape[0]%o==0,(function(){return\"input tensor batch is \"+r.shape[0]+\" but is not divisible by the product of the elements of blockShape \"+e.join(\" * \")+\" === \"+o})),Lt.runKernelFunc((function(t){return t.batchToSpaceND(r,e,n)}),{$x:r},(function(t){return{$x:function(){return t.spaceToBatchND(e,n)}}}))}}),mr=An({broadcastTo_:function(t,e){var n=mn(t,\"broadcastTo\",\"x\"),r=n.shape;if(e.some((function(t){return!(t>0)||t%1!=0})))throw new Error(\"broadcastTo(): Invalid broadcast shape [\"+e+\"].\");if(e.length<n.rank)throw new Error(\"broadcastTo(): shape.length=\"+e.length+\" < input.rank=\"+n.rank+\".\");if(e.length>n.rank){for(var o=n.shape.slice();o.length<e.length;)o.unshift(1);n=n.reshape(o)}for(var a=Array.from(e),i=e.length-1;i>=0;i--)if(n.shape[i]===e[i])a[i]=1;else if(1!==n.shape[i])throw new Error(\"broadcastTo(): [\"+r+\"] cannot be broadcast to [\"+e+\"].\");var s=a.map((function(t,e){return t>1?e:-1})).filter((function(t){return t>=0}));return 0===s.length?n.clone():Lt.runKernelFunc((function(t){return t.tile(n,a)}),{input:n},(function(t){return{input:function(){return t.sum(s,!0)}}}))}}),gr=An({cast_:function(t,e){var n=mn(t,\"x\",\"cast\");if(!W(e))throw new Error(\"Failed to cast to unknown dtype \"+e);if(\"string\"===e&&\"string\"!==n.dtype||\"string\"!==e&&\"string\"===n.dtype)throw new Error(\"Only strings can be casted to strings\");var r={dtype:e};return Lt.runKernelFunc((function(t){return t.cast(n,e)}),{x:n},(function(t){return{x:function(){return t.clone()}}}),\"Cast\",r)}}),yr=An({clone_:function(t){var e=mn(t,\"x\",\"clone\",null);return Lt.runKernelFunc((function(){return Lt.makeTensorFromDataId(e.dataId,e.shape,e.dtype)}),{$x:e},(function(t){return{$x:function(){return t.toFloat()}}}))}}),xr=An({cumsum_:function(t,e,n,r){void 0===e&&(e=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var o=mn(t,\"x\",\"cumsum\"),a=En([e|=0],o.rank),i=o;null!=a&&(i=o.transpose(a));var s=In(1,o.rank)[0],u=Lt.runKernelFunc((function(t){return t.cumsum(i,s,n,r)}),{permutedX:i},(function(t){return{permutedX:function(){return t.cumsum(e,n,!r)}}}));return null!=a&&(u=u.transpose(a)),u}}),br=An({depthToSpace_:function(t,e,n){void 0===n&&(n=\"NHWC\");var r=mn(t,\"x\",\"depthToSpace\"),o=\"NHWC\"===n?r.shape[1]:r.shape[2],a=\"NHWC\"===n?r.shape[2]:r.shape[3],i=\"NHWC\"===n?r.shape[3]:r.shape[1];return C(o*e>=0,(function(){return\"Negative dimension size caused by overflow when multiplying\\n      \"+o+\" and \"+e+\"  for depthToSpace with input shape\\n      \"+r.shape})),C(a*e>=0,(function(){return\"Negative dimension size caused by overflow when multiplying\\n      \"+a+\" and \"+e+\" for depthToSpace with input shape\\n          \"+r.shape})),C(i%(e*e)==0,(function(){return\"Dimension size must be evenly divisible by \"+e*e+\" but is \"+i+\" for depthToSpace with input shape \"+r.shape})),Lt.runKernelFunc((function(t){return t.depthToSpace(r,e,n)}),{$x:r})}}),wr=An({expandDims_:function(t,e){void 0===e&&(e=0);var n=mn(t,\"x\",\"expandDims\",null);C(e<=n.rank,(function(){return\"Axis must be <= rank of the tensor\"}));var r=n.shape.slice();return e<0&&(C(-(n.rank+1)<=e,(function(){return\"Axis must be in the interval [\"+-(n.rank+1)+\", \"+n.rank+\"]\"})),e=n.rank+e+1),r.splice(e,0,1),Or(n,r)}}),Cr=An({eye_:function(t,e,n,r){void 0===r&&(r=\"float32\"),null==e&&(e=t);for(var o=dr([t,e],r),a=t<=e?t:e,i=0;i<a;++i)o.set(1,i,i);var s=o.toTensor().as2D(t,e);if(null==n)return s;if(1===n.length)return Lr(wr(s,0),[n[0],1,1]);if(2===n.length)return Lr(wr(wr(s,0),0),[n[0],n[1],1,1]);if(3===n.length)return Lr(wr(wr(wr(s,0),0),0),[n[0],n[1],n[2],1,1]);throw new Error(\"eye() currently supports only 1D and 2D batchShapes, but received \"+n.length+\"D.\")}}),Er=An({multinomial_:function(t,e,n,r){void 0===r&&(r=!1);var o=mn(t,\"logits\",\"multinomial\"),a=o.size,i=o.rank;if(a<2)throw new Error(\"Error in multinomial: you need at least 2 outcomes, but got \"+a+\".\");if(i>2)throw new Error(\"Rank of probabilities must be 1 or 2, but is \"+i);n=n||Math.random();var s=1===i?o.as2D(1,-1):o,u=Lt.runKernelFunc((function(t){return t.multinomial(s,r,e,n)}),{logits2D:s});return 1===i?u.as1D():u}}),Rr=An({oneHot_:function(t,e,n,r){if(void 0===n&&(n=1),void 0===r&&(r=0),e<2)throw new Error(\"Error in oneHot: depth must be >=2, but it is \"+e);var o=mn(t,\"indices\",\"oneHot\",\"int32\"),a=o.shape.concat([e]);return o=o.flatten(),Lt.runKernelFunc((function(t){return t.oneHot(o,e,n,r)}),{$indices:o},(function(t){return{$indices:function(){return Gn(o.shape,\"float32\")}}})).reshape(a)}}),Ir=An({pad_:function(t,e,n){void 0===n&&(n=0);var r=mn(t,\"x\",\"pad\");if(0===r.rank)throw new Error(\"pad(scalar) is not defined. Pass non-scalar to pad\");var o={paddings:e,constantValue:n};return Lt.runKernelFunc((function(t){return t.pad(r,e,n)}),{x:r},(function(t){var n=e.map((function(t){return t[0]}));return{x:function(){return t.slice(n,r.shape)}}}),\"PadV2\",o)}}),kr=An({pad1d_:function(t,e,n){return void 0===n&&(n=0),C(2===e.length,(function(){return\"Invalid number of paddings. Must be length of 2.\"})),Ir(t,[e],n)}}),Sr=An({pad2d_:function(t,e,n){return void 0===n&&(n=0),C(2===e.length&&2===e[0].length&&2===e[1].length,(function(){return\"Invalid number of paddings. Must be length of 2 each.\"})),Ir(t,e,n)}}),Ar=An({pad3d_:function(t,e,n){return void 0===n&&(n=0),C(3===e.length&&2===e[0].length&&2===e[1].length&&2===e[2].length,(function(){return\"Invalid number of paddings. Must be length of 2 each.\"})),Ir(t,e,n)}}),Dr=An({pad4d_:function(t,e,n){return void 0===n&&(n=0),C(4===e.length&&2===e[0].length&&2===e[1].length&&2===e[2].length&&2===e[3].length,(function(){return\"Invalid number of paddings. Must be length of 2 each.\"})),Ir(t,e,n)}}),Tr=An({rand_:function(t,e,n){var r=k(t),o=null;if(null==n||\"float32\"===n)o=new Float32Array(r);else if(\"int32\"===n)o=new Int32Array(r);else{if(\"bool\"!==n)throw new Error(\"Unknown data type \"+n);o=new Uint8Array(r)}for(var a=0;a<r;a++)o[a]=e();return Lt.makeTensor(o,t,n)}}),Nr=An({randomNormal_:function(t,e,n,r,o){if(void 0===e&&(e=0),void 0===n&&(n=1),null!=r&&\"bool\"===r)throw new Error(\"Unsupported data type \"+r);for(var a=new lr(e,n,r,!1,o),i=dr(t,r),s=0;s<i.values.length;s++)i.values[s]=a.nextValue();return i.toTensor()}}),Fr=An({randomGamma_:function(t,e,n,r,o){if(void 0===n&&(n=1),void 0===r&&(r=\"float32\"),null==n&&(n=1),null==r&&(r=\"float32\"),\"float32\"!==r&&\"int32\"!==r)throw new Error(\"Unsupported data type \"+r);for(var a=new hr(e,n,r,o),i=dr(t,r),s=0;s<i.values.length;s++)i.values[s]=a.nextValue();return i.toTensor()}}),_r=An({randomUniform_:function(t,e,n,r,o){void 0===e&&(e=0),void 0===n&&(n=1),void 0===r&&(r=\"float32\");for(var a=dr(t,r),i=new fr(e,n,null,o),s=0;s<a.values.length;s++)a.values[s]=i.nextValue();return a.toTensor()}}),Or=An({reshape_:function(t,e){var n=mn(t,\"x\",\"reshape\",null);e=_(e,n.size),C(n.size===k(e),(function(){return\"new shape and old shape must have the same number of elements.\"}));var r={shape:e};return Lt.runKernelFunc((function(t){return t.reshape(n,e)}),{x:n},(function(t){return{x:function(){return t.reshape(n.shape)}}}),\"Reshape\",r)}}),Mr=An({spaceToBatchND_:function(t,e,n){var r=mn(t,\"x\",\"spaceToBatchND\");return C(r.rank>=1+e.length,(function(){return\"input rank \"+r.rank+\" should be > than [blockShape] \"+e.length})),C(n.length===e.length,(function(){return\"paddings.shape[0] \"+n.length+\" must be equal to [blockShape] \"+e.length})),C(r.shape.reduce((function(t,r,o){return o>0&&o<=e.length?t&&(r+n[o-1][0]+n[o-1][1])%e[o-1]==0:t}),!0),(function(){return\"input spatial dimensions \"+r.shape.slice(1)+\" with paddings \"+n.toString()+\" must be divisible by blockShapes \"+e.toString()})),Lt.runKernelFunc((function(t){return t.spaceToBatchND(r,e,n)}),{$x:r},(function(t){return{$x:function(){return t.batchToSpaceND(e,n)}}}))}}),Br=An({squeeze_:function(t,e){var n=mn(t,\"x\",\"squeeze\");return Or(n,M(n.shape,e).newShape)}}),Pr=An({stack_:function(t,e){void 0===e&&(e=0);var n=gn(t,\"tensors\",\"stack\");if(C(n.length>=1,(function(){return\"Pass at least one tensor to tf.stack\"})),1===n.length)return n[0].expandDims(e);var r=n[0].rank,o=n[0].shape,a=n[0].dtype;C(e<=r,(function(){return\"Axis must be <= rank of the tensor\"})),n.forEach((function(t){E(o,t.shape,\"All tensors passed to stack must have matching shapes\")})),n.forEach((function(t){C(a===t.dtype,(function(){return\"All tensors passed to stack must have matching dtypes\"}))}));var i=n.map((function(t){return t.expandDims(e)}));return Yn(i,e)}}),Lr=An({tile_:function(t,e){var n=mn(t,\"x\",\"tile\",null);C(n.rank===e.length,(function(){return\"Error in transpose: rank of input \"+n.rank+\" must match length of reps \"+e+\".\"}));var r=[n],o={reps:e};return Lt.runKernelFunc((function(t,r){var o=t.tile(n,e);return r([n]),o}),{x:n},(function(t,n){var r=n[0];return{x:function(){var n=Xn(r);if(1===r.rank)for(var o=0;o<e[0];++o)n=n.add(t.slice([o*r.shape[0]],[r.shape[0]]));else if(2===r.rank)for(o=0;o<e[0];++o)for(var a=0;a<e[1];++a)n=n.add(t.slice([o*r.shape[0],a*r.shape[1]],[r.shape[0],r.shape[1]]));else if(3===r.rank)for(o=0;o<e[0];++o)for(a=0;a<e[1];++a)for(var i=0;i<e[2];++i)n=n.add(t.slice([o*r.shape[0],a*r.shape[1],i*r.shape[2]],[r.shape[0],r.shape[1],r.shape[2]]));else{if(4!==r.rank)throw new Error(\"Gradient for tile operation is not implemented for rank-\"+r.rank+\" tensors yet.\");for(o=0;o<e[0];++o)for(a=0;a<e[1];++a)for(i=0;i<e[2];++i)for(var s=0;s<e[3];++s)n=n.add(t.slice([o*r.shape[0],a*r.shape[1],i*r.shape[2],s*r.shape[3]],[r.shape[0],r.shape[1],r.shape[2],r.shape[3]]))}return n}}}),\"Tile\",o,r)}}),Wr=An({truncatedNormal_:function(t,e,n,r,o){if(void 0===e&&(e=0),void 0===n&&(n=1),null!=r&&\"bool\"===r)throw new Error(\"Unsupported data type \"+r);for(var a=new lr(e,n,r,!0,o),i=dr(t,r),s=0;s<i.values.length;s++)i.values[s]=a.nextValue();return i.toTensor()}}),Ur=An({unstack_:function(t,e){void 0===e&&(e=0),e=e||0;var n=mn(t,\"x\",\"unstack\");C(e>=-n.shape.length&&e<n.shape.length,(function(){return\"Axis = \"+e+\" is not in [-\"+n.shape.length+\", \"+n.shape.length+\")\"})),e<0&&(e+=n.shape.length);var r={axis:e};return Lt.runKernelFunc((function(t){return t.unstack(n,e)}),{x:n},(function(t){return{x:function(){return Pr(t,e)}}}),\"Unpack\",r)}}),Vr=function(t,e){return n(this,void 0,void 0,(function(){var n,o,a,i,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:return n=mn(t,\"x\",\"setdiff1d\"),o=mn(e,\"y\",\"setdiff1d\"),C(n.dtype===o.dtype,(function(){return\"x and y should have the same dtype, but got x (\"+n.dtype+\") and y (\"+o.dtype+\").\"})),C(1===n.rank,(function(){return\"x should be 1D tensor, but got x (\"+n.shape+\").\"})),C(1===o.rank,(function(){return\"y should be 1D tensor, but got y (\"+o.shape+\").\"})),[4,n.data()];case 1:return a=r.sent(),[4,o.data()];case 2:for(i=r.sent(),s=new Set(i),u=0,h=0;h<a.length;h++)s.has(a[h])||u++;for(c=new gt([u],n.dtype),l=new gt([u],\"int32\"),h=0,f=0;h<a.length;h++)s.has(a[h])||(c.values[f]=a[h],l.values[f]=h,f++);return[2,[c.toTensor(),l.toTensor()]]}}))}))};function zr(t,e,n,r){void 0===r&&(r=!0);var o=[];if(r)(o=o.concat(e.slice(0))).push(t[0]/n),o=o.concat(t.slice(1));else{o=o.concat(t[0]);for(var a=e.length,i=0;i<a;++i)o=o.concat([t[i+1]/e[i],e[i]]);o=o.concat(t.slice(a+1))}return o}function Gr(t,e,n){void 0===n&&(n=!0);var r=[];if(n){r.push(e);for(var o=e+1;o<t;++o)o<=2*e?(r.push(o),r.push(o-(e+1))):r.push(o)}else{var a=[],i=[];for(o=1;o<t;++o)o>=2*e+1||o%2==1?i.push(o):a.push(o);r.push.apply(r,a),r.push(0),r.push.apply(r,i)}return r}function Hr(t,e,n,r){void 0===r&&(r=!0);var o=[];r?o.push(t[0]/n):o.push(t[0]*n);for(var a=1;a<t.length;++a)a<=e.length?r?o.push(e[a-1]*t[a]):o.push(t[a]/e[a-1]):o.push(t[a]);return o}function qr(t,e){for(var n=[0],r=0;r<e;++r)n.push(t[r][0]);return n}function Kr(t,e,n){for(var r=t.slice(0,1),o=0;o<n;++o)r.push(t[o+1]-e[o][0]-e[o][1]);return r}function jr(t,e){if(t.rank<1)throw new Error(\"tf.gatherND() expects the input to be rank 1 or higher, but the rank was \"+t.rank+\".\");if(e.rank<1)throw new Error(\"tf.gatherND() expects the indices to be rank 1 or higher, but the rank was \"+e.rank+\".\");if(\"int32\"!==e.dtype)throw new Error(\"tf.gatherND() expects the indices to be int32 type, but the dtype was \"+e.dtype+\".\");if(e.shape[e.rank-1]>t.rank)throw new Error(\"index innermost dimension length must be <= tensor rank; saw: \"+e.shape[e.rank-1]+\" vs. \"+t.rank);if(0===t.size)throw new Error(\"Requested more than 0 entries, but input is empty. Input shape: \"+t.shape+\".\");for(var n=e.shape,r=n[n.length-1],o=1,a=0;a<n.length-1;++a)o*=n[a];var i=t.shape,s=n.slice();s.pop();var u=1;for(a=r;a<t.rank;++a)u*=i[a],s.push(i[a]);var c=$(t.shape).map((function(t){return t/u})).concat([1]).slice(0,r);return[s,o,u,c]}var Xr=Object.freeze({prepareAndValidate:jr}),Yr=30;function $r(t){return t<=Yr?t:Y(t,Math.floor(Math.sqrt(t)))}function Qr(t,e,n){var r=e.rank>1?e.shape[e.rank-1]:1,o=e.rank>1?e.rank-1:1,a=\"Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: \"+n.shape+\", indices.shape: \"+e.shape+\", shape: \"+t+\", sliceDim: \"+r+\", and batchDim: \"+o+\".\";if(n.rank<o)throw new Error(a+\" update.rank < \"+o+\". \");if(t.length<r+(n.rank-o))throw new Error(a+\" Output shape length < \"+(r+(n.rank-o)));if(n.rank!==o+t.length-r)throw new Error(a+\" update.rank != \"+(o+t.length-r));for(var i=0;i<o;++i)if(n.shape[i]!==e.shape[i])throw new Error(a+\" updates.shape[\"+i+\"] (\"+n.shape[i]+\") != indices.shape[\"+i+\"] (\"+e.shape[i]+\").\");for(i=0;i<n.rank-o;++i)if(n.shape[i+o]!==t[i+r])throw new Error(a+\" updates.shape[\"+(i+o)+\"] (\"+n.shape[i+o]+\") != shape[\"+(i+o)+\"] (\"+t[i+o]+\")\")}function Jr(t,e,n){if(e.rank<1)throw new Error(\"tf.scatterND() expects the indices to be rank 1 or higher, but the rank was \"+e.rank+\".\");if(t.rank<1)throw new Error(\"tf.scatterND() expects the updates to be rank 1 or higher, but the rank was \"+t.rank+\".\");if(\"int32\"!==e.dtype)throw new Error(\"The dtype of 'indices' should be int32, but got dtype: \"+e.dtype);if(n.length<1)throw new Error(\"Output rank must be greater or equal to 1, but got shape: \"+n);if(0===n.length){if(0===e.size)throw new Error(\"Indices specified for empty output. indices shape: \"+e.shape);if(0===t.size)throw new Error(\"Updates specified for empty output. updates shape: \"+t.shape)}Qr(n,e,t)}function Zr(t,e,n){for(var r=e.shape.length,o=r>1?e.shape[r-1]:1,a=n.length,i=1,s=o;s<a;++s)i*=n[s];var u=o<1?1:o;return{sliceRank:o,numUpdates:k(e.shape)/u,sliceSize:i,strides:$(n.slice(0,o)).concat([1]),outputSize:k(n)}}var to=Object.freeze({validateUpdateShape:Qr,validateInput:Jr,calculateShapes:Zr});function eo(t,e,n){C(t.rank===e.length,(function(){return\"Error in slice\"+t.rank+\"D: Length of begin \"+e+\" must match the rank of the array (\"+t.rank+\").\"})),C(t.rank===n.length,(function(){return\"Error in slice\"+t.rank+\"D: Length of size \"+n+\" must match the rank of the array (\"+t.rank+\").\"}));for(var r=function(r){C(e[r]+n[r]<=t.shape[r],(function(){return\"Error in slice\"+t.rank+\"D: begin[\"+r+\"] + size[\"+r+\"] (\"+(e[r]+n[r])+\") would overflow input.shape[\"+r+\"] (\"+t.shape[r]+\")\"}))},o=0;o<t.rank;++o)r(o)}function no(t){for(var e=[],n=0;t>0;)1&t&&e.push(n),t/=2,n++;return e}function ro(t,e,n){for(var r=[],o=0;o<t.length;o++)r[o]=Math.ceil((e[o]-t[o])/n[o]);return r}function oo(t,e,n,r,o){var a=e[o],i=n[o]||1;(t&1<<o||null==a)&&(a=i>0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var s=r[o];return a<0&&(a+=s),a=x(0,a,s-1)}function ao(t,e,n,r,o){var a=e[o],i=n[o]||1;(t&1<<o||null==a)&&(a=i>0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var s=r[o];return a<0&&(a+=s),a=i>0?x(0,a,s):x(-1,a,s-1)}function io(t,e,n){for(var r=n.length,o=0;o<n.length;o++)if(n[o]>1){r=o;break}for(o=r+1;o<n.length;o++)if(e[o]>0||n[o]!==t[o])return!1;return!0}function so(t,e){for(var n=t.length>0?t[t.length-1]:1,r=0;r<t.length-1;r++)n+=t[r]*e[r];return n}var uo=Object.freeze({assertParamsValid:eo,maskToAxes:no,computeOutShape:ro,startForAxis:oo,stopForAxis:ao,isSliceContinous:io,computeFlatOffset:so});function co(t){return C(X(t),(function(){return\"The f passed in grad(f) must be a function\"})),function(e,n){var r=mn(e,\"x\",\"tf.grad\",null),o=null!=n?mn(n,\"dy\",\"tf.grad\"):null;return Lt.tidy((function(){var e=Lt.gradients((function(){return t(r)}),[r],o),n=e.value,a=e.grads;return null!=o&&E(n.shape,o.shape,\"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)\"),mo(a),a[0]}))}}function lo(t){return C(X(t),(function(){return\"The f passed in grads(f) must be a function\"})),function(e,n){C(Array.isArray(e),(function(){return\"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s\"}));var r=gn(e,\"args\",\"tf.grads\",null),o=null!=n?mn(n,\"dy\",\"tf.grads\"):null;return Lt.tidy((function(){var e=Lt.gradients((function(){return t.apply(void 0,r)}),r,o),n=e.value,a=e.grads;return null!=o&&E(n.shape,o.shape,\"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])\"),mo(a),a}))}}function ho(t){return C(X(t),(function(){return\"The f passed in valueAndGrad(f) must be a function\"})),function(e,n){C(e instanceof wt,(function(){return\"The x passed in valueAndGrad(f)(x) must be a tensor\"})),C(null==n||n instanceof wt,(function(){return\"The dy passed in valueAndGrad(f)(x, dy) must be a tensor\"}));var r=Lt.gradients((function(){return t(e)}),[e],n),o=r.grads,a=r.value;return mo(o),{grad:o[0],value:a}}}function fo(t){return C(X(t),(function(){return\"The f passed in valueAndGrads(f) must be a function\"})),function(e,n){C(Array.isArray(e)&&e.every((function(t){return t instanceof wt})),(function(){return\"The args passed in valueAndGrads(f)(args) must be array of tensors\"})),C(null==n||n instanceof wt,(function(){return\"The dy passed in valueAndGrads(f)(args, dy) must be a tensor\"}));var r=Lt.gradients((function(){return t.apply(void 0,e)}),e,n);return null!=n&&E(r.value.shape,n.shape,\"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])\"),mo(r.grads),r}}function po(t,e){C(X(t),(function(){return\"The f passed in variableGrads(f) must be a function\"})),C(null==e||Array.isArray(e)&&e.every((function(t){return t instanceof St})),(function(){return\"The varList passed in variableGrads(f, varList) must be an array of variables\"}));var n=null!=e;if(!n)for(var r in e=[],Lt.registeredVariables)e.push(Lt.registeredVariables[r]);var o=n?e.filter((function(t){return!t.trainable})):null,a=e.length;C((e=e.filter((function(t){return t.trainable}))).length>0,(function(){return\"variableGrads() expects at least one of the input variables to be trainable, but none of the \"+a+\" variables is trainable.\"}));var i=Lt.gradients(t,e,null,!0),s=i.value,u=i.grads;C(u.some((function(t){return null!=t})),(function(){return\"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize().\"})),C(0===s.rank,(function(){return\"The f passed in variableGrads(f) must return a scalar, but it returned a rank-\"+s.rank+\" tensor\"}));var c={};return e.forEach((function(t,e){null!=u[e]&&(c[t.name]=u[e])})),null!=o&&o.forEach((function(t){return c[t.name]=null})),{value:s,grads:c}}function vo(t){return Lt.customGrad(t)}function mo(t){if(t.filter((function(t){return null==t})).length>0)throw new Error(\"Cannot compute gradient of y=f(x) with respect to x. Make sure that\\n    the f you passed encloses all operations that lead from x to y.\")}var go=An({softmax_:function(t,e){void 0===e&&(e=-1);var n=mn(t,\"logits\",\"softmax\",\"float32\");if(-1===e&&(e=n.rank-1),e!==n.rank-1)throw Error(\"Softmax along a non-last dimension is not yet supported. Logits was rank \"+n.rank+\" and dim was \"+e);return Lt.runKernelFunc((function(t,r){var o=t.softmax(n,e);return r([o]),o}),{logits:n},(function(t,n){var r=n[0],o=t.mul(r);return{logits:function(){return o.sub(o.sum([e],!0).mul(r))}}}),\"Softmax\",{dim:e},[],[!0])}}),yo=An({logSoftmax_:function(t,e){void 0===e&&(e=-1);var n=mn(t,\"logits\",\"logSoftmax\");if(-1===e&&(e=n.rank-1),e!==n.rank-1)throw Error(\"Log Softmax along a non-last dimension is not yet supported. Logits was rank \"+n.rank+\" and axis was \"+e);return vo((function(t,n){var r=t.max(e,!0),o=t.sub(r),a=o.toFloat().sub(o.exp().sum(e,!0).log());n([a]);return{value:a,gradFunc:function(t,n){var r=n[0].exp();return t.sub(t.sum(e,!0).mul(r))}}}))(n)}}),xo=function(){function t(t,e){this.backend=t,this.dataMover=e,this.data=new WeakMap,this.dataIdsCount=0}return t.prototype.get=function(t){return this.data.has(t)||this.dataMover.moveData(this.backend,t),this.data.get(t)},t.prototype.set=function(t,e){this.dataIdsCount++,this.data.set(t,e)},t.prototype.has=function(t){return this.data.has(t)},t.prototype.delete=function(t){return this.dataIdsCount--,this.data.delete(t)},t.prototype.numDataIds=function(){return this.dataIdsCount},t}(),bo=function(){function t(){}return t.prototype.time=function(t){return wo(\"time\")},t.prototype.read=function(t){return wo(\"read\")},t.prototype.readSync=function(t){return wo(\"readSync\")},t.prototype.numDataIds=function(){return wo(\"numDataIds\")},t.prototype.disposeData=function(t){return wo(\"disposeData\")},t.prototype.write=function(t,e,n){return wo(\"write\")},t.prototype.move=function(t,e,n,r){return wo(\"move\")},t.prototype.memory=function(){return wo(\"memory\")},t.prototype.floatPrecision=function(){return wo(\"floatPrecision\")},t.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},t.prototype.batchMatMul=function(t,e,n,r){return wo(\"batchMatMul\")},t.prototype.fusedBatchMatMul=function(t){t.a,t.b,t.transposeA,t.transposeB,t.bias,t.activation,t.preluActivationWeights;return wo(\"fusedBatchMatMul\")},t.prototype.slice=function(t,e,n){return wo(\"slice\")},t.prototype.stridedSlice=function(t,e,n,r){return wo(\"stridedSlice\")},t.prototype.unstack=function(t,e){return wo(\"unstack\")},t.prototype.reverse=function(t,e){return wo(\"reverse\")},t.prototype.concat=function(t,e){return wo(\"concat\")},t.prototype.neg=function(t){return wo(\"neg\")},t.prototype.add=function(t,e){return wo(\"add\")},t.prototype.addN=function(t){return wo(\"addN\")},t.prototype.subtract=function(t,e){return wo(\"subtract\")},t.prototype.multiply=function(t,e){return wo(\"multiply\")},t.prototype.realDivide=function(t,e){return wo(\"realDivide\")},t.prototype.floorDiv=function(t,e){return wo(\"floorDiv\")},t.prototype.sum=function(t,e){return wo(\"sum\")},t.prototype.prod=function(t,e){return wo(\"prod\")},t.prototype.unsortedSegmentSum=function(t,e,n){return wo(\"unsortedSegmentSum\")},t.prototype.argMin=function(t,e){return wo(\"argMin\")},t.prototype.argMax=function(t,e){return wo(\"argMax\")},t.prototype.equal=function(t,e){return wo(\"equal\")},t.prototype.notEqual=function(t,e){return wo(\"notEqual\")},t.prototype.less=function(t,e){return wo(\"less\")},t.prototype.lessEqual=function(t,e){return wo(\"lessEqual\")},t.prototype.greater=function(t,e){return wo(\"greater\")},t.prototype.greaterEqual=function(t,e){return wo(\"greaterEqual\")},t.prototype.logicalNot=function(t){return wo(\"logicalNot\")},t.prototype.logicalAnd=function(t,e){return wo(\"logicalAnd\")},t.prototype.logicalOr=function(t,e){return wo(\"logicalOr\")},t.prototype.where=function(t){return wo(\"where\")},t.prototype.select=function(t,e,n){return wo(\"select\")},t.prototype.topk=function(t,e,n){return wo(\"topk\")},t.prototype.min=function(t,e){return wo(\"min\")},t.prototype.minimum=function(t,e){return wo(\"minimum\")},t.prototype.mod=function(t,e){return wo(\"mod\")},t.prototype.max=function(t,e){return wo(\"max\")},t.prototype.maximum=function(t,e){return wo(\"maximum\")},t.prototype.all=function(t,e){return wo(\"all\")},t.prototype.any=function(t,e){return wo(\"any\")},t.prototype.squaredDifference=function(t,e){return wo(\"squaredDifference\")},t.prototype.ceil=function(t){return wo(\"ceil\")},t.prototype.floor=function(t){return wo(\"floor\")},t.prototype.round=function(t){return wo(\"round\")},t.prototype.sign=function(t){return wo(\"sign\")},t.prototype.isNaN=function(t){return wo(\"isNaN\")},t.prototype.isInf=function(t){return wo(\"isInf\")},t.prototype.isFinite=function(t){return wo(\"isFinite\")},t.prototype.pow=function(t,e){return wo(\"pow\")},t.prototype.exp=function(t){return wo(\"exp\")},t.prototype.expm1=function(t){return wo(\"expm1\")},t.prototype.softmax=function(t,e){return wo(\"softmax\")},t.prototype.log=function(t){return wo(\"log\")},t.prototype.log1p=function(t){return wo(\"log1p\")},t.prototype.sqrt=function(t){return wo(\"sqrt\")},t.prototype.rsqrt=function(t){return wo(\"rsqrt\")},t.prototype.square=function(t){return wo(\"square\")},t.prototype.reciprocal=function(t){return wo(\"reciprocal\")},t.prototype.relu=function(t){return wo(\"relu\")},t.prototype.relu6=function(t){return wo(\"relu6\")},t.prototype.prelu=function(t,e){return wo(\"prelu\")},t.prototype.elu=function(t){return wo(\"elu\")},t.prototype.eluDer=function(t,e){return wo(\"eluDer\")},t.prototype.selu=function(t){return wo(\"selu\")},t.prototype.int=function(t){return wo(\"int\")},t.prototype.clip=function(t,e,n){return wo(\"clip\")},t.prototype.abs=function(t){return wo(\"abs\")},t.prototype.complexAbs=function(t){return wo(\"complexAbs\")},t.prototype.sigmoid=function(t){return wo(\"sigmoid\")},t.prototype.softplus=function(t){return wo(\"softplus\")},t.prototype.sin=function(t){return wo(\"sin\")},t.prototype.cos=function(t){return wo(\"cos\")},t.prototype.tan=function(t){return wo(\"tan\")},t.prototype.asin=function(t){return wo(\"asin\")},t.prototype.acos=function(t){return wo(\"acos\")},t.prototype.atan=function(t){return wo(\"atan\")},t.prototype.atan2=function(t,e){return wo(\"atan2\")},t.prototype.sinh=function(t){return wo(\"sinh\")},t.prototype.cosh=function(t){return wo(\"cosh\")},t.prototype.tanh=function(t){return wo(\"tanh\")},t.prototype.asinh=function(t){return wo(\"asinh\")},t.prototype.acosh=function(t){return wo(\"acosh\")},t.prototype.atanh=function(t){return wo(\"atanh\")},t.prototype.erf=function(t){return wo(\"erf\")},t.prototype.step=function(t,e){return wo(\"step\")},t.prototype.fusedConv2d=function(t){t.input,t.filter,t.convInfo,t.bias,t.activation,t.preluActivationWeights;return wo(\"fusedConv2d\")},t.prototype.conv2d=function(t,e,n){return wo(\"conv2d\")},t.prototype.conv2dDerInput=function(t,e,n){return wo(\"conv2dDerInput\")},t.prototype.conv2dDerFilter=function(t,e,n){return wo(\"conv2dDerFilter\")},t.prototype.fusedDepthwiseConv2D=function(t){t.input,t.filter,t.convInfo,t.bias,t.activation,t.preluActivationWeights;return wo(\"fusedDepthwiseConv2D\")},t.prototype.depthwiseConv2D=function(t,e,n){return wo(\"depthwiseConv2D\")},t.prototype.depthwiseConv2DDerInput=function(t,e,n){return wo(\"depthwiseConv2DDerInput\")},t.prototype.depthwiseConv2DDerFilter=function(t,e,n){return wo(\"depthwiseConv2DDerFilter\")},t.prototype.conv3d=function(t,e,n){return wo(\"conv3d\")},t.prototype.conv3dDerInput=function(t,e,n){return wo(\"conv3dDerInput\")},t.prototype.conv3dDerFilter=function(t,e,n){return wo(\"conv3dDerFilter\")},t.prototype.maxPool=function(t,e){return wo(\"maxPool\")},t.prototype.maxPoolBackprop=function(t,e,n,r){return wo(\"maxPoolBackprop\")},t.prototype.avgPool=function(t,e){return wo(\"avgPool\")},t.prototype.avgPoolBackprop=function(t,e,n){return wo(\"avgPoolBackprop\")},t.prototype.avgPool3d=function(t,e){return wo(\"avgPool3d\")},t.prototype.avgPool3dBackprop=function(t,e,n){return wo(\"avgPool3dBackprop\")},t.prototype.maxPool3d=function(t,e){return wo(\"maxPool3d\")},t.prototype.maxPool3dBackprop=function(t,e,n,r){return wo(\"maxPool3dBackprop\")},t.prototype.reshape=function(t,e){return wo(\"reshape\")},t.prototype.cast=function(t,e){return wo(\"cast\")},t.prototype.tile=function(t,e){return wo(\"tile\")},t.prototype.pad=function(t,e,n){return wo(\"pad\")},t.prototype.transpose=function(t,e){return wo(\"transpose\")},t.prototype.gather=function(t,e,n){return wo(\"gather\")},t.prototype.gatherND=function(t,e){return wo(\"gatherND\")},t.prototype.scatterND=function(t,e,n){return wo(\"scatterND\")},t.prototype.batchToSpaceND=function(t,e,n){return wo(\"batchToSpaceND\")},t.prototype.spaceToBatchND=function(t,e,n){return wo(\"spaceToBatchND\")},t.prototype.resizeBilinear=function(t,e,n,r){return wo(\"resizeBilinear\")},t.prototype.resizeBilinearBackprop=function(t,e,n){return wo(\"resizeBilinearBackprop\")},t.prototype.resizeNearestNeighbor=function(t,e,n,r){return wo(\"resizeNearestNeighbor\")},t.prototype.resizeNearestNeighborBackprop=function(t,e,n){return wo(\"resizeNearestNeighborBackprop\")},t.prototype.batchNormalization=function(t,e,n,r,o,a){return wo(\"batchNormalization\")},t.prototype.localResponseNormalization4D=function(t,e,n,r,o){return wo(\"localResponseNormalization4D\")},t.prototype.LRNGrad=function(t,e,n,r,o,a,i){return wo(\"LRNGrad\")},t.prototype.multinomial=function(t,e,n,r){return wo(\"multinomial\")},t.prototype.oneHot=function(t,e,n,r){return wo(\"oneHot\")},t.prototype.cumsum=function(t,e,n,r){return wo(\"cumsum\")},t.prototype.nonMaxSuppression=function(t,e,n,r,o){return wo(\"nonMaxSuppression\")},t.prototype.fft=function(t){return wo(\"fft\")},t.prototype.ifft=function(t){return wo(\"ifft\")},t.prototype.complex=function(t,e){return wo(\"complex\")},t.prototype.real=function(t){return wo(\"real\")},t.prototype.imag=function(t){return wo(\"imag\")},t.prototype.cropAndResize=function(t,e,n,r,o,a){return wo(\"cropAndResize\")},t.prototype.depthToSpace=function(t,e,n){return wo(\"depthToSpace\")},t.prototype.split=function(t,e,n){return wo(\"split\")},t.prototype.sparseToDense=function(t,e,n,r){return wo(\"sparseToDense\")},t.prototype.diag=function(t){return wo(\"diag\")},t.prototype.fill=function(t,e,n){return wo(\"fill\")},t.prototype.onesLike=function(t){return wo(\"onesLike\")},t.prototype.zerosLike=function(t){return wo(\"zerosLike\")},t.prototype.linspace=function(t,e,n){return wo(\"linspace\")},t.prototype.dispose=function(){return wo(\"dispose\")},t}();function wo(t){throw new Error(\"'\"+t+\"' not yet implemented or not found in the registry. Did you forget to import the kernel?\")}function Co(t,e){for(var n=t.length,r=[],o=0;o<n;o++){var a=n-1-o,i=t[a]||1;(e[e.length-1-o]||1)>1&&1===i&&r.unshift(a)}return r}function Eo(t,e){for(var n=[],r=0;r<e.length;r++){var o=t[t.length-r-1],a=e.length-r-1,i=e[a];(null==o||1===o&&i>1)&&n.unshift(a)}return n}function Ro(t,e){for(var n=[],r=Math.max(t.length,e.length),o=0;o<r;o++){var a=t[t.length-o-1];null==a&&(a=1);var i=e[e.length-o-1];if(null==i&&(i=1),1===a)n.unshift(i);else if(1===i)n.unshift(a);else{if(a!==i)throw Error(\"Operands could not be broadcast together with shapes \"+t+\" and \"+e+\".\");n.unshift(a)}}return n}function Io(t,e,n,r,o,a,i){void 0===i&&(i=\"channelsLast\");var s,u=To(e),c=u[0],l=u[1];if(\"channelsLast\"===i)s=[c,l,t[3],t[3]];else{if(\"channelsFirst\"!==i)throw new Error(\"Unknown dataFormat \"+i);s=[c,l,t[1],t[1]]}return So(t,s,n,r,o,a,!1,i)}function ko(t,e,n,r,o,a,i){void 0===i&&(i=\"NDHWC\");var s,u,c=No(e),l=c[0],h=c[1],f=c[2];if(\"NDHWC\"===i)u=\"channelsLast\",s=[l,h,f,t[4],t[4]];else{if(\"NCDHW\"!==i)throw new Error(\"Unknown dataFormat \"+i);u=\"channelsFirst\",s=[l,h,f,t[1],t[1]]}return Ao(t,s,n,r,o,!1,u,a)}function So(t,e,n,r,o,a,i,s){void 0===i&&(i=!1),void 0===s&&(s=\"channelsLast\");var u=[-1,-1,-1,-1],c=u[0],l=u[1],h=u[2],f=u[3];if(\"channelsLast\"===s)c=t[0],l=t[1],h=t[2],f=t[3];else{if(\"channelsFirst\"!==s)throw new Error(\"Unknown dataFormat \"+s);c=t[0],f=t[1],l=t[2],h=t[3]}var d,p=e[0],v=e[1],m=e[3],g=To(n),y=g[0],x=g[1],b=To(r),w=b[0],E=b[1],R=Fo(p,w),I=Fo(v,E),k=function(t,e,n,r,o,a,i,s){var u,c,l;if(\"number\"==typeof t){u={top:t,bottom:t,left:t,right:t,type:0===t?\"VALID\":\"NUMBER\"};var h=function(t,e,n,r,o){null==r&&(r=Do(t,e,n));var a=t[0],i=t[1],s=_o((a-e+2*r)/n+1,o);C(A(s),(function(){return\"The output # of rows (\"+s+\") must be an integer. Change the stride and/or zero pad parameters\"}));var u=_o((i-e+2*r)/n+1,o);return C(A(u),(function(){return\"The output # of columns (\"+u+\") must be an integer. Change the stride and/or zero pad parameters\"})),[s,u]}([e,n],a,r,t,s);c=h[0],l=h[1]}else if(\"same\"===t){c=Math.ceil(e/r),l=Math.ceil(n/o);var f=Math.max(0,(c-1)*r+a-e),d=Math.max(0,(l-1)*o+i-n),p=Math.floor(f/2),v=f-p,m=Math.floor(d/2);u={top:p,bottom:v,left:m,right:d-m,type:\"SAME\"}}else{if(\"valid\"!==t)throw Error(\"Unknown padding parameter: \"+t);u={top:0,bottom:0,left:0,right:0,type:\"VALID\"},c=Math.ceil((e-a+1)/r),l=Math.ceil((n-i+1)/o)}return{padInfo:u,outHeight:c,outWidth:l}}(o,l,h,y,x,R,I,a),S=k.padInfo,D=k.outHeight,T=k.outWidth,N=i?m*f:m;return\"channelsFirst\"===s?d=[c,N,D,T]:\"channelsLast\"===s&&(d=[c,D,T,N]),{batchSize:c,dataFormat:s,inHeight:l,inWidth:h,inChannels:f,outHeight:D,outWidth:T,outChannels:N,padInfo:S,strideHeight:y,strideWidth:x,filterHeight:p,filterWidth:v,effectiveFilterHeight:R,effectiveFilterWidth:I,dilationHeight:w,dilationWidth:E,inShape:t,outShape:d,filterShape:e}}function Ao(t,e,n,r,o,a,i,s){void 0===a&&(a=!1),void 0===i&&(i=\"channelsLast\");var u=[-1,-1,-1,-1,-1],c=u[0],l=u[1],h=u[2],f=u[3],d=u[4];if(\"channelsLast\"===i)c=t[0],l=t[1],h=t[2],f=t[3],d=t[4];else{if(\"channelsFirst\"!==i)throw new Error(\"Unknown dataFormat \"+i);c=t[0],d=t[1],l=t[2],h=t[3],f=t[4]}var p,v=e[0],m=e[1],g=e[2],y=e[4],x=No(n),b=x[0],w=x[1],E=x[2],R=No(r),I=R[0],k=R[1],S=R[2],D=Fo(v,I),T=Fo(m,k),N=Fo(g,S),F=function(t,e,n,r,o,a,i,s,u,c,l){var h,f,d,p;if(\"number\"==typeof t){h={top:t,bottom:t,left:t,right:t,front:t,back:t,type:0===t?\"VALID\":\"NUMBER\"};var v=function(t,e,n,r,o,a){null==o&&(o=Do(t,e,r));var i=t[0],s=t[1],u=t[2],c=_o((i-e+2*o)/r+1,a);C(A(c),(function(){return\"The output # of depths (\"+c+\") must be an integer. Change the stride and/or zero pad parameters\"}));var l=_o((s-e+2*o)/r+1,a);C(A(l),(function(){return\"The output # of rows (\"+l+\") must be an integer. Change the stride and/or zero pad parameters\"}));var h=_o((u-e+2*o)/r+1,a);return C(A(h),(function(){return\"The output # of columns (\"+h+\") must be an integer. Change the stride and/or zero pad parameters\"})),[c,l,h,n]}([e,n,r,1],s,1,o,t,l);f=v[0],d=v[1],p=v[2]}else if(\"same\"===t){f=Math.ceil(e/o),d=Math.ceil(n/a),p=Math.ceil(r/i);var m=(f-1)*o+s-e,g=(d-1)*a+u-n,y=(p-1)*i+c-r,x=Math.floor(m/2),b=m-x,w=Math.floor(g/2),E=g-w,R=Math.floor(y/2);h={top:w,bottom:E,left:R,right:y-R,front:x,back:b,type:\"SAME\"}}else{if(\"valid\"!==t)throw Error(\"Unknown padding parameter: \"+t);h={top:0,bottom:0,left:0,right:0,front:0,back:0,type:\"VALID\"},f=Math.ceil((e-s+1)/o),d=Math.ceil((n-u+1)/a),p=Math.ceil((r-c+1)/i)}return{padInfo:h,outDepth:f,outHeight:d,outWidth:p}}(o,l,h,f,b,w,E,D,T,N,s),_=F.padInfo,O=F.outDepth,M=F.outHeight,B=F.outWidth,P=a?y*d:y;return\"channelsFirst\"===i?p=[c,P,O,M,B]:\"channelsLast\"===i&&(p=[c,O,M,B,P]),{batchSize:c,dataFormat:i,inDepth:l,inHeight:h,inWidth:f,inChannels:d,outDepth:O,outHeight:M,outWidth:B,outChannels:P,padInfo:_,strideDepth:b,strideHeight:w,strideWidth:E,filterDepth:v,filterHeight:m,filterWidth:g,effectiveFilterDepth:D,effectiveFilterHeight:T,effectiveFilterWidth:N,dilationDepth:I,dilationHeight:k,dilationWidth:S,inShape:t,outShape:p,filterShape:e}}function Do(t,e,n,r){void 0===r&&(r=1);var o=Fo(e,r);return Math.floor((t[0]*(n-1)-n+o)/2)}function To(t){return\"number\"==typeof t?[t,t,t]:2===t.length?[t[0],t[1],1]:t}function No(t){return\"number\"==typeof t?[t,t,t]:t}function Fo(t,e){return e<=1?t:t+(t-1)*(e-1)}function _o(t,e){if(!e)return t;switch(e){case\"round\":return Math.round(t);case\"ceil\":return Math.ceil(t);case\"floor\":return Math.floor(t);default:throw new Error(\"Unknown roundingMode \"+e)}}function Oo(t){var e=To(t),n=e[0],r=e[1],o=e[2];return 1===n&&1===r&&1===o}function Mo(t,e){return Oo(t)||Oo(e)}function Bo(t){if(\"NHWC\"===t)return\"channelsLast\";if(\"NCHW\"===t)return\"channelsFirst\";throw new Error(\"Unknown dataFormat \"+t)}function Po(t,e,n){if(\"complex64\"===e){if(\"complex64\"===t.dtype)return t.clone();var r=Gn(t.shape),o=t.toFloat(),a=n.complex(o,r);return r.dispose(),o.dispose(),a}if(!U(t.dtype,e))return Lt.makeTensorFromDataId(t.dataId,t.shape,e);if(\"complex64\"===t.dtype){var i=n.real(t);a=i.cast(e);return i.dispose(),a}if(\"int32\"===e)return n.int(t);if(\"bool\"===e){var s=On(0,t.dtype);a=n.notEqual(t,s);return s.dispose(),a}throw new Error(\"Error in Cast: failed to cast \"+t.dtype+\" to \"+e)}function Lo(t,e){return Lt.makeTensorFromDataId(t.dataId,e,t.dtype)}function Wo(t,e,n){var r=(e-t)/(n-1),o=tt(n,\"float32\");o[0]=t;for(var a=1;a<o.length;a++)o[a]=o[a-1]+r;return Mn(o,\"float32\")}var Uo=Object.freeze({castTensor:Po,reshapeTensor:Lo,linspaceImpl:Wo,upcastType:Dt,axesAreInnerMostDims:yn,combineLocations:xn,computeOutAndReduceShapes:bn,expandShapeToKeepDim:wn,assertAxesAreInnerMostDims:Cn,getAxesPermutation:En,getUndoAxesPermutation:Rn,getInnerMostAxes:In,getBroadcastDims:Co,getReductionAxes:Eo,assertAndGetBroadcastShape:Ro,assertParamsConsistent:kn,computeOutShape:Sn,computePool2DInfo:Io,computePool3DInfo:ko,computeConv2DInfo:So,computeConv3DInfo:Ao,computeDefaultPad:Do,tupleValuesAreOne:Oo,eitherStridesOrDilationsAreOne:Mo,convertConv2DDataFormat:Bo,PARALLELIZE_THRESHOLD:Yr,computeOptimalWindowSize:$r});function Vo(t,e){if(t.length!==e.length)throw new Error(\"Cannot merge real and imag arrays of different lengths. real:\"+t.length+\", imag: \"+e.length+\".\");for(var n=new Float32Array(2*t.length),r=0;r<n.length;r+=2)n[r]=t[r/2],n[r+1]=e[r/2];return n}function zo(t,e){return{real:t[2*e],imag:t[2*e+1]}}function Go(t,e,n,r){t[2*r]=e,t[2*r+1]=n}function Ho(t,e,n){var r=(n?2:-2)*Math.PI*(t/e);return{real:Math.cos(r),imag:Math.sin(r)}}function qo(t,e,n){var r=function(t,e,n){return function(t,e,n){var r=0,o=t.length,a=0,i=!1;for(;r<o;){var s=n(e,t[a=r+(o-r>>>1)]);s>0?r=a+1:(o=a,i=!s)}return i?r:-r-1}(t,e,n||Ko)}(t,e,n),o=r<0?-(r+1):r;t.splice(o,0,e)}function Ko(t,e){return t>e?1:t<e?-1:0}function jo(t,e,n,r,o){return Yo(t,e,n,r,o,0).selectedIndices}function Xo(t,e,n,r,o,a){var i=Yo(t,e,n,r,o,a,!0);return i.numValidOutputs.dispose(),{selectedIndices:i.selectedIndices,selectedScores:i.selectedScores}}function Yo(t,e,n,r,o,a,i,s){void 0===i&&(i=!1),void 0===s&&(s=!1);for(var u=Array.from(e).map((function(t,e){return{score:t,boxIndex:e,suppressBeginIndex:0}})).filter((function(t){return t.score>o})).sort(Jo),c=a>0?-.5/a:0,l=[],h=[];l.length<n&&u.length>0;){var f=u.pop(),d=f.score,p=f.boxIndex,v=f.suppressBeginIndex;if(d<o)break;for(var m=!1,g=l.length-1;g>=v;--g){var y=$o(t,p,l[g]);if(y>=r){m=!0;break}if(f.score=f.score*Qo(r,c,y),f.score<=o)break}f.suppressBeginIndex=l.length,m||(f.score===d?(l.push(p),h.push(f.score)):f.score>o&&qo(u,f,Jo))}var x=l.length;return s&&(l.fill(0,x),h.fill(0,x)),{selectedIndices:Mn(l,\"int32\"),selectedScores:Mn(h,\"float32\"),numValidOutputs:On(x,\"int32\")}}function $o(t,e,n){var r=t.subarray(4*e,4*e+4),o=t.subarray(4*n,4*n+4),a=Math.min(r[0],r[2]),i=Math.min(r[1],r[3]),s=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),c=Math.min(o[0],o[2]),l=Math.min(o[1],o[3]),h=Math.max(o[0],o[2]),f=Math.max(o[1],o[3]),d=(s-a)*(u-i),p=(h-c)*(f-l);if(d<=0||p<=0)return 0;var v=Math.max(a,c),m=Math.max(i,l),g=Math.min(s,h),y=Math.min(u,f),x=Math.max(g-v,0)*Math.max(y-m,0);return x/(d+p-x)}function Qo(t,e,n){var r=Math.exp(e*n*n);return n<=t?r:0}function Jo(t,e){return t.score-e.score||t.score===e.score&&e.boxIndex-t.boxIndex}function Zo(t,e,n){var r=new Array(t.rank).fill(0),o=t.shape.slice();return e.map((function(e){o[n]=e;var a=t.slice(r,o);return r[n]+=e,a}))}function ta(t,e){for(var n=new Array(t.rank),r=0;r<n.length;r++)n[r]=t.shape[r]*e[r];var o=dr(n,t.dtype);for(r=0;r<o.values.length;++r){for(var a=o.indexToLoc(r),i=new Array(t.rank),s=0;s<i.length;s++)i[s]=a[s]%t.shape[s];var u=t.locToIndex(i);o.values[r]=t.values[u]}return o.toTensor()}function ea(t,e,n,r,o){for(var a=e[e.length-1],i=[t.length/a,a],s=i[0],u=i[1],c=B(n,s*r),l=B(\"int32\",s*r),h=0;h<s;h++){for(var f=h*u,d=t.subarray(f,f+u),p=[],v=0;v<d.length;v++)p.push({value:d[v],index:v});p.sort((function(t,e){return e.value-t.value}));var m=h*r,g=c.subarray(m,m+r),y=l.subarray(m,m+r);for(v=0;v<r;v++)g[v]=p[v].value,y[v]=p[v].index}var x=e.slice();return x[x.length-1]=r,[Fn(c,x,n),Fn(l,x,\"int32\")]}function na(t,e){for(var n=[],r=0;r<e.length;r++)e[r]&&n.push(r);var o=dr(t,\"int32\"),a=dr([n.length,t.length],\"int32\");for(r=0;r<n.length;r++){var i=o.indexToLoc(n[r]),s=r*t.length;a.values.set(i,s)}return a.toTensor()}var ra=function(t,e){this.outputShape=[],this.outputShape=t,this.variableNames=e.map((function(t,e){return\"T\"+e}));var n=[];this.variableNames.forEach((function(t){n.push(\"float v\"+t+\" = get\"+t+\"AtOutCoords();\")}));var r=this.variableNames.map((function(t){return\"v\"+t})).join(\" + \");this.userCode=\"\\n      void main() {\\n        \"+n.join(\"\\n        \")+\"\\n\\n        float result = \"+r+\";\\n        setOutput(result);\\n      }\\n    \"},oa=function(t,e){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.variableNames=e.map((function(t,e){return\"T\"+e}));var n=[];this.variableNames.forEach((function(t){n.push(\"vec4 v\"+t+\" = get\"+t+\"AtOutCoords();\")}));var r=this.variableNames.map((function(t){return\"v\"+t})).join(\" + \");this.userCode=\"\\n      void main() {\\n        \"+n.join(\"\\n        \")+\"\\n\\n        vec4 result = \"+r+\";\\n        setOutput(result);\\n      }\\n    \"},aa=function(t,e,n){this.variableNames=[\"A\"];var r=t.windowSize,o=t.batchSize,a=t.inSize,i=Math.ceil(a/r);n||this.variableNames.push(\"bestIndicesA\"),this.outputShape=[o,i];var s=\"max\"===e?\">\":\"<\",u=n?\"inOffset + i;\":\"round(getBestIndicesA(batch, inOffset + i));\";this.userCode=\"\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int outIdx = coords[1];\\n        int inOffset = outIdx * \"+r+\";\\n\\n        int bestIndex = inOffset;\\n        float bestValue = getA(batch, bestIndex);\\n\\n        for (int i = 0; i < \"+r+\"; i++) {\\n          int inIdx = \"+u+\";\\n          float candidate = getA(batch, inIdx);\\n          if (candidate \"+s+\" bestValue) {\\n            bestValue = candidate;\\n            bestIndex = inIdx;\\n          }\\n        }\\n        setOutput(float(bestIndex));\\n      }\\n    \"};function ia(t,e){return[\"x\",\"y\",\"z\",\"w\",\"u\",\"v\"].slice(0,e).map((function(e){return t+\".\"+e}))}function sa(t,e){return 1===e?[t]:ia(t,e)}function ua(){var t,e,n,r,o,a,s,u,c,l;return 2===i().getNumber(\"WEBGL_VERSION\")?(t=\"#version 300 es\",e=\"in\",n=\"out\",r=\"in\",o=\"texture\",a=\"outputColor\",s=\"out vec4 outputColor;\",u=\"\\n      bool isnan_custom(float val) {\\n        return (val > 0.0 || val < 0.0) ? false : val != 0.0;\\n      }\\n\\n      bvec4 isnan_custom(vec4 val) {\\n        return bvec4(isnan_custom(val.x),\\n          isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w));\\n      }\\n\\n      #define isnan(value) isnan_custom(value)\\n    \",c=\"\",l=\"\\n      #define round(value) newRound(value)\\n      int newRound(float value) {\\n        return int(floor(value + 0.5));\\n      }\\n\\n      ivec4 newRound(vec4 value) {\\n        return ivec4(floor(value + vec4(0.5)));\\n      }\\n    \"):(t=\"\",e=\"attribute\",n=\"varying\",r=\"varying\",o=\"texture2D\",a=\"gl_FragColor\",s=\"\",u=\"\\n      #define isnan(value) isnan_custom(value)\\n      bool isnan_custom(float val) {\\n        return (val > 0. || val < 1. || val == 0.) ? false : true;\\n      }\\n      bvec4 isnan_custom(vec4 val) {\\n        return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));\\n      }\\n    \",c=\"\\n      uniform float INFINITY;\\n\\n      bool isinf(float val) {\\n        return abs(val) == INFINITY;\\n      }\\n      bvec4 isinf(vec4 val) {\\n        return equal(abs(val), vec4(INFINITY));\\n      }\\n    \",l=\"\\n      int round(float value) {\\n        return int(floor(value + 0.5));\\n      }\\n\\n      ivec4 round(vec4 value) {\\n        return ivec4(floor(value + vec4(0.5)));\\n      }\\n    \"),{version:t,attribute:e,varyingVs:n,varyingFs:r,texture2D:o,output:a,defineOutput:s,defineSpecialNaN:u,defineSpecialInf:c,defineRound:l}}function ca(t,e,n){void 0===n&&(n=\"index\");var r=$(e);return r.map((function(e,o){return\"int \"+t[o]+\" = \"+n+\" / \"+e+\"; \"+(o===r.length-1?\"int \"+t[o+1]+\" = \"+n+\" - \"+t[o]+\" * \"+e:\"index -= \"+t[o]+\" * \"+e)+\";\"})).join(\"\")}function la(t){var e=$(t).map((function(t){return t.toString()}));return\"\\n  int getFlatIndex(ivec3 coords) {\\n    return coords.x * \"+e[0]+\" + coords.y * \"+e[1]+\" + coords.z;\\n  }\\n\"}var ha=\"\\n  const float FLOAT_MAX = 1.70141184e38;\\n  const float FLOAT_MIN = 1.17549435e-38;\\n\\n  lowp vec4 encode_float(highp float v) {\\n    if (isnan(v)) {\\n      return vec4(255, 255, 255, 255);\\n    }\\n\\n    highp float av = abs(v);\\n\\n    if(av < FLOAT_MIN) {\\n      return vec4(0.0, 0.0, 0.0, 0.0);\\n    } else if(v > FLOAT_MAX) {\\n      return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\\n    } else if(v < -FLOAT_MAX) {\\n      return vec4(0.0, 0.0,  128.0, 255.0) / 255.0;\\n    }\\n\\n    highp vec4 c = vec4(0,0,0,0);\\n\\n    highp float e = floor(log2(av));\\n    highp float m = exp2(fract(log2(av))) - 1.0;\\n\\n    c[2] = floor(128.0 * m);\\n    m -= c[2] / 128.0;\\n    c[1] = floor(32768.0 * m);\\n    m -= c[1] / 32768.0;\\n    c[0] = floor(8388608.0 * m);\\n\\n    highp float ebias = e + 127.0;\\n    c[3] = floor(ebias / 2.0);\\n    ebias -= c[3] * 2.0;\\n    c[2] += floor(ebias) * 128.0;\\n\\n    c[3] += 128.0 * step(0.0, -v);\\n\\n    return c / 255.0;\\n  }\\n\";function fa(t,e,n,r){var o=[];t.forEach((function(t){var e=k(t.shapeInfo.logicalShape);t.shapeInfo.isUniform?o.push(\"uniform float \"+t.name+(e>1?\"[\"+e+\"]\":\"\")+\";\"):(o.push(\"uniform sampler2D \"+t.name+\";\"),o.push(\"uniform int offset\"+t.name+\";\"))}));var a,i,s=o.join(\"\\n\"),u=t.map((function(t){return function(t,e,n){void 0===n&&(n=!1);var r=\"\";r+=n?pa(t):da(t);var o=t.shapeInfo.logicalShape,a=e.logicalShape;o.length<=a.length&&(r+=n?function(t,e){var n,r=t.name,o=r.charAt(0).toUpperCase()+r.slice(1),a=\"get\"+o+\"AtOutCoords\",i=t.shapeInfo.logicalShape.length,s=e.logicalShape.length,u=Co(t.shapeInfo.logicalShape,e.logicalShape),c=wa(s),l=s-i,h=[\"x\",\"y\",\"z\",\"w\",\"u\",\"v\"];n=0===i?\"\":s<2&&u.length>=1?\"coords = 0;\":u.map((function(t){return\"coords.\"+h[t+l]+\" = 0;\"})).join(\"\\n\");var f=\"\";f=s<2&&i>0?\"coords\":t.shapeInfo.logicalShape.map((function(t,e){return\"coords.\"+h[e+l]})).join(\", \");var d=\"return outputValue;\",p=1===k(t.shapeInfo.logicalShape),v=1===k(e.logicalShape);if(1!==i||p||v){if(p&&!v)d=1===s?\"\\n        return vec4(outputValue.x, outputValue.x, 0., 0.);\\n      \":\"\\n        return vec4(outputValue.x);\\n      \";else if(u.length){var m=i-2,g=i-1;u.indexOf(m)>-1&&u.indexOf(g)>-1?d=\"return vec4(outputValue.x);\":u.indexOf(m)>-1?d=\"return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);\":u.indexOf(g)>-1&&(d=\"return vec4(outputValue.xx, outputValue.zz);\")}}else d=\"\\n      return vec4(outputValue.xy, outputValue.xy);\\n    \";return\"\\n    vec4 \"+a+\"() {\\n      \"+c+\" coords = getOutputCoords();\\n      \"+n+\"\\n      vec4 outputValue = get\"+o+\"(\"+f+\");\\n      \"+d+\"\\n    }\\n  \"}(t,e):function(t,e){var n=t.name,r=n.charAt(0).toUpperCase()+n.slice(1),o=\"get\"+r+\"AtOutCoords\",a=e.texShape,i=t.shapeInfo.texShape,s=t.shapeInfo.logicalShape.length,u=e.logicalShape.length;if(!t.shapeInfo.isUniform&&s===u&&null==t.shapeInfo.flatOffset&&S(i,a))return\"\\n      float \"+o+\"() {\\n        return sampleTexture(\"+n+\", resultUV);\\n      }\\n    \";var c,l=wa(u),h=Co(t.shapeInfo.logicalShape,e.logicalShape),f=u-s,d=[\"x\",\"y\",\"z\",\"w\",\"u\",\"v\"];c=0===s?\"\":u<2&&h.length>=1?\"coords = 0;\":h.map((function(t){return\"coords.\"+d[t+f]+\" = 0;\"})).join(\"\\n\");var p=\"\";p=u<2&&s>0?\"coords\":t.shapeInfo.logicalShape.map((function(t,e){return\"coords.\"+d[e+f]})).join(\", \");return\"\\n    float \"+o+\"() {\\n      \"+l+\" coords = getOutputCoords();\\n      \"+c+\"\\n      return get\"+r+\"(\"+p+\");\\n    }\\n  \"}(t,e));return r}(t,e,r)})).join(\"\\n\"),c=e.texShape,l=ua(),h=function(t){return\"\\n    float sampleTexture(sampler2D textureSampler, vec2 uv) {\\n      return \"+t.texture2D+\"(textureSampler, uv).r;\\n    }\\n  \"}(l),f=function(t){return t.version+\"\\n    precision highp float;\\n    precision highp int;\\n    precision highp sampler2D;\\n    \"+t.varyingFs+\" vec2 resultUV;\\n    \"+t.defineOutput+\"\\n    const vec2 halfCR = vec2(0.5, 0.5);\\n\\n    struct ivec5\\n    {\\n      int x;\\n      int y;\\n      int z;\\n      int w;\\n      int u;\\n    };\\n\\n    struct ivec6\\n    {\\n      int x;\\n      int y;\\n      int z;\\n      int w;\\n      int u;\\n      int v;\\n    };\\n\\n    uniform float NAN;\\n    \"+t.defineSpecialNaN+\"\\n    \"+t.defineSpecialInf+\"\\n    \"+t.defineRound+\"\\n\\n    int imod(int x, int y) {\\n      return x - y * (x / y);\\n    }\\n\\n    int idiv(int a, int b, float sign) {\\n      int res = a / b;\\n      int mod = imod(a, b);\\n      if (sign < 0. && mod != 0) {\\n        res -= 1;\\n      }\\n      return res;\\n    }\\n\\n    //Based on the work of Dave Hoskins\\n    //https://www.shadertoy.com/view/4djSRW\\n    #define HASHSCALE1 443.8975\\n    float random(float seed){\\n      vec2 p = resultUV * seed;\\n      vec3 p3  = fract(vec3(p.xyx) * HASHSCALE1);\\n      p3 += dot(p3, p3.yzx + 19.19);\\n      return fract((p3.x + p3.y) * p3.z);\\n    }\\n\\n    \"+va+\"\\n    \"+ma+\"\\n    \"+ga+\"\\n  \"}(l);return e.isPacked?(a=function(t,e){switch(t.length){case 0:return\"\\n    int getOutputCoords() {\\n      return 0;\\n    }\\n  \";case 1:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];if(1===n[0])return\"\\n      int getOutputCoords() {\\n        return 2 * int(resultUV.x * \"+n[1]+\".0);\\n      }\\n    \";if(1===n[1])return\"\\n      int getOutputCoords() {\\n        return 2 * int(resultUV.y * \"+n[0]+\".0);\\n      }\\n    \";return\"\\n    int getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\"+n[0]+\", \"+n[1]+\"));\\n      return 2 * (resTexRC.x * \"+n[1]+\" + resTexRC.y);\\n    }\\n  \"}(0,e);case 2:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];if(S(t,e))return\"\\n      ivec2 getOutputCoords() {\\n        return 2 * ivec2(resultUV.yx * vec2(\"+n[0]+\", \"+n[1]+\"));\\n      }\\n    \";var r=Math.ceil(t[1]/2);return\"\\n    ivec2 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\"+n[0]+\", \"+n[1]+\"));\\n\\n      int index = resTexRC.x * \"+n[1]+\" + resTexRC.y;\\n      int r = 2 * (index / \"+r+\");\\n      int c = imod(index, \"+r+\") * 2;\\n\\n      return ivec2(r, c);\\n    }\\n  \"}(t,e);case 3:return n=t,r=e,o=[Math.ceil(r[0]/2),Math.ceil(r[1]/2)],a=Math.ceil(n[2]/2),i=a*Math.ceil(n[1]/2),\"\\n    ivec3 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\"+o[0]+\", \"+o[1]+\"));\\n      int index = resTexRC.x * \"+o[1]+\" + resTexRC.y;\\n\\n      int b = index / \"+i+\";\\n      index -= b * \"+i+\";\\n\\n      int r = 2 * (index / \"+a+\");\\n      int c = imod(index, \"+a+\") * 2;\\n\\n      return ivec3(b, r, c);\\n    }\\n  \";default:return function(t,e){for(var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)],r=Math.ceil(t[t.length-1]/2),o=r*Math.ceil(t[t.length-2]/2),a=o,i=\"\",s=\"b, r, c\",u=2;u<t.length-1;u++)a*=t[t.length-u-1],i=\"\\n      int b\"+u+\" = index / \"+a+\";\\n      index -= b\"+u+\" * \"+a+\";\\n    \"+i,s=\"b\"+u+\", \"+s;return\"\\n    ivec\"+t.length+\" getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\"+n[0]+\", \"+n[1]+\"));\\n      int index = resTexRC.x * \"+n[1]+\" + resTexRC.y;\\n\\n      \"+i+\"\\n\\n      int b = index / \"+o+\";\\n      index -= b * \"+o+\";\\n\\n      int r = 2 * (index / \"+r+\");\\n      int c = imod(index, \"+r+\") * 2;\\n\\n      return ivec\"+t.length+\"(\"+s+\");\\n    }\\n  \"}(t,e)}var n,r,o,a,i}(e.logicalShape,c),i=function(t){return\"\\n    void setOutput(vec4 val) {\\n      \"+t.output+\" = val;\\n    }\\n  \"}(l)):(a=function(t,e){switch(t.length){case 0:return\"\\n    int getOutputCoords() {\\n      return 0;\\n    }\\n  \";case 1:return function(t,e){if(1===e[0])return\"\\n      int getOutputCoords() {\\n        return int(resultUV.x * \"+e[1]+\".0);\\n      }\\n    \";if(1===e[1])return\"\\n      int getOutputCoords() {\\n        return int(resultUV.y * \"+e[0]+\".0);\\n      }\\n    \";return\"\\n    int getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\"+e[0]+\", \"+e[1]+\"));\\n      return resTexRC.x * \"+e[1]+\" + resTexRC.y;\\n    }\\n  \"}(0,e);case 2:return function(t,e){if(S(t,e))return\"\\n      ivec2 getOutputCoords() {\\n        return ivec2(resultUV.yx * vec2(\"+e[0]+\", \"+e[1]+\"));\\n      }\\n    \";if(1===t[1])return\"\\n      ivec2 getOutputCoords() {\\n        ivec2 resTexRC = ivec2(resultUV.yx *\\n                               vec2(\"+e[0]+\", \"+e[1]+\"));\\n        int index = resTexRC.x * \"+e[1]+\" + resTexRC.y;\\n        return ivec2(index, 0);\\n      }\\n    \";if(1===t[0])return\"\\n      ivec2 getOutputCoords() {\\n        ivec2 resTexRC = ivec2(resultUV.yx *\\n                               vec2(\"+e[0]+\", \"+e[1]+\"));\\n        int index = resTexRC.x * \"+e[1]+\" + resTexRC.y;\\n        return ivec2(0, index);\\n      }\\n    \";return\"\\n    ivec2 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\"+e[0]+\", \"+e[1]+\"));\\n      int index = resTexRC.x * \"+e[1]+\" + resTexRC.y;\\n      int r = index / \"+t[1]+\";\\n      int c = index - r * \"+t[1]+\";\\n      return ivec2(r, c);\\n    }\\n  \"}(t,e);case 3:return n=e,r=ca([\"r\",\"c\",\"d\"],t),\"\\n    ivec3 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\"+n[0]+\", \"+n[1]+\"));\\n      int index = resTexRC.x * \"+n[1]+\" + resTexRC.y;\\n      \"+r+\"\\n      return ivec3(r, c, d);\\n    }\\n  \";case 4:return function(t,e){var n=ca([\"r\",\"c\",\"d\",\"d2\"],t);return\"\\n    ivec4 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n        vec2(\"+e[0]+\", \"+e[1]+\"));\\n      int index = resTexRC.x * \"+e[1]+\" + resTexRC.y;\\n      \"+n+\"\\n      return ivec4(r, c, d, d2);\\n    }\\n  \"}(t,e);case 5:return function(t,e){var n=ca([\"r\",\"c\",\"d\",\"d2\",\"d3\"],t);return\"\\n    ivec5 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx * vec2(\"+e[0]+\",\\n                             \"+e[1]+\"));\\n\\n      int index = resTexRC.x * \"+e[1]+\" + resTexRC.y;\\n\\n      \"+n+\"\\n\\n      ivec5 outShape = ivec5(r, c, d, d2, d3);\\n      return outShape;\\n    }\\n  \"}(t,e);case 6:return function(t,e){var n=ca([\"r\",\"c\",\"d\",\"d2\",\"d3\",\"d4\"],t);return\"\\n    ivec6 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n        vec2(\"+e[0]+\", \"+e[1]+\"));\\n      int index = resTexRC.x * \"+e[1]+\" + resTexRC.y;\\n\\n      \"+n+\"\\n\\n      ivec6 result = ivec6(r, c, d, d2, d3, d4);\\n      return result;\\n    }\\n  \"}(t,e);default:throw new Error(t.length+\"-D output sampling is not yet supported\")}var n,r}(e.logicalShape,c),i=function(t){return\"\\n    void setOutput(float val) {\\n      \"+t.output+\" = vec4(val, 0, 0, 0);\\n    }\\n  \"}(l)),r&&(f+=ya),[f,h,i,s,a,u,n].join(\"\\n\")}function da(t){var e=t.shapeInfo.logicalShape;switch(e.length){case 0:return function(t){var e=t.name,n=\"get\"+e.charAt(0).toUpperCase()+e.slice(1);if(t.shapeInfo.isUniform)return\"float \"+n+\"() {return \"+e+\";}\";var r=t.shapeInfo.texShape,o=r[0],a=r[1];if(1===o&&1===a)return\"\\n      float \"+n+\"() {\\n        return sampleTexture(\"+e+\", halfCR);\\n      }\\n    \";var i=t.shapeInfo.texShape,s=i[0],u=i[1],c=xa(e);return\"\\n    float \"+n+\"() {\\n      vec2 uv = uvFromFlat(\"+s+\", \"+u+\", \"+c+\");\\n      return sampleTexture(\"+e+\", uv);\\n    }\\n  \"}(t);case 1:return function(t){var e=t.name,n=\"get\"+e.charAt(0).toUpperCase()+e.slice(1);if(t.shapeInfo.isUniform)return\"\\n      float \"+n+\"(int index) {\\n        \"+ba(t)+\"\\n      }\\n    \";var r=t.shapeInfo.texShape,o=r[0],a=r[1];if(1===a&&1===o)return\"\\n      float \"+n+\"(int index) {\\n        return sampleTexture(\"+e+\", halfCR);\\n      }\\n    \";var i=xa(e);if(1===a)return\"\\n      float \"+n+\"(int index) {\\n        vec2 uv = vec2(0.5, (float(index + \"+i+\") + 0.5) / \"+o+\".0);\\n        return sampleTexture(\"+e+\", uv);\\n      }\\n    \";if(1===o)return\"\\n      float \"+n+\"(int index) {\\n        vec2 uv = vec2((float(index + \"+i+\") + 0.5) / \"+a+\".0, 0.5);\\n        return sampleTexture(\"+e+\", uv);\\n      }\\n    \";return\"\\n    float \"+n+\"(int index) {\\n      vec2 uv = uvFromFlat(\"+o+\", \"+a+\", index + \"+i+\");\\n      return sampleTexture(\"+e+\", uv);\\n    }\\n  \"}(t);case 2:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r=\"get\"+n.charAt(0).toUpperCase()+n.slice(1),o=t.shapeInfo.texShape;if(null!=o&&S(e,o)){var a=o[0],i=o[1];return\"\\n    float \"+r+\"(int row, int col) {\\n      vec2 uv = (vec2(col, row) + halfCR) / vec2(\"+i+\".0, \"+a+\".0);\\n      return sampleTexture(\"+n+\", uv);\\n    }\\n  \"}var s=M(e),u=s.newShape,c=s.keptDims,l=u;if(l.length<e.length){var h=Ca(t,l);return\"\\n      \"+da(h)+\"\\n      float \"+r+\"(int row, int col) {\\n        return \"+r+\"(\"+Ea([\"row\",\"col\"],c)+\");\\n      }\\n    \"}if(t.shapeInfo.isUniform)return\"\\n      float \"+r+\"(int row, int col) {\\n        int index = round(dot(vec2(row, col), vec2(\"+e[1]+\", 1)));\\n        \"+ba(t)+\"\\n      }\\n    \";var f=o[0],d=o[1],p=xa(n);if(1===d)return\"\\n    float \"+r+\"(int row, int col) {\\n      float index = dot(vec3(row, col, \"+p+\"), vec3(\"+e[1]+\", 1, 1));\\n      vec2 uv = vec2(0.5, (index + 0.5) / \"+f+\".0);\\n      return sampleTexture(\"+n+\", uv);\\n    }\\n  \";if(1===f)return\"\\n    float \"+r+\"(int row, int col) {\\n      float index = dot(vec3(row, col, \"+p+\"), vec3(\"+e[1]+\", 1, 1));\\n      vec2 uv = vec2((index + 0.5) / \"+d+\".0, 0.5);\\n      return sampleTexture(\"+n+\", uv);\\n    }\\n  \";return\"\\n  float \"+r+\"(int row, int col) {\\n    // Explicitly use integer operations as dot() only works on floats.\\n    int index = row * \"+e[1]+\" + col + \"+p+\";\\n    vec2 uv = uvFromFlat(\"+f+\", \"+d+\", index);\\n    return sampleTexture(\"+n+\", uv);\\n  }\\n\"}(t);case 3:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r=\"get\"+n.charAt(0).toUpperCase()+n.slice(1),o=e[1]*e[2],a=e[2],i=M(e),s=i.newShape,u=i.keptDims,c=s;if(c.length<e.length){var l=Ca(t,c);return\"\\n        \"+da(l)+\"\\n        float \"+r+\"(int row, int col, int depth) {\\n          return \"+r+\"(\"+Ea([\"row\",\"col\",\"depth\"],u)+\");\\n        }\\n      \"}if(t.shapeInfo.isUniform)return\"\\n      float \"+r+\"(int row, int col, int depth) {\\n        int index = round(dot(vec3(row, col, depth),\\n                          vec3(\"+o+\", \"+a+\", 1)));\\n        \"+ba(t)+\"\\n      }\\n    \";var h=t.shapeInfo.texShape,f=h[0],d=h[1],p=t.shapeInfo.flatOffset;if(d===o&&null==p)return\"\\n        float \"+r+\"(int row, int col, int depth) {\\n          float texR = float(row);\\n          float texC = dot(vec2(col, depth), vec2(\"+a+\", 1));\\n          vec2 uv = (vec2(texC, texR) + halfCR) /\\n                     vec2(\"+d+\".0, \"+f+\".0);\\n          return sampleTexture(\"+n+\", uv);\\n        }\\n      \";if(d===a&&null==p)return\"\\n    float \"+r+\"(int row, int col, int depth) {\\n      float texR = dot(vec2(row, col), vec2(\"+e[1]+\", 1));\\n      float texC = float(depth);\\n      vec2 uv = (vec2(texC, texR) + halfCR) / vec2(\"+d+\".0, \"+f+\".0);\\n      return sampleTexture(\"+n+\", uv);\\n    }\\n  \";var v=xa(n);return\"\\n      float \"+r+\"(int row, int col, int depth) {\\n        // Explicitly use integer operations as dot() only works on floats.\\n        int index = row * \"+o+\" + col * \"+a+\" + depth + \"+v+\";\\n        vec2 uv = uvFromFlat(\"+f+\", \"+d+\", index);\\n        return sampleTexture(\"+n+\", uv);\\n      }\\n  \"}(t);case 4:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r=\"get\"+n.charAt(0).toUpperCase()+n.slice(1),o=e[3],a=e[2]*o,i=e[1]*a,s=M(e),u=s.newShape,c=s.keptDims;if(u.length<e.length){var l=Ca(t,u);return\"\\n      \"+da(l)+\"\\n      float \"+r+\"(int row, int col, int depth, int depth2) {\\n        return \"+r+\"(\"+Ea([\"row\",\"col\",\"depth\",\"depth2\"],c)+\");\\n      }\\n    \"}if(t.shapeInfo.isUniform)return\"\\n      float \"+r+\"(int row, int col, int depth, int depth2) {\\n        int index = round(dot(vec4(row, col, depth, depth2),\\n                          vec4(\"+i+\", \"+a+\", \"+o+\", 1)));\\n        \"+ba(t)+\"\\n      }\\n    \";var h=t.shapeInfo.flatOffset,f=t.shapeInfo.texShape,d=f[0],p=f[1];if(p===i&&null==h)return\"\\n      float \"+r+\"(int row, int col, int depth, int depth2) {\\n        float texR = float(row);\\n        float texC =\\n            dot(vec3(col, depth, depth2),\\n                vec3(\"+a+\", \"+o+\", 1));\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                   vec2(\"+p+\".0, \"+d+\".0);\\n        return sampleTexture(\"+n+\", uv);\\n      }\\n    \";if(p===o&&null==h)return\"\\n      float \"+r+\"(int row, int col, int depth, int depth2) {\\n        float texR = dot(vec3(row, col, depth),\\n                         vec3(\"+e[1]*e[2]+\", \"+e[2]+\", 1));\\n        float texC = float(depth2);\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                  vec2(\"+p+\".0, \"+d+\".0);\\n        return sampleTexture(\"+n+\", uv);\\n      }\\n    \";var v=xa(n);return\"\\n    float \"+r+\"(int row, int col, int depth, int depth2) {\\n      // Explicitly use integer operations as dot() only works on floats.\\n      int index = row * \"+i+\" + col * \"+a+\" +\\n          depth * \"+o+\" + depth2;\\n      vec2 uv = uvFromFlat(\"+d+\", \"+p+\", index + \"+v+\");\\n      return sampleTexture(\"+n+\", uv);\\n    }\\n  \"}(t);case 5:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r=\"get\"+n.charAt(0).toUpperCase()+n.slice(1),o=e[4],a=e[3]*o,i=e[2]*a,s=e[1]*i,u=M(e),c=u.newShape,l=u.keptDims;if(c.length<e.length){var h=Ca(t,c);return\"\\n      \"+da(h)+\"\\n      float \"+r+\"(int row, int col, int depth, int depth2, int depth3) {\\n        return \"+r+\"(\"+Ea([\"row\",\"col\",\"depth\",\"depth2\",\"depth3\"],l)+\");\\n      }\\n    \"}if(t.shapeInfo.isUniform)return\"\\n      float \"+r+\"(int row, int col, int depth, int depth2, int depth3) {\\n        float index = dot(\\n          vec4(row, col, depth, depth2),\\n          vec4(\"+s+\", \"+i+\", \"+a+\", \"+o+\")) +\\n          depth3;\\n        \"+ba(t)+\"\\n      }\\n    \";var f=t.shapeInfo.flatOffset,d=t.shapeInfo.texShape,p=d[0],v=d[1];if(v===s&&null==f)return\"\\n      float \"+r+\"(int row, int col, int depth, int depth2, int depth3) {\\n        int texR = row;\\n        float texC = dot(vec4(col, depth, depth2, depth3),\\n                         vec4(\"+i+\", \"+a+\", \"+o+\", 1));\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                   vec2(\"+v+\".0, \"+p+\".0);\\n        return sampleTexture(\"+n+\", uv);\\n      }\\n    \";if(v===o&&null==f)return\"\\n      float \"+r+\"(int row, int col, int depth, int depth2, int depth3) {\\n        float texR = dot(\\n          vec4(row, col, depth, depth2),\\n          vec4(\"+e[1]*e[2]*e[3]+\",\\n               \"+e[2]*e[3]+\", \"+e[3]+\", 1));\\n        int texC = depth3;\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                  vec2(\"+v+\".0, \"+p+\".0);\\n        return sampleTexture(\"+n+\", uv);\\n      }\\n    \";var m=xa(n);return\"\\n    float \"+r+\"(int row, int col, int depth, int depth2, int depth3) {\\n      // Explicitly use integer operations as dot() only works on floats.\\n      int index = row * \"+s+\" + col * \"+i+\" + depth * \"+a+\" +\\n          depth2 * \"+o+\" + depth3 + \"+m+\";\\n      vec2 uv = uvFromFlat(\"+p+\", \"+v+\", index);\\n      return sampleTexture(\"+n+\", uv);\\n    }\\n  \"}(t);case 6:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r=\"get\"+n.charAt(0).toUpperCase()+n.slice(1),o=M(e),a=o.newShape,i=o.keptDims;if(a.length<e.length){var s=Ca(t,a);return\"\\n      \"+da(s)+\"\\n      float \"+r+\"(int row, int col, int depth,\\n                    int depth2, int depth3, int depth4) {\\n        return \"+r+\"(\"+Ea([\"row\",\"col\",\"depth\",\"depth2\",\"depth3\",\"depth4\"],i)+\");\\n      }\\n    \"}var u=e[5],c=e[4]*u,l=e[3]*c,h=e[2]*l,f=e[1]*h;if(t.shapeInfo.isUniform)return\"\\n      float \"+r+\"(int row, int col, int depth,\\n                  int depth2, int depth3, int depth4) {\\n        int index = round(dot(\\n          vec4(row, col, depth, depth2),\\n          vec4(\"+f+\", \"+h+\", \"+l+\", \"+c+\")) +\\n          dot(\\n            vec2(depth3, depth4),\\n            vec2(\"+u+\", 1)));\\n        \"+ba(t)+\"\\n      }\\n    \";var d=t.shapeInfo.flatOffset,p=t.shapeInfo.texShape,v=p[0],m=p[1];if(m===f&&null==d)return\"\\n      float \"+r+\"(int row, int col, int depth,\\n                    int depth2, int depth3, int depth4) {\\n        int texR = row;\\n        float texC = dot(vec4(col, depth, depth2, depth3),\\n          vec4(\"+h+\", \"+l+\", \"+c+\", \"+u+\")) +\\n               float(depth4);\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                   vec2(\"+m+\".0, \"+v+\".0);\\n        return sampleTexture(\"+n+\", uv);\\n      }\\n    \";if(m===u&&null==d)return\"\\n      float \"+r+\"(int row, int col, int depth,\\n                    int depth2, int depth3, int depth4) {\\n        float texR = dot(vec4(row, col, depth, depth2),\\n          vec4(\"+e[1]*e[2]*e[3]*e[4]+\",\\n               \"+e[2]*e[3]*e[4]+\",\\n               \"+e[3]*e[4]+\",\\n               \"+e[4]+\")) + float(depth3);\\n        int texC = depth4;\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                  vec2(\"+m+\".0, \"+v+\".0);\\n        return sampleTexture(\"+n+\", uv);\\n      }\\n    \";var g=xa(n);return\"\\n    float \"+r+\"(int row, int col, int depth,\\n                  int depth2, int depth3, int depth4) {\\n      // Explicitly use integer operations as dot() only works on floats.\\n      int index = row * \"+f+\" + col * \"+h+\" + depth * \"+l+\" +\\n          depth2 * \"+c+\" + depth3 * \"+u+\" + depth4 + \"+g+\";\\n      vec2 uv = uvFromFlat(\"+v+\", \"+m+\", index);\\n      return sampleTexture(\"+n+\", uv);\\n    }\\n  \"}(t);default:throw new Error(e.length+\"-D input sampling is not yet supported\")}}function pa(t){var e,n,r;switch(t.shapeInfo.logicalShape.length){case 0:return e=t.name,n=\"get\"+e.charAt(0).toUpperCase()+e.slice(1),r=ua(),\"\\n    vec4 \"+n+\"() {\\n      return \"+r.texture2D+\"(\"+e+\", halfCR);\\n    }\\n  \";case 1:return function(t){var e=t.name,n=\"get\"+e.charAt(0).toUpperCase()+e.slice(1),r=t.shapeInfo.texShape,o=[Math.ceil(r[0]/2),Math.ceil(r[1]/2)],a=ua();return\"\\n    vec4 \"+n+\"(int index) {\\n      vec2 uv = packedUVfrom1D(\\n        \"+o[0]+\", \"+o[1]+\", index);\\n      return \"+a.texture2D+\"(\"+e+\", uv);\\n    }\\n  \"}(t);case 2:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r=\"get\"+n.charAt(0).toUpperCase()+n.slice(1),o=t.shapeInfo.texShape,a=o[0],i=o[1],s=ua();if(null!=o&&S(e,o))return\"\\n      vec4 \"+r+\"(int row, int col) {\\n        vec2 uv = (vec2(col, row) + halfCR) / vec2(\"+i+\".0, \"+a+\".0);\\n\\n        return \"+s.texture2D+\"(\"+n+\", uv);\\n      }\\n    \";var u=[Math.ceil(o[0]/2),Math.ceil(o[1]/2)],c=Math.ceil(e[1]/2);return\"\\n    vec4 \"+r+\"(int row, int col) {\\n      vec2 uv = packedUVfrom2D(\"+c+\", \"+u[0]+\", \"+u[1]+\", row, col);\\n      return \"+s.texture2D+\"(\"+n+\", uv);\\n    }\\n  \"}(t);case 3:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r=\"get\"+n.charAt(0).toUpperCase()+n.slice(1),o=t.shapeInfo.texShape,a=[Math.ceil(o[0]/2),Math.ceil(o[1]/2)];if(1===e[0]){var i=e.slice(1),s=Ca(t,i);return\"\\n        \"+pa(s)+\"\\n        vec4 \"+r+\"(int b, int row, int col) {\\n          return \"+r+\"(\"+Ea([\"b\",\"row\",\"col\"],[1,2])+\");\\n        }\\n      \"}var u=a[0],c=a[1],l=Math.ceil(e[2]/2),h=l*Math.ceil(e[1]/2),f=ua();return\"\\n    vec4 \"+r+\"(int b, int row, int col) {\\n      vec2 uv = packedUVfrom3D(\\n        \"+u+\", \"+c+\", \"+h+\", \"+l+\", b, row, col);\\n      return \"+f.texture2D+\"(\"+n+\", uv);\\n    }\\n  \"}(t);default:return function(t){for(var e=t.shapeInfo.logicalShape,n=e.length,r=t.name,o=\"get\"+r.charAt(0).toUpperCase()+r.slice(1),a=t.shapeInfo.texShape,i=[Math.ceil(a[0]/2),Math.ceil(a[1]/2)],s=i[0],u=i[1],c=Math.ceil(e[n-1]/2),l=c*Math.ceil(e[n-2]/2),h=\"int b, int row, int col\",f=\"b * \"+l+\" + (row / 2) * \"+c+\" + (col / 2)\",d=2;d<n-1;d++)h=\"int b\"+d+\", \"+h,l*=e[n-d-1],f=\"b\"+d+\" * \"+l+\" + \"+f;var p=ua();return\"\\n    vec4 \"+o+\"(\"+h+\") {\\n      int index = \"+f+\";\\n      int texR = index / \"+u+\";\\n      int texC = index - texR * \"+u+\";\\n      vec2 uv = (vec2(texC, texR) + halfCR) / vec2(\"+u+\", \"+s+\");\\n      return \"+p.texture2D+\"(\"+r+\", uv);\\n    }\\n  \"}(t)}}var va=\"\\nvec2 uvFromFlat(int texNumR, int texNumC, int index) {\\n  int texR = index / texNumC;\\n  int texC = index - texR * texNumC;\\n  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\\n}\\nvec2 packedUVfrom1D(int texNumR, int texNumC, int index) {\\n  int texelIndex = index / 2;\\n  int texR = texelIndex / texNumC;\\n  int texC = texelIndex - texR * texNumC;\\n  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\\n}\\n\",ma=\"\\nvec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR,\\n  int texNumC, int row, int col) {\\n  int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);\\n  int texR = texelIndex / texNumC;\\n  int texC = texelIndex - texR * texNumC;\\n  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\\n}\\n\",ga=\"\\nvec2 packedUVfrom3D(int texNumR, int texNumC,\\n    int texelsInBatch, int texelsInLogicalRow, int b,\\n    int row, int col) {\\n  int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);\\n  int texR = index / texNumC;\\n  int texC = index - texR * texNumC;\\n  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\\n}\\n\",ya=\"\\n  float getChannel(vec4 frag, vec2 innerDims) {\\n    vec2 modCoord = mod(innerDims, 2.);\\n    return modCoord.x == 0. ?\\n      (modCoord.y == 0. ? frag.r : frag.g) :\\n      (modCoord.y == 0. ? frag.b : frag.a);\\n  }\\n  float getChannel(vec4 frag, int dim) {\\n    float modCoord = mod(float(dim), 2.);\\n    return modCoord == 0. ? frag.r : frag.g;\\n  }\\n\";function xa(t){return\"offset\"+t}function ba(t){var e=t.name,n=k(t.shapeInfo.logicalShape);return n<2?\"return \"+e+\";\":\"\\n    for (int i = 0; i < \"+n+\"; i++) {\\n      if (i == index) {\\n        return \"+e+\"[i];\\n      }\\n    }\\n  \"}function wa(t){if(t<=1)return\"int\";if(2===t)return\"ivec2\";if(3===t)return\"ivec3\";if(4===t)return\"ivec4\";if(5===t)return\"ivec5\";if(6===t)return\"ivec6\";throw Error(\"GPU for rank \"+t+\" is not yet supported\")}function Ca(t,e){var n=JSON.parse(JSON.stringify(t));return n.shapeInfo.logicalShape=e,n}function Ea(t,e){return e.map((function(e){return t[e]})).join(\", \")}var Ra=function(t,e,n,r){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0,C(t.length>2,(function(){return\"Packed arg\"+(n.charAt(0).toUpperCase()+n.slice(1))+\" supports only inputs with rank above 2.\"}));var o=t[t.length-1],a=Math.ceil(o/e);this.outputShape=t.slice(0,-1),a>1&&this.outputShape.push(a),r||this.variableNames.push(\"bestIndicesA\");var i,s,u=this.outputShape,c=u.length,l=wa(c),h=sa(\"coords\",c);if(1===a){var f=wa(s=c+1);i=\"\\n        \"+f+\" sourceLocR = \"+f+\"(\"+h.join()+\", 0);\\n        ++\"+h[c-1]+\";\\n        \"+f+\" sourceLocG = \"+f+\"(\"+h.join()+\", 0);\\n        ++\"+h[c-2]+\";\\n        \"+f+\" sourceLocA = \"+f+\"(\"+h.join()+\", 0);\\n        --\"+h[c-1]+\";\\n        \"+f+\" sourceLocB = \"+f+\"(\"+h.join()+\", 0);\\n        --\"+h[c-2]+\";\"}else s=c,i=\"\\n        \"+l+\" sourceLocR = coords;\\n        ++\"+h[c-1]+\";\\n        \"+l+\" sourceLocG = coords;\\n        ++\"+h[c-2]+\";\\n        \"+l+\" sourceLocA = coords;\\n        --\"+h[c-1]+\";\\n        \"+l+\" sourceLocB = coords;\\n        --\"+h[c-2]+\";\";var d=[\"x\",\"y\",\"z\",\"w\",\"u\",\"v\"].slice(0,s),p=\".\"+d[s-1],v=d.map((function(t){return\"int \"+t})),m=sa(\"sourceLocR\",s-1).concat(\"inIdx.r\"),g=sa(\"sourceLocG\",s-1).concat(\"inIdx.g\"),y=sa(\"sourceLocB\",s-1).concat(\"inIdx.b\"),x=sa(\"sourceLocA\",s-1).concat(\"inIdx.a\"),b=\"max\"===n?\"greaterThan\":\"lessThan\",w=r?\"\":\"\\n          inIdx = round(vec4(getBestIndicesAChannel(\"+m.join()+\"),\\n                             getBestIndicesAChannel(\"+g.join()+\"),\\n                             getBestIndicesAChannel(\"+y.join()+\"),\\n                             getBestIndicesAChannel(\"+x.join()+\")));\",E=\"vec4(\\n            getAChannel(\"+m.join()+\"),\\n            hasNextCol ? getAChannel(\"+g.join()+\") : 0.,\\n            hasNextRow ? getAChannel(\"+y.join()+\") : 0.,\\n            hasNextRow && hasNextCol ? getAChannel(\"+x.join()+\") : 0.)\",R=r?\"\":\"\\n      float getBestIndicesAChannel(\"+v.join()+\") {\\n        return getChannel(getBestIndicesA(\"+d.join()+\"),\\n                                          vec2(\"+d.slice(-2).join()+\"));\\n      }\";this.userCode=\"\\n      float getAChannel(\"+v.join()+\") {\\n        return getChannel(getA(\"+d.join()+\"),\\n                               vec2(\"+d.slice(-2).join()+\"));\\n      }\\n      \"+R+\"\\n      void main() {\\n        \"+l+\" coords = getOutputCoords();\\n        bool hasNextCol = \"+h[c-1]+\" < \"+(u[c-1]-1)+\";\\n        bool hasNextRow = \"+h[c-2]+\" < \"+(u[c-2]-1)+\";\\n        \"+i+\"\\n        ivec4 srcIdx = ivec4(sourceLocR\"+p+\", sourceLocG\"+p+\",\\n          sourceLocB\"+p+\", sourceLocA\"+p+\") * \"+e+\";\\n        ivec4 inIdx = srcIdx;\\n        vec4 bestIndex = vec4(inIdx);\\n        vec4 bestValue = \"+E+\";\\n\\n        for (int i = 0; i < \"+e+\"; i++) {\\n          inIdx = srcIdx;\\n          \"+w+\"\\n          vec4 candidate = \"+E+\";\\n          bvec4 nan = isnan(candidate);\\n          bvec4 replace = bvec4(\\n            vec4(\"+b+\"(candidate, bestValue)) * (vec4(1.0) - vec4(nan)));\\n\\n          bestValue = vec4(replace.x  ? candidate.x : bestValue.x,\\n                           replace.y  ? candidate.y : bestValue.y,\\n                           replace.z  ? candidate.z : bestValue.z,\\n                           replace.w  ? candidate.w : bestValue.w);\\n          bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace));\\n          srcIdx++;\\n        }\\n        setOutput(bestIndex);\\n      }\\n    \"},Ia=function(t){this.variableNames=[\"dy\"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a=t.dilationHeight,i=t.dilationWidth,s=t.effectiveFilterHeight,u=t.effectiveFilterWidth,c=s-1-t.padInfo.top,l=u-1-t.padInfo.left,h=1/(e*n);this.userCode=\"\\n      const ivec2 pads = ivec2(\"+c+\", \"+l+\");\\n      const float avgMultiplier = float(\"+h+\");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n\\n        ivec2 dyRCCorner = coords.yz - pads;\\n        int dyRCorner = dyRCCorner.x;\\n        int dyCCorner = dyRCCorner.y;\\n\\n        // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        for (int wR = 0; wR < \"+s+\";\\n            wR += \"+a+\") {\\n          float dyR = float(dyRCorner + wR) / \"+r+\".0;\\n\\n          if (dyR < 0.0 || dyR >= \"+t.outHeight+\".0 || fract(dyR) > 0.0) {\\n            continue;\\n          }\\n          int idyR = int(dyR);\\n\\n          for (int wC = 0; wC < \"+u+\";\\n            wC+= \"+i+\") {\\n            float dyC = float(dyCCorner + wC) / \"+o+\".0;\\n\\n            if (dyC < 0.0 || dyC >= \"+t.outWidth+\".0 ||\\n                fract(dyC) > 0.0) {\\n              continue;\\n            }\\n            int idyC = int(dyC);\\n\\n            float dyValue = getDy(b, idyR, idyC, d);\\n\\n            dotProd += dyValue * avgMultiplier;\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},ka=function(t){this.variableNames=[\"dy\"],this.outputShape=t.inShape;var e=t.filterDepth,n=t.filterHeight,r=t.filterWidth,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,l=t.effectiveFilterDepth,h=t.effectiveFilterHeight,f=t.effectiveFilterWidth,d=l-1-t.padInfo.front,p=h-1-t.padInfo.top,v=f-1-t.padInfo.left,m=1/(e*n*r);this.userCode=\"\\n      const ivec3 pads = ivec3(\"+d+\", \"+p+\", \"+v+\");\\n      const float avgMultiplier = float(\"+m+\");\\n\\n      void main() {\\n        ivec5 coords = getOutputCoords();\\n        int batch = coords.x;\\n        int ch = coords.u;\\n\\n        ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\\n        int dyDCorner = dyCorner.x;\\n        int dyRCorner = dyCorner.y;\\n        int dyCCorner = dyCorner.z;\\n\\n        // Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get\\n        // dx(xD, xR, xC, ch).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n\\n        for (int wD = 0; wD < \"+l+\";\\n            wD += \"+s+\") {\\n          float dyD = float(dyDCorner + wD) / \"+o+\".0;\\n\\n          if (dyD < 0.0 || dyD >= \"+t.outDepth+\".0 || fract(dyD) > 0.0) {\\n            continue;\\n          }\\n          int idyD = int(dyD);\\n\\n          for (int wR = 0; wR < \"+h+\";\\n              wR += \"+u+\") {\\n            float dyR = float(dyRCorner + wR) / \"+a+\".0;\\n\\n            if (dyR < 0.0 || dyR >= \"+t.outHeight+\".0 ||\\n                fract(dyR) > 0.0) {\\n              continue;\\n            }\\n            int idyR = int(dyR);\\n\\n            for (int wC = 0; wC < \"+f+\";\\n                wC += \"+c+\") {\\n              float dyC = float(dyCCorner + wC) / \"+i+\".0;\\n\\n              if (dyC < 0.0 || dyC >= \"+t.outWidth+\".0 ||\\n                  fract(dyC) > 0.0) {\\n                continue;\\n              }\\n              int idyC = int(dyC);\\n\\n              float dyValue = getDy(batch, idyD, idyR, idyC, ch);\\n\\n              dotProd += dyValue * avgMultiplier;\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Sa=function(t,e,n,r,o,a){this.outputShape=[],this.variableNames=[\"x\",\"mean\",\"variance\"],Ro(t,e),Ro(t,n);var i=\"0.0\";null!=r&&(Ro(t,r),this.variableNames.push(\"offset\"),i=\"getOffsetAtOutCoords()\");var s=\"1.0\";null!=o&&(Ro(t,o),this.variableNames.push(\"scale\"),s=\"getScaleAtOutCoords()\"),this.outputShape=t,this.userCode=\"\\n      void main() {\\n        float x = getXAtOutCoords();\\n        float mean = getMeanAtOutCoords();\\n        float variance = getVarianceAtOutCoords();\\n        float offset = \"+i+\";\\n        float scale = \"+s+\";\\n        float inv = scale * inversesqrt(variance + float(\"+a+\"));\\n        setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));\\n      }\\n    \"},Aa=function(t,e,n,r,o,a){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=[\"x\",\"mean\",\"variance\"],Ro(t,e),Ro(t,n);var i=\"vec4(0.0)\";null!=r&&(Ro(t,r),this.variableNames.push(\"offset\"),i=\"getOffsetAtOutCoords()\");var s=\"vec4(1.0)\";null!=o&&(Ro(t,o),this.variableNames.push(\"scale\"),s=\"getScaleAtOutCoords()\"),this.outputShape=t,this.userCode=\"\\n      void main() {\\n        vec4 offset = \"+i+\";\\n        vec4 scale = \"+s+\";\\n\\n        vec4 x = getXAtOutCoords();\\n        vec4 mean = getMeanAtOutCoords();\\n        vec4 variance = getVarianceAtOutCoords();\\n\\n        vec4 inv = scale * inversesqrt(variance + vec4(\"+a+\"));\\n\\n        setOutput((x - mean) * inv + offset);\\n      }\\n    \"},Da=\"return areal * breal - aimag * bimag;\",Ta=\"return areal * bimag + aimag * breal;\",Na=function(t,e,n){this.variableNames=[\"AReal\",\"AImag\",\"BReal\",\"BImag\"],this.outputShape=Ro(e,n),this.userCode=\"\\n      float binaryOpComplex(\\n          float areal, float aimag, float breal, float bimag) {\\n        \"+t+\"\\n      }\\n\\n      void main() {\\n        float areal = getARealAtOutCoords();\\n        float aimag = getAImagAtOutCoords();\\n        float breal = getBRealAtOutCoords();\\n        float bimag = getBImagAtOutCoords();\\n        setOutput(binaryOpComplex(areal, aimag, breal, bimag));\\n      }\\n    \"},Fa=\"return a + b;\",_a=\"return a - b;\",Oa=\"return a * b;\",Ma=\"return (a < 0.) ? b * a : a;\",Ba=function(t,e,n){this.variableNames=[\"A\",\"B\"],this.outputShape=Ro(e,n),this.userCode=\"\\n      float binaryOperation(float a, float b) {\\n        \"+t+\"\\n      }\\n\\n      void main() {\\n        float a = getAAtOutCoords();\\n        float b = getBAtOutCoords();\\n        setOutput(binaryOperation(a, b));\\n      }\\n    \"},Pa=\"\\n  vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\\n  return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\\n\",La=function(t,e,n,r){void 0===r&&(r=!1),this.variableNames=[\"A\",\"B\"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=Ro(e,n);var o=this.outputShape.length,a=\"\";if(r)if(0===o||1===k(this.outputShape))a=\"\\n          result.y = 0.;\\n          result.z = 0.;\\n          result.w = 0.;\\n        \";else if(a=\"\\n          \"+wa(o)+\" coords = getOutputCoords();\\n        \",1===o)a+=\"\\n            result.y = (coords + 1) >= \"+this.outputShape[0]+\" ? 0. : result.y;\\n            result.z = 0.;\\n            result.w = 0.;\\n          \";else{var i=sa(\"coords\",o);a+=\"\\n            bool nextRowOutOfBounds =\\n              (\"+i[o-2]+\" + 1) >= \"+this.outputShape[o-2]+\";\\n            bool nextColOutOfBounds =\\n              (\"+i[o-1]+\" + 1) >= \"+this.outputShape[o-1]+\";\\n            result.y = nextColOutOfBounds ? 0. : result.y;\\n            result.z = nextRowOutOfBounds ? 0. : result.z;\\n            result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\\n          \"}this.userCode=\"\\n      vec4 binaryOperation(vec4 a, vec4 b) {\\n        \"+t+\"\\n      }\\n\\n      void main() {\\n        vec4 a = getAAtOutCoords();\\n        vec4 b = getBAtOutCoords();\\n\\n        vec4 result = binaryOperation(a, b);\\n        \"+a+\"\\n\\n        setOutput(result);\\n      }\\n    \"},Wa=function(){function t(t){this.variableNames=[\"A\"],this.outputShape=t,this.userCode=\"\\n      uniform float minVal;\\n      uniform float maxVal;\\n\\n      void main() {\\n        float value = getAAtOutCoords();\\n        if (isnan(value)) {\\n          setOutput(value);\\n          return;\\n        }\\n\\n        setOutput(clamp(value, minVal, maxVal));\\n      }\\n    \"}return t.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(r,o){null==n.minLoc&&(n.minLoc=r.getUniformLocationNoThrow(o,\"minVal\"),n.maxLoc=r.getUniformLocationNoThrow(o,\"maxVal\")),r.gl.uniform1f(n.minLoc,t),r.gl.uniform1f(n.maxLoc,e)}},t}(),Ua=function(){function t(t){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.userCode=\"\\n      uniform float minVal;\\n      uniform float maxVal;\\n\\n      void main() {\\n        vec4 value = getAAtOutCoords();\\n\\n        if (any(isnan(value))) {\\n          setOutput(value);\\n          return;\\n        }\\n\\n        setOutput(clamp(value, vec4(minVal), vec4(maxVal)));\\n      }\\n    \"}return t.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(r,o){null==n.minLoc&&(n.minLoc=r.getUniformLocationNoThrow(o,\"minVal\"),n.maxLoc=r.getUniformLocationNoThrow(o,\"maxVal\")),r.gl.uniform1f(n.minLoc,t),r.gl.uniform1f(n.maxLoc,e)}},t}(),Va=function(t){this.variableNames=[\"real\",\"imag\"],this.outputShape=t,this.userCode=\"\\n      void main() {\\n        float re = abs(getRealAtOutCoords());\\n        float im = abs(getImagAtOutCoords());\\n        float mx = max(re, im);\\n\\n        // sadly the length function in glsl is not underflow-safe\\n        // (at least not on Intel GPUs). So the safe solution is\\n        // to ensure underflow-safety in all cases.\\n        setOutput(\\n          mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx))\\n        );\\n      }\\n    \"},za=function(t){this.outputShape=[],this.outputShape=Sn(t,1),this.variableNames=t.map((function(t,e){return\"T\"+e}));var e=new Array(t.length-1);e[0]=t[0][1];for(var n=1;n<e.length;n++)e[n]=e[n-1]+t[n][1];var r=[\"if (yC < \"+e[0]+\") setOutput(getT0(yR, yC));\"];for(n=1;n<e.length;n++){var o=e[n-1];r.push(\"else if (yC < \"+e[n]+\") setOutput(getT\"+n+\"(yR, yC-\"+o+\"));\")}var a=e.length,i=e[e.length-1];r.push(\"else setOutput(getT\"+a+\"(yR, yC-\"+i+\"));\"),this.userCode=\"\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int yR = coords.x;\\n        int yC = coords.y;\\n\\n        \"+r.join(\"\\n        \")+\"\\n      }\\n    \"},Ga=function(t,e){this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[],this.outputShape=Sn(t,e);var n=this.outputShape,r=n.length,o=wa(r),a=sa(\"coords\",r),i=[\"x\",\"y\",\"z\",\"w\",\"u\",\"v\"].slice(0,r);this.variableNames=t.map((function(t,e){return\"T\"+e}));var s=new Array(t.length-1);s[0]=t[0][e];for(var u=1;u<s.length;u++)s[u]=s[u-1]+t[u][e];var c=i[e],l=i.slice(-2),h=i.join(),f=\"if (\"+c+\" < \"+s[0]+\") {\\n        return getChannel(\\n            getT0(\"+h+\"), vec2(\"+l.join()+\"));\\n        }\";for(u=1;u<s.length;u++){var d=s[u-1];f+=\"\\n        if (\"+c+\" < \"+s[u]+\"  && \"+c+\" >= \"+s[u-1]+\") {\\n          return getChannel(\\n            getT\"+u+\"(\"+Ha(i,c,d)+\"),\\n            vec2(\"+Ha(l,c,d)+\"));\\n        }\"}var p=s.length,v=s[s.length-1];f+=\"\\n        return getChannel(\\n          getT\"+p+\"(\"+Ha(i,c,v)+\"),\\n          vec2(\"+Ha(l,c,v)+\"));\",this.userCode=\"\\n      float getValue(\"+i.map((function(t){return\"int \"+t}))+\") {\\n        \"+f+\"\\n      }\\n\\n      void main() {\\n        \"+o+\" coords = getOutputCoords();\\n        vec4 result = vec4(getValue(\"+a+\"), 0., 0., 0.);\\n\\n        \"+a[r-1]+\" = \"+a[r-1]+\" + 1;\\n        if (\"+a[r-1]+\" < \"+n[r-1]+\") {\\n          result.g = getValue(\"+a+\");\\n        }\\n\\n        \"+a[r-2]+\" = \"+a[r-2]+\" + 1;\\n        if (\"+a[r-2]+\" < \"+n[r-2]+\") {\\n          result.a = getValue(\"+a+\");\\n        }\\n\\n        \"+a[r-1]+\" = \"+a[r-1]+\" - 1;\\n        if (\"+a[r-2]+\" < \"+n[r-2]+\" &&\\n            \"+a[r-1]+\" < \"+n[r-1]+\") {\\n          result.b = getValue(\"+a+\");\\n        }\\n        setOutput(result);\\n      }\\n    \"};function Ha(t,e,n){var r=t.indexOf(e);return t.map((function(t,e){return e===r?t+\" - \"+n:t})).join()}var qa=function(t){this.variableNames=[\"x\",\"dy\"],this.outputShape=t.filterShape;var e=t.strideHeight,n=t.strideWidth,r=t.padInfo.top,o=t.padInfo.left,a=\"channelsLast\"===t.dataFormat;this.userCode=\"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int wR = coords.x;\\n        int wC = coords.y;\\n        int d1 = coords.z;\\n        int d2 = coords.w;\\n\\n        // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n\\n        for (int b = 0; b < \"+t.batchSize+\"; b++) {\\n          for (int yR = 0; yR < \"+t.outHeight+\"; yR++) {\\n            int xR = wR + yR * \"+e+\" - \"+r+\";\\n\\n            if (xR < 0 || xR >= \"+t.inHeight+\") {\\n              continue;\\n            }\\n\\n            for (int yC = 0; yC < \"+t.outWidth+\"; yC++) {\\n              int xC = wC + yC * \"+n+\" - \"+o+\";\\n\\n              if (xC < 0 || xC >= \"+t.inWidth+\") {\\n                continue;\\n              }\\n\\n              if (\"+a+\") {\\n                float dyValue = getDy(b, yR, yC, d2);\\n                float xValue = getX(b, xR, xC, d1);\\n                dotProd += (xValue * dyValue);\\n              } else {\\n                float dyValue = getDy(b, d2, yR, yC);\\n                float xValue = getX(b, d1, xR, xC);\\n                dotProd += (xValue * dyValue);\\n              }\\n\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Ka=function(t){this.variableNames=[\"dy\",\"W\"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a=\"channelsLast\"===t.dataFormat,i=e-1-t.padInfo.top,s=n-1-t.padInfo.left,u=a?1:2,c=a?2:3,l=a?3:1;this.userCode=\"\\n      const ivec2 pads = ivec2(\"+i+\", \"+s+\");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int d1 = coords[\"+l+\"];\\n\\n        ivec2 dyCorner = ivec2(coords[\"+u+\"], coords[\"+c+\"]) - pads;\\n        int dyRCorner = dyCorner.x;\\n        int dyCCorner = dyCorner.y;\\n\\n        // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        for (int wR = 0; wR < \"+e+\"; wR++) {\\n          float dyR = float(dyRCorner + wR) / \"+r+\".0;\\n\\n          if (dyR < 0.0 || dyR >= \"+t.outHeight+\".0 || fract(dyR) > 0.0) {\\n            continue;\\n          }\\n          int idyR = int(dyR);\\n\\n          int wRPerm = \"+e+\" - 1 - wR;\\n\\n          for (int wC = 0; wC < \"+n+\"; wC++) {\\n            float dyC = float(dyCCorner + wC) / \"+o+\".0;\\n\\n            if (dyC < 0.0 || dyC >= \"+t.outWidth+\".0 ||\\n                fract(dyC) > 0.0) {\\n              continue;\\n            }\\n            int idyC = int(dyC);\\n\\n            int wCPerm = \"+n+\" - 1 - wC;\\n\\n            for (int d2 = 0; d2 < \"+t.outChannels+\"; d2++) {\\n\\n              if (\"+a+\") {\\n                float xValue = getDy(batch, idyR, idyC, d2);\\n                float wValue = getW(wRPerm, wCPerm, d1, d2);\\n                dotProd += xValue * wValue;\\n              } else {\\n                float xValue = getDy(batch, d2, idyR, idyC);\\n                float wValue = getW(wRPerm, wCPerm, d1, d2);\\n                dotProd += xValue * wValue;\\n              }\\n\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},ja=function(t){this.variableNames=[\"x\",\"dy\"],this.outputShape=t.filterShape;var e=t.strideDepth,n=t.strideHeight,r=t.strideWidth,o=t.padInfo.front,a=t.padInfo.top,i=t.padInfo.left;this.userCode=\"\\n      void main() {\\n        ivec5 coords = getOutputCoords();\\n        int wF = coords.x;\\n        int wR = coords.y;\\n        int wC = coords.z;\\n        int d1 = coords.w;\\n        int d2 = coords.u;\\n\\n        float dotProd = 0.0;\\n\\n        for (int b = 0; b < \"+t.batchSize+\"; b++) {\\n          for (int yF = 0; yF < \"+t.outDepth+\"; yF++) {\\n            int xF = wF + yF * \"+e+\" - \"+o+\";\\n\\n            if (xF < 0 || xF >= \"+t.inDepth+\") {\\n              continue;\\n            }\\n\\n            for (int yR = 0; yR < \"+t.outHeight+\"; yR++) {\\n              int xR = wR + yR * \"+n+\" - \"+a+\";\\n\\n              if (xR < 0 || xR >= \"+t.inHeight+\") {\\n                continue;\\n              }\\n\\n              for (int yC = 0; yC < \"+t.outWidth+\"; yC++) {\\n                int xC = wC + yC * \"+r+\" - \"+i+\";\\n\\n                if (xC < 0 || xC >= \"+t.inWidth+\") {\\n                  continue;\\n                }\\n\\n                float dyValue = getDy(b, yF, yR, yC, d2);\\n                float xValue = getX(b, xF, xR, xC, d1);\\n                dotProd += (xValue * dyValue);\\n              }\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Xa=function(t){this.variableNames=[\"dy\",\"W\"],this.outputShape=t.inShape;var e=t.filterDepth,n=t.filterHeight,r=t.filterWidth,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=e-1-t.padInfo.front,u=n-1-t.padInfo.top,c=r-1-t.padInfo.left;this.userCode=\"\\n      const ivec3 pads = ivec3(\"+s+\", \"+u+\", \"+c+\");\\n\\n      void main() {\\n        ivec5 coords = getOutputCoords();\\n        int batch = coords.x;\\n        int d1 = coords.u;\\n\\n\\n        ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\\n        int dyFCorner = dyCorner.x;\\n        int dyRCorner = dyCorner.y;\\n        int dyCCorner = dyCorner.z;\\n\\n        float dotProd = 0.0;\\n        for (int wF = 0; wF < \"+e+\"; wF++) {\\n          float dyF = float(dyFCorner + wF) / \"+o+\".0;\\n\\n          if (dyF < 0.0 || dyF >= \"+t.outDepth+\".0 || fract(dyF) > 0.0) {\\n            continue;\\n          }\\n          int idyF = int(dyF);\\n\\n          int wFPerm = \"+e+\" - 1 - wF;\\n\\n          for (int wR = 0; wR < \"+n+\"; wR++) {\\n            float dyR = float(dyRCorner + wR) / \"+a+\".0;\\n\\n            if (dyR < 0.0 || dyR >= \"+t.outHeight+\".0 ||\\n              fract(dyR) > 0.0) {\\n              continue;\\n            }\\n            int idyR = int(dyR);\\n\\n            int wRPerm = \"+n+\" - 1 - wR;\\n\\n            for (int wC = 0; wC < \"+r+\"; wC++) {\\n              float dyC = float(dyCCorner + wC) / \"+i+\".0;\\n\\n              if (dyC < 0.0 || dyC >= \"+t.outWidth+\".0 ||\\n                  fract(dyC) > 0.0) {\\n                continue;\\n              }\\n              int idyC = int(dyC);\\n\\n              int wCPerm = \"+r+\" - 1 - wC;\\n\\n              for (int d2 = 0; d2 < \"+t.outChannels+\"; d2++) {\\n                float xValue = getDy(batch, idyF, idyR, idyC, d2);\\n                float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2);\\n                dotProd += xValue * wValue;\\n              }\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Ya=function(t){this.variableNames=[\"x\",\"dy\"],this.outputShape=t.filterShape;var e=t.strideHeight,n=t.strideWidth,r=t.padInfo.top,o=t.padInfo.left,a=t.outChannels/t.inChannels;this.userCode=\"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int wR = coords.x;\\n        int wC = coords.y;\\n        int d1 = coords.z;\\n        int dm = coords.w;\\n        int d2 = d1 * \"+a+\" + dm;\\n\\n        float dotProd = 0.0;\\n\\n        // TO DO: Vec4 over the batch size\\n        for (int b = 0; b < \"+t.batchSize+\"; b++) {\\n          for (int yR = 0; yR < \"+t.outHeight+\"; yR++) {\\n            int xR = wR + yR * \"+e+\" - \"+r+\";\\n\\n            if (xR < 0 || xR >= \"+t.inHeight+\") {\\n              continue;\\n            }\\n\\n            for (int yC = 0; yC < \"+t.outWidth+\"; yC++) {\\n              int xC = wC + yC * \"+n+\" - \"+o+\";\\n\\n              if (xC < 0 || xC >= \"+t.inWidth+\") {\\n                continue;\\n              }\\n\\n              float dyValue = getDy(b, yR, yC, d2);\\n              float xValue = getX(b, xR, xC, d1);\\n              dotProd += (xValue * dyValue);\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},$a=function(t){this.variableNames=[\"dy\",\"W\"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a=e-1-t.padInfo.top,i=n-1-t.padInfo.left,s=t.outChannels/t.inChannels;this.userCode=\"\\n      const ivec2 pads = ivec2(\"+a+\", \"+i+\");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int d1 = coords[3];\\n        ivec2 dyCorner = coords.yz - pads;\\n        int dyRCorner = dyCorner.x;\\n        int dyCCorner = dyCorner.y;\\n\\n        float dotProd = 0.0;\\n\\n        for (int wR = 0; wR < \"+e+\"; wR++) {\\n          float dyR = float(dyRCorner + wR) / \"+r+\".0;\\n\\n          if (dyR < 0.0 || dyR >= \"+t.outHeight+\".0 || fract(dyR) > 0.0) {\\n            continue;\\n          }\\n          int idyR = int(dyR);\\n\\n          int wRPerm = \"+e+\" - 1 - wR;\\n\\n          for (int wC = 0; wC < \"+n+\"; wC++) {\\n            float dyC = float(dyCCorner + wC) / \"+o+\".0;\\n\\n            if (dyC < 0.0 || dyC >= \"+t.outWidth+\".0 ||\\n                fract(dyC) > 0.0) {\\n              continue;\\n            }\\n            int idyC = int(dyC);\\n\\n            int wCPerm = \"+n+\" - 1 - wC;\\n\\n            // TO DO: Vec4 over the channelMul\\n            for (int dm = 0; dm < \"+s+\"; dm++) {\\n              int d2 = d1 * \"+s+\" + dm;\\n              float xValue = getDy(batch, idyR, idyC, d2);\\n              float wValue = getW(wRPerm, wCPerm, d1, dm);\\n              dotProd += xValue * wValue;\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Qa=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=[\"x\",\"W\"],this.outputShape=t.outShape;var o=t.padInfo.top,a=t.padInfo.left,i=t.strideHeight,s=t.strideWidth,u=t.dilationHeight,c=t.dilationWidth,l=t.filterHeight,h=t.filterWidth,f=4*Math.floor(t.inChannels/4),d=t.inChannels%4,p=\"channelsLast\"===t.dataFormat,v=p?1:2,m=p?2:3,g=p?3:1,y=\"\",x=\"\";n&&(y=r?\"float activation(float a) {\\n          float b = getPreluActivationWeightsAtOutCoords();\\n          \"+n+\"\\n        }\":\"\\n          float activation(float x) {\\n            \"+n+\"\\n          }\\n        \",x=\"result = activation(result);\");var b=e?\"result += getBiasAtOutCoords();\":\"\";e&&this.variableNames.push(\"bias\"),r&&this.variableNames.push(\"preluActivationWeights\"),this.userCode=\"\\n      \"+y+\"\\n\\n      const ivec2 strides = ivec2(\"+i+\", \"+s+\");\\n      const ivec2 pads = ivec2(\"+o+\", \"+a+\");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int d2 = coords[\"+g+\"];\\n\\n        ivec2 xRCCorner =\\n            ivec2(coords[\"+v+\"], coords[\"+m+\"]) * strides - pads;\\n        int xRCorner = xRCCorner.x;\\n        int xCCorner = xRCCorner.y;\\n\\n        // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        for (int wR = 0; wR < \"+l+\"; wR++) {\\n          int xR = xRCorner + wR * \"+u+\";\\n\\n          if (xR < 0 || xR >= \"+t.inHeight+\") {\\n            continue;\\n          }\\n\\n          for (int wC = 0; wC < \"+h+\"; wC++) {\\n            int xC = xCCorner + wC * \"+c+\";\\n\\n            if (xC < 0 || xC >= \"+t.inWidth+\") {\\n              continue;\\n            }\\n\\n            for (int d1 = 0; d1 < \"+f+\"; d1 += 4) {\\n              vec4 wValues = vec4(\\n                getW(wR, wC, d1, d2),\\n                getW(wR, wC, d1 + 1, d2),\\n                getW(wR, wC, d1 + 2, d2),\\n                getW(wR, wC, d1 + 3, d2)\\n              );\\n\\n              if (\"+p+\") {\\n                vec4 xValues = vec4(\\n                  getX(batch, xR, xC, d1),\\n                  getX(batch, xR, xC, d1 + 1),\\n                  getX(batch, xR, xC, d1 + 2),\\n                  getX(batch, xR, xC, d1 + 3)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              } else {\\n                vec4 xValues = vec4(\\n                  getX(batch, d1, xR, xC),\\n                  getX(batch, d1 + 1, xR, xC),\\n                  getX(batch, d1 + 2, xR, xC),\\n                  getX(batch, d1 + 3, xR, xC)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              }\\n            }\\n\\n            if (\"+(1===d)+\") {\\n\\n              if (\"+p+\") {\\n                dotProd +=\\n                    getX(batch, xR, xC, \"+f+\") *\\n                    getW(wR, wC, \"+f+\", d2);\\n              } else {\\n                dotProd +=\\n                    getX(batch, \"+f+\", xR, xC) *\\n                    getW(wR, wC, \"+f+\", d2);\\n              }\\n\\n            } else if (\"+(2===d)+\") {\\n              vec2 wValues = vec2(\\n                getW(wR, wC, \"+f+\", d2),\\n                getW(wR, wC, \"+f+\" + 1, d2)\\n              );\\n\\n              if (\"+p+\") {\\n                vec2 xValues = vec2(\\n                  getX(batch, xR, xC, \"+f+\"),\\n                  getX(batch, xR, xC, \"+f+\" + 1)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              } else {\\n                vec2 xValues = vec2(\\n                  getX(batch, \"+f+\", xR, xC),\\n                  getX(batch, \"+f+\" + 1, xR, xC)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              }\\n\\n            } else if (\"+(3===d)+\") {\\n              vec3 wValues = vec3(\\n                getW(wR, wC, \"+f+\", d2),\\n                getW(wR, wC, \"+f+\" + 1, d2),\\n                getW(wR, wC, \"+f+\" + 2, d2)\\n              );\\n\\n              if (\"+p+\") {\\n                vec3 xValues = vec3(\\n                  getX(batch, xR, xC, \"+f+\"),\\n                  getX(batch, xR, xC, \"+f+\" + 1),\\n                  getX(batch, xR, xC, \"+f+\" + 2)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              } else {\\n                vec3 xValues = vec3(\\n                  getX(batch, \"+f+\", xR, xC),\\n                  getX(batch, \"+f+\" + 1, xR, xC),\\n                  getX(batch, \"+f+\" + 2, xR, xC)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              }\\n\\n            }\\n          }\\n        }\\n\\n        float result = dotProd;\\n        \"+b+\"\\n        \"+x+\"\\n        setOutput(result);\\n      }\\n    \"},Ja=function(t){this.variableNames=[\"x\",\"W\"],this.outputShape=t.outShape;var e=t.padInfo.front,n=t.padInfo.top,r=t.padInfo.left,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,l=t.filterDepth,h=t.filterHeight,f=t.filterWidth,d=4*Math.floor(t.inChannels/4),p=t.inChannels%4;this.userCode=\"\\n      const ivec3 strides = ivec3(\"+o+\", \"+a+\", \"+i+\");\\n      const ivec3 pads = ivec3(\"+e+\", \"+n+\", \"+r+\");\\n\\n      void main() {\\n        ivec5 coords = getOutputCoords();\\n        int batch = coords.x;\\n        int d2 = coords.u;\\n\\n        ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\\n        int xFCorner = xFRCCorner.x;\\n        int xRCorner = xFRCCorner.y;\\n        int xCCorner = xFRCCorner.z;\\n\\n        // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get\\n        // y(yF, yR, yC, d2). ? = to be determined. : = across all\\n        // values in that axis.\\n        float dotProd = 0.0;\\n        for (int wF = 0; wF < \"+l+\"; wF++) {\\n          int xF = xFCorner + wF * \"+s+\";\\n\\n          if (xF < 0 || xF >= \"+t.inDepth+\") {\\n            continue;\\n          }\\n\\n          for (int wR = 0; wR < \"+h+\"; wR++) {\\n            int xR = xRCorner + wR * \"+u+\";\\n\\n            if (xR < 0 || xR >= \"+t.inHeight+\") {\\n              continue;\\n            }\\n\\n            for (int wC = 0; wC < \"+f+\"; wC++) {\\n              int xC = xCCorner + wC * \"+c+\";\\n\\n              if (xC < 0 || xC >= \"+t.inWidth+\") {\\n                continue;\\n              }\\n\\n              for (int d1 = 0; d1 < \"+d+\"; d1 += 4) {\\n                vec4 xValues = vec4(\\n                  getX(batch, xF, xR, xC, d1),\\n                  getX(batch, xF, xR, xC, d1 + 1),\\n                  getX(batch, xF, xR, xC, d1 + 2),\\n                  getX(batch, xF, xR, xC, d1 + 3)\\n                );\\n                vec4 wValues = vec4(\\n                  getW(wF, wR, wC, d1, d2),\\n                  getW(wF, wR, wC, d1 + 1, d2),\\n                  getW(wF, wR, wC, d1 + 2, d2),\\n                  getW(wF, wR, wC, d1 + 3, d2)\\n                );\\n\\n                dotProd += dot(xValues, wValues);\\n              }\\n\\n              if (\"+(1===p)+\") {\\n                dotProd +=\\n                  getX(batch, xF, xR, xC, \"+d+\") *\\n                  getW(wF, wR, wC, \"+d+\", d2);\\n              } else if (\"+(2===p)+\") {\\n                vec2 xValues = vec2(\\n                  getX(batch, xF, xR, xC, \"+d+\"),\\n                  getX(batch, xF, xR, xC, \"+d+\" + 1)\\n                );\\n                vec2 wValues = vec2(\\n                  getW(wF, wR, wC, \"+d+\", d2),\\n                  getW(wF, wR, wC, \"+d+\" + 1, d2)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              } else if (\"+(3===p)+\") {\\n                vec3 xValues = vec3(\\n                  getX(batch, xF, xR, xC, \"+d+\"),\\n                  getX(batch, xF, xR, xC, \"+d+\" + 1),\\n                  getX(batch, xF, xR, xC, \"+d+\" + 2)\\n                );\\n                vec3 wValues = vec3(\\n                  getW(wF, wR, wC, \"+d+\", d2),\\n                  getW(wF, wR, wC, \"+d+\" + 1, d2),\\n                  getW(wF, wR, wC, \"+d+\" + 2, d2)\\n                );\\n                dotProd += dot(xValues, wValues);\\n              }\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Za=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=[\"x\",\"W\"],this.outputShape=t.outShape;var o=t.inHeight,a=t.inWidth,i=t.padInfo.top,s=t.padInfo.left,u=t.strideHeight,c=t.strideWidth,l=t.dilationHeight,h=t.dilationWidth,f=t.filterHeight,d=t.filterWidth,p=t.outChannels/t.inChannels,v=\"\",m=\"\";n&&(v=r?\"float activation(float a) {\\n          float b = getPreluActivationWeightsAtOutCoords();\\n          \"+n+\"\\n        }\":\"\\n          float activation(float x) {\\n            \"+n+\"\\n          }\\n        \",m=\"result = activation(result);\");var g=e?\"result += getBiasAtOutCoords();\":\"\";e&&this.variableNames.push(\"bias\"),r&&this.variableNames.push(\"preluActivationWeights\"),this.userCode=\"\\n      \"+v+\"\\n\\n      const ivec2 strides = ivec2(\"+u+\", \"+c+\");\\n      const ivec2 pads = ivec2(\"+i+\", \"+s+\");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords.x;\\n        ivec2 xRCCorner = coords.yz * strides - pads;\\n        int d2 = coords.w;\\n        int d1 = d2 / \"+p+\";\\n        int q = d2 - d1 * \"+p+\";\\n\\n        int xRCorner = xRCCorner.x;\\n        int xCCorner = xRCCorner.y;\\n\\n        // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations.\\n        for (int wR = 0; wR < \"+f+\"; wR++) {\\n          int xR = xRCorner + wR * \"+l+\";\\n\\n          if (xR < 0 || xR >= \"+o+\") {\\n            continue;\\n          }\\n\\n          for (int wC = 0; wC < \"+d+\"; wC++) {\\n            int xC = xCCorner + wC * \"+h+\";\\n\\n            if (xC < 0 || xC >= \"+a+\") {\\n              continue;\\n            }\\n\\n            float xVal = getX(batch, xR, xC, d1);\\n            float wVal = getW(wR, wC, d1, q);\\n            dotProd += xVal * wVal;\\n          }\\n        }\\n\\n        float result = dotProd;\\n        \"+g+\"\\n        \"+m+\"\\n        setOutput(result);\\n      }\\n    \"},ti=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=[\"x\",\"W\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.outShape;for(var o=t.inHeight,a=t.inWidth,i=t.padInfo.top,s=t.padInfo.left,u=t.strideHeight,c=t.strideWidth,l=t.dilationHeight,h=t.dilationWidth,f=t.filterHeight,d=t.filterWidth,p=d,v=\"int xR; int xC; int xCOffset;\",m=0;m<f;m++)for(var g=0;g<d;g++)v+=\"\\n          vec4 xTexelR\"+m+\"C\"+2*g+\" = vec4(0.);\\n          vec4 wR\"+m+\"C\"+g+\" = vec4(0.);\\n          vec4 xR\"+m+\"C\"+g+\" = vec4(0.);\";for(m=0;m<f;m++)for(var y=0;y<p;y++){if(v+=\"\\n          xR = xRCorner + \"+m*l+\";\\n          xC = xCCorner + \"+(g=2*y)*h+\";\\n        \",1===c){if(g<d&&(v+=s%2==1?\"\\n                xCOffset = xC + 1;\\n                if(xR >= 0 && xR < \"+o+\" && xCOffset >= 0 && xCOffset < \"+a+\") {\\n                  xTexelR\"+m+\"C\"+g+\" = getX(batch, xR, xCOffset, d1);\\n\\n                  // Need to manually clear unused channels in case\\n                  // we're reading from recycled texture.\\n                  if(xCOffset + 1 >= \"+a+\") {\\n                    xTexelR\"+m+\"C\"+g+\".zw = vec2(0.);\\n                  }\\n                } else {\\n                  xTexelR\"+m+\"C\"+g+\" = vec4(0.);\\n                }\\n\\n                xCOffset = xC + 1 - 2;\\n                if(xR >= 0 && xR < \"+o+\" && xCOffset >= 0 && xCOffset < \"+a+\") {\\n                  vec4 previous = getX(batch, xR, xCOffset, d1);\\n\\n                  // Need to manually clear unused channels in case\\n                  // we're reading from recycled texture.\\n                  if(xCOffset + 1 >= \"+a+\") {\\n                    previous.zw = vec2(0.);\\n                  }\\n\\n                  xR\"+m+\"C\"+g+\" = vec4(previous.zw, xTexelR\"+m+\"C\"+g+\".xy);\\n                } else {\\n                  xR\"+m+\"C\"+g+\" = vec4(0, 0, xTexelR\"+m+\"C\"+g+\".xy);\\n                }\\n              \":\"\\n                if(xR >= 0 && xR < \"+o+\" && xC >= 0 && xC < \"+a+\") {\\n                  xTexelR\"+m+\"C\"+g+\" = getX(batch, xR, xC, d1);\\n                } else {\\n                  xTexelR\"+m+\"C\"+g+\" = vec4(0.);\\n                }\\n\\n                xR\"+m+\"C\"+g+\" = xTexelR\"+m+\"C\"+g+\";\\n              \",g+1<d)){var x=s%2==0?b(h):h;h%2==0&&s%2==1||h%2!=0&&s%2!=1?(v+=\"\\n                  xCOffset = xC + \"+s%2+\" + \"+x+\";\\n\\n                  if(xR >= 0 && xR < \"+o+\" &&\\n                    xCOffset >= 0 && xCOffset < \"+a+\") {\\n                    xTexelR\"+m+\"C\"+(g+2)+\" = getX(batch, xR, xCOffset, d1);\\n                  }\\n                \",h>1&&(v+=\"\\n                    xCOffset -= 2;\\n                    if(xR >= 0 && xR < \"+o+\" &&\\n                      xCOffset >= 0 && xCOffset < \"+a+\") {\\n                      xTexelR\"+m+\"C\"+g+\" = getX(batch, xR, xCOffset, d1);\\n                    } else {\\n                      xTexelR\"+m+\"C\"+g+\" = vec4(0.);\\n                    }\\n                  \"),v+=\"\\n                  xR\"+m+\"C\"+(g+1)+\" = vec4(\\n                    xTexelR\"+m+\"C\"+g+\".zw, xTexelR\"+m+\"C\"+(g+2)+\".xy);\\n                \"):v+=\"\\n                  xCOffset = xC + \"+x+\";\\n\\n                  if(xR >= 0 && xR < \"+o+\" &&\\n                    xCOffset >= 0 && xCOffset < \"+a+\") {\\n                    xTexelR\"+m+\"C\"+(g+2)+\" = getX(batch, xR, xCOffset, d1);\\n                  }\\n\\n                  xR\"+m+\"C\"+(g+1)+\" = xTexelR\"+m+\"C\"+(g+2)+\";\\n                \"}}else g<d&&(v+=\"\\n              if(xR >= 0 && xR < \"+o+\") {\\n            \",s%2==1?(v+=\"\\n                xCOffset = xC + 1 - \"+c+\";\\n                if(xCOffset >= 0 && xCOffset < \"+a+\") {\\n                  xTexelR\"+m+\"C\"+g+\" = getX(batch, xR, xCOffset, d1);\\n                } else {\\n                  xTexelR\"+m+\"C\"+g+\" = vec4(0.);\\n                }\\n\\n                if(xC + 1 >= 0 && xC + 1 < \"+a+\") {\\n                  xTexelR\"+m+\"C\"+(g+2)+\" = getX(batch, xR, xC + 1, d1);\\n                } else {\\n                  xTexelR\"+m+\"C\"+(g+2)+\" = vec4(0.);\\n                }\\n\\n                xR\"+m+\"C\"+g+\" = vec4(\\n                  xTexelR\"+m+\"C\"+g+\".zw, xTexelR\"+m+\"C\"+(g+2)+\".zw);\\n              \",g+1<d&&(v+=\"\\n                  vec4 final = vec4(0.);\\n                  xCOffset = xC + 1 + \"+c+\";\\n                  if(xCOffset >= 0 && xCOffset < \"+a+\") {\\n                    final = getX(batch, xR, xCOffset, d1);\\n                  }\\n                  xR\"+m+\"C\"+(g+1)+\" = vec4(xTexelR\"+m+\"C\"+(g+2)+\".xy, final.xy);\\n                \")):(v+=\"\\n                if(xC >= 0 && xC < \"+a+\") {\\n                  xTexelR\"+m+\"C\"+g+\" = getX(batch, xR, xC, d1);\\n                } else {\\n                  xTexelR\"+m+\"C\"+g+\" = vec4(0.);\\n                }\\n\\n                xCOffset = xC + \"+c+\";\\n                if(xCOffset >= 0 && xCOffset < \"+a+\") {\\n                  xTexelR\"+m+\"C\"+(g+2)+\" = getX(batch, xR, xCOffset, d1);\\n                } else {\\n                  xTexelR\"+m+\"C\"+(g+2)+\" = vec4(0.);\\n                }\\n\\n                xR\"+m+\"C\"+g+\" = vec4(\\n                  xTexelR\"+m+\"C\"+g+\".xy, xTexelR\"+m+\"C\"+(g+2)+\".xy);\\n              \",g+1<d&&(v+=\"\\n                  xR\"+m+\"C\"+(g+1)+\" = vec4(\\n                    xTexelR\"+m+\"C\"+g+\".zw, xTexelR\"+m+\"C\"+(g+2)+\".zw);\\n                \")),v+=\"}\");g<d&&(v+=\"\\n            vec4 wTexelR\"+m+\"C\"+g+\" = getW(\"+m+\", \"+g+\", d1, q);\\n            wR\"+m+\"C\"+g+\" = vec4(wTexelR\"+m+\"C\"+g+\".xz, wTexelR\"+m+\"C\"+g+\".xz);\\n          \",g+1<d&&(v+=\"\\n              vec4 wTexelR\"+m+\"C\"+(g+1)+\" = getW(\"+m+\", \"+(g+1)+\", d1, q);\\n              wR\"+m+\"C\"+(g+1)+\" =\\n                vec4(wTexelR\"+m+\"C\"+(g+1)+\".xz, wTexelR\"+m+\"C\"+(g+1)+\".xz);\"))}for(m=0;m<f;m++)for(g=0;g<d;g++)v+=\"dotProd += xR\"+m+\"C\"+g+\" * wR\"+m+\"C\"+g+\";\";var w=\"\",C=\"\";n&&(w=r?\"vec4 activation(vec4 a) {\\n          vec4 b = getPreluActivationWeightsAtOutCoords();\\n          \"+n+\"\\n        }\":\"vec4 activation(vec4 x) {\\n          \"+n+\"\\n        }\",C=\"result = activation(result);\");var E=e?\"result += getBiasAtOutCoords();\":\"\";e&&this.variableNames.push(\"bias\"),r&&this.variableNames.push(\"preluActivationWeights\"),this.userCode=\"\\n      \"+w+\"\\n\\n      const ivec2 strides = ivec2(\"+u+\", \"+c+\");\\n      const ivec2 pads = ivec2(\"+i+\", \"+s+\");\\n\\n      void main() {\\n\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords.x;\\n        ivec2 xRCCorner = coords.yz * strides - pads;\\n        int d2 = coords.w;\\n        int d1 = d2;\\n        int q = 0;\\n        int xRCorner = xRCCorner.x;\\n        int xCCorner = xRCCorner.y;\\n\\n        vec4 dotProd = vec4(0.);\\n\\n        \"+v+\"\\n\\n        vec4 result = dotProd;\\n        \"+E+\"\\n        \"+C+\"\\n        setOutput(result);\\n      }\\n    \"},ei=function(t,e,n,r,o){this.variableNames=[\"Image\",\"Boxes\",\"BoxInd\"],this.outputShape=[];var a=t[0],i=t[1],s=t[2],u=t[3],c=e[0],l=n[0],h=n[1];this.outputShape=[c,l,h,u];var f=\"bilinear\"===r?1:0,d=[i-1+\".0\",s-1+\".0\"],p=d[0],v=d[1],m=l>1?[\"\"+(i-1)/(l-1),\"(y2-y1) * height_ratio\",\"y1*\"+p+\" + float(y)*(height_scale)\"]:[\"0.0\",\"0.0\",\"0.5 * (y1+y2) * \"+p],g=m[0],y=m[1],x=m[2],b=h>1?[\"\"+(s-1)/(h-1),\"(x2-x1) * width_ratio\",\"x1*\"+v+\" + float(x)*(width_scale)\"]:[\"0.0\",\"0.0\",\"0.5 * (x1+x2) * \"+v],w=b[0],C=b[1],E=b[2];this.userCode=\"\\n      const float height_ratio = float(\"+g+\");\\n      const float width_ratio = float(\"+w+\");\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int y = coords[1];\\n        int x = coords[2];\\n        int d = coords[3];\\n\\n        // get box vals\\n        float y1 = getBoxes(b,0);\\n        float x1 = getBoxes(b,1);\\n        float y2 = getBoxes(b,2);\\n        float x2 = getBoxes(b,3);\\n\\n        // get image in batch index\\n        int bInd = round(getBoxInd(b));\\n        if(bInd < 0 || bInd >= \"+a+\") {\\n          return;\\n        }\\n\\n        float height_scale = \"+y+\";\\n        float width_scale = \"+C+\";\\n\\n        float in_y = \"+x+\";\\n        if( in_y < 0.0 || in_y > \"+p+\" ) {\\n          setOutput(float(\"+o+\"));\\n          return;\\n        }\\n        float in_x = \"+E+\";\\n        if( in_x < 0.0 || in_x > \"+v+\" ) {\\n          setOutput(float(\"+o+\"));\\n          return;\\n        }\\n\\n        vec2 sourceFracIndexCR = vec2(in_x,in_y);\\n        if(\"+f+\" == 1) {\\n          // Compute the four integer indices.\\n          ivec2 sourceFloorCR = ivec2(sourceFracIndexCR);\\n          ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR));\\n\\n          float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d);\\n          float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d);\\n          float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d);\\n          float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d);\\n\\n          vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR);\\n\\n          float top = topLeft + (topRight - topLeft) * fracCR.x;\\n          float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x;\\n          float newValue = top + (bottom - top) * fracCR.y;\\n          setOutput(newValue);\\n        } else {\\n          // Compute the coordinators of nearest neighbor point.\\n          ivec2 sourceNearestCR = ivec2(floor(\\n            sourceFracIndexCR + vec2(0.5,0.5)));\\n          float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d);\\n          setOutput(newValue);\\n        }\\n      }\\n    \"},ni=function(t,e,n){this.variableNames=[\"x\"],this.outputShape=t;var r=t.length,o=t[t.length-1],a=n?\"<\":\">\";this.userCode=\"\\n      int getIndex(int i) {\\n        \"+(n?\"return \"+o+\" -i - 1;\":\"return i;\")+\"\\n      }\\n\\n      void main() {\\n        \"+wa(r)+\" coords = getOutputCoords();\\n        int end = \"+ri(r,\"coords\")+\";\\n        float val = 0.0;\\n        for (int i = \"+o+\" - 1; i >= 0; i -= 1) {\\n          int idx = getIndex(i);\\n          if (idx \"+a+\" end) {\\n            continue;\\n          }\\n          if (idx == end && \"+e+\") {\\n            continue;\\n          }\\n          \"+ri(r,\"coords\")+\" = idx;\\n          val += getX(\"+function(t,e){if(1===t)return\"\"+e;if(2===t)return e+\".x, \"+e+\".y\";if(3===t)return e+\".x, \"+e+\".y, \"+e+\".z\";if(4===t)return e+\".x, \"+e+\".y, \"+e+\".z, \"+e+\".w\";throw Error(\"Cumulative sum for rank \"+t+\" is not yet supported\")}(r,\"coords\")+\");\\n        }\\n        setOutput(val);\\n      }\\n    \"};function ri(t,e){if(1===t)return\"\"+e;if(2===t)return e+\".y\";if(3===t)return e+\".z\";if(4===t)return e+\".w\";throw Error(\"Cumulative sum for rank \"+t+\" is not yet supported\")}var oi=function(t){this.variableNames=[\"A\"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=Vt.DENSE;var e=Yt(t),n=ua();this.outputShape=t,this.userCode=\"\\n      ivec3 outCoordsFromFlatIndex(int index) {\\n        \"+ca([\"r\",\"c\",\"d\"],t)+\"\\n        return ivec3(r, c, d);\\n      }\\n\\n      void main() {\\n        ivec2 resTexRC = ivec2(resultUV.yx *\\n          vec2(\"+e[0]+\", \"+e[1]+\"));\\n        int index = 4 * (resTexRC.x * \"+e[1]+\" + resTexRC.y);\\n\\n        vec4 result = vec4(0.);\\n\\n        for (int i=0; i<4; i++) {\\n          int flatIndex = index + i;\\n          ivec3 rc = outCoordsFromFlatIndex(flatIndex);\\n          result[i] = getA(rc.x, rc.y, rc.z);\\n        }\\n\\n        \"+n.output+\" = result;\\n      }\\n    \"},ai=function(t){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=Vt.DENSE;var e=Yt(t),n=ua();this.outputShape=t,this.userCode=\"\\n      ivec3 outCoordsFromFlatIndex(int index) {\\n        \"+ca([\"r\",\"c\",\"d\"],t)+\"\\n        return ivec3(r, c, d);\\n      }\\n\\n      void main() {\\n        ivec2 resTexRC = ivec2(resultUV.yx *\\n          vec2(\"+e[0]+\", \"+e[1]+\"));\\n        int index = 4 * (resTexRC.x * \"+e[1]+\" + resTexRC.y);\\n\\n        vec4 result = vec4(0.);\\n\\n        for (int i=0; i<4; i++) {\\n          int flatIndex = index + i;\\n          ivec3 rc = outCoordsFromFlatIndex(flatIndex);\\n          result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z));\\n        }\\n\\n        \"+n.output+\" = result;\\n      }\\n    \"},ii=function(){function t(t,e,n){this.variableNames=[\"x\"],this.outputShape=[],this.outputShape=t,this.blockSize=e,this.dataFormat=n,this.userCode=\"\\n    void main() {\\n      ivec4 coords = getOutputCoords();\\n      int b = coords[0];\\n      int h = \"+this.getHeightCoordString()+\";\\n      int w = \"+this.getWidthCoordString()+\";\\n      int d = \"+this.getDepthCoordString()+\";\\n\\n      int in_h = h / \"+e+\";\\n      int offset_h = imod(h, \"+e+\");\\n      int in_w = w / \"+e+\";\\n      int offset_w = imod(w, \"+e+\");\\n      int offset_d = (offset_h * \"+e+\" + offset_w) *\\n        \"+this.getOutputDepthSize()+\";\\n      int in_d = d + offset_d;\\n\\n      float result = \"+this.getInputSamplingString()+\";\\n      setOutput(result);\\n    }\\n  \"}return t.prototype.getHeightCoordString=function(){return\"NHWC\"===this.dataFormat?\"coords[1]\":\"coords[2]\"},t.prototype.getWidthCoordString=function(){return\"NHWC\"===this.dataFormat?\"coords[2]\":\"coords[3]\"},t.prototype.getDepthCoordString=function(){return\"NHWC\"===this.dataFormat?\"coords[3]\":\"coords[1]\"},t.prototype.getOutputDepthSize=function(){return\"NHWC\"===this.dataFormat?this.outputShape[3]:this.outputShape[1]},t.prototype.getInputSamplingString=function(){return\"NHWC\"===this.dataFormat?\"getX(b, in_h, in_w, in_d)\":\"getX(b, in_d, in_h, in_w)\"},t}(),si=function(t){this.variableNames=[\"X\"],this.outputShape=[t,t],this.userCode=\"\\n      void main() {\\n          ivec2 coords = getOutputCoords();\\n          float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0;\\n          setOutput(val);\\n      }\\n    \"},ui=function(t){this.variableNames=[\"A\"],this.outTexUsage=zt.DOWNLOAD;var e=ua();this.outputShape=t,this.userCode=\"\\n      \"+ha+\"\\n\\n      void main() {\\n        float x = getAAtOutCoords();\\n        \"+e.output+\" = encode_float(x);\\n      }\\n    \"},ci=function(t){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=zt.DOWNLOAD;var e=ua();this.outputShape=t,this.userCode=\"\\n      \"+ha+\"\\n\\n      void main() {\\n        ivec3 coords = getOutputCoords();\\n        float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z));\\n        \"+e.output+\" = encode_float(x);\\n      }\\n    \"},li=function(t,e,n){void 0===n&&(n=!1),this.variableNames=[\"A\"];var r=ua(),o=e[0],a=e[1];this.outputShape=t;var i=\"result\";n&&(i=\"floor(result * 255. + 0.5)\"),this.userCode=\"\\n      \"+la(t)+\"\\n\\n      void main() {\\n        ivec3 coords = getOutputCoords();\\n\\n        int flatIndex = getFlatIndex(coords);\\n        int offset = imod(flatIndex, 4);\\n\\n        flatIndex = idiv(flatIndex, 4, 1.);\\n        \\n        int r = flatIndex / \"+a+\";\\n        int c = imod(flatIndex, \"+a+\");\\n        vec2 uv = (vec2(c, r) + halfCR) / vec2(\"+a+\".0, \"+o+\".0);\\n        vec4 values = \"+r.texture2D+\"(A, uv);\\n\\n        float result;\\n\\n        if(offset == 0) {\\n          result = values[0];\\n        } else if(offset == 1) {\\n          result = values[1];\\n        } else if(offset == 2) {\\n          result = values[2];\\n        } else {\\n          result = values[3];\\n        }\\n\\n        \"+r.output+\" = vec4(\"+i+\", 0., 0., 0.);\\n      }\\n    \"},hi=function(t,e,n){void 0===n&&(n=!1),this.variableNames=[\"A\"],this.packedInputs=!1,this.packedOutput=!0;var r=ua(),o=e[0],a=e[1];this.outputShape=t;var i=\"\",s=\"result\";n&&(s=\"floor(result * 255. + 0.5)\");for(var u=0;u<=1;u++)for(var c=0;c<=1;c++){var l=2*u+c;i+=\"\\n          localCoords = coords;\\n          if(localCoords[2] + \"+c+\" < \"+t[2]+\") {\\n            localCoords[2] += \"+c+\";\\n            if(localCoords[1] + \"+u+\" < \"+t[1]+\") {\\n              localCoords[1] += \"+u+\";\\n\\n              flatIndex = getFlatIndex(localCoords);\\n              offset = imod(flatIndex, 4);\\n\\n              flatIndex = idiv(flatIndex, 4, 1.);\\n\\n              r = flatIndex / \"+a+\";\\n              c = imod(flatIndex, \"+a+\");\\n              uv = (vec2(c, r) + halfCR) / vec2(\"+a+\".0, \"+o+\".0);\\n              values = \"+r.texture2D+\"(A, uv);\\n\\n              if(offset == 0) {\\n                result[\"+l+\"] = values[0];\\n              } else if(offset == 1) {\\n                result[\"+l+\"] = values[1];\\n              } else if(offset == 2) {\\n                result[\"+l+\"] = values[2];\\n              } else {\\n                result[\"+l+\"] = values[3];\\n              }\\n            }\\n          }\\n        \"}this.userCode=\"\\n      \"+la(t)+\"\\n\\n      void main() {\\n        ivec3 coords = getOutputCoords();\\n\\n        vec4 result = vec4(0.);\\n        int flatIndex, r, c, offset;\\n        ivec3 localCoords;\\n        vec2 uv;\\n        vec4 values;\\n\\n        \"+i+\"\\n\\n        \"+r.output+\" = \"+s+\";\\n      }\\n    \"},fi=\"return real * expR - imag * expI;\",di=\"return real * expI + imag * expR;\",pi=function(t,e,n){this.variableNames=[\"real\",\"imag\"];var r=e[1];this.outputShape=e;var o=n?\"2.0 * \"+Math.PI:\"-2.0 * \"+Math.PI,a=n?r+\".0\":\"1.0\";this.userCode=\"\\n      const float exponentMultiplier = \"+o+\";\\n\\n      float unaryOpComplex(float real, float expR, float imag, float expI) {\\n        \"+t+\"\\n      }\\n\\n      float mulMatDFT(int batch, int index) {\\n        float indexRatio = float(index) / float(\"+r+\");\\n        float exponentMultiplierTimesIndexRatio =\\n            exponentMultiplier * indexRatio;\\n\\n        float result = 0.0;\\n\\n        for (int i = 0; i < \"+r+\"; i++) {\\n          // x = (-2|2 * PI / N) * index * i;\\n          float x = exponentMultiplierTimesIndexRatio * float(i);\\n          float expR = cos(x);\\n          float expI = sin(x);\\n          float real = getReal(batch, i);\\n          float imag = getImag(batch, i);\\n\\n          result +=\\n              unaryOpComplex(real, expR, imag, expI) / \"+a+\";\\n        }\\n\\n        return result;\\n      }\\n\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        setOutput(mulMatDFT(coords[0], coords[1]));\\n      }\\n    \"},vi=function(){function t(t,e){this.outputShape=[],this.variableNames=[\"x\"],this.outputShape=t,this.userCode=\"\\n      uniform float value;\\n      void main() {\\n        // Input can be obtained from uniform value.\\n        setOutput(value);\\n      }\\n    \"}return t.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,r){null==e.valueLoc&&(e.valueLoc=n.getUniformLocationNoThrow(r,\"value\")),n.gl.uniform1f(e.valueLoc,t)}},t}(),mi=function(t,e,n){this.variableNames=[\"A\",\"indices\"];var r=t.slice();r[n]=e,this.outputShape=r,this.rank=r.length;var o=wa(this.rank),a=function(t,e){var n=t.length;if(n>4)throw Error(\"Gather for rank \"+n+\" is not yet supported\");if(1===n)return\"int(getIndices(resRC))\";for(var r=[\"resRC.x\",\"resRC.y\",\"resRC.z\",\"resRC.w\"],o=[],a=0;a<t.length;a++)a===e?o.push(\"int(getIndices(\"+r[a]+\"))\"):o.push(\"\"+r[a]);return o.join()}(t,n);this.userCode=\"\\n      void main() {\\n        \"+o+\" resRC = getOutputCoords();\\n        setOutput(getA(\"+a+\"));\\n      }\\n    \"};var gi=function(t,e,n){this.sliceDim=t,this.strides=e,this.variableNames=[\"x\",\"indices\"],this.outputShape=n;var r=wa(e.length),o=wa(n.length),a=this.sliceDim>1?\"strides[j]\":\"strides\";this.userCode=\"\\n        \"+r+\" strides = \"+r+\"(\"+this.strides+\");\\n         void main() {\\n          \"+o+\" coords = getOutputCoords();\\n          int flattenIndex = 0;\\n          for (int j = 0; j < \"+this.sliceDim+\"; j++) {\\n            int index = round(getIndices(coords[0], j));\\n            flattenIndex += index * \"+a+\";\\n          }\\n          setOutput(getX(flattenIndex, coords[1]));\\n        }\\n      \"};function yi(t,e){var n=ua();return oe(t,e,n.version+\"\\n    precision highp float;\\n    \"+n.attribute+\" vec3 clipSpacePos;\\n    \"+n.attribute+\" vec2 uv;\\n    \"+n.varyingVs+\" vec2 resultUV;\\n\\n    void main() {\\n      gl_Position = vec4(clipSpacePos, 1);\\n      resultUV = uv;\\n    }\")}function xi(t,e){return fe(t,e,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function bi(t,e){return de(t,e,new Uint16Array([0,1,2,2,1,3]))}function wi(t,e,n,r,o,a,i){ve(n,r);var s=pe(t,e),u=t.TEXTURE_2D;return Jt(t,e,(function(){return t.bindTexture(u,s)})),Jt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE)})),Jt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)})),Jt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_MIN_FILTER,t.NEAREST)})),Jt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_MAG_FILTER,t.NEAREST)})),Jt(t,e,(function(){return t.texImage2D(u,0,o,n,r,0,a,i,null)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)})),s}function Ci(t,e,n,r,o){var a=Xt(n,r);return wi(t,e,a[0],a[1],o.internalFormatFloat,o.textureFormatFloat,t.FLOAT)}function Ei(t,e,n,r,o){var a=Xt(n,r);return wi(t,e,a[0],a[1],o.internalFormatHalfFloat,o.textureFormatFloat,o.textureTypeHalfFloat)}function Ri(t,e,n,r,o){var a=Xt(n,r);return wi(t,e,a[0],a[1],t.RGBA,t.RGBA,t.UNSIGNED_BYTE)}function Ii(t,e,n,r,o){var a=$t(n,r);return wi(t,e,a[0],a[1],o.internalFormatPackedFloat,t.RGBA,t.FLOAT)}function ki(t,e,n,r,o){var a=$t(n,r);return wi(t,e,a[0],a[1],o.internalFormatPackedHalfFloat,t.RGBA,o.textureTypeHalfFloat)}function Si(t,e,n,r){return Jt(t,e,(function(){return t.bindBuffer(t.ARRAY_BUFFER,r)})),ge(t,e,n,\"clipSpacePos\",r,3,20,0)&&ge(t,e,n,\"uv\",r,2,20,12)}function Ai(t,e,n,r,o,a,i){var s,u,c;Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)})),a instanceof Uint8Array?(s=new Uint8Array(r*o*4),u=t.UNSIGNED_BYTE,c=t.RGBA):(s=new Float32Array(r*o*4),u=t.FLOAT,c=i.internalFormatPackedFloat),s.set(a),Jt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,c,r,o,0,t.RGBA,u,s)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}))}function Di(t,e,n,r){Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)})),r.data instanceof Uint8Array?Jt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,r.width,r.height,0,t.RGBA,t.UNSIGNED_BYTE,r.data)})):Jt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}))}function Ti(t,e,n,r,o){var a=t.createBuffer();Jt(t,e,(function(){return t.bindBuffer(t.PIXEL_PACK_BUFFER,a)}));var i=16*n*r;return Jt(t,e,(function(){return t.bufferData(t.PIXEL_PACK_BUFFER,i,t.STREAM_READ)})),Jt(t,e,(function(){return t.readPixels(0,0,r,n,t.RGBA,t.FLOAT,0)})),Jt(t,e,(function(){return t.bindBuffer(t.PIXEL_PACK_BUFFER,null)})),a}function Ni(t,e,n){var r=t,o=new Float32Array(n);return r.bindBuffer(r.PIXEL_PACK_BUFFER,e),r.getBufferSubData(r.PIXEL_PACK_BUFFER,0,o),r.bindBuffer(r.PIXEL_PACK_BUFFER,null),o}function Fi(t,e,n,r,o){var a=Xt(n,r),i=a[0],s=a[1],u=new Uint8Array(n*r*4);return Jt(t,e,(function(){return t.readPixels(0,0,i,s,o.downloadTextureFormat,t.UNSIGNED_BYTE,u)})),new Float32Array(u.buffer)}function _i(t,e,n,r,o,a,i,s){var u=t,c=new Float32Array(function(t,e){var n=$t(t,e);return n[0]*n[1]*4}(a,i));return u.bindBuffer(u.PIXEL_PACK_BUFFER,e),u.getBufferSubData(u.PIXEL_PACK_BUFFER,0,c),u.bindBuffer(u.PIXEL_PACK_BUFFER,null),c}function Oi(t,e,n,r){var o=new Float32Array(n*r*4);return Jt(t,e,(function(){return t.readPixels(0,0,r,n,t.RGBA,t.FLOAT,o)})),o}var Mi=Object.freeze({createVertexShader:yi,createVertexBuffer:xi,createIndexBuffer:bi,createFloat32MatrixTexture:Ci,createFloat16MatrixTexture:Ei,createUnsignedBytesMatrixTexture:Ri,createPackedMatrixTexture:Ii,createFloat16PackedMatrixTexture:ki,bindVertexProgramAttributeStreams:Si,uploadDenseMatrixToTexture:Ai,uploadPixelDataToTexture:Di,createBufferFromOutputTexture:Ti,downloadFloat32MatrixFromBuffer:Ni,downloadByteEncodedFloatMatrixFromOutputTexture:Fi,downloadPackedMatrixFromBuffer:_i,downloadMatrixFromPackedOutputTexture:Oi}),Bi=function(){function t(t){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];var e=i().getNumber(\"WEBGL_VERSION\");null!=t?(this.gl=t,Kt(e,t)):this.gl=jt(e);var n=\"WEBGL_color_buffer_float\";if(1===i().getNumber(\"WEBGL_VERSION\")){if(this.textureFloatExtension=re(this.gl,this.debug,\"OES_texture_float\"),Pe(this.gl,\"OES_texture_half_float\"))this.textureHalfFloatExtension=re(this.gl,this.debug,\"OES_texture_half_float\");else if(i().get(\"WEBGL_FORCE_F16_TEXTURES\"))throw new Error(\"GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.\");if(this.colorBufferFloatExtension=this.gl.getExtension(n),Pe(this.gl,\"EXT_color_buffer_half_float\"))this.colorBufferHalfFloatExtension=re(this.gl,this.debug,\"EXT_color_buffer_half_float\");else if(i().get(\"WEBGL_FORCE_F16_TEXTURES\"))throw new Error(\"GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.\")}else if(n=\"EXT_color_buffer_float\",Pe(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else{if(!Pe(this.gl,\"EXT_color_buffer_half_float\"))throw new Error(\"GL context does not support color renderable floats\");this.colorBufferHalfFloatExtension=this.gl.getExtension(\"EXT_color_buffer_half_float\")}this.vertexBuffer=xi(this.gl,this.debug),this.indexBuffer=bi(this.gl,this.debug),this.framebuffer=me(this.gl,this.debug),this.textureConfig=Qt(this.gl,this.textureHalfFloatExtension)}return Object.defineProperty(t.prototype,\"debug\",{get:function(){return i().getBool(\"DEBUG\")},enumerable:!0,configurable:!0}),t.prototype.dispose=function(){var t=this;if(!this.disposed){null!=this.program&&console.warn(\"Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing.\"),null!=this.outputTexture&&console.warn(\"Disposing a GPGPUContext that still has a bound output matrix texture.  This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.\");var e=this.gl;Jt(e,this.debug,(function(){return e.finish()})),Jt(e,this.debug,(function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)})),Jt(e,this.debug,(function(){return e.deleteFramebuffer(t.framebuffer)})),Jt(e,this.debug,(function(){return e.bindBuffer(e.ARRAY_BUFFER,null)})),Jt(e,this.debug,(function(){return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)})),Jt(e,this.debug,(function(){return e.deleteBuffer(t.indexBuffer)})),this.disposed=!0}},t.prototype.createFloat32MatrixTexture=function(t,e){return this.throwIfDisposed(),Ci(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createFloat16MatrixTexture=function(t,e){return this.throwIfDisposed(),Ei(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createUnsignedBytesMatrixTexture=function(t,e){return this.throwIfDisposed(),Ri(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.uploadPixelDataToTexture=function(t,e){this.throwIfDisposed(),Di(this.gl,this.debug,t,e)},t.prototype.uploadDenseMatrixToTexture=function(t,e,n,r){this.throwIfDisposed(),Ai(this.gl,this.debug,t,e,n,r,this.textureConfig)},t.prototype.createFloat16PackedMatrixTexture=function(t,e){return this.throwIfDisposed(),ki(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createPackedMatrixTexture=function(t,e){return this.throwIfDisposed(),Ii(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.deleteMatrixTexture=function(t){var e=this;this.throwIfDisposed(),this.outputTexture===t&&(Ee(this.gl,this.debug,this.framebuffer),this.outputTexture=null),Jt(this.gl,this.debug,(function(){return e.gl.deleteTexture(t)}))},t.prototype.downloadByteEncodedFloatMatrixFromOutputTexture=function(t,e,n){var r=this;return this.downloadMatrixDriver(t,(function(){return Fi(r.gl,r.debug,e,n,r.textureConfig)}))},t.prototype.downloadPackedMatrixFromBuffer=function(t,e,n,r,o,a){return _i(this.gl,t,0,0,0,o,a,this.textureConfig)},t.prototype.downloadFloat32MatrixFromBuffer=function(t,e){return Ni(this.gl,t,e)},t.prototype.createBufferFromTexture=function(t,e,n){this.bindTextureToFrameBuffer(t);var r=Ti(this.gl,this.debug,e,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),r},t.prototype.createAndWaitForFence=function(){var t=this.createFence(this.gl);return this.pollFence(t)},t.prototype.createFence=function(t){var e,n,r=this;if(i().getBool(\"WEBGL_FENCE_API_ENABLED\")){var o=t,a=o.fenceSync(o.SYNC_GPU_COMMANDS_COMPLETE,0);t.flush(),n=function(){var t=o.clientWaitSync(a,0,0);return t===o.ALREADY_SIGNALED||t===o.CONDITION_SATISFIED},e=a}else i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\")>0?(e=this.beginQuery(),this.endQuery(),n=function(){return r.isQueryAvailable(e,i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\"))}):n=function(){return!0};return{query:e,isFencePassed:n}},t.prototype.downloadMatrixFromPackedTexture=function(t,e,n){var r=this;return this.downloadMatrixDriver(t,(function(){return Oi(r.gl,r.debug,e,n)}))},t.prototype.createProgram=function(t){this.throwIfDisposed();var e=this.gl,n=ae(e,this.debug,t),r=yi(e,this.debug),o=ce(e,this.debug);return Jt(e,this.debug,(function(){return e.attachShader(o,r)})),Jt(e,this.debug,(function(){return e.attachShader(o,n)})),le(e,this.debug,o),this.debug&&he(e,this.debug,o),this.vertexAttrsAreBound||(this.setProgram(o),this.vertexAttrsAreBound=Si(e,this.debug,this.program,this.vertexBuffer)),o},t.prototype.deleteProgram=function(t){var e=this;this.throwIfDisposed(),t===this.program&&(this.program=null),null!=t&&Jt(this.gl,this.debug,(function(){return e.gl.deleteProgram(t)}))},t.prototype.setProgram=function(t){var e=this;this.throwIfDisposed(),this.program=t,null!=this.program&&this.debug&&he(this.gl,this.debug,this.program),Jt(this.gl,this.debug,(function(){return e.gl.useProgram(t)}))},t.prototype.getUniformLocation=function(t,e,n){return void 0===n&&(n=!0),this.throwIfDisposed(),n?xe(this.gl,this.debug,t,e):be(this.gl,t,e)},t.prototype.getAttributeLocation=function(t,e){var n=this;return this.throwIfDisposed(),Jt(this.gl,this.debug,(function(){return n.gl.getAttribLocation(t,e)}))},t.prototype.getUniformLocationNoThrow=function(t,e){return this.throwIfDisposed(),this.gl.getUniformLocation(t,e)},t.prototype.setInputMatrixTexture=function(t,e,n){this.throwIfDisposed(),this.throwIfNoProgram(),we(this.gl,this.debug,this.program,t,e,n)},t.prototype.setOutputMatrixTexture=function(t,e,n){this.setOutputMatrixTextureDriver(t,n,e)},t.prototype.setOutputPackedMatrixTexture=function(t,e,n){this.throwIfDisposed();var r=$t(e,n),o=r[0],a=r[1];this.setOutputMatrixTextureDriver(t,o,a)},t.prototype.setOutputMatrixWriteRegion=function(t,e,n,r){this.setOutputMatrixWriteRegionDriver(n,t,r,e)},t.prototype.setOutputPackedMatrixWriteRegion=function(t,e,n,r){throw new Error(\"setOutputPackedMatrixWriteRegion not implemented.\")},t.prototype.debugValidate=function(){null!=this.program&&he(this.gl,this.debug,this.program),Re(this.gl)},t.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var t=this.gl;this.debug&&this.debugValidate(),Jt(t,this.debug,(function(){return t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0)}))},t.prototype.blockUntilAllProgramsCompleted=function(){var t=this;this.throwIfDisposed(),Jt(this.gl,this.debug,(function(){return t.gl.finish()}))},t.prototype.getQueryTimerExtension=function(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=re(this.gl,this.debug,2===i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\")?\"EXT_disjoint_timer_query_webgl2\":\"EXT_disjoint_timer_query\")),this.disjointQueryTimerExtension},t.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},t.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},t.prototype.beginQuery=function(){if(2===i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\")){var t=this.gl,e=this.getQueryTimerExtensionWebGL2(),n=t.createQuery();return t.beginQuery(e.TIME_ELAPSED_EXT,n),n}var r=this.getQueryTimerExtensionWebGL1(),o=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,o),o},t.prototype.endQuery=function(){if(2!==i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\")){var t=this.getQueryTimerExtensionWebGL1();t.endQueryEXT(t.TIME_ELAPSED_EXT)}else{var e=this.gl,n=this.getQueryTimerExtensionWebGL2();e.endQuery(n.TIME_ELAPSED_EXT)}},t.prototype.waitForQueryAndGetTime=function(t){return n(this,void 0,void 0,(function(){var e=this;return r(this,(function(n){switch(n.label){case 0:return[4,F((function(){return e.disposed||e.isQueryAvailable(t,i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\"))}))];case 1:return n.sent(),[2,this.getQueryTime(t,i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\"))]}}))}))},t.prototype.getQueryTime=function(t,e){if(0===e)return null;if(2===e){var n=this.gl;return n.getQueryParameter(t,n.QUERY_RESULT)/1e6}var r=this.getQueryTimerExtensionWebGL1();return r.getQueryObjectEXT(t,r.QUERY_RESULT_EXT)/1e6},t.prototype.isQueryAvailable=function(t,e){if(0===e)return!0;if(2===e){var n=this.gl,r=this.getQueryTimerExtensionWebGL2(),o=n.getQueryParameter(t,n.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),o&&!this.disjoint}o=(r=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(t,r.QUERY_RESULT_AVAILABLE_EXT);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),o&&!this.disjoint},t.prototype.pollFence=function(t){var e=this;return new Promise((function(n){e.addItemToPoll((function(){return t.isFencePassed()}),(function(){return n()}))}))},t.prototype.pollItems=function(){for(var t=function(t){for(var e=0;e<t.length;++e){if(!t[e]())break}return e-1}(this.itemsToPoll.map((function(t){return t.isDoneFn}))),e=0;e<=t;++e){(0,this.itemsToPoll[e].resolveFn)()}this.itemsToPoll=this.itemsToPoll.slice(t+1)},t.prototype.addItemToPoll=function(t,e){var n=this;this.itemsToPoll.push({isDoneFn:t,resolveFn:e}),this.itemsToPoll.length>1||F((function(){return n.pollItems(),0===n.itemsToPoll.length}))},t.prototype.bindTextureToFrameBuffer=function(t){this.throwIfDisposed(),Ce(this.gl,this.debug,t,this.framebuffer),this.debug&&Re(this.gl)},t.prototype.unbindTextureToFrameBuffer=function(){null!=this.outputTexture?(Ce(this.gl,this.debug,this.outputTexture,this.framebuffer),this.debug&&Re(this.gl)):Ee(this.gl,this.debug,this.framebuffer)},t.prototype.downloadMatrixDriver=function(t,e){this.bindTextureToFrameBuffer(t);var n=e();return this.unbindTextureToFrameBuffer(),n},t.prototype.setOutputMatrixTextureDriver=function(t,e,n){this.throwIfDisposed();var r=this.gl;Ce(r,this.debug,t,this.framebuffer),this.debug&&Re(r),this.outputTexture=t,Jt(r,this.debug,(function(){return r.viewport(0,0,e,n)})),Jt(r,this.debug,(function(){return r.scissor(0,0,e,n)}))},t.prototype.setOutputMatrixWriteRegionDriver=function(t,e,n,r){var o=this;this.throwIfDisposed(),Jt(this.gl,this.debug,(function(){return o.gl.scissor(t,e,n,r)}))},t.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error(\"Attempted to use disposed GPGPUContext.\")},t.prototype.throwIfNoProgram=function(){if(null==this.program)throw new Error(\"No GPU program is currently set.\")},t}();function Pi(t,e){if(t.length!==e.length)throw Error(\"Binary was compiled with \"+t.length+\" inputs, but was executed with \"+e.length+\" inputs\");t.forEach((function(t,n){var r=t.logicalShape,o=e[n],a=o.shape;if(!S(r,a))throw Error(\"Binary was compiled with different shapes than the current args. Shapes \"+r+\" and \"+a+\" must match\");if(!t.isUniform||!o.isUniform){var i=t.texShape,s=o.isUniform?null:o.texData.texShape;if(!S(i,s))throw Error(\"Binary was compiled with different texture shapes than the current args. Shape \"+i+\" and \"+s+\" must match\")}}))}var Li=function(t,e,n){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;for(var r=n.filterWidth,o=n.inChannels,a=n.strideWidth,i=n.strideHeight,s=n.padInfo,u=n.outWidth,c=n.dilationWidth,l=n.dilationHeight,h=n.dataFormat,f=s.left,d=s.top,p=o*r,v=ua(),m=\"channelsLast\"===h,g=m?0:1,y=m?1:2,x=\"\",b=0;b<=1;b++)for(var w=0;w<=1;w++)x+=\"\\n          blockIndex = rc.y + \"+w+\";\\n          pos = rc.x + \"+b+\";\\n\\n          if(blockIndex < \"+t[1]+\" && pos < \"+t[0]+\") {\\n            offsetY = int(blockIndex / (\"+u+\")) * \"+i+\" - \"+d+\";\\n            d0 = offsetY + \"+l+\" * (pos / \"+p+\");\\n\\n            if(d0 < \"+e[g]+\" && d0 >= 0) {\\n\\n              offsetX = int(mod(float(blockIndex), \"+u+\".) * \"+a+\". - \"+f+\".);\\n              d1 = offsetX + \"+c+\" * (int(mod(float(pos), \"+p+\".) / \"+o+\".));\\n\\n              if(d1 < \"+e[y]+\" && d1 >= 0) {\\n\\n                ch = int(mod(float(pos), \"+o+\".));\\n\\n                if (\"+m+\") {\\n                  innerDims = vec2(d1, ch);\\n                  result[\"+(2*b+w)+\"] = getChannel(\\n                    getA(d0, int(innerDims.x),\\n                    int(innerDims.y)), innerDims);\\n                } else {\\n                  innerDims = vec2(d0, d1);\\n                  result[\"+(2*b+w)+\"] = getChannel(\\n                    getA(ch, int(innerDims.x),\\n                    int(innerDims.y)), innerDims);\\n                }\\n              }\\n            }\\n          }\\n        \";this.userCode=\"\\n      void main() {\\n        ivec2 rc = getOutputCoords();\\n\\n        vec4 result = vec4(0);\\n\\n        int blockIndex, pos, offsetY, d0, offsetX, d1, ch;\\n        vec2 innerDims;\\n\\n        \"+x+\"\\n\\n        \"+v.output+\" = result;\\n      }\\n    \"},Wi=function(t,e,n,r,o){this.variableNames=[\"x\"],this.outputShape=[];var a,i=e,s=t[3]-1;this.outputShape=t;var u=\"float(\"+n+\") + float(\"+r+\") * sum\";a=.5===o?\"inversesqrt(\"+u+\")\":1===o?\"1.0/(\"+u+\")\":\"exp(log(\"+u+\") * float(-\"+o+\"));\",this.userCode=\"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int r = coords[1];\\n        int c = coords[2];\\n        int d = coords[3];\\n        float x = getX(b, r, c, d);\\n        float sum = 0.0;\\n        for (int j = -\"+i+\"; j <= \"+i+\"; j++) {\\n          int idx = d + j;\\n          if (idx >= 0 && idx <=  \"+s+\") {\\n            float z = getX(b, r, c, idx);\\n            sum += z * z;\\n          }\\n        }\\n        float val = x * \"+a+\";\\n        setOutput(val);\\n      }\\n    \"},Ui=function(t,e,n,r,o){this.variableNames=[\"inputImage\",\"outputImage\",\"dy\"],this.outputShape=[],this.outputShape=t,this.depth=t[3],this.depthRadius=e,this.bias=n,this.alpha=r,this.beta=o,this.userCode=\"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int r = coords[1];\\n        int c = coords[2];\\n\\n        float result = 0.0;\\n        for (int d = 0; d < \"+this.depth+\"; ++d) {\\n          int depthBegin = int(max(0.0, float(d - \"+e+\")));\\n          int depthEnd = int(min(float(\"+this.depth+\"),\\n              float(d + \"+e+\" + 1)));\\n\\n          const int MIN_DEPTH_BEGIN = 0;\\n          const int MAX_DEPTH_END = \"+this.depth+\";\\n\\n          float norm = 0.0;\\n          for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\\n            if (k < depthBegin){\\n              continue;\\n            }\\n            else if (k >= depthBegin && k < depthEnd) {\\n              norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\\n            }\\n            else {\\n              break;\\n            }\\n          }\\n\\n          norm = float(\"+r+\") * norm + float(\"+n+\");\\n\\n          for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\\n            if (k < depthBegin){\\n              continue;\\n            }\\n            else if (k >= depthBegin && k < depthEnd){\\n              float dyi = -2.0 * float(\"+r+\")\\n                * float(\"+o+\")\\n                * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)\\n                / norm;\\n              if (k == d) {\\n                dyi += pow(norm, -1.0 * \"+o+\");\\n              }\\n              if (k == coords[3]) {\\n                dyi *= getDy(b, r, c, d);\\n                result += dyi;\\n              }\\n            }\\n            else {\\n              break;\\n            }\\n          }\\n      }\\n      setOutput(result);\\n      }\\n    \"},Vi=function(t,e,n,r,o){this.variableNames=[\"x\"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;var a,i=e,s=t[3]-1;this.outputShape=t;var u=\"float(\"+n+\") + float(\"+r+\") * sum\";a=.5===o?\"inversesqrt(\"+u+\")\":1===o?\"1.0/(\"+u+\")\":\"exp(log(\"+u+\") * float(-\"+o+\"));\",this.userCode=\"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords.x;\\n        int r = coords.y;\\n        int c = coords.z;\\n        int d = coords.w;\\n\\n        bool hasNextCol = d < \"+this.outputShape[3]+\";\\n        bool hasNextRow = c < \"+this.outputShape[2]+\";\\n\\n        vec4 sum = vec4(0.);\\n        vec4 xFragAtOutputCoords = getX(b, r, c, d);\\n\\n        vec4 xAtOutputCoords = vec4(\\n          getChannel(xFragAtOutputCoords, vec2(c, d)),\\n          hasNextCol ?\\n            getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0,\\n          hasNextRow ?\\n            getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0,\\n          (hasNextRow && hasNextCol) ?\\n            getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0\\n        );\\n\\n        int firstChannel = d - \"+i+\";\\n        vec2 cache = vec2(0.);\\n        if(firstChannel >= 0){\\n          vec4 firstChannelFrag = getX(b, r, c, firstChannel);\\n          cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel));\\n            if(hasNextRow){\\n              cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel));\\n            }\\n        }\\n\\n        ivec2 depth = ivec2(d, d + 1);\\n        for (int j = - \"+i+\"; j <= \"+i+\"; j++) {\\n          ivec2 idx = depth + j;\\n          bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0));\\n          bvec2 belowUpperBound = lessThanEqual(idx, ivec2(\"+s+\"));\\n\\n          bool depthInRange = aboveLowerBound.x && belowUpperBound.x;\\n          bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y;\\n\\n          if(depthInRange || depthPlusOneInRange){\\n            vec4 z = vec4(0.);\\n            vec4 xFragAtCurrentDepth;\\n            z.xz = cache.xy;\\n            if(depthPlusOneInRange && hasNextCol){\\n              xFragAtCurrentDepth = idx.y != d ?\\n                getX(b, r, c, idx.y) : xFragAtOutputCoords;\\n              z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y));\\n              if(hasNextRow){\\n                z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y));\\n              }\\n            }\\n            cache.xy = z.yw;\\n            sum += z * z;\\n          }\\n        }\\n        vec4 result = xAtOutputCoords * \"+a+\";\\n        setOutput(result);\\n      }\\n    \"},zi=function(t){this.variableNames=[\"dy\",\"maxPos\"],this.outputShape=t.inShape;var e=t.strideHeight,n=t.strideWidth,r=t.dilationHeight,o=t.effectiveFilterHeight,a=t.effectiveFilterWidth,i=o-1-t.padInfo.top,s=a-1-t.padInfo.left,u=o*a-1;this.userCode=\"\\n      const ivec2 pads = ivec2(\"+i+\", \"+s+\");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n\\n        ivec2 dyRCCorner = coords.yz - pads;\\n        int dyRCorner = dyRCCorner.x;\\n        int dyCCorner = dyRCCorner.y;\\n\\n        // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        for (int wR = 0; wR < \"+o+\";\\n          wR += \"+r+\") {\\n          float dyR = float(dyRCorner + wR) / \"+e+\".0;\\n\\n          if (dyR < 0.0 || dyR >= \"+t.outHeight+\".0 || fract(dyR) > 0.0) {\\n            continue;\\n          }\\n          int idyR = int(dyR);\\n\\n          for (int wC = 0; wC < \"+a+\"; wC++) {\\n            float dyC = float(dyCCorner + wC) / \"+n+\".0;\\n\\n            if (dyC < 0.0 || dyC >= \"+t.outWidth+\".0 ||\\n                fract(dyC) > 0.0) {\\n              continue;\\n            }\\n            int idyC = int(dyC);\\n\\n            float dyValue = getDy(b, idyR, idyC, d);\\n            int maxPosValue = \"+u+\" - int(getMaxPos(b, idyR, idyC, d));\\n\\n            // Get the current value, check it against the value from the\\n            // position matrix.\\n            int curPosValue = wR * \"+a+\" + wC;\\n            float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\\n\\n            dotProd += dyValue * mask;\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Gi=function(t){this.variableNames=[\"dy\",\"maxPos\"],this.outputShape=t.inShape;var e=t.strideDepth,n=t.strideHeight,r=t.strideWidth,o=t.dilationDepth,a=t.dilationHeight,i=t.dilationWidth,s=t.effectiveFilterDepth,u=t.effectiveFilterHeight,c=t.effectiveFilterWidth,l=s-1-t.padInfo.front,h=u-1-t.padInfo.top,f=c-1-t.padInfo.left,d=s*u*c-1;this.userCode=\"\\n      const ivec3 pads = ivec3(\"+l+\", \"+h+\", \"+f+\");\\n\\n      void main() {\\n        ivec5 coords = getOutputCoords();\\n        int batch = coords.x;\\n        int ch = coords.u;\\n\\n        ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\\n        int dyDCorner = dyCorner.x;\\n        int dyRCorner = dyCorner.y;\\n        int dyCCorner = dyCorner.z;\\n\\n        // Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get\\n        // dx(xD, xR, xC, ch).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n\\n        for (int wD = 0; wD < \"+s+\";\\n           wD += \"+o+\") {\\n          float dyD = float(dyDCorner + wD) / \"+e+\".0;\\n\\n          if (dyD < 0.0 || dyD >= \"+t.outDepth+\".0 || fract(dyD) > 0.0) {\\n            continue;\\n          }\\n          int idyD = int(dyD);\\n\\n          for (int wR = 0; wR < \"+u+\";\\n              wR += \"+a+\") {\\n            float dyR = float(dyRCorner + wR) / \"+n+\".0;\\n\\n            if (dyR < 0.0 || dyR >= \"+t.outHeight+\".0 ||\\n                fract(dyR) > 0.0) {\\n              continue;\\n            }\\n            int idyR = int(dyR);\\n\\n            for (int wC = 0; wC < \"+c+\";\\n                wC += \"+i+\") {\\n              float dyC = float(dyCCorner + wC) / \"+r+\".0;\\n\\n              if (dyC < 0.0 || dyC >= \"+t.outWidth+\".0 ||\\n                  fract(dyC) > 0.0) {\\n                continue;\\n              }\\n              int idyC = int(dyC);\\n\\n              float dyValue = getDy(batch, idyD, idyR, idyC, ch);\\n              int maxPosValue = \"+d+\" -\\n                  int(getMaxPos(batch, idyD, idyR, idyC, ch));\\n\\n              // Get the current value, check it against the value from the\\n              // position matrix.\\n              int curPosValue =\\n                  wD * \"+u+\" * \"+c+\" +\\n                  wR * \"+c+\" + wC;\\n              float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\\n\\n              dotProd += dyValue * mask;\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \"},Hi=function(t,e,n,r,o,a,i){void 0===n&&(n=!1),void 0===r&&(r=!1),void 0===o&&(o=!1),void 0===a&&(a=null),void 0===i&&(i=!1),this.variableNames=[\"matrixA\",\"matrixB\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;var s=n?t[1]:t[2],u=Math.ceil(s/2),c=n?\"i * 2, rc.y\":\"rc.y, i * 2\",l=r?\"rc.z, i * 2\":\"i * 2, rc.z\",h=n?[\"a.xxyy\",\"a.zzww\"]:[\"a.xxzz\",\"a.yyww\"],f=r?[\"b.xzxz\",\"b.ywyw\"]:[\"b.xyxy\",\"b.zwzw\"],d=\"\",p=\"\";a&&(d=i?\"vec4 activation(vec4 a) {\\n          vec4 b = getPreluActivationWeightsAtOutCoords();\\n          \"+a+\"\\n        }\":\"vec4 activation(vec4 x) {\\n          \"+a+\"\\n        }\",p=\"result = activation(result);\");var v=o?\"result += getBiasAtOutCoords();\":\"\";o&&this.variableNames.push(\"bias\"),i&&this.variableNames.push(\"preluActivationWeights\"),this.userCode=\"\\n      \"+d+\"\\n\\n      const float sharedDimension = \"+u+\".0;\\n\\n      vec4 dot2x2ARowBCol(ivec3 rc) {\\n        vec4 result = vec4(0);\\n        for (int i = 0; i < \"+u+\"; i++) {\\n          vec4 a = getMatrixA(rc.x, \"+c+\");\\n          vec4 b = getMatrixB(rc.x, \"+l+\");\\n\\n          // These swizzled products need to be separately added.\\n          // See: https://github.com/tensorflow/tfjs/issues/1735\\n          result += (\"+h[0]+\" * \"+f[0]+\");\\n          result += (\"+h[1]+\" * \"+f[1]+\");\\n        }\\n        return result;\\n      }\\n\\n      void main() {\\n        ivec3 rc = getOutputCoords();\\n        vec4 result = dot2x2ARowBCol(rc);\\n\\n        \"+v+\"\\n\\n        \"+p+\"\\n\\n        setOutput(result);\\n      }\\n    \"},qi=function(){function t(t,e,n){this.variableNames=[\"probs\"],this.outputShape=[t,n],this.userCode=\"\\n      uniform float seed;\\n\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int batch = coords[0];\\n\\n        float r = random(seed);\\n        float cdf = 0.0;\\n\\n        for (int i = 0; i < \"+(e-1)+\"; i++) {\\n          cdf += getProbs(batch, i);\\n\\n          if (r < cdf) {\\n            setOutput(float(i));\\n            return;\\n          }\\n        }\\n\\n        // If no other event happened, last event happened.\\n        setOutput(float(\"+(e-1)+\"));\\n      }\\n    \"}return t.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,r){null==e.seedLoc&&(e.seedLoc=n.getUniformLocation(r,\"seed\")),n.gl.uniform1f(e.seedLoc,t)}},t}(),Ki=function(t,e,n,r){this.variableNames=[\"indices\"],this.outputShape=[t,e],this.userCode=\"\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int index = round(getIndices(coords.x));\\n        setOutput(mix(float(\"+r+\"), float(\"+n+\"),\\n                      float(index == coords.y)));\\n      }\\n    \"},ji=function(t){this.variableNames=[\"A\"],this.packedInputs=!1,this.packedOutput=!0,this.outputShape=t;var e=t.length;if(0===e)this.userCode=\"\\n        void main() {\\n          setOutput(vec4(getA(), 0., 0., 0.));\\n        }\\n      \";else{var n=sa(\"rc\",e),r=wa(e),o=function(t,e,n){if(1===t)return\"rc > \"+e[0];for(var r=\"\",o=t-2;o<t;o++)r+=n[o]+\" >= \"+e[o],o<t-1&&(r+=\"||\");return r}(e,t,n),a=function(t,e,n,r){if(1===t)return\"\";var o=r.slice(-2);return\"\\n    int r = \"+o[0]+\";\\n    int c = \"+o[1]+\";\\n    int rp1 = r + 1;\\n    int cp1 = c + 1;\\n\\n    bool cEdge = cp1 >= \"+e+\";\\n    bool rEdge = rp1 >= \"+n+\";\\n  \"}(e,t[t.length-1],t[t.length-2],n),i=function(t,e){var n=t.length,r=function(t,e){for(var n=[],r=0;r<=1;r++)for(var o=0;o<=1;o++){for(var a=(0===r?\"r\":\"rp1\")+\", \"+(0===o?\"c\":\"cp1\"),i=2;i<t;i++)a=e[e.length-1-i]+\",\"+a;n.push(a)}return n}(n,e);return 1===n?\"getA(rc),\\n            rc + 1 >= \"+t[0]+\" ? 0. : getA(rc + 1),\\n            0, 0\":\"getA(\"+r[0]+\"),\\n          cEdge ? 0. : getA(\"+r[1]+\"),\\n          rEdge ? 0. : getA(\"+r[2]+\"),\\n          rEdge || cEdge ? 0. : getA(\"+r[3]+\")\"}(t,n);this.userCode=\"\\n        void main() {\\n          \"+r+\" rc = getOutputCoords();\\n\\n          if(\"+o+\") {\\n            setOutput(vec4(0));\\n          } else {\\n            \"+a+\"\\n\\n            setOutput(vec4(\"+i+\"));\\n          }\\n        }\\n      \"}};var Xi=function(t,e,n){this.variableNames=[\"x\"],this.outputShape=e.map((function(e,n){return e[0]+t[n]+e[1]}));var r=t.length,o=wa(r),a=e.map((function(t){return t[0]})).join(\",\"),i=e.map((function(e,n){return e[0]+t[n]})).join(\",\"),s=[\"coords[0]\",\"coords[1]\",\"coords[2]\",\"coords[3]\"].slice(0,r);this.userCode=1!==r?\"\\n      \"+o+\" start = \"+o+\"(\"+a+\");\\n      \"+o+\" end = \"+o+\"(\"+i+\");\\n\\n      void main() {\\n        \"+o+\" outC = getOutputCoords();\\n        if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {\\n          setOutput(float(\"+n+\"));\\n        } else {\\n          \"+o+\" coords = outC - start;\\n          setOutput(getX(\"+s+\"));\\n        }\\n      }\\n    \":\"\\n        int start = \"+a+\";\\n        int end = \"+i+\";\\n\\n        void main() {\\n          int outC = getOutputCoords();\\n          if (outC < start || outC >= end) {\\n            setOutput(float(\"+n+\"));\\n          } else {\\n            setOutput(getX(outC - start));\\n          }\\n        }\\n      \"},Yi=function(t,e,n){this.variableNames=[\"x\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e.map((function(e,n){return e[0]+t[n]+e[1]}));for(var r=t.length,o=wa(r),a=e.map((function(t){return t[0]})).join(\",\"),i=e.map((function(e,n){return e[0]+t[n]})).join(\",\"),s=sa(\"rc\",r),u=sa(\"source\",r),c=s[r-1]+\" < \"+this.outputShape[r-1],l=1===r?\"source\":\"vec2(\"+u.slice(-2).join()+\")\",h=[o+\" rc = outputLoc;\",s[r-1]+\" += 1;\\n       if(\"+c+\") {\\n      \",1===r?\"\":\"}\\n       rc = outputLoc;\\n       \"+s[r-2]+\" += 1;\\n       if(\"+s[r-2]+\" < \"+this.outputShape[r-2]+\") {\",1===r?\"\":\"  \"+s[r-1]+\" += 1;\\n         if(\"+c+\") {\"],f=1===r?\"rc < start || rc >= end\":\"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))\",d=\"\",p=0,v=1===r?2:4;p<v;p++)d+=\"\\n        \"+h[p]+\"\\n        if (\"+f+\") {\\n          result[\"+p+\"] = float(\"+n+\");\\n        } else {\\n          \"+o+\" source = rc - start;\\n          result[\"+p+\"] = getChannel(getX(\"+u.join()+\"), \"+l+\");\\n        }\\n      \";d+=1===r?\"} \":\"}}\",this.userCode=\"\\n      const \"+o+\" start = \"+o+\"(\"+a+\");\\n      const \"+o+\" end = \"+o+\"(\"+i+\");\\n\\n      void main() {\\n        \"+o+\" outputLoc = getOutputCoords();\\n        vec4 result = vec4(0.);\\n        \"+d+\"\\n        setOutput(result);\\n      }\\n    \"},$i=function(t,e,n){if(this.variableNames=[\"x\"],\"avg\"===e&&n)throw new Error(\"Cannot compute positions for average pool.\");var r=t.filterWidth,o=t.strideHeight,a=t.strideWidth,i=t.dilationHeight,s=t.dilationWidth,u=t.effectiveFilterHeight,c=t.effectiveFilterWidth,l=t.padInfo.top,h=t.padInfo.left;this.outputShape=t.outShape;var f=\"avg\"===e,d=\"0.0\";if(f||(d=\"-1.0 / 1e-20\"),n)this.userCode=\"\\n        const ivec2 strides = ivec2(\"+o+\", \"+a+\");\\n        const ivec2 pads = ivec2(\"+l+\", \"+h+\");\\n\\n        void main() {\\n          ivec4 coords = getOutputCoords();\\n          int batch = coords[0];\\n          int d = coords[3];\\n\\n          ivec2 xRCCorner = coords.yz * strides - pads;\\n          int xRCorner = xRCCorner.x;\\n          int xCCorner = xRCCorner.y;\\n\\n          // max/min x(?, ?, d) to get y(yR, yC, d).\\n          // ? = to be determined\\n          float minMaxValue = 0.0;\\n          float minMaxValueFound = 0.0;\\n          int minMaxPosition = 0;\\n          float avgValue = 0.0;\\n\\n          for (int wR = 0; wR < \"+u+\";\\n              wR += \"+i+\") {\\n            int xR = xRCorner + wR;\\n\\n            if (xR < 0 || xR >= \"+t.inHeight+\") {\\n              continue;\\n            }\\n\\n            for (int wC = 0; wC < \"+c+\";\\n                wC += \"+s+\") {\\n              int xC = xCCorner + wC;\\n\\n              if (xC < 0 || xC >= \"+t.inWidth+\") {\\n                continue;\\n              }\\n\\n              float value = getX(batch, xR, xC, d);\\n\\n              // If a min / max value has already been found, use it. If not,\\n              // use the current value.\\n              float currMinMaxValue = mix(\\n                  value, minMaxValue, minMaxValueFound);\\n              if (value >= currMinMaxValue) {\\n                minMaxValue = value;\\n                minMaxValueFound = 1.0;\\n                minMaxPosition = wR * \"+c+\" + wC;\\n              }\\n            }\\n          }\\n          setOutput(float(minMaxPosition));\\n        }\\n      \";else{var p=e+\"(\"+e+\"(\"+e+\"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])\";\"avg\"===e&&(p=\"avgValue / count\");var v=4*Math.floor(r/4),m=r%4,g=\"\\n      if (\"+f+\") {\\n        avgValue += dot(values, ones);\\n      } else {\\n        minMaxValue = max(values, minMaxValue);\\n      }\\n    \";this.userCode=\"\\n      const ivec2 strides = ivec2(\"+o+\", \"+a+\");\\n      const ivec2 pads = ivec2(\"+l+\", \"+h+\");\\n      const float initializationValue = \"+d+\";\\n      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\\n\\n      float count = 0.0;\\n\\n      float getValue(int batch, int xR, int xC, int d) {\\n        if (xC < 0 || xC >= \"+t.inWidth+\") {\\n          return initializationValue;\\n        }\\n        count += 1.0;\\n        return getX(batch, xR, xC, d);\\n      }\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int d = coords[3];\\n\\n        ivec2 xRCCorner = coords.yz * strides - pads;\\n        int xRCorner = xRCCorner.x;\\n        int xCCorner = xRCCorner.y;\\n\\n        // max/min x(?, ?, d) to get y(yR, yC, d).\\n        // ? = to be determined\\n        vec4 minMaxValue = vec4(\"+d+\");\\n        float avgValue = 0.0;\\n        count = 0.0;\\n\\n        for (int wR = 0; wR < \"+u+\";\\n            wR += \"+i+\") {\\n          int xR = xRCorner + wR;\\n\\n          if (xR < 0 || xR >= \"+t.inHeight+\") {\\n            continue;\\n          }\\n\\n          for (int wC = 0; wC < \"+v+\"; wC += 4) {\\n            int xC = xCCorner + wC * \"+s+\";\\n\\n            vec4 values = vec4(\\n              getValue(batch, xR, xC, d),\\n              getValue(batch, xR, xC + \"+s+\", d),\\n              getValue(batch, xR, xC + 2 * \"+s+\", d),\\n              getValue(batch, xR, xC + 3 * \"+s+\", d)\\n            );\\n\\n            \"+g+\"\\n          }\\n\\n          int xC = xCCorner + \"+v+\";\\n          if (\"+(1===m)+\") {\\n            vec4 values = vec4(\\n              getValue(batch, xR, xC, d),\\n              initializationValue,\\n              initializationValue,\\n              initializationValue\\n            );\\n\\n            \"+g+\"\\n          } else if (\"+(2===m)+\") {\\n            vec4 values = vec4(\\n              getValue(batch, xR, xC, d),\\n              getValue(batch, xR, xC + \"+s+\", d),\\n              initializationValue,\\n              initializationValue\\n            );\\n\\n            \"+g+\"\\n          } else if (\"+(3===m)+\") {\\n            vec4 values = vec4(\\n              getValue(batch, xR, xC, d),\\n              getValue(batch, xR, xC + \"+s+\", d),\\n              getValue(batch, xR, xC + 2 * \"+s+\", d),\\n              initializationValue\\n            );\\n\\n            \"+g+\"\\n          }\\n        }\\n        setOutput(\"+p+\");\\n      }\\n    \"}},Qi=function(t,e,n){if(this.variableNames=[\"x\"],\"avg\"===e&&n)throw new Error(\"Cannot compute positions for average pool.\");var r=t.filterWidth,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,l=t.effectiveFilterDepth,h=t.effectiveFilterHeight,f=t.effectiveFilterWidth,d=t.padInfo.front,p=t.padInfo.top,v=t.padInfo.left;this.outputShape=t.outShape;var m=\"avg\"===e,g=\"0.0\";if(m||(g=\"-1.0 / 1e-20\"),n)this.userCode=\"\\n        const ivec3 strides =\\n            ivec3(\"+o+\", \"+a+\", \"+i+\");\\n        const ivec3 pads = ivec3(\"+d+\", \"+p+\", \"+v+\");\\n\\n        void main() {\\n          ivec5 coords = getOutputCoords();\\n          int batch = coords.x;\\n          int ch = coords.u;\\n\\n          ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\\n          int xDCorner = xCorner.x;\\n          int xRCorner = xCorner.y;\\n          int xCCorner = xCorner.z;\\n\\n          // max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch).\\n          // ? = to be determined\\n          float minMaxValue = 0.0;\\n          float minMaxValueFound = 0.0;\\n          int minMaxPosition = 0;\\n\\n          for (int wD = 0; wD < \"+l+\";\\n              wD += \"+s+\") {\\n            int xD = xDCorner + wD;\\n\\n            if (xD < 0 || xD >= \"+t.inDepth+\") {\\n              continue;\\n            }\\n\\n            for (int wR = 0; wR < \"+h+\";\\n                wR += \"+u+\") {\\n              int xR = xRCorner + wR;\\n\\n              if (xR < 0 || xR >= \"+t.inHeight+\") {\\n                continue;\\n              }\\n\\n              for (int wC = 0; wC < \"+f+\";\\n                  wC += \"+c+\") {\\n                int xC = xCCorner + wC;\\n\\n                if (xC < 0 || xC >= \"+t.inWidth+\") {\\n                  continue;\\n                }\\n\\n                float value = getX(batch, xD, xR, xC, ch);\\n\\n                // If a min / max value has already been found, use it. If not,\\n                // use the current value.\\n                float currMinMaxValue = mix(\\n                    value, minMaxValue, minMaxValueFound);\\n                if (value >= currMinMaxValue) {\\n                  minMaxValue = value;\\n                  minMaxValueFound = 1.0;\\n                  minMaxPosition =\\n                      wD * \"+h+\" * \"+f+\" +\\n                      wR * \"+f+\" + wC;;\\n                }\\n              }\\n            }\\n          }\\n          setOutput(float(minMaxPosition));\\n        }\\n      \";else{var y=e+\"(\"+e+\"(\"+e+\"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])\";\"avg\"===e&&(y=\"avgValue / count\");var x=4*Math.floor(r/4),b=r%4,w=\"\\n      if (\"+m+\") {\\n        avgValue += dot(values, ones);\\n      } else {\\n        minMaxValue = max(values, minMaxValue);\\n      }\\n    \";this.userCode=\"\\n      const ivec3 strides =\\n        ivec3(\"+o+\", \"+a+\", \"+i+\");\\n      const ivec3 pads = ivec3(\"+d+\", \"+p+\", \"+v+\");\\n      const float initializationValue = \"+g+\";\\n      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\\n\\n      float count = 0.0;\\n\\n      float getValue(int batch, int xD, int xR, int xC, int ch) {\\n        if (xC < 0 || xC >= \"+t.inWidth+\") {\\n          return initializationValue;\\n        }\\n        count += 1.0;\\n        return getX(batch, xD, xR, xC, ch);\\n      }\\n\\n      void main() {\\n        ivec5 coords = getOutputCoords();\\n        int batch = coords.x;\\n        int ch = coords.u;\\n\\n        ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\\n        int xDCorner = xCorner.x;\\n        int xRCorner = xCorner.y;\\n        int xCCorner = xCorner.z;\\n\\n        // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch).\\n        // ? = to be determined\\n        vec4 minMaxValue = vec4(\"+g+\");\\n        float avgValue = 0.0;\\n        count = 0.0;\\n\\n        for (int wD = 0; wD < \"+l+\";\\n            wD += \"+s+\") {\\n          int xD = xDCorner + wD;\\n\\n          if (xD < 0 || xD >= \"+t.inDepth+\") {\\n            continue;\\n          }\\n\\n          for (int wR = 0; wR < \"+h+\";\\n            wR += \"+u+\") {\\n            int xR = xRCorner + wR;\\n\\n            if (xR < 0 || xR >= \"+t.inHeight+\") {\\n              continue;\\n            }\\n\\n            for (int wC = 0; wC < \"+x+\"; wC += 4) {\\n              int xC = xCCorner + wC * \"+c+\";\\n\\n              vec4 values = vec4(\\n                getValue(batch, xD, xR, xC, ch),\\n                getValue(batch, xD, xR, xC + \"+c+\", ch),\\n                getValue(batch, xD, xR, xC + 2 * \"+c+\", ch),\\n                getValue(batch, xD, xR, xC + 3 * \"+c+\", ch)\\n              );\\n\\n              \"+w+\"\\n            }\\n\\n            int xC = xCCorner + \"+x+\";\\n            if (\"+(1===b)+\") {\\n              vec4 values = vec4(\\n                getValue(batch, xD, xR, xC, ch),\\n                initializationValue,\\n                initializationValue,\\n                initializationValue\\n              );\\n\\n              \"+w+\"\\n            } else if (\"+(2===b)+\") {\\n              vec4 values = vec4(\\n                getValue(batch, xD, xR, xC, ch),\\n                getValue(batch, xD, xR, xC + \"+c+\", ch),\\n                initializationValue,\\n                initializationValue\\n              );\\n\\n              \"+w+\"\\n            } else if (\"+(3===b)+\") {\\n              vec4 values = vec4(\\n                getValue(batch, xD, xR, xC, ch),\\n                getValue(batch, xD, xR, xC + \"+c+\", ch),\\n                getValue(batch, xD, xR, xC + 2 * \"+c+\", ch),\\n                initializationValue\\n              );\\n\\n              \"+w+\"\\n            }\\n          }\\n          setOutput(\"+y+\");\\n        }\\n      }\\n    \"}},Ji=function(t,e){this.variableNames=[\"x\"];var n=t.windowSize,r=t.batchSize,o=t.inSize,a=Math.ceil(o/n);this.outputShape=[r,a];var i=\"0.0\",s=\"\";\"prod\"===e?i=\"1.0\":\"min\"===e?(i=\"1.0 / 1e-20\",s=\"min\"):\"max\"===e&&(i=\"-1.0 / 1e-20\",s=\"max\");var u=e+\"(\"+e+\"(\"+e+\"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])\";\"sum\"===e?u=\"sumValue\":\"prod\"===e?u=\"prodValue\":\"all\"===e?u=\"allValue\":\"any\"===e&&(u=\"anyValue\");var c=4*Math.floor(n/4),l=n%4,h=\"\\n      if (\"+(\"sum\"===e)+\") {\\n        sumValue += dot(values, ones);\\n      } else if (\"+(\"prod\"===e)+\") {\\n        vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);\\n        prodValue *= tmp[0] * tmp[1];\\n      } else {\\n        minMaxValue = \"+s+\"(values, minMaxValue);\\n      }\\n    \",f=\"vec4\";\"all\"===e?(i=\"1.0\",h=\"\\n        bool reducedAllValue = all(values);\\n        float floatedReducedAllValue = float(reducedAllValue);\\n        allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);\\n      \",f=\"bvec4\"):\"any\"===e&&(i=\"0.0\",h=\"\\n        bool reducedAnyValue = any(values);\\n        float floatedReducedAnyValue = float(reducedAnyValue);\\n        anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\\n      \",f=\"bvec4\");var d=\"\";o%n>0&&(d=\"\\n        if (inIdx < 0 || inIdx >= \"+o+\") {\\n          return initializationValue;\\n        }\\n      \"),this.userCode=\"\\n      const float initializationValue = \"+i+\";\\n      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\\n\\n      float getValue(int batch, int inIdx) {\\n        \"+d+\"\\n        return getX(batch, inIdx);\\n      }\\n\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int outIdx = coords[1];\\n        int inOffset = outIdx * \"+n+\";\\n\\n        vec4 minMaxValue = vec4(\"+i+\");\\n        float prodValue = 1.0;\\n        float sumValue = 0.0;\\n        float allValue = 1.0;\\n        float anyValue = 0.0;\\n\\n        for (int i = 0; i < \"+c+\"; i += 4) {\\n          int inIdx = inOffset + i;\\n          \"+f+\" values = \"+f+\"(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            getValue(batch, inIdx + 2),\\n            getValue(batch, inIdx + 3)\\n          );\\n\\n          \"+h+\"\\n        }\\n\\n        int inIdx = inOffset + \"+c+\";\\n        if (\"+(1===l)+\") {\\n          \"+f+\" values = \"+f+\"(\\n            getValue(batch, inIdx),\\n            initializationValue,\\n            initializationValue,\\n            initializationValue\\n          );\\n\\n          \"+h+\"\\n        } else if (\"+(2===l)+\") {\\n          \"+f+\" values = \"+f+\"(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            initializationValue,\\n            initializationValue\\n          );\\n\\n          \"+h+\"\\n        } else if (\"+(3===l)+\") {\\n          \"+f+\" values = \"+f+\"(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            getValue(batch, inIdx + 2),\\n            initializationValue\\n          );\\n\\n          \"+h+\"\\n        }\\n        setOutput(\"+u+\");\\n      }\\n    \"},Zi=function(t,e){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;for(var n=\"\",r=0;r<4;r++){var o=\"thisRC = rc;\";r%2==1&&(o+=\"thisRC.z += 1;\"),r>1&&(o+=\"thisRC.y += 1;\"),n+=\"\\n        \"+o+\"\\n        \"+(r>0?\"if(thisRC.y < rows && thisRC.z < cols){\":\"\")+\"\\n          int flatIndex = getFlatIndex(thisRC);\\n\\n          ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);\\n          vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));\\n\\n          result[\"+r+\"] =\\n            getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\\n        \"+(r>0?\"}\":\"\")+\"\\n      \"}this.userCode=\"\\n      \\n    ivec3 inputCoordsFromReshapedOutCoords(int index) {\\n      \"+ca([\"r\",\"c\",\"d\"],e)+\"\\n      return ivec3(r, c, d);\\n    }\\n  \\n      \"+la(t)+\"\\n\\n      void main() {\\n        ivec3 rc = getOutputCoords();\\n\\n        vec4 result = vec4(0.);\\n\\n        ivec3 thisRC;\\n        int rows = \"+t[1]+\";\\n        int cols = \"+t[2]+\";\\n\\n        \"+n+\"\\n\\n        setOutput(result);\\n      }\\n    \"};var ts=function(t,e,n){this.variableNames=[\"dy\"],this.outputShape=[],this.outputShape=e.shape;var r=e.shape,o=r[1],a=r[2],i=t.shape,s=i[1],u=i[2],c=[n&&s>1?o-1:o,n&&u>1?a-1:a],l=[n&&s>1?s-1:s,n&&u>1?u-1:u],h=c[0]/l[0],f=c[1]/l[1],d=1/h,p=1/f,v=2*Math.ceil(d)+2,m=2*Math.ceil(p)+2;this.userCode=\"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n        int r = coords[1];\\n        int c = coords[2];\\n\\n        float accumulator = 0.0;\\n\\n        const float heightScale = float(\"+h+\");\\n        const float widthScale = float(\"+f+\");\\n\\n        const float invHeightScale = float(\"+d+\");\\n        const float invWidthScale = float(\"+p+\");\\n\\n        const int winHeight = int(\"+v+\");\\n        const int winWidth = int(\"+m+\");\\n\\n        // Compute bounds for where in dy we will look\\n        float startRLerp = floor(float(r) * invHeightScale);\\n        int startDyR = int(startRLerp - float(winHeight / 2));\\n\\n        float startCLerp = floor(float(c) * invWidthScale);\\n        int startDyC = int(startCLerp - float(winWidth / 2));\\n\\n        // Loop over dy\\n        for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\\n          int dyR = dyROffset + startDyR;\\n\\n          // Guard against the window exceeding the bounds of dy\\n          if (dyR < 0 || dyR >= \"+s+\") {\\n            continue;\\n          }\\n\\n          for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\\n            int dyC = dyCOffset + startDyC;\\n\\n            // Guard against the window exceeding the bounds of dy\\n            if (dyC < 0 || dyC >= \"+u+\") {\\n              continue;\\n            }\\n\\n            float dxR = float(dyR) * heightScale;\\n            int topDxRIndex = int(floor(dxR));\\n            int bottomDxRIndex = int(min(ceil(dxR), \"+(o-1)+\".0));\\n            float dxRLerp = dxR - float(topDxRIndex);\\n            float inverseDxRLerp = 1.0 - dxRLerp;\\n\\n            float dxC = float(dyC) * widthScale;\\n            int leftDxCIndex = int(floor(dxC));\\n            int rightDxCIndex = int(min(ceil(dxC), \"+(a-1)+\".0));\\n            float dxCLerp = dxC - float(leftDxCIndex);\\n            float inverseDxCLerp = 1.0 - dxCLerp;\\n\\n            if (r == topDxRIndex && c == leftDxCIndex) {\\n              // topLeft\\n              accumulator +=\\n                getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\\n            }\\n\\n            if (r == topDxRIndex && c == rightDxCIndex) {\\n              // topRight\\n              accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\\n            }\\n\\n            if (r == bottomDxRIndex && c == leftDxCIndex) {\\n              // bottomLeft\\n              accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\\n            }\\n\\n            if (r == bottomDxRIndex && c == rightDxCIndex) {\\n              // bottomRight\\n              accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\\n            }\\n          }\\n        }\\n        // End loop over dy\\n\\n        setOutput(accumulator);\\n      }\\n    \"},es=function(t,e,n,r){this.variableNames=[\"A\"],this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],c=[r&&e>1?e-1:e,r&&n>1?n-1:n];this.userCode=\"\\n      const vec2 effectiveInputOverOutputRatioRC = vec2(\\n          \"+u[0]/c[0]+\",\\n          \"+u[1]/c[1]+\");\\n      const vec2 inputShapeRC = vec2(\"+a+\".0, \"+i+\".0);\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n        ivec2 yRC = coords.yz;\\n\\n        // Fractional source index.\\n        vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\\n\\n        // Compute the four integer indices.\\n        ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\\n        ivec2 sourceCeilRC = ivec2(\\n          min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\\n\\n        float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\\n        float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\\n        float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\\n        float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\\n\\n        vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\\n\\n        float top = topLeft + (topRight - topLeft) * fracRC.y;\\n        float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\\n        float newValue = top + (bottom - top) * fracRC.x;\\n\\n        setOutput(newValue);\\n      }\\n    \"},ns=function(t,e,n,r){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],c=[r&&e>1?e-1:e,r&&n>1?n-1:n];this.userCode=\"\\n      const vec3 effectiveInputOverOutputRatioRC = vec3(\\n          \"+u[0]/c[0]+\",\\n          \"+u[1]/c[1]+\",\\n          \"+u[1]/c[1]+\");\\n      const vec3 inputShapeRC = vec3(\"+a+\".0, \"+i+\".0,\\n                                     \"+i+\".0);\\n\\n      float getAValue(int b, int r, int c, int d) {\\n        return getChannel(getA(b, r, c, d), vec2(c, d));\\n      }\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n        // Calculate values for next column in yRC.z.\\n        ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\\n\\n        // Fractional source index.\\n        vec3 sourceFracIndexRC = vec3(yRC) * effectiveInputOverOutputRatioRC;\\n\\n        // Compute the four integer indices.\\n        ivec3 sourceFloorRC = ivec3(sourceFracIndexRC);\\n        ivec3 sourceCeilRC = ivec3(\\n          min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\\n\\n        // Should we calculate next column and row elements in 2x2 packed cell.\\n        bool hasNextCol = d < \"+(s-1)+\";\\n        bool hasNextRow = coords.z < \"+(n-1)+\";\\n\\n        // In parallel, construct four corners for all four components in\\n        // packed 2x2 cell.\\n        vec4 topLeft = vec4(\\n          getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d),\\n          hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1)\\n                     : 0.0,\\n          hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d)\\n                     : 0.0,\\n          (hasNextRow && hasNextCol) ?\\n            getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0);\\n\\n        vec4 bottomLeft = vec4(\\n          getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d),\\n          hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1)\\n                     : 0.0,\\n          hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d)\\n                     : 0.0,\\n          (hasNextRow && hasNextCol) ?\\n            getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0);\\n\\n        vec4 topRight = vec4(\\n          getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d),\\n          hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1)\\n                     : 0.0,\\n          hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d)\\n                     : 0.0,\\n          (hasNextRow && hasNextCol) ?\\n            getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0);\\n\\n        vec4 bottomRight = vec4(\\n          getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d),\\n          hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1)\\n                     : 0.0,\\n          hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d)\\n                     : 0.0,\\n          (hasNextRow && hasNextCol) ?\\n            getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0);\\n\\n        vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC);\\n\\n        vec4 top = mix(topLeft, topRight, fracRC.yyzz);\\n        vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz);\\n        vec4 newValue = mix(top, bottom, fracRC.x);\\n\\n        setOutput(newValue);\\n      }\\n    \"},rs=function(t,e,n){this.variableNames=[\"dy\"],this.outputShape=[],this.outputShape=e.shape;var r=e.shape,o=r[1],a=r[2],i=t.shape,s=i[1],u=i[2],c=[n&&s>1?o-1:o,n&&u>1?a-1:a],l=[n&&s>1?s-1:s,n&&u>1?u-1:u],h=c[0]/l[0],f=c[1]/l[1],d=1/h,p=1/f,v=2*Math.ceil(d)+2,m=2*Math.ceil(p)+2;this.userCode=\"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n        int r = coords[1];\\n        int c = coords[2];\\n\\n        float accumulator = 0.0;\\n\\n        const float heightScale = float(\"+h+\");\\n        const float widthScale = float(\"+f+\");\\n\\n        const float invHeightScale = float(\"+d+\");\\n        const float invWidthScale = float(\"+p+\");\\n\\n        const int winHeight = int(\"+v+\");\\n        const int winWidth = int(\"+m+\");\\n\\n        // Compute bounds for where in dy we will look\\n        float startRLerp = floor(float(r) * invHeightScale);\\n        int startDyR = int(floor(startRLerp - float(winHeight / 2)));\\n\\n        float startCLerp = floor(float(c) * invWidthScale);\\n        int startDyC = int(floor(startCLerp - float(winWidth / 2)));\\n\\n        // Loop over dy\\n        for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\\n          int dyR = dyROffset + startDyR;\\n\\n          // Guard against the window exceeding the bounds of dy\\n          if (dyR < 0 || dyR >= \"+s+\") {\\n            continue;\\n          }\\n\\n          for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\\n            int dyC = dyCOffset + startDyC;\\n\\n            // Guard against the window exceeding the bounds of dy\\n            if (dyC < 0 || dyC >= \"+u+\") {\\n              continue;\\n            }\\n\\n            float sourceFracRow =\\n              float(\"+c[0]+\") *\\n                (float(dyR) / float(\"+l[0]+\"));\\n\\n            float sourceFracCol =\\n                float(\"+c[1]+\") *\\n                  (float(dyC) / float(\"+l[1]+\"));\\n\\n            int sourceNearestRow = int(min(\\n                float(int(\"+o+\") - 1),\\n                \"+n+\" ? float(round(sourceFracRow)) :\\n                                  float(floor(sourceFracRow))));\\n\\n            int sourceNearestCol = int(min(\\n                float(int(\"+a+\") - 1),\\n                \"+n+\" ? float(round(sourceFracCol)) :\\n                                  float(floor(sourceFracCol))));\\n\\n            if (r == sourceNearestRow && c == sourceNearestCol) {\\n              accumulator += getDy(b, dyR, dyC, d);\\n            }\\n          }\\n        }\\n        // End loop over dy\\n\\n        setOutput(accumulator);\\n      }\\n    \"},os=function(t,e,n,r){this.variableNames=[\"A\"],this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],c=[r&&e>1?e-1:e,r&&n>1?n-1:n],l=r?\"0.5\":\"0.0\";this.userCode=\"\\n      const vec2 effectiveInputOverOutputRatioRC = vec2(\\n          \"+u[0]/c[0]+\",\\n          \"+u[1]/c[1]+\");\\n      const vec2 inputShapeRC = vec2(\"+a+\".0, \"+i+\".0);\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n        ivec2 yRC = coords.yz;\\n\\n        // Fractional source index.\\n        vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\\n\\n        // Compute the coordinators of nearest neighbor point.\\n        ivec2 sourceNearestRC = ivec2(\\n          min(inputShapeRC - 1.0, floor(sourceFracIndexRC + \"+l+\")));\\n\\n        float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\\n\\n        setOutput(newValue);\\n      }\\n    \"},as=function(t,e){this.variableNames=[\"x\"];var n=t.length;if(n>4)throw new Error(\"WebGL backend: Reverse of rank-\"+n+\" tensor is not yet supported\");if(this.outputShape=t,1!==n){var r=t.map((function(n,r){return function(n){return-1!==e.indexOf(n)&&1!==t[n]?t[n]+\" - coords[\"+n+\"] - 1\":\"coords[\"+n+\"]\"}(r)})).join(\",\"),o=wa(n);this.userCode=\"\\n      void main() {\\n        \"+o+\" coords = getOutputCoords();\\n        setOutput(getX(\"+r+\"));\\n      }\\n    \"}else this.userCode=\"\\n        void main() {\\n          int coord = getOutputCoords();\\n          setOutput(getX(\"+t[0]+\" - coord - 1));\\n        }\\n      \"},is=function(t,e){this.variableNames=[\"x\"],this.packedInputs=!0,this.packedOutput=!0;var n=t.length;if(n>4)throw new Error(\"WebGL backend: Reverse of rank-\"+n+\" tensor is not yet supported\");this.outputShape=t;var r=sa(\"rc\",n),o=r[n-1]+\" + 1 < \"+this.outputShape[n-1],a=r[n-2]+\" + 1 < \"+this.outputShape[n-2],i=wa(n);function s(n){var r=t.map((function(r,o){return function(n,r){return-1!==e.indexOf(n)&&1!==t[n]?t[n]+\" - \"+r[n]+\" - 1\":\"\"+r[n]}(o,n)}));return\"getChannel(getX(\"+r.join(\",\")+\"), vec2(\"+r.slice(-2).join(\",\")+\"))\"}this.userCode=1===n?\"\\n        void main(){\\n          int rc = getOutputCoords();\\n          vec4 result = vec4(0.);\\n          result.r = getChannel(getX(\"+t[0]+\" - rc - 1),\\n            \"+t[0]+\" - rc - 1);\\n          if(\"+o+\"){\\n              result.g = getChannel(getX(\"+t[0]+\" - (rc  + 1) - 1),\\n                \"+t[0]+\" - (rc  + 1) - 1);\\n          }\\n          setOutput(result);\\n        }\\n      \":\"\\n        void main() {\\n          \"+i+\" rc = getOutputCoords();\\n          vec4 result = vec4(0.);\\n          result.r = \"+function(t){return s(t)}(r.slice())+\";\\n          if(\"+o+\"){\\n            result.g = \"+function(t){return t[n-1]=\"(\"+t[n-1]+\" + 1)\",s(t)}(r.slice())+\";\\n          }\\n          if(\"+a+\") {\\n            result.b = \"+function(t){return t[n-2]=\"(\"+t[n-2]+\" + 1)\",s(t)}(r.slice())+\";\\n            if(\"+o+\") {\\n              result.a = \"+function(t){return t[n-1]=\"(\"+t[n-1]+\" + 1)\",t[n-2]=\"(\"+t[n-2]+\" + 1)\",s(t)}(r.slice())+\";\\n            }\\n          }\\n          setOutput(result);\\n        }\\n    \"},ss=function(t,e,n,r,o,a,i){void 0===i&&(i=!0),this.variableNames=[\"updates\",\"indices\",\"defaultValue\"],this.outputShape=a;var s=wa(o.length),u=wa(a.length),c=\"\";1===n?c=\"i\":2===n&&(c=\"i, j\");var l=\"getIndices(\"+c+\")\",h=\"\";1===r?h=\"i\":2===r&&(h=\"i, coords[1]\");var f=\"getUpdates(\"+h+\")\",d=e>1?\"strides[j]\":\"strides\";this.userCode=\"\\n        \"+s+\" strides = \"+s+\"(\"+o+\");\\n\\n        void main() {\\n          \"+u+\" coords = getOutputCoords();\\n          float sum = 0.0;\\n          bool found = false;\\n          for (int i = 0; i < \"+t+\"; i++) {\\n            int flattenedIndex = 0;\\n            for (int j = 0; j < \"+e+\"; j++) {\\n              int index = round(\"+l+\");\\n              flattenedIndex += index * \"+d+\";\\n            }\\n            if (flattenedIndex == coords[0]) {\\n              sum += \"+f+\";\\n              found = true;\\n            }\\n          }\\n          setOutput(mix(getDefaultValue(), sum, float(found)));\\n        }\\n      \"},us=function(t,e){this.variableNames=[\"x\",\"segmentIds\"];var n=t.windowSize,r=t.batchSize,o=t.inSize,a=t.numSegments,i=a*Math.ceil(o/n);this.outputShape=[r,i];var s=4*Math.floor(n/4),u=n%4,c=\"\\n        sumValue += dot(values, segFilter);\\n    \",l=\"\";o%n>0&&(l=\"\\n        if (inIdx < 0 || inIdx >= \"+o+\") {\\n          return initializationValue;\\n        }\\n      \");var h=\"\";o%n>0&&(h=\"\\n        if (inIdx < 0 || inIdx >= \"+o+\") {\\n          return -1.0;\\n        }\\n      \"),this.userCode=\"\\n      const float initializationValue = 0.0;\\n\\n      float getValue(int batch, int inIdx) {\\n        \"+l+\"\\n        return getX(batch, inIdx);\\n      }\\n\\n      float getSegmentIdAtIndex(int inIdx) {\\n        \"+h+\"\\n        return getSegmentIds(inIdx);\\n      }\\n\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int outIdx = coords[1];\\n        int inOffset = int(floor(float(outIdx) / float(\\n          \"+a+\")) * float(\"+n+\"));\\n        int currentSeg = int(mod(float(outIdx), float(\"+a+\")));\\n\\n        float sumValue = 0.0;\\n\\n        for (int i = 0; i < \"+s+\"; i += 4) {\\n          int inIdx = inOffset + i;\\n          vec4 values = vec4(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            getValue(batch, inIdx + 2),\\n            getValue(batch, inIdx + 3)\\n          );\\n\\n          vec4 segFilter = vec4(\\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\\n          );\\n\\n          \"+c+\"\\n        }\\n\\n        int inIdx = inOffset + \"+s+\";\\n        if (\"+(1===u)+\") {\\n          vec4 values = vec4(\\n            getValue(batch, inIdx),\\n            initializationValue,\\n            initializationValue,\\n            initializationValue\\n          );\\n\\n          int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\\n\\n          vec4 segFilter = vec4(\\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\\n            0,\\n            0,\\n            0\\n          );\\n\\n          \"+c+\"\\n        } else if (\"+(2===u)+\") {\\n          vec4 values = vec4(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            initializationValue,\\n            initializationValue\\n          );\\n\\n          vec4 segFilter = vec4(\\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\\n              0,\\n              0\\n          );\\n\\n          \"+c+\"\\n        } else if (\"+(3===u)+\") {\\n          vec4 values = vec4(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            getValue(batch, inIdx + 2),\\n            initializationValue\\n          );\\n\\n          vec4 segFilter = vec4(\\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\\n            0\\n          );\\n\\n          \"+c+\"\\n        }\\n        setOutput(sumValue);\\n      }\\n    \"},cs=function(t,e,n){var r,o;if(this.variableNames=[\"c\",\"a\",\"b\"],this.outputShape=e,n>4)throw Error(\"Where for rank \"+n+\" is not yet supported\");if(1===n)o=\"resRC\",r=\"resRC\";else{for(var a=[\"resRC.x\",\"resRC.y\",\"resRC.z\",\"resRC.w\"],i=[],s=[],u=0;u<e.length;u++)s.push(\"\"+a[u]),u<t&&i.push(\"\"+a[u]);r=i.join(),o=s.join()}var c=wa(n);this.userCode=\"\\n      void main() {\\n        \"+c+\" resRC = getOutputCoords();\\n        float cVal = getC(\"+r+\");\\n        if (cVal >= 1.0) {\\n          setOutput(getA(\"+o+\"));\\n        } else {\\n          setOutput(getB(\"+o+\"));\\n        }\\n      }\\n    \"},ls=function(){function t(t){this.variableNames=[\"source\"],this.outputShape=t,this.rank=t.length;var e,n=wa(this.rank),r=\"uniform int start[\"+this.rank+\"];\",o=function(t){if(1===t)return\"sourceLoc\";if(t<=6)return hs.slice(0,t).map((function(t){return\"sourceLoc.\"+t})).join(\",\");throw Error(\"Slicing for rank \"+t+\" is not yet supported\")}(this.rank);e=\"\\n        \"+n+\" sourceLoc;\\n        \"+n+\" coords = getOutputCoords();\\n        \"+t.map((function(t,e){return\"sourceLoc.\"+hs[e]+\" = start[\"+e+\"] + coords.\"+hs[e]+\";\"})).join(\"\\n\")+\"\\n      \",this.userCode=\"\\n      \"+r+\"\\n      void main() {\\n        \"+e+\"\\n        setOutput(getSource(\"+o+\"));\\n      }\\n    \"}return t.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error(\"The rank (\"+this.rank+\") of the program must match the length of start (\"+t.length+\")\");return function(n,r){null==e.startLoc&&(e.startLoc=n.getUniformLocationNoThrow(r,\"start\"),null==e.startLoc)||n.gl.uniform1iv(e.startLoc,t)}},t}(),hs=[\"x\",\"y\",\"z\",\"w\",\"u\",\"v\"];var fs=function(){function t(t){this.variableNames=[\"source\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.rank=t.length;var e=wa(this.rank),n=sa(\"coords\",this.rank),r=sa(\"sourceLoc\",this.rank),o=1===this.rank?\"sourceLoc\":\"vec2(\"+r.slice(-2).join()+\")\",a=\"getChannel(getSource(\"+r.join()+\"), \"+o+\")\",i=\"\\n      result.x = \"+a+\";\\n      if (++\"+n[this.rank-1]+\" < \"+t[this.rank-1]+\") {\\n        ++\"+r[this.rank-1]+\";\\n        result.y = \"+a+\";\\n        --\"+r[this.rank-1]+\";\\n      }\\n    \",s=1===this.rank?\"\":\"\\n      --\"+n[this.rank-1]+\";\\n      if (++\"+n[this.rank-2]+\" < \"+t[this.rank-2]+\") {\\n        ++\"+r[this.rank-2]+\";\\n        result.z = \"+a+\";\\n        if (++\"+n[this.rank-1]+\" < \"+t[this.rank-1]+\") {\\n          ++\"+r[this.rank-1]+\";\\n          result.w = \"+a+\";\\n        }\\n      }\\n    \",u=this.rank<=4?\"sourceLoc = coords +\\n            \"+e+\"(\"+t.map((function(t,e){return\"start[\"+e+\"]\"})).join()+\");\":t.map((function(t,e){return r[e]+\" = \"+n[e]+\" + start[\"+e+\"];\"})).join(\"\\n\");this.userCode=\"\\n      uniform int start[\"+this.rank+\"];\\n      void main() {\\n        \"+e+\" coords = getOutputCoords();\\n        \"+e+\" sourceLoc;\\n        \"+u+\"\\n        vec4 result = vec4(0.);\\n        \"+i+\"\\n        \"+s+\"\\n        setOutput(result);\\n      }\\n    \"}return t.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error(\"The rank (\"+this.rank+\") of the program must match the length of start (\"+t.length+\")\");return function(n,r){null==e.startLoc&&(e.startLoc=n.getUniformLocationNoThrow(r,\"start\"),null==e.startLoc)||n.gl.uniform1iv(e.startLoc,t)}},t}(),ds=function(t,e,n){this.variableNames=[\"x\"],this.outputShape=n;var r=n.length,o=wa(n.length),a=wa(n.length),i=\"\";if(1===r)i=\"coords * strides + begin\";else{var s=0;i=n.map((function(t,e){return s++,1===n.length?\"coords * strides[\"+e+\"] + begin[\"+e+\"]\":\"coords[\"+(s-1)+\"] * strides[\"+e+\"] + begin[\"+e+\"]\"})).join(\",\")}this.userCode=\"\\n      \"+o+\" begin = \"+o+\"(\"+t+\");\\n      \"+o+\" strides = \"+o+\"(\"+e+\");\\n\\n      void main() {\\n        \"+a+\" coords = getOutputCoords();\\n        setOutput(getX(\"+i+\"));\\n      }\\n    \"},ps=function(){function t(t){this.gpgpu=t,this.numUsedTextures=0,this.numFreeTextures=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}return t.prototype.acquireTexture=function(t,e,n){var r,o=vs(e,n),a=ms(t,o,n);if(a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]),this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this.log();var i=this.freeTextures[a].shift();return this.usedTextures[a].push(i),i}return this.numUsedTextures++,this.log(),o===Gt.PACKED_2X2_FLOAT32?r=this.gpgpu.createPackedMatrixTexture(t[0],t[1]):o===Gt.PACKED_2X2_FLOAT16?r=this.gpgpu.createFloat16PackedMatrixTexture(t[0],t[1]):o===Gt.UNPACKED_FLOAT32?r=this.gpgpu.createFloat32MatrixTexture(t[0],t[1]):o===Gt.UNPACKED_FLOAT16?r=this.gpgpu.createFloat16MatrixTexture(t[0],t[1]):o===Gt.PACKED_4X1_UNSIGNED_BYTE&&(r=this.gpgpu.createUnsignedBytesMatrixTexture(t[0],t[1])),this.usedTextures[a].push(r),r},t.prototype.releaseTexture=function(t,e,n,r){if(null!=this.freeTextures){var o=ms(e,vs(n,r),r);o in this.freeTextures||(this.freeTextures[o]=[]),this.freeTextures[o].push(t),this.numFreeTextures++,this.numUsedTextures--;var a=this.usedTextures[o],i=a.indexOf(t);if(i<0)throw new Error(\"Cannot release a texture that was never provided by this texture manager\");a.splice(i,1),this.log()}},t.prototype.log=function(){if(this.logEnabled){var t=this.numFreeTextures+this.numUsedTextures;console.log(\"Free/Used\",this.numFreeTextures+\" / \"+this.numUsedTextures,\"(\"+t+\")\")}},t.prototype.getNumUsedTextures=function(){return this.numUsedTextures},t.prototype.getNumFreeTextures=function(){return this.numFreeTextures},t.prototype.dispose=function(){var t=this;if(null!=this.freeTextures){for(var e in this.freeTextures)this.freeTextures[e].forEach((function(e){t.gpgpu.deleteMatrixTexture(e)}));for(var e in this.usedTextures)this.usedTextures[e].forEach((function(e){t.gpgpu.deleteMatrixTexture(e)}));this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0}},t}();function vs(t,e){if(t===zt.UPLOAD)return Gt.PACKED_2X2_FLOAT32;if(t===zt.RENDER||null==t)return function(t){return i().getBool(\"WEBGL_RENDER_FLOAT32_ENABLED\")?t?Gt.PACKED_2X2_FLOAT32:Gt.UNPACKED_FLOAT32:t?Gt.PACKED_2X2_FLOAT16:Gt.UNPACKED_FLOAT16}(e);if(t===zt.DOWNLOAD||t===zt.PIXELS)return Gt.PACKED_4X1_UNSIGNED_BYTE;throw new Error(\"Unknown logical texture type \"+t)}function ms(t,e,n){return t[0]+\"_\"+t[1]+\"_\"+e+\"_\"+n}var gs=function(t,e){this.variableNames=[\"A\"];for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[r]*e[r];this.outputShape=n,this.rank=n.length;var o=wa(this.rank),a=function(t){var e=t.length;if(e>5)throw Error(\"Tile for rank \"+e+\" is not yet supported\");if(1===e)return\"imod(resRC, \"+t[0]+\")\";for(var n=[\"resRC.x\",\"resRC.y\",\"resRC.z\",\"resRC.w\",\"resRC.u\"],r=[],o=0;o<t.length;o++)r.push(\"imod(\"+n[o]+\", \"+t[o]+\")\");return r.join()}(t);this.userCode=\"\\n      void main() {\\n        \"+o+\" resRC = getOutputCoords();\\n        setOutput(getA(\"+a+\"));\\n      }\\n    \"};var ys=function(t,e){this.variableNames=[\"A\"];for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[e[r]];this.outputShape=n,this.rank=n.length;var o=wa(this.rank),a=function(t){var e=t.length;if(e>6)throw Error(\"Transpose for rank \"+e+\" is not yet supported\");for(var n=[\"resRC.x\",\"resRC.y\",\"resRC.z\",\"resRC.w\",\"resRC.u\",\"resRC.v\"],r=new Array(e),o=0;o<t.length;o++)r[t[o]]=n[o];return r.join()}(e);this.userCode=\"\\n    void main() {\\n      \"+o+\" resRC = getOutputCoords();\\n      setOutput(getA(\"+a+\"));\\n    }\\n    \"};var xs=function(t,e){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0;for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[e[r]];if(this.outputShape=n,this.rank=n.length,this.rank>6)throw Error(\"Packed transpose for rank \"+this.rank+\" is not yet supported.\");var o=wa(this.rank),a=ia(\"rc\",this.rank),i=new Array(this.rank);for(r=0;r<e.length;r++)i[e[r]]=a[r];var s=\"vec2(\"+i.slice(-2).join()+\")\",u=\"++\"+a[this.rank-1]+\" < \"+n[this.rank-1],c=\"getChannel(getA(\"+i.join()+\"), \"+s+\")\";this.userCode=\"\\n    void main() {\\n      \"+o+\" rc = getOutputCoords();\\n      vec4 result = vec4(0.);\\n      result[0] = \"+c+\";\\n      if(\"+u+\") {\\n        result[1] = \"+c+\";\\n      }\\n      --\"+a[this.rank-1]+\";\\n      if(++\"+a[this.rank-2]+\" < \"+n[this.rank-2]+\") {\\n        result[2] = \"+c+\";\\n        if(\"+u+\") {\\n          result[3] = \"+c+\";\\n        }\\n      }\\n      setOutput(result);\\n    }\\n    \"},bs=1.7580993408473768,ws=1.0507009873554805,Cs=function(t,e){this.variableNames=[\"A\"],this.outputShape=t,this.userCode=\"\\n      float unaryOperation(float x) {\\n        \"+e+\"\\n      }\\n\\n      void main() {\\n        float x = getAAtOutCoords();\\n        float y = unaryOperation(x);\\n\\n        setOutput(y);\\n      }\\n    \"},Es=\"if (isnan(x)) return x;\",Rs=\"return x;\",Is=\"return abs(x);\",ks=Es+\"\\n  return (x < 0.0) ? 0.0 : x;\\n\",Ss=Es+\"\\n  return (x < 0.0) ? 0.0 : min(6.0, x);\\n\",As=\"return (x >= 0.0) ? x : (exp(x) - 1.0);\",Ds=\"\\n  // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\\n  // see: https://arxiv.org/abs/1706.02515\\n  float scaleAlpha = \"+bs+\";\\n  float scale = \"+ws+\";\\n  return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\\n\";var Ts=\"return -x;\",Ns=\"return ceil(x);\",Fs=\"return floor(x);\",_s=\"return exp(x);\",Os=\"return exp(x) - 1.0;\",Ms=Es+\"\\n  return sin(x);\\n\",Bs=Es+\"\\n  return cos(x);\\n\",Ps=Es+\"\\n  if (abs(x) > 1.) {\\n    return NAN;\\n  }\\n  return asin(x);\\n\",Ls=Es+\"\\n  if (abs(x) > 1.) {\\n    return NAN;\\n  }\\n  return acos(x);\\n\",Ws=Es+\"\\n  return atan(x);\\n\",Us=Es+\"return log(x + sqrt(x * x + 1.0));\",Vs=Es+\"\\n  if (x < 1.0) return NAN;\\n  return log(x + sqrt(x * x - 1.0));\",zs=Es+\"\\n  if ((x < -1.0) || (x > 1.0)) return NAN;\\n  return (log(1.0 + x) - log(1.0 - x)) / 2.0;\",Gs=\"return x;\",Hs=\"return x;\",qs=\"\\n  vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\\n  bvec4 isNaN = isnan(x);\\n\\n  result.r = isNaN.r ? x.r : result.r;\\n  result.g = isNaN.g ? x.g : result.g;\\n  result.b = isNaN.b ? x.b : result.b;\\n  result.a = isNaN.a ? x.a : result.a;\\n\\n  return result;\\n\",Ks=\"\\n  vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));\\n  bvec4 isNaN = isnan(x);\\n\\n  result.r = isNaN.r ? x.r : result.r;\\n  result.g = isNaN.g ? x.g : result.g;\\n  result.b = isNaN.b ? x.b : result.b;\\n  result.a = isNaN.a ? x.a : result.a;\\n\\n  return result;\\n\",js=\"\\n  vec4 result;\\n\\n  result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\\n  result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\\n  result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\\n  result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\\n\\n  return result;\\n\",Xs=function(t,e){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.userCode=\"\\n      vec4 unaryOperation(vec4 x) {\\n        \"+e+\"\\n      }\\n\\n      void main() {\\n        vec4 x = getAAtOutCoords();\\n        vec4 y = unaryOperation(x);\\n\\n        setOutput(y);\\n      }\\n    \"},Ys=function(t){this.variableNames=[\"A\"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=t;var e=t.length,n=sa(\"rc\",e),r=wa(e),o=function(t,e){if(1===t)return\"rc\";for(var n=\"\",r=0;r<t;r++)n+=e[r],r<t-1&&(n+=\",\");return n}(e,n),a=n.slice(-2),i=e<=1?\"rc\":\"vec2(\"+a.join(\",\")+\")\";this.userCode=\"\\n      void main() {\\n        \"+r+\" rc = getOutputCoords();\\n        vec4 packedInput = getA(\"+o+\");\\n\\n        setOutput(getChannel(packedInput, \"+i+\"));\\n      }\\n    \"},$s={};function Qs(t,e){if(void 0===e&&(e=!1),\"linear\"===t)return e?Hs:Rs;if(\"relu\"===t)return e?qs:ks;if(\"elu\"===t)return e?js:As;if(\"relu6\"===t)return e?Ks:Ss;if(\"prelu\"===t)return e?Pa:Ma;throw new Error(\"Activation \"+t+\" has not been implemented for the WebGL backend.\")}var Js=600;var Zs=function(t){function o(e){var n,r=t.call(this)||this;if(r.pendingRead=new WeakMap,r.pendingDisposal=new WeakSet,r.dataRefCount=new WeakMap,r.numBytesInGPU=0,r.uploadWaitMs=0,r.downloadWaitMs=0,r.warnedAboutMemory=!1,r.pendingDeletes=0,r.disposed=!1,!i().getBool(\"HAS_WEBGL\"))throw new Error(\"WebGL is not supported on this device\");if(null==e){var o=jt(i().getNumber(\"WEBGL_VERSION\"));r.binaryCache=(n=i().getNumber(\"WEBGL_VERSION\"))in $s?$s[n]:($s[n]={},$s[n]),r.gpgpu=new Bi(o),r.canvas=o.canvas,r.gpgpuCreatedLocally=!0}else r.gpgpu=e,r.binaryCache={},r.gpgpuCreatedLocally=!1,r.canvas=e.gl.canvas;return r.textureManager=new ps(r.gpgpu),r.numMBBeforeWarning=null==i().global.screen?1024:i().global.screen.height*i().global.screen.width*window.devicePixelRatio*Js/1024/1024,r.texData=new xo(r,Lt),r}return e(o,t),o.prototype.numDataIds=function(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes},o.prototype.write=function(t,e,n){if(i().getBool(\"DEBUG\")&&this.checkNumericalProblems(t),\"complex64\"===n&&null!=t)throw new Error(\"Cannot write to a complex64 dtype. Please use tf.complex(real, imag).\");var r={};return this.texData.set(r,{shape:e,dtype:n,values:t,usage:zt.UPLOAD}),r},o.prototype.move=function(t,e,n,r){if(i().getBool(\"DEBUG\")&&this.checkNumericalProblems(e),\"complex64\"===r)throw new Error(\"Cannot write to a complex64 dtype. Please use tf.complex(real, imag).\");this.texData.set(t,{shape:n,dtype:r,values:e,usage:zt.UPLOAD})},o.prototype.readSync=function(t){var e=this.texData.get(t),n=e.values,r=e.dtype,o=e.complexTensors,a=e.slice,i=e.shape,s=e.isPacked;if(null!=a){var u=void 0;u=s?new Xs(i,Gs):new Cs(i,Gs);var c=this.runWebGLProgram(u,[{dataId:t,shape:i,dtype:r}],r),l=this.readSync(c.dataId);return this.disposeData(c.dataId),l}if(null!=n)return this.convertAndCacheOnCPU(t);if(\"string\"===r)return n;var h,f,d=null!=this.activeTimers;(d&&(h=et()),\"complex64\"===r)?f=Vo(o.real.dataSync(),o.imag.dataSync()):f=this.getValuesFromTexture(t);return d&&(this.downloadWaitMs+=et()-h),this.convertAndCacheOnCPU(t,f)},o.prototype.read=function(t){return n(this,void 0,void 0,(function(){var e,n,o,a,s,u,c,l,h,f,d,p,v,m,g,y,x,b,w,C,E,R;return r(this,(function(r){switch(r.label){case 0:if(this.pendingRead.has(t))return e=this.pendingRead.get(t),[2,new Promise((function(t){return e.push(t)}))];if(n=this.texData.get(t),o=n.values,a=n.shape,s=n.slice,u=n.dtype,c=n.complexTensors,l=n.isPacked,null!=s)return h=void 0,h=l?new Xs(a,Gs):new Cs(a,Gs),f=this.runWebGLProgram(h,[{dataId:t,shape:a,dtype:u}],u),d=this.read(f.dataId),this.disposeData(f.dataId),[2,d];if(null!=o)return[2,this.convertAndCacheOnCPU(t)];if(!i().getBool(\"WEBGL_DOWNLOAD_FLOAT_ENABLED\")&&2===i().getNumber(\"WEBGL_VERSION\"))throw new Error(\"tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.\");return p=null,\"complex64\"!==u&&i().get(\"WEBGL_BUFFER_SUPPORTED\")&&(v=this.decode(t),m=this.texData.get(v.dataId),p=(R=this.gpgpu).createBufferFromTexture.apply(R,[m.texture].concat(Yt(a)))),this.pendingRead.set(t,[]),\"complex64\"===u?[3,2]:[4,this.gpgpu.createAndWaitForFence()];case 1:r.sent(),r.label=2;case 2:return\"complex64\"!==u?[3,4]:[4,Promise.all([c.real.data(),c.imag.data()])];case 3:return y=r.sent(),x=y[0],b=y[1],g=Vo(x,b),[3,5];case 4:null==p?g=this.getValuesFromTexture(t):(w=k(a),g=this.gpgpu.downloadFloat32MatrixFromBuffer(p,w)),r.label=5;case 5:return null!=v&&this.disposeData(v.dataId),C=this.convertAndCacheOnCPU(t,g),E=this.pendingRead.get(t),this.pendingRead.delete(t),E.forEach((function(t){return t(C)})),this.pendingDisposal.has(t)&&(this.pendingDisposal.delete(t),this.disposeData(t),this.pendingDeletes--),[2,C]}}))}))},o.prototype.checkNumericalProblems=function(t){if(null!=t)for(var e=0;e<t.length;e++){var n=t[e];if(!ee(n)){if(i().getBool(\"WEBGL_RENDER_FLOAT32_CAPABLE\"))throw Error(\"The value \"+n+\" cannot be represented with your current settings. Consider enabling float32 rendering: 'tf.env().set('WEBGL_RENDER_FLOAT32_ENABLED', true);'\");throw Error(\"The value \"+n+\" cannot be represented on this device.\")}}},o.prototype.getValuesFromTexture=function(t){var e,n=this.texData.get(t),r=n.shape,o=n.dtype,a=n.isPacked,s=k(r);if(i().getBool(\"WEBGL_DOWNLOAD_FLOAT_ENABLED\")){var u=this.decode(t),c=this.texData.get(u.dataId),l=(e=this.gpgpu).downloadMatrixFromPackedTexture.apply(e,[c.texture].concat(Yt(r))).subarray(0,s);return this.disposeData(u.dataId),l}var h=i().getBool(\"WEBGL_PACK\")&&!0===a,f=h?Te(r):r,d=h?new ci(f):new ui(f),p=this.runWebGLProgram(d,[{shape:f,dtype:o,dataId:t}],\"float32\"),v=this.texData.get(p.dataId),m=this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(v.texture,v.texShape[0],v.texShape[1]).subarray(0,s);return this.disposeData(p.dataId),m},o.prototype.time=function(t){return n(this,void 0,void 0,(function(){var e,n,o,a,s,u,c;return r(this,(function(r){switch(r.label){case 0:return e=this.activeTimers,n=[],o=!1,null==this.programTimersStack?(this.programTimersStack=n,o=!0):this.activeTimers.push(n),this.activeTimers=n,t(),a=I(this.activeTimers.map((function(t){return t.query}))).filter((function(t){return null!=t})),s=I(this.activeTimers.map((function(t){return t.name}))).filter((function(t){return null!=t})),this.activeTimers=e,o&&(this.programTimersStack=null),u={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null},i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\")>0?[4,Promise.all(a)]:[3,2];case 1:return c=r.sent(),u.kernelMs=w(c),u.getExtraProfileInfo=function(){return c.map((function(t,e){return{name:s[e],ms:t}})).map((function(t){return t.name+\": \"+t.ms})).join(\", \")},[3,3];case 2:u.kernelMs={error:\"WebGL query timers are not supported in this environment.\"},r.label=3;case 3:return this.uploadWaitMs=0,this.downloadWaitMs=0,[2,u]}}))}))},o.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU}},o.prototype.startTimer=function(){return i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\")>0?this.gpgpu.beginQuery():{startMs:et(),endMs:null}},o.prototype.endTimer=function(t){return i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\")>0?(this.gpgpu.endQuery(),t):(t.endMs=et(),t)},o.prototype.getQueryTime=function(t){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){return i().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\")>0?[2,this.gpgpu.waitForQueryAndGetTime(t)]:[2,(e=t).endMs-e.startMs]}))}))},o.prototype.disposeData=function(t){if(!this.pendingDisposal.has(t)){if(this.pendingRead.has(t))return this.pendingDisposal.add(t),void this.pendingDeletes++;if(this.texData.has(t)){this.releaseGPUData(t);var e=this.texData.get(t).complexTensors;null!=e&&(e.real.dispose(),e.imag.dispose()),this.texData.delete(t)}}},o.prototype.releaseGPUData=function(t){var e=this.texData.get(t),n=e.texture,r=e.dtype,o=e.texShape,a=e.usage,i=e.isPacked,s=e.slice,u=s&&s.origDataId||t,c=this.dataRefCount.get(u);c>1?this.dataRefCount.set(u,c-1):(this.dataRefCount.delete(u),null!=n&&(this.numBytesInGPU-=this.computeBytes(o,r),this.textureManager.releaseTexture(n,o,a,i)));var l=this.texData.get(t);l.texture=null,l.texShape=null,l.isPacked=!1,l.slice=null},o.prototype.getTexture=function(t){return this.uploadToGPU(t),this.texData.get(t).texture},o.prototype.getDataInfo=function(t){return this.texData.get(t)},o.prototype.getCPUBackend=function(){return i().getBool(\"WEBGL_CPU_FORWARD\")?(null==this.cpuBackend&&(this.cpuBackend=Lt.findBackend(\"cpu\")),this.cpuBackend):null},o.prototype.shouldExecuteOnCPU=function(t,e){var n=this;return void 0===e&&(e=128),null!=this.getCPUBackend()&&t.every((function(t){return null==n.texData.get(t.dataId).texture&&t.size<e}))},o.prototype.getGPGPUContext=function(){return this.gpgpu},o.prototype.complex=function(t,e){var n=this.makeOutput(t.shape,\"complex64\");return this.texData.get(n.dataId).complexTensors={real:Lt.keep(t.clone()),imag:Lt.keep(e.clone())},n},o.prototype.real=function(t){return this.texData.get(t.dataId).complexTensors.real.clone()},o.prototype.imag=function(t){return this.texData.get(t.dataId).complexTensors.imag.clone()},o.prototype.slice=function(t,e,n){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.slice(t,e,n);if(0===k(n))return Fn([],n,t.dtype);var r=this.texData.get(t.dataId).isPacked,o=io(t.shape,e,n);if(r||!o){var a=i().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\")?new fs(n):new ls(n),s=a.getCustomSetupFunc(e);return this.compileAndRun(a,[t],null,s)}return this.uploadToGPU(t.dataId),this.shallowSlice(t,e,n)},o.prototype.shallowSlice=function(t,e,n){var r=this.texData.get(t.dataId),o=this.makeOutput(n,t.dtype),a=this.texData.get(o.dataId);Object.assign(a,r),a.shape=n,a.dtype=t.dtype;var i=so(e,t.strides);r.slice&&(i+=r.slice.flatOffset),a.slice={flatOffset:i,origDataId:r.slice&&r.slice.origDataId||t.dataId};var s=this.dataRefCount.get(a.slice.origDataId)||1;return this.dataRefCount.set(a.slice.origDataId,s+1),o},o.prototype.stridedSlice=function(t,e,n,r){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.stridedSlice(t,e,n,r);var o=ro(e,n,r);if(o.some((function(t){return 0===t})))return Fn([],o);var a=new ds(e,r,o);return this.compileAndRun(a,[t])},o.prototype.reverse=function(t,e){var n=i().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\")?new is(t.shape,e):new as(t.shape,e);return this.compileAndRun(n,[t])},o.prototype.concat=function(t,e){if(\"complex64\"===t[0].dtype){var n=t.map((function(t){return Tn(t)})),r=t.map((function(t){return Nn(t)}));return Dn(this.concat(n,e),this.concat(r,e))}if(this.shouldExecuteOnCPU(t))return this.cpuBackend.concat(t,e);if(1===t.length)return t[0];if(t.length>i().getNumber(\"WEBGL_MAX_TEXTURES_IN_SHADER\")){var o=Math.floor(t.length/2),a=this.concat(t.slice(0,o),e),s=this.concat(t.slice(o),e);return this.concat([a,s],e)}if(i().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\")&&t[0].rank>1){var u=new Ga(t.map((function(t){return t.shape})),e);return this.compileAndRun(u,t)}var c=Sn(t.map((function(t){return t.shape})),e),l=t.map((function(t){return t.as2D(-1,k(t.shape.slice(e)))})),h=new za(l.map((function(t){return t.shape})));return this.compileAndRun(h,l).reshape(c)},o.prototype.neg=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.neg(t);if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,Ts,t.dtype);var e=new Cs(t.shape,Ts);return this.compileAndRun(e,[t])},o.prototype.batchMatMul=function(t,e,n,r){var o=n?t.shape[2]:t.shape[1],a=r?e.shape[1]:e.shape[2],i=n?t.shape[1]:t.shape[2],s=t.shape[0];if((1===o||1===a)&&i>1e3){n&&(t=t.transpose([0,2,1])),r&&(e=e.transpose([0,2,1]));var u=1===a?t:t.as3D(s,i,1),c=1===a?2:1,l=1===a?e.as3D(s,1,i):e;return this.multiply(u,l).sum(c,!0)}var h=Dt(t.dtype,e.dtype),f=new Hi(t.shape,[s,o,a],n,r);return this.compileAndRun(f,[t,e],h)},o.prototype.fusedBatchMatMul=function(t){var e=t.a,n=t.b,r=t.transposeA,o=t.transposeB,a=t.bias,i=t.activation,s=t.preluActivationWeights,u=r?e.shape[2]:e.shape[1],c=o?n.shape[1]:n.shape[2],l=e.shape[0],h=Dt(e.dtype,n.dtype),f=null!=a,d=null!=s,p=i?Qs(i,!0):null,v=new Hi(e.shape,[l,u,c],r,o,f,p,d),m=[e,n];return a&&m.push(a),s&&m.push(s),this.compileAndRun(v,m,h)},o.prototype.multiply=function(t,e){if(\"complex64\"===t.dtype){var n=this.texData.get(t.dataId),r=this.texData.get(e.dataId),o=new Na(Da,t.shape,e.shape),a=new Na(Ta,t.shape,e.shape),s=[this.makeComplexComponentTensorInfo(t,n.complexTensors.real),this.makeComplexComponentTensorInfo(t,n.complexTensors.imag),this.makeComplexComponentTensorInfo(e,r.complexTensors.real),this.makeComplexComponentTensorInfo(e,r.complexTensors.imag)],u=this.compileAndRun(o,s),c=this.compileAndRun(a,s),l=this.complex(u,c);return u.dispose(),c.dispose(),l}if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.multiply(t,e);if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,Oa,t.dtype);var h=new Ba(Oa,t.shape,e.shape);return this.compileAndRun(h,[t,e],t.dtype)},o.prototype.batchNormalization=function(t,e,n,r,o,a){var s=[t,e,n],u=null;null!=a&&(u=a.shape,s.push(a));var c=null;if(null!=o&&(c=o.shape,s.push(o)),i().getBool(\"WEBGL_PACK_NORMALIZATION\")){var l=new Aa(t.shape,e.shape,n.shape,u,c,r);return this.compileAndRun(l,s)}var h=new Sa(t.shape,e.shape,n.shape,u,c,r);return this.compileAndRun(h,s)},o.prototype.localResponseNormalization4D=function(t,e,n,r,o){var a=i().getBool(\"WEBGL_PACK_NORMALIZATION\")?new Vi(t.shape,e,n,r,o):new Wi(t.shape,e,n,r,o);return this.compileAndRun(a,[t])},o.prototype.LRNGrad=function(t,e,n,r,o,a,i){var s=new Ui(e.shape,r,o,a,i);return this.compileAndRun(s,[e,n,t])},o.prototype.tile=function(t,e){if(\"string\"===t.dtype){var n=this.readSync(t.dataId).map((function(t){return ot(t)}));return ta(dr(t.shape,t.dtype,n),e)}var r=new gs(t.shape,e);return this.compileAndRun(r,[t])},o.prototype.pad=function(t,e,n){var r=i().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\")?new Yi(t.shape,e,n):new Xi(t.shape,e,n);return this.compileAndRun(r,[t])},o.prototype.transpose=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.transpose(t,e);var n=i().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\")?new xs(t.shape,e):new ys(t.shape,e);return this.compileAndRun(n,[t])},o.prototype.gather=function(t,e,n){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.gather(t,e,n);var r=new mi(t.shape,e.size,n);return this.compileAndRun(r,[t,e])},o.prototype.batchToSpaceND=function(t,e,n){C(t.rank<=4,(function(){return\"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet\"}));var r=e.reduce((function(t,e){return t*e})),o=zr(t.shape,e,r),a=Gr(o.length,e.length),i=Hr(t.shape,e,r),s=qr(n,e.length),u=Kr(i,n,e.length);return t.reshape(o).transpose(a).reshape(i).slice(s,u)},o.prototype.spaceToBatchND=function(t,e,n){C(t.rank<=4,(function(){return\"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet\"}));var r=e.reduce((function(t,e){return t*e})),o=[[0,0]];o.push.apply(o,n);for(var a=1+e.length;a<t.shape.length;++a)o.push([0,0]);var i=t.pad(o),s=zr(i.shape,e,r,!1),u=Gr(s.length,e.length,!1),c=Hr(i.shape,e,r,!1);return i.reshape(s).transpose(u).reshape(c)},o.prototype.reduce=function(t,e,n){var r=t.shape[0],o=t.shape[1],a=$r(o),i=new Ji({windowSize:a,inSize:o,batchSize:r},e),s=this.compileAndRun(i,[t],n);return 1===s.shape[1]?s:this.reduce(s,e,n)},o.prototype.argReduce=function(t,e,n){void 0===n&&(n=null);var r=t.shape[0],o=t.shape[1];null!=n&&(r=n.shape[0],o=n.shape[1]);var a=$r(o),i=new aa({windowSize:a,inSize:o,batchSize:r},e,null==n),s=[t];null!=n&&s.push(n);var u=this.compileAndRun(i,s,\"int32\");return 1===u.shape[1]?u:this.argReduce(t,e,u)},o.prototype.argReducePacked=function(t,e,n){void 0===n&&(n=null);var r=null!=n?n.shape:t.shape,o=$r(r[r.length-1]),a=new Ra(r,o,e,null==n),i=null==n?[t]:[t,n],s=this.compileAndRun(a,i,\"int32\");return s.rank===t.rank?this.argReducePacked(t,e,s):s},o.prototype.sum=function(t,e){Cn(\"sum\",e,t.rank);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o),i=Tt(t.dtype);return this.reduce(a,\"sum\",i).reshape(r)},o.prototype.prod=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.prod(t,e);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o),i=Tt(t.dtype);return this.reduce(a,\"prod\",i).reshape(r)},o.prototype.unsortedSegmentSum=function(t,e,n){var r=0,o=En([r],t.rank),a=t;null!=o&&(a=t.transpose(o),r=In(1,t.rank)[0]);var i=function(t,e,n){for(var r=[],o=t.length,a=0;a<o;a++)a!==e?r.push(t[a]):r.push(n);return r}(a.shape,r,n),s=k([a.shape[r]]),u=a.as2D(-1,s),c=Tt(t.dtype),l=this.segOpCompute(u,\"unsortedSegmentSum\",e,c,n).reshape(i);return null!=o&&(l=l.transpose(Rn(o))),l},o.prototype.segOpCompute=function(t,e,n,r,o){var a=t.shape[0],i=t.shape[1],s=function(t,e){var n,r=!1;for(t<=Yr?(n=t,r=!0):n=Y(t,Math.floor(Math.sqrt(t)));!r;)n>e||n===t?r=!0:n=Y(t,n+1);return n}(i,o),u=new us({windowSize:s,inSize:i,batchSize:a,numSegments:o},e),c=this.compileAndRun(u,[t,n],r);return c.shape[1]===o?c:(n=Kn(0,o).tile([i/s]),this.segOpCompute(c,e,n,r,o))},o.prototype.argMinMaxReduce=function(t,e,n){var r=[e];if(Cn(\"arg\"+n.charAt(0).toUpperCase()+n.slice(1),r,t.rank),!i().getBool(\"WEBGL_PACK_REDUCE\")||t.rank<=2){var o=bn(t.shape,r),a=o[0],s=k(o[1]),u=t.as2D(-1,s);return this.argReduce(u,n).reshape(a)}return this.argReducePacked(t,n)},o.prototype.argMin=function(t,e){return this.argMinMaxReduce(t,e,\"min\")},o.prototype.argMax=function(t,e){return this.argMinMaxReduce(t,e,\"max\")},o.prototype.cumsum=function(t,e,n,r){if(e!==t.rank-1)throw new Error(\"WebGL cumsum shader expects an inner-most axis=\"+(t.rank-1)+\" but got axis=\"+e);var o=new ni(t.shape,n,r);return this.compileAndRun(o,[t])},o.prototype.equal=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return vec4(equal(a, b));\\n\",\"bool\");var n=new Ba(\"return float(a == b);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.notEqual=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return vec4(notEqual(a, b));\\n\",\"bool\");var n=new Ba(\"return float(a != b);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.less=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.less(t,e);if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return vec4(lessThan(a, b));\\n\",\"bool\");var n=new Ba(\"return float(a < b);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.lessEqual=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return vec4(lessThanEqual(a, b));\\n\",\"bool\");var n=new Ba(\"return float(a <= b);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.greater=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.greater(t,e);if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return vec4(greaterThan(a, b));\\n\",\"bool\");var n=new Ba(\"return float(a > b);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.greaterEqual=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return vec4(greaterThanEqual(a, b));\\n\",\"bool\");var n=new Ba(\"return float(a >= b);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.logicalNot=function(t){var e=new Cs(t.shape,\"return float(!(x >= 1.0));\");return this.compileAndRun(e,[t])},o.prototype.logicalAnd=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return vec4(\\n    vec4(greaterThanEqual(a, vec4(1.0))) *\\n    vec4(greaterThanEqual(b, vec4(1.0))));\\n\",\"bool\");var n=new Ba(\"return float(a >= 1.0 && b >= 1.0);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.logicalOr=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  return min(\\n    vec4(greaterThanEqual(a, vec4(1.0))) +\\n    vec4(greaterThanEqual(b, vec4(1.0))),\\n    vec4(1.0));\\n\",\"bool\");var n=new Ba(\"return float(a >= 1.0 || b >= 1.0);\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"bool\")},o.prototype.select=function(t,e,n){var r=new cs(t.rank,e.shape,e.rank);return this.compileAndRun(r,[t,e,n],Dt(e.dtype,n.dtype))},o.prototype.where=function(t){dn(\"tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead\");var e=t.dataSync();return na(t.shape,e)},o.prototype.topk=function(t,e,n){return ea(t.dataSync(),t.shape,t.dtype,e)},o.prototype.min=function(t,e){Cn(\"min\",e,t.rank);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o);return this.reduce(a,\"min\",a.dtype).reshape(r)},o.prototype.minimum=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.minimum(t,e);var n=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new La(\"\\n  vec4 result = vec4(min(a, b));\\n  vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\\n  \\n  result.r = isNaN.r > 0. ? NAN : result.r;\\n  result.g = isNaN.g > 0. ? NAN : result.g;\\n  result.b = isNaN.b > 0. ? NAN : result.b;\\n  result.a = isNaN.a > 0. ? NAN : result.a;\\n\\n  return result;\\n\",t.shape,e.shape):new Ba(\"\\n  if (isnan(a)) return a;\\n  if (isnan(b)) return b;\\n\\n  return min(a, b);\\n\",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.mod=function(t,e){var n=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new La(\"\\n  vec4 result = mod(a, b);\\n  vec4 isNaN = vec4(equal(b, vec4(0.0)));\\n  \\n  result.r = isNaN.r > 0. ? NAN : result.r;\\n  result.g = isNaN.g > 0. ? NAN : result.g;\\n  result.b = isNaN.b > 0. ? NAN : result.b;\\n  result.a = isNaN.a > 0. ? NAN : result.a;\\n\\n  return result;\\n\",t.shape,e.shape):new Ba(\"if (b == 0.0) return NAN;\\n  return mod(a, b);\",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.max=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.max(t,e);Cn(\"max\",e,t.rank);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o);return this.reduce(a,\"max\",a.dtype).reshape(r)},o.prototype.maximum=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.maximum(t,e);var n=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new La(\"\\n  vec4 result = vec4(max(a, b));\\n  vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\\n  \\n  result.r = isNaN.r > 0. ? NAN : result.r;\\n  result.g = isNaN.g > 0. ? NAN : result.g;\\n  result.b = isNaN.b > 0. ? NAN : result.b;\\n  result.a = isNaN.a > 0. ? NAN : result.a;\\n\\n  return result;\\n\",t.shape,e.shape):new Ba(\"\\n  if (isnan(a)) return a;\\n  if (isnan(b)) return b;\\n\\n  return max(a, b);\\n\",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.all=function(t,e){Cn(\"all\",e,t.rank);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o);return this.reduce(a,\"all\",a.dtype).reshape(r)},o.prototype.any=function(t,e){Cn(\"any\",e,t.rank);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o);return this.reduce(a,\"any\",a.dtype).reshape(r)},o.prototype.realDivide=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")){return this.packedBinaryOp(t,e,\"\\n  // vec4 one = vec4(equal(a, b));\\n  // return one + (vec4(1.0) - one) * a / b;\\n  vec4 result = a / b;\\n  if(a.x == b.x) {\\n    result.x = 1.;\\n  }\\n  if(a.y == b.y) {\\n    result.y = 1.;\\n  }\\n  if(a.z == b.z) {\\n    result.z = 1.;\\n  }\\n  if(a.w == b.w) {\\n    result.w = 1.;\\n  }\\n\\n  return result;\\n\",\"float32\",!0)}var n=new Ba(\"\\nif (a == b) {\\n  return 1.0;\\n};\\nreturn a / b;\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"float32\")},o.prototype.floorDiv=function(t,e){if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,\"\\n  ivec4 ia = round(a);\\n  ivec4 ib = round(b);\\n  bvec4 cond = notEqual(ib, ivec4(0));\\n  ivec4 result = ivec4(0);\\n  vec4 s = sign(a) * sign(b);\\n\\n  // Windows (D3D) wants guaranteed non-zero int division at compile-time.\\n  if (cond[0]) {\\n    result[0] = idiv(ia[0], ib[0], s[0]);\\n  }\\n  if (cond[1]) {\\n    result[1] = idiv(ia[1], ib[1], s[1]);\\n  }\\n  if (cond[2]) {\\n    result[2] = idiv(ia[2], ib[2], s[2]);\\n  }\\n  if (cond[3]) {\\n    result[3] = idiv(ia[3], ib[3], s[3]);\\n  }\\n  return vec4(result);\\n\",\"int32\");var n=new Ba(\"\\n  float s = sign(a) * sign(b);\\n  int ia = round(a);\\n  int ib = round(b);\\n  if (ib != 0) {\\n    // Windows (D3D) wants guaranteed non-zero int division at compile-time.\\n    return float(idiv(ia, ib, s));\\n  } else {\\n    return NAN;\\n  }\\n\",t.shape,e.shape);return this.compileAndRun(n,[t,e],\"int32\")},o.prototype.add=function(t,e){if(\"complex64\"===t.dtype&&\"complex64\"===e.dtype)return this.complexSeparableBinaryOp(t,e,Fa);if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.add(t,e);var n=Dt(t.dtype,e.dtype);if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,Fa,n);var r=new Ba(Fa,t.shape,e.shape);return this.compileAndRun(r,[t,e],n)},o.prototype.packedUnaryOp=function(t,e,n){var r=new Xs(t.shape,e);return this.compileAndRun(r,[t],n)},o.prototype.packedBinaryOp=function(t,e,n,r,o){void 0===o&&(o=!1);var a=new La(n,t.shape,e.shape,o);return this.compileAndRun(a,[t,e],r)},o.prototype.complexSeparableBinaryOp=function(t,e,n){var r=this,o=this.texData.get(t.dataId),a=this.texData.get(e.dataId),i=[[o.complexTensors.real,a.complexTensors.real],[o.complexTensors.imag,a.complexTensors.imag]].map((function(o){var a=o[0],i=o[1],s=r.makeComplexComponentTensorInfo(t,a),u=r.makeComplexComponentTensorInfo(e,i),c=new Ba(n,t.shape,e.shape);return r.compileAndRun(c,[s,u],Dt(a.dtype,i.dtype))})),s=i[0],u=i[1],c=this.complex(s,u);return s.dispose(),u.dispose(),c},o.prototype.makeComplexComponentTensorInfo=function(t,e){return{dataId:e.dataId,dtype:e.dtype,shape:t.shape}},o.prototype.addN=function(t){if(1===t.length)return t[0];if(t.length>i().get(\"WEBGL_MAX_TEXTURES_IN_SHADER\")){var e=Math.floor(t.length/2),n=this.addN(t.slice(0,e)),r=this.addN(t.slice(e));return this.addN([n,r])}var o=t.map((function(t){return t.dtype})).reduce((function(t,e){return Dt(t,e)})),a=t.map((function(t){return t.shape})),s=i().getBool(\"WEBGL_PACK\")?new oa(t[0].shape,a):new ra(t[0].shape,a);return this.compileAndRun(s,t,o)},o.prototype.subtract=function(t,e){if(\"complex64\"===t.dtype&&\"complex64\"===e.dtype)return this.complexSeparableBinaryOp(t,e,_a);if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.subtract(t,e);var n=Dt(t.dtype,e.dtype);if(i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\"))return this.packedBinaryOp(t,e,_a,t.dtype);var r=new Ba(_a,t.shape,e.shape);return this.compileAndRun(r,[t,e],n)},o.prototype.pow=function(t,e){var n=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new La(\"\\n  // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise.\\n  vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1)));\\n  vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1);\\n  vec4 result = multiplier * pow(abs(a), b);\\n\\n  // Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS\\n  bvec4 isExpZero = equal(b, vec4(0.0));\\n  result.r = isExpZero.r ? 1.0 : result.r;\\n  result.g = isExpZero.g ? 1.0 : result.g;\\n  result.b = isExpZero.b ? 1.0 : result.b;\\n  result.a = isExpZero.a ? 1.0 : result.a;\\n\\n  vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b));\\n  \\n  result.r = isNaN.r > 0. ? NAN : result.r;\\n  result.g = isNaN.g > 0. ? NAN : result.g;\\n  result.b = isNaN.b > 0. ? NAN : result.b;\\n  result.a = isNaN.a > 0. ? NAN : result.a;\\n\\n  return result;\\n\",t.shape,e.shape):new Ba(\"\\nif(a < 0.0 && floor(b) < b){\\n  return NAN;\\n}\\nif (b == 0.0) {\\n  return 1.0;\\n}\\nreturn (round(mod(b, 2.0)) != 1) ?\\n    pow(abs(a), b) : sign(a) * pow(abs(a), b);\\n\",t.shape,e.shape),r=Dt(t.dtype,e.dtype);return this.compileAndRun(n,[t,e],r)},o.prototype.ceil=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.ceil(t);if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,Ns,t.dtype);var e=new Cs(t.shape,Ns);return this.compileAndRun(e,[t])},o.prototype.floor=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.floor(t);if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,Fs,t.dtype);var e=new Cs(t.shape,Fs);return this.compileAndRun(e,[t])},o.prototype.sign=function(t){var e=new Cs(t.shape,\"\\n  if (isnan(x)) { return 0.0; }\\n  return sign(x);\\n\");return this.compileAndRun(e,[t])},o.prototype.isNaN=function(t){var e=new Cs(t.shape,\"return float(isnan(x));\");return this.compileAndRun(e,[t],\"bool\")},o.prototype.isInf=function(t){var e=new Cs(t.shape,\"return float(isinf(x));\");return this.compileAndRun(e,[t],\"bool\")},o.prototype.isFinite=function(t){var e=new Cs(t.shape,\"return float(!isnan(x) && !isinf(x));\");return this.compileAndRun(e,[t],\"bool\")},o.prototype.round=function(t){var e=new Cs(t.shape,\"\\n  // OpenGL ES does not support round function.\\n  // The algorithm is based on banker's rounding.\\n  float base = floor(x);\\n  if ((x - base) < 0.5) {\\n    return floor(x);\\n  } else if ((x - base) > 0.5) {\\n    return ceil(x);\\n  } else {\\n    if (mod(base, 2.0) == 0.0) {\\n      return base;\\n    } else {\\n      return base + 1.0;\\n    }\\n  }\\n\");return this.compileAndRun(e,[t])},o.prototype.exp=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.exp(t);if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,_s,t.dtype);var e=new Cs(t.shape,_s);return this.compileAndRun(e,[t])},o.prototype.expm1=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.expm1(t);if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,Os,t.dtype);var e=new Cs(t.shape,Os);return this.compileAndRun(e,[t])},o.prototype.softmax=function(t,e){var n=O([e],t.shape),r=this.max(t,n),o=wn(r.shape,n),a=this.subtract(t,r.reshape(o)),i=this.exp(a),s=this.sum(i,n).reshape(o);return this.realDivide(i,s)},o.prototype.log=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.log(t);if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,\"\\n  vec4 result = log(x);\\n  vec4 isNaN = vec4(lessThan(x, vec4(0.0)));\\n  result.r = isNaN.r == 1.0 ? NAN : result.r;\\n  result.g = isNaN.g == 1.0 ? NAN : result.g;\\n  result.b = isNaN.b == 1.0 ? NAN : result.b;\\n  result.a = isNaN.a == 1.0 ? NAN : result.a;\\n\\n  return result;\\n\",t.dtype);var e=new Cs(t.shape,\"if (x < 0.0) return NAN;\\n  return log(x);\");return this.compileAndRun(e,[t])},o.prototype.log1p=function(t){var e=new Cs(t.shape,\"return log(1.0 + x);\");return this.compileAndRun(e,[t])},o.prototype.sqrt=function(t){var e=new Cs(t.shape,\"return sqrt(x);\");return this.compileAndRun(e,[t])},o.prototype.rsqrt=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.rsqrt(t);var e=new Cs(t.shape,\"return inversesqrt(x);\");return this.compileAndRun(e,[t])},o.prototype.reciprocal=function(t){var e=new Cs(t.shape,\"return 1.0 / x;\");return this.compileAndRun(e,[t])},o.prototype.relu=function(t){var e;return e=i().getBool(\"WEBGL_PACK\")?new Xs(t.shape,qs):new Cs(t.shape,ks),this.compileAndRun(e,[t])},o.prototype.relu6=function(t){var e;return e=i().getBool(\"WEBGL_PACK\")?new Xs(t.shape,Ks):new Cs(t.shape,Ss),this.compileAndRun(e,[t])},o.prototype.prelu=function(t,e){var n=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new La(Pa,t.shape,e.shape):new Ba(Ma,t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.elu=function(t){if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,js,t.dtype);var e=new Cs(t.shape,As);return this.compileAndRun(e,[t])},o.prototype.eluDer=function(t,e){var n=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new La(\"\\n  vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));\\n  return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));\\n\",t.shape,e.shape):new Ba(\"return (b >= 1.0) ? a : a * (b + 1.0);\",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.selu=function(t){var e=new Cs(t.shape,Ds);return this.compileAndRun(e,[t])},o.prototype.int=function(t){var e=new Cs(t.shape,\"return float(int(x));\");return this.compileAndRun(e,[t],\"int32\")},o.prototype.clip=function(t,e,n){var r,o=(r=i().getBool(\"WEBGL_PACK_CLIP\")?new Ua(t.shape):new Wa(t.shape)).getCustomSetupFunc(e,n);return this.compileAndRun(r,[t],null,o)},o.prototype.abs=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.abs(t);if(i().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))return this.packedUnaryOp(t,Is,t.dtype);var e=new Cs(t.shape,Is);return this.compileAndRun(e,[t])},o.prototype.complexAbs=function(t){var e=this.texData.get(t.dataId),n=new Va(t.shape),r=[this.makeComplexComponentTensorInfo(t,e.complexTensors.real),this.makeComplexComponentTensorInfo(t,e.complexTensors.imag)];return this.compileAndRun(n,r)},o.prototype.sigmoid=function(t){var e=new Cs(t.shape,\"return 1.0 / (1.0 + exp(-1.0 * x));\");return this.compileAndRun(e,[t])},o.prototype.softplus=function(t){var e=new Cs(t.shape,\"\\n  float epsilon = 1.1920928955078125e-7;\\n  float threshold = log(epsilon) + 2.0;\\n\\n  bool too_large = x > -threshold;\\n  bool too_small = x < threshold;\\n\\n  float result;\\n  float exp_x = exp(x);\\n\\n  if (too_large){\\n    result = x;\\n  }\\n  else if (too_small){\\n    result = exp_x;\\n  }\\n  else{\\n    result = log(exp_x + 1.0);\\n  }\\n  return result;\\n\");return this.compileAndRun(e,[t])},o.prototype.sin=function(t){var e=new Cs(t.shape,Ms);return this.compileAndRun(e,[t])},o.prototype.cos=function(t){var e=new Cs(t.shape,Bs);return this.compileAndRun(e,[t])},o.prototype.tan=function(t){var e=new Cs(t.shape,\"return tan(x);\");return this.compileAndRun(e,[t])},o.prototype.asin=function(t){var e=new Cs(t.shape,Ps);return this.compileAndRun(e,[t])},o.prototype.acos=function(t){var e=new Cs(t.shape,Ls);return this.compileAndRun(e,[t])},o.prototype.atan=function(t){var e=new Cs(t.shape,Ws);return this.compileAndRun(e,[t])},o.prototype.atan2=function(t,e){var n=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new La(\"\\n  vec4 result = atan(a, b);\\n  vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\\n  \\n  result.r = isNaN.r > 0. ? NAN : result.r;\\n  result.g = isNaN.g > 0. ? NAN : result.g;\\n  result.b = isNaN.b > 0. ? NAN : result.b;\\n  result.a = isNaN.a > 0. ? NAN : result.a;\\n\\n  return result;\\n\",t.shape,e.shape):new Ba(\"\\n  if (isnan(a)) return a;\\n  if (isnan(b)) return b;\\n\\n  return atan(a, b);\\n\",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.sinh=function(t){var e=new Cs(t.shape,\"\\n  float e2x = exp(x);\\n  return (e2x - 1.0 / e2x) / 2.0;\\n\");return this.compileAndRun(e,[t])},o.prototype.cosh=function(t){var e=new Cs(t.shape,\"\\n  float e2x = exp(-x);\\n  return (e2x + 1.0 / e2x) / 2.0;\\n\");return this.compileAndRun(e,[t])},o.prototype.tanh=function(t){var e=new Cs(t.shape,\"\\n  float e2x = exp(-2.0 * abs(x));\\n  return sign(x) * (1.0 - e2x) / (1.0 + e2x);\\n\");return this.compileAndRun(e,[t])},o.prototype.asinh=function(t){var e=new Cs(t.shape,Us);return this.compileAndRun(e,[t])},o.prototype.acosh=function(t){var e=new Cs(t.shape,Vs);return this.compileAndRun(e,[t])},o.prototype.atanh=function(t){var e=new Cs(t.shape,zs);return this.compileAndRun(e,[t])},o.prototype.erf=function(t){var e=new Cs(t.shape,'\\n  // Error function is calculated approximately with elementary function.\\n  // See \"Handbook of Mathematical Functions with Formulas,\\n  // Graphs, and Mathematical Tables\", Abramowitz and Stegun.\\n  float p = 0.3275911;\\n  float a1 = 0.254829592;\\n  float a2 = -0.284496736;\\n  float a3 = 1.421413741;\\n  float a4 = -1.453152027;\\n  float a5 = 1.061405429;\\n\\n  float sign = sign(x);\\n  x = abs(x);\\n  float t = 1.0 / (1.0 + p * x);\\n  return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x));\\n');return this.compileAndRun(e,[t])},o.prototype.step=function(t,e){var n=new Cs(t.shape,function(t){return void 0===t&&(t=0),Es+\"\\n    return x > 0.0 ? 1.0 : float(\"+t+\");\\n  \"}(e));return this.compileAndRun(n,[t])},o.prototype.conv2dByMatMul=function(t,e,n,r,o,a){var s=t.shape,u=this.texData.get(t.dataId),c=n.inChannels,l=s[0]*s[1]*s[2],h=n.outChannels,f=\"channelsLast\"===n.dataFormat,d=(1===l||1===h)&&c>1e3,p=s[2]%2!=0&&!!u.isPacked;if(d||!i().getBool(\"WEBGL_LAZILY_UNPACK\")||!i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")||!p){var v=f?s[0]*s[1]*s[2]:s[0]*s[2]*s[3],m=this.reshape(t,[1,v,n.inChannels]),g=this.reshape(e,[1,n.inChannels,n.outChannels]);return this.reshape(this.fusedBatchMatMul({a:m,b:g,transposeA:!1,transposeB:!1,bias:r,activation:o,preluActivationWeights:a}),n.outShape)}var y=f?s[0]*s[1]*(s[2]+1):s[0]*s[2]*(s[3]+1),x={dataId:t.dataId,shape:[1,y,n.inChannels],dtype:t.dtype},b=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,C(_e(u.shape,x.shape),(function(){return\"packed reshape \"+u.shape+\" to \"+x.shape+\" isn't free\"}));var w=this.reshape(e,[1,n.inChannels,n.outChannels]),E=this.fusedBatchMatMul({a:x,b:w,transposeA:!1,transposeB:!1,bias:r,activation:o,preluActivationWeights:a}),R=this.texData.get(E.dataId);return C(R.isPacked,(function(){return\"batchMatMul result is expected to be packed\"})),u.shape=b,R.shape=n.outShape,Lt.makeTensorFromDataId(E.dataId,n.outShape,E.dtype)},o.prototype.conv2dWithIm2Row=function(t,e,n,r,o,a){var i=n.filterWidth,s=n.filterHeight,u=n.inChannels,c=n.outWidth,l=n.outHeight,h=\"channelsLast\"===n.dataFormat,f=i*s*u,d=l*c,p=[f,d],v=t.squeeze([0]),m=e.reshape([1,f,-1]),g=new Li(p,v.shape,n),y=this.compileAndRun(g,[v]).reshape([1,p[0],p[1]]),x=null!=r,b=null!=a,w=o?Qs(o,!0):null,C=new Hi(y.shape,[1,d,n.outChannels],!0,!1,x,w,b),E=[y,m];r&&E.push(r),b&&E.push(a);var R=this.compileAndRun(C,E);return h?R.reshape([1,l,c,n.outChannels]):R.reshape([1,n.outChannels,l,c])},o.prototype.fusedConv2d=function(t){var e=t.input,n=t.filter,r=t.convInfo,o=t.bias,a=t.activation,s=t.preluActivationWeights;if(1===r.filterHeight&&1===r.filterWidth&&1===r.dilationHeight&&1===r.dilationWidth&&1===r.strideHeight&&1===r.strideWidth&&(\"SAME\"===r.padInfo.type||\"VALID\"===r.padInfo.type))return this.conv2dByMatMul(e,n,r,o,a,s);if(i().getBool(\"WEBGL_CONV_IM2COL\")&&1===e.shape[0])return this.conv2dWithIm2Row(e,n,r,o,a,s);var u=null!=o,c=null!=s,l=a?Qs(a,!1):null,h=new Qa(r,u,l,c),f=[e,n];return o&&f.push(o),s&&f.push(s),this.compileAndRun(h,f)},o.prototype.conv2d=function(t,e,n){if(1===n.filterHeight&&1===n.filterWidth&&1===n.dilationHeight&&1===n.dilationWidth&&1===n.strideHeight&&1===n.strideWidth&&(\"SAME\"===n.padInfo.type||\"VALID\"===n.padInfo.type))return this.conv2dByMatMul(t,e,n);if(i().getBool(\"WEBGL_CONV_IM2COL\")&&1===t.shape[0])return this.conv2dWithIm2Row(t,e,n);var r=new Qa(n);return this.compileAndRun(r,[t,e])},o.prototype.conv2dDerInput=function(t,e,n){var r=new Ka(n);return this.compileAndRun(r,[t,e])},o.prototype.conv2dDerFilter=function(t,e,n){var r=new qa(n);return this.compileAndRun(r,[t,e])},o.prototype.fusedDepthwiseConv2D=function(t){var e,n=t.input,r=t.filter,o=t.convInfo,a=t.bias,s=t.activation,u=t.preluActivationWeights,c=i().getBool(\"WEBGL_PACK_DEPTHWISECONV\")&&o.strideWidth<=2&&o.outChannels/o.inChannels==1,l=s?Qs(s,c):null,h=[n,r],f=null!=a,d=null!=u;return f&&h.push(a),d&&h.push(u),c?(e=new ti(o,f,l,d),this.compileAndRun(e,h)):(e=new Za(o,f,l,d),this.compileAndRun(e,h))},o.prototype.depthwiseConv2D=function(t,e,n){var r;return i().getBool(\"WEBGL_PACK_DEPTHWISECONV\")&&n.strideWidth<=2&&n.outChannels/n.inChannels==1?(r=new ti(n),this.compileAndRun(r,[t,e])):(r=new Za(n),this.compileAndRun(r,[t,e]))},o.prototype.depthwiseConv2DDerInput=function(t,e,n){var r=new $a(n);return this.compileAndRun(r,[t,e])},o.prototype.depthwiseConv2DDerFilter=function(t,e,n){var r=new Ya(n);return this.compileAndRun(r,[t,e])},o.prototype.conv3d=function(t,e,n){var r=new Ja(n);return this.compileAndRun(r,[t,e])},o.prototype.conv3dDerInput=function(t,e,n){var r=new Xa(n);return this.compileAndRun(r,[t,e])},o.prototype.conv3dDerFilter=function(t,e,n){var r=new ja(n);return this.compileAndRun(r,[t,e])},o.prototype.maxPool=function(t,e){var n=new $i(e,\"max\",!1);return this.compileAndRun(n,[t])},o.prototype.avgPool=function(t,e){var n=new $i(e,\"avg\",!1);return this.compileAndRun(n,[t],\"float32\")},o.prototype.maxPoolBackprop=function(t,e,n,r){var o=new $i(r,\"max\",!0),a=this.compileAndRun(o,[e]),i=new zi(r),s=this.compileAndRun(i,[t,a],e.dtype);return a.dispose(),s},o.prototype.avgPoolBackprop=function(t,e,n){var r=new Ia(n);return this.compileAndRun(r,[t],e.dtype)},o.prototype.cast=function(t,e){return Po(t,e,this)},o.prototype.unstack=function(t,e){for(var n=t.shape[e],r=new Array(t.rank-1),o=0,a=0;a<t.rank;a++)a!==e&&(r[o++]=t.shape[a]);var i=new Array(t.rank).fill(0),s=t.shape.slice();s[e]=1;var u=new Array(n);for(a=0;a<u.length;a++)i[e]=a,u[a]=this.slice(t,i,s).reshape(r);return u},o.prototype.avgPool3d=function(t,e){var n=new Qi(e,\"avg\",!1);return this.compileAndRun(n,[t],\"float32\")},o.prototype.avgPool3dBackprop=function(t,e,n){var r=new ka(n);return this.compileAndRun(r,[t],e.dtype)},o.prototype.maxPool3d=function(t,e){var n=new Qi(e,\"max\",!1);return this.compileAndRun(n,[t],\"float32\")},o.prototype.maxPool3dBackprop=function(t,e,n,r){var o=new Qi(r,\"max\",!0),a=this.compileAndRun(o,[e]),i=new Gi(r),s=this.compileAndRun(i,[t,a],e.dtype);return a.dispose(),s},o.prototype.reshape=function(t,e){var n=this.texData.get(t.dataId);if(n.isPacked&&!_e(t.shape,e)&&(null===n.texture||!_e(n.shape,e))){var r=this.packedReshape(t,e);return Lt.makeTensorFromDataId(r.dataId,r.shape,r.dtype)}return Lo(t,e)},o.prototype.resizeBilinear=function(t,e,n,r){var o=i().getBool(\"WEBGL_PACK_IMAGE_OPERATIONS\")?new ns(t.shape,e,n,r):new es(t.shape,e,n,r);return this.compileAndRun(o,[t],\"float32\")},o.prototype.resizeBilinearBackprop=function(t,e,n){var r=new ts(t,e,n);return this.compileAndRun(r,[t])},o.prototype.resizeNearestNeighbor=function(t,e,n,r){var o=new os(t.shape,e,n,r);return this.compileAndRun(o,[t])},o.prototype.resizeNearestNeighborBackprop=function(t,e,n){var r=new rs(t,e,n);return this.compileAndRun(r,[t])},o.prototype.multinomial=function(t,e,n,r){var o=e?t:go(t),a=o.shape[0],i=o.shape[1],s=new qi(a,i,n),u=s.getCustomSetupFunc(r);return this.compileAndRun(s,[o],\"int32\",u)},o.prototype.oneHot=function(t,e,n,r){var o=new Ki(t.size,e,n,r);return this.compileAndRun(o,[t])},o.prototype.diag=function(t){var e=new si(t.size);return this.compileAndRun(e,[t])},o.prototype.nonMaxSuppression=function(t,e,n,r,o){return dn(\"tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead\"),jo(t.dataSync(),e.dataSync(),n,r,o)},o.prototype.cropAndResize=function(t,e,n,r,o,a){var i=new ei(t.shape,e.shape,r,o,a);return this.compileAndRun(i,[t,e,n],\"float32\")},o.prototype.depthToSpace=function(t,e,n){C(e>1,(function(){return\"blockSize should be > 1 for depthToSpace, but was: \"+e}));var r=t.shape[0],o=\"NHWC\"===n?t.shape[1]:t.shape[2],a=\"NHWC\"===n?t.shape[2]:t.shape[3],i=\"NHWC\"===n?t.shape[3]:t.shape[1],s=o*e,u=a*e,c=i/(e*e),l=new ii(\"NHWC\"===n?[r,s,u,c]:[r,c,s,u],e,n);return this.compileAndRun(l,[t])},o.prototype.split=function(t,e,n){return Zo(t,e,n)},o.prototype.scatterND=function(t,e,n){var r=Zr(0,t,n),o=r.sliceRank,a=r.numUpdates,i=r.sliceSize,s=r.strides,u=r.outputSize,c=[u/i,i],l=t.reshape([a,o]),h=e.reshape([a,i]);if(0===u)return Lo(Fn([]),n);var f=On(0),d=new ss(a,o,l.rank,h.rank,s,c);return this.compileAndRun(d,[h,l,f]).reshape(n)},o.prototype.sparseToDense=function(t,e,n,r){var o=Zr(0,t,n),a=o.sliceRank,i=o.numUpdates,s=o.strides,u=o.outputSize,c=new ss(i,a,t.rank,e.rank,s,[u,1],!1);return this.compileAndRun(c,[e,t,r]).reshape(n)},o.prototype.fft=function(t){return this.fftImpl(t,!1)},o.prototype.ifft=function(t){return this.fftImpl(t,!0)},o.prototype.fftImpl=function(t,e){var n=this.texData.get(t.dataId),r=new pi(fi,t.shape,e),o=new pi(di,t.shape,e),a=[this.makeComplexComponentTensorInfo(t,n.complexTensors.real),this.makeComplexComponentTensorInfo(t,n.complexTensors.imag)],i=this.compileAndRun(r,a),s=this.compileAndRun(o,a),u=this.complex(i,s).as2D(t.shape[0],t.shape[1]);return i.dispose(),s.dispose(),u},o.prototype.gatherND=function(t,e){var n=e.shape,r=n[n.length-1],o=jr(t,e),a=o[0],i=o[1],s=o[2],u=o[3],c=e.reshape([i,r]),l=t.reshape([t.size/s,s]),h=new gi(r,u,[i,s]);return this.compileAndRun(h,[l,c]).reshape(a)},o.prototype.fill=function(t,e,n){if(\"string\"===(n=n||j(e))){var r=P(n,k(t));return r.fill(e),Lt.makeTensor(r,t,n,this)}var o=new vi(t,e),a=o.getCustomSetupFunc(e);return this.compileAndRun(o,[],n,a)},o.prototype.onesLike=function(t){if(\"string\"===t.dtype)throw new Error(\"onesLike is not supported under string dtype\");return this.fill(t.shape,1,t.dtype)},o.prototype.zerosLike=function(t){return this.fill(t.shape,\"string\"===t.dtype?\"\":0,t.dtype)},o.prototype.linspace=function(t,e,n){return Wo(t,e,n)},o.prototype.makeTensorInfo=function(t,e){var n=this.write(null,t,e);return this.texData.get(n).usage=null,{dataId:n,shape:t,dtype:e}},o.prototype.makeOutput=function(t,e){var n=this.makeTensorInfo(t,e).dataId;return Lt.makeTensorFromDataId(n,t,e,this)},o.prototype.unpackTensor=function(t){var e=new Ys(t.shape);return this.runWebGLProgram(e,[t],t.dtype)},o.prototype.packTensor=function(t){var e=new ji(t.shape);return this.runWebGLProgram(e,[t],t.dtype,null,!0)},o.prototype.packedReshape=function(t,e){var n=[Ae(t.shape)].concat(De(t.shape)),r={dtype:t.dtype,shape:n,dataId:t.dataId},o=[Ae(e)].concat(De(e)),a=new Zi(o,n),i=this.runWebGLProgram(a,[r],t.dtype,null,!0);return{dataId:i.dataId,shape:e,dtype:i.dtype}},o.prototype.decode=function(t){var e,n=this.texData.get(t),r=n.isPacked,o=n.shape,a=n.dtype,i=Te(o);e=r?new ai(i):new oi(i);return{dtype:a,shape:o,dataId:this.runWebGLProgram(e,[{shape:i,dtype:a,dataId:t}],a,null,!0).dataId}},o.prototype.runWebGLProgram=function(t,e,n,r,o){var a=this;void 0===o&&(o=!1);var s=this.makeTensorInfo(t.outputShape,n),u=this.texData.get(s.dataId);if(t.packedOutput&&(u.isPacked=!0),t.outPackingScheme===Vt.DENSE){var c=Yt(t.outputShape);u.texShape=c.map((function(t){return 2*t}))}if(null!=t.outTexUsage&&(u.usage=t.outTexUsage),0===k(s.shape))return u.values=B(s.dtype,0),s;var l=[],h=e.map((function(e){if(\"complex64\"===e.dtype)throw new Error(\"GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.\");var n=a.texData.get(e.dataId);if(null==n.texture){if(!t.packedInputs&&k(e.shape)<=i().getNumber(\"WEBGL_SIZE_UPLOAD_UNIFORM\"))return{shape:e.shape,texData:null,isUniform:!0,uniformValues:n.values};t.packedInputs&&(n.isPacked=!0,n.shape=e.shape)}else if(!!n.isPacked!=!!t.packedInputs)e=n.isPacked?a.unpackTensor(e):a.packTensor(e),l.push(e),n=a.texData.get(e.dataId);else if(n.isPacked&&!_e(n.shape,e.shape)){var r=e,o=e.shape;e.shape=n.shape,e=a.packedReshape(e,o),l.push(e),n=a.texData.get(e.dataId),r.shape=o}return a.uploadToGPU(e.dataId),{shape:e.shape,texData:n,isUniform:!1}}));this.uploadToGPU(s.dataId);var f,d={shape:s.shape,texData:u,isUniform:!1},p=function(t,e,n){var r=\"\";e.concat(n).forEach((function(t){var e=null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0,n=t.isUniform?\"uniform\":t.texData.texShape;r+=t.shape+\"_\"+n+\"_\"+e}));var o=t.userCode,a=t.constructor.name;return a+=\"_\"+r+\"_\"+o}(t,h,d),v=this.getAndSaveBinary(p,(function(){return function(t,e,n,r){var o=e.userCode,a=n.map((function(t,n){var r={logicalShape:t.shape,texShape:t.isUniform?null:t.texData.texShape,isUniform:t.isUniform,isPacked:!t.isUniform&&t.texData.isPacked,flatOffset:null};return null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0&&(r.flatOffset=t.texData.slice.flatOffset),{name:e.variableNames[n],shapeInfo:r}})),s=a.map((function(t){return t.shapeInfo})),u={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},c=fa(a,u,o,e.packedInputs),l=t.createProgram(c),h=null,f=t.getUniformLocation(l,\"NAN\",!1);1===i().getNumber(\"WEBGL_VERSION\")&&(h=t.getUniformLocation(l,\"INFINITY\",!1));for(var d={},p=0;p<e.variableNames.length;p++){var v=e.variableNames[p];d[v]=t.getUniformLocation(l,v,!1),d[\"offset\"+v]=t.getUniformLocation(l,\"offset\"+v,!1)}return{program:e,source:c,webGLProgram:l,uniformLocations:d,inShapeInfos:s,outShapeInfo:u,infLoc:h,nanLoc:f}}(a.gpgpu,t,h,d)})),m=null!=this.activeTimers;if(m&&(f=this.startTimer()),function(t,e,n,r,o){Pi(e.inShapeInfos,n),Pi([e.outShapeInfo],[r]);var a=r.texData.texture,s=r.texData.texShape;r.texData.isPacked?t.setOutputPackedMatrixTexture(a,s[0],s[1]):t.setOutputMatrixTexture(a,s[0],s[1]),t.setProgram(e.webGLProgram),1===i().getNumber(\"WEBGL_VERSION\")&&null!==e.infLoc&&t.gl.uniform1f(e.infLoc,1/0),null!==e.nanLoc&&t.gl.uniform1f(e.nanLoc,NaN),n.forEach((function(n,r){var o=e.program.variableNames[r],a=e.uniformLocations[o],i=e.uniformLocations[\"offset\"+o];if(null!=a)if(n.isUniform)if(k(n.shape)<2)t.gl.uniform1f(a,n.uniformValues[0]);else{var s=n.uniformValues;s instanceof Float32Array||(s=new Float32Array(s)),t.gl.uniform1fv(a,s)}else null!=n.texData.slice&&null!=i&&t.gl.uniform1i(i,n.texData.slice.flatOffset),t.setInputMatrixTexture(n.texData.texture,a,r)})),null!=o&&o(t,e.webGLProgram),t.executeProgram()}(this.gpgpu,v,h,d,r),l.forEach((function(t){return a.disposeData(t.dataId)})),m&&(f=this.endTimer(f),this.activeTimers.push({name:t.constructor.name,query:this.getQueryTime(f)})),!i().getBool(\"WEBGL_LAZILY_UNPACK\")&&u.isPacked&&!1===o){var g=this.unpackTensor(s);return this.disposeData(s.dataId),g}return s},o.prototype.compileAndRun=function(t,e,n,r,o){void 0===o&&(o=!1),n=n||e[0].dtype;var a=this.runWebGLProgram(t,e,n,r,o);return Lt.makeTensorFromDataId(a.dataId,a.shape,a.dtype)},o.prototype.getAndSaveBinary=function(t,e){return t in this.binaryCache||(this.binaryCache[t]=e()),this.binaryCache[t]},o.prototype.getTextureManager=function(){return this.textureManager},o.prototype.dispose=function(){var t=this;if(!this.disposed){if(!i().getBool(\"IS_TEST\"))Object.keys(this.binaryCache).forEach((function(e){t.gpgpu.deleteProgram(t.binaryCache[e].webGLProgram),delete t.binaryCache[e]}));this.textureManager.dispose(),null!=this.canvas&&\"undefined\"!=typeof HTMLCanvasElement&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0}},o.prototype.floatPrecision=function(){var t=this;return null==this.floatPrecisionValue&&(this.floatPrecisionValue=Ze((function(){if(!i().get(\"WEBGL_RENDER_FLOAT32_ENABLED\")){var e=i().getBool(\"DEBUG\");i().set(\"DEBUG\",!1);var n=t.abs(On(1e-8)).dataSync()[0];if(i().set(\"DEBUG\",e),n>0)return 32}return 16}))),this.floatPrecisionValue},o.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},o.prototype.uploadToGPU=function(t){var e,n=this.texData.get(t),r=n.shape,o=n.dtype,a=n.values,i=n.texture,s=n.usage,u=n.isPacked;if(null==i){var c,l=null!=this.activeTimers;l&&(c=et());var h=n.texShape;if(null==h&&(h=Ne(r,u),n.texShape=h),null!=a){var f=Te(r),d=void 0,p=h[1],v=h[0],m=a instanceof Uint8Array;u?(p=(e=$t(h[0],h[1]))[0],v=e[1],d=new hi(f,[v,p],m)):d=new li(f,[v,p],m);var g=this.makeTensorInfo([v,p],o);this.texData.get(g.dataId).usage=m?zt.PIXELS:zt.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(g.dataId),p,v,a);var y=this.runWebGLProgram(d,[g],o,null,!0),x=this.texData.get(y.dataId);n.texture=x.texture,n.texShape=x.texShape,n.isPacked=x.isPacked,n.usage=x.usage,this.disposeData(g.dataId),this.texData.delete(y.dataId),n.values=null,l&&(this.uploadWaitMs+=et()-c)}else{var b=this.acquireTexture(h,s,o,u);n.texture=b}}},o.prototype.convertAndCacheOnCPU=function(t,e){var n=this.texData.get(t),r=n.dtype;return this.releaseGPUData(t),null!=e&&(n.values=function(t,e){if(\"float32\"===e||\"complex64\"===e)return t;if(\"int32\"===e||\"bool\"===e){for(var n=\"int32\"===e?new Int32Array(t.length):new Uint8Array(t.length),r=0;r<n.length;++r)n[r]=Math.round(t[r]);return n}throw new Error(\"Unknown dtype \"+e)}(e,r)),n.values},o.prototype.acquireTexture=function(t,e,n,r){if(this.numBytesInGPU+=this.computeBytes(t,n),!this.warnedAboutMemory&&this.numBytesInGPU>1024*this.numMBBeforeWarning*1024){var o=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(\"High memory usage in GPU: \"+o+\" MB, most likely due to a memory leak\")}return this.textureManager.acquireTexture(t,e,r)},o.prototype.computeBytes=function(t,e){return t[0]*t[1]*z(e)},o}(bo);Wt()&&Lt.registerBackend(\"webgl\",(function(){return new Zs}),2);var tu=An({square_:function(t){var e=mn(t,\"x\",\"square\"),n=[e];return Lt.runKernelFunc((function(t,n){return n([e]),t.square(e)}),{x:e},null,\"Square\",{},n,[])}}),eu=\"SquaredDifference\";var nu=An({squaredDifference_:function(t,e){var n,r=mn(t,\"a\",\"squaredDifference\"),o=mn(e,\"b\",\"squaredDifference\");n=Nt(r,o),r=n[0],o=n[1],Ro(r.shape,o.shape);var a={a:r,b:o},i=[r,o];return Lt.runKernelFunc((function(t,e){var n=t.squaredDifference(r,o);return e([r,o]),n}),a,(function(t,e){var n=e[0],r=e[1],o=On(2);return{a:function(){return t.mul(n.sub(r).mul(o))},b:function(){return t.mul(r.sub(n).mul(o))}}}),eu,{},i,[])}});var ru=An({abs_:function(t){var e=mn(t,\"x\",\"abs\");return\"complex64\"===e.dtype?Lt.runKernelFunc((function(t){return t.complexAbs(e)}),{$x:e}):Lt.runKernelFunc((function(t,n){var r=t.abs(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.mul(n.toFloat().step(-1))}}}),\"Abs\")}}),ou=An({acos_:function(t){var e=mn(t,\"x\",\"acos\");return Lt.runKernelFunc((function(t,n){var r=t.acos(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(On(1).sub(n.toFloat().square()).sqrt()).neg()}}}))}}),au=An({acosh_:function(t){var e=mn(t,\"x\",\"acosh\");return Lt.runKernelFunc((function(t,n){var r=t.acosh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(n.toFloat().square().sub(1).sqrt())}}}))}}),iu=An({asin_:function(t){var e=mn(t,\"x\",\"asin\");return Lt.runKernelFunc((function(t,n){var r=t.asin(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(On(1).sub(n.toFloat().square()).sqrt())}}}))}}),su=An({asinh_:function(t){var e=mn(t,\"x\",\"asinh\");return Lt.runKernelFunc((function(t,n){var r=t.asinh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(On(1).add(n.toFloat().square()).sqrt())}}}))}}),uu=An({atan_:function(t){var e=mn(t,\"x\",\"atan\");return Lt.runKernelFunc((function(t,n){var r=t.atan(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.toFloat().square().add(1))}}}))}}),cu=An({atanh_:function(t){var e=mn(t,\"x\",\"atanh\");return Lt.runKernelFunc((function(t,n){var r=t.atanh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(On(1).sub(n.toFloat().square()))}}}))}}),lu=An({ceil_:function(t){var e=mn(t,\"x\",\"ceil\");return Lt.runKernelFunc((function(t){return t.ceil(e)}),{$x:e},(function(t){return{$x:function(){return Xn(t)}}}))}}),hu=An({clipByValue_:function(t,e,n){var r=mn(t,\"x\",\"clipByValue\");C(e<=n,(function(){return\"Error in clip: min (\"+e+\") must be less than or equal to max (\"+n+\").\"}));var o=[r],a={min:e,max:n};return Lt.runKernelFunc((function(t,o){var a=t.clip(r,e,n);return o([r]),a}),{x:r},(function(t,r){var o=r[0];return{x:function(){return t.where(o.greaterEqual(e).logicalAnd(o.lessEqual(n)),Xn(t))}}}),\"ClipByValue\",a,o)}}),fu=An({cos_:function(t){var e=mn(t,\"x\",\"cos\"),n=[e];return Lt.runKernelFunc((function(t,n){var r=t.cos(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return n.toFloat().sin().neg().mul(t)}}}),\"Cos\",{},n)}}),du=An({cosh_:function(t){var e=mn(t,\"x\",\"cosh\");return Lt.runKernelFunc((function(t,n){var r=t.cosh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return n.toFloat().sinh().mulStrict(t)}}}))}}),pu=An({erf_:function(t){var e=mn(t,\"x\",\"erf\");return C(\"int32\"===e.dtype||\"float32\"===e.dtype,(function(){return\"Input dtype must be `int32` or `float32`.\"})),\"int32\"===e.dtype&&(e=e.toFloat()),Lt.runKernelFunc((function(t,n){var r=t.erf(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.square().neg().exp().mul(2/Math.sqrt(Math.PI)))}}}))}}),vu=An({exp_:function(t){var e=mn(t,\"x\",\"exp\");return Lt.runKernelFunc((function(t,n){var r=t.exp(e);return n([r]),r}),{x:e},(function(t,e){return{x:function(){return t.mulStrict(e[0])}}}),\"Exp\",{},[],[!0])}}),mu=An({expm1_:function(t){var e=mn(t,\"x\",\"expm1\");return Lt.runKernelFunc((function(t,n){var r=t.expm1(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.exp())}}}))}}),gu=An({floor_:function(t){var e=mn(t,\"x\",\"floor\");return Lt.runKernelFunc((function(t){return t.floor(e)}),{$x:e},(function(t){return{$x:function(){return Xn(t)}}}))}}),yu=An({log_:function(t){var e=mn(t,\"x\",\"log\"),n=[e];return Lt.runKernelFunc((function(t,n){var r=t.log(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.div(n.toFloat())}}}),\"Log\",{},n)}}),xu=An({log1p_:function(t){var e=mn(t,\"x\",\"log1p\");return Lt.runKernelFunc((function(t,n){var r=t.log1p(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.add(1))}}}))}}),bu=An({logSigmoid_:function(t){var e=mn(t,\"x\",\"logSigmoid\");return Lt.runKernelFunc((function(t,n){var r=t.softplus(e.neg()).neg();return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.neg().sigmoid())}}}))}}),wu=An({neg_:function(t){var e=mn(t,\"x\",\"neg\"),n=[e];return Lt.runKernelFunc((function(t){return t.neg(e)}),{x:e},(function(t){return{x:function(){return t.neg()}}}),\"Neg\",{},n)}}),Cu=An({reciprocal_:function(t){var e=mn(t,\"x\",\"reciprocal\");return Lt.runKernelFunc((function(t,n){var r=t.reciprocal(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.square().neg())}}}))}}),Eu=An({round_:function(t){var e=mn(t,\"x\",\"round\");return Lt.runKernelFunc((function(t){return t.round(e)}),{$x:e},(function(t){return{$x:function(){return Xn(t)}}}))}}),Ru=An({rsqrt_:function(t){var e=mn(t,\"x\",\"rsqrt\"),n=[e];return Lt.runKernelFunc((function(t,n){var r=t.rsqrt(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.div(n.pow(1.5).mul(2)).neg()}}}),\"Rsqrt\",{},n)}}),Iu=An({sigmoid_:function(t){var e=mn(t,\"x\",\"sigmoid\");return Lt.runKernelFunc((function(t,n){var r=t.sigmoid(e);return n([r]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.mul(n.mul(On(1).sub(n)))}}}),\"Sigmoid\")}}),ku=An({sign_:function(t){var e=mn(t,\"x\",\"sign\");return Lt.runKernelFunc((function(t){return t.sign(e)}),{$x:e},(function(t){return{$x:function(){return Xn(t)}}}))}}),Su=An({isNaN_:function(t){var e=mn(t,\"x\",\"isNaN\");return Lt.runKernelFunc((function(t){return t.isNaN(e)}),{$x:e},(function(t){return{$x:function(){return Xn(t)}}}))}}),Au=An({isInf_:function(t){var e=mn(t,\"x\",\"isInf\");return Lt.runKernelFunc((function(t){return t.isInf(e)}),{$x:e},(function(t){return{$x:function(){return Xn(t)}}}))}}),Du=An({isFinite_:function(t){var e=mn(t,\"x\",\"isFinite\");return Lt.runKernelFunc((function(t){return t.isFinite(e)}),{$x:e},(function(t){return{$x:function(){return Xn(t)}}}))}}),Tu=An({sin_:function(t){var e=mn(t,\"x\",\"sin\"),n=[e];return Lt.runKernelFunc((function(t,n){var r=t.sin(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return n.toFloat().cos().mul(t)}}}),\"Sin\",{},n)}}),Nu=An({sinh_:function(t){var e=mn(t,\"x\",\"sinh\");return Lt.runKernelFunc((function(t,n){var r=t.sinh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return n.toFloat().cosh().mulStrict(t)}}}))}}),Fu=An({softplus_:function(t){var e=mn(t,\"x\",\"softplus\");return Lt.runKernelFunc((function(t,n){var r=t.softplus(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.sigmoid())}}}))}}),_u=An({sqrt_:function(t){var e=mn(t,\"x\",\"sqrt\");return Lt.runKernelFunc((function(t,n){var r=t.sqrt(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.toFloat().sqrt().mul(2))}}}))}}),Ou=An({step_:function(t,e){void 0===e&&(e=0);var n=mn(t,\"x\",\"step\");return Lt.runKernelFunc((function(t){return t.step(n,e)}),{$x:n},(function(t){return{$x:function(){return Xn(t)}}}))}}),Mu=An({tan_:function(t){var e=mn(t,\"x\",\"tan\");return Lt.runKernelFunc((function(t,n){var r=t.tan(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.cos().square())}}}))}}),Bu=An({tanh_:function(t){var e=mn(t,\"x\",\"tanh\");return Lt.runKernelFunc((function(t,n){var r=t.tanh(e);return n([r]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return On(1).sub(n.square()).mulStrict(t)}}}),\"Tanh\",{},null,[!0])}});function Pu(t,e,n,r,o,a){var i,s,u=mn(t,\"x\",\"batchNorm\"),c=mn(e,\"mean\",\"batchNorm\"),l=mn(n,\"variance\",\"batchNorm\");return null!=o&&(i=mn(o,\"scale\",\"batchNorm\")),null!=r&&(s=mn(r,\"offset\",\"batchNorm\")),C(2===u.rank,(function(){return\"Error in batchNorm3D: x must be rank 3 but got rank \"+u.rank+\".\"})),C(2===c.rank||1===c.rank,(function(){return\"Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank \"+c.rank+\".\"})),C(2===l.rank||1===l.rank,(function(){return\"Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank \"+l.rank+\".\"})),null!=i&&C(2===i.rank||1===i.rank,(function(){return\"Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank \"+i.rank+\".\"})),null!=s&&C(2===s.rank||1===s.rank,(function(){return\"Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank \"+s.rank+\".\"})),Uu(u,c,l,s,i,a)}function Lu(t,e,n,r,o,a){var i,s,u=mn(t,\"x\",\"batchNorm\"),c=mn(e,\"mean\",\"batchNorm\"),l=mn(n,\"variance\",\"batchNorm\");return null!=o&&(i=mn(o,\"scale\",\"batchNorm\")),null!=r&&(s=mn(r,\"offset\",\"batchNorm\")),C(3===u.rank,(function(){return\"Error in batchNorm3D: x must be rank 3 but got rank \"+u.rank+\".\"})),C(3===c.rank||1===c.rank,(function(){return\"Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank \"+c.rank+\".\"})),C(3===l.rank||1===l.rank,(function(){return\"Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank \"+l.rank+\".\"})),null!=i&&C(3===i.rank||1===i.rank,(function(){return\"Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank \"+i.rank+\".\"})),null!=s&&C(3===s.rank||1===s.rank,(function(){return\"Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank \"+s.rank+\".\"})),Uu(u,c,l,s,i,a)}function Wu(t,e,n,r,o,a){var i,s,u=mn(t,\"x\",\"batchNorm\"),c=mn(e,\"mean\",\"batchNorm\"),l=mn(n,\"variance\",\"batchNorm\");return null!=o&&(i=mn(o,\"scale\",\"batchNorm\")),null!=r&&(s=mn(r,\"offset\",\"batchNorm\")),C(4===u.rank,(function(){return\"Error in batchNorm4D: x must be rank 4 but got rank \"+u.rank+\".\"})),C(4===c.rank||1===c.rank,(function(){return\"Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank \"+c.rank+\".\"})),C(4===l.rank||1===l.rank,(function(){return\"Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank \"+l.rank+\".\"})),null!=i&&C(4===i.rank||1===i.rank,(function(){return\"Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank \"+i.rank+\".\"})),null!=s&&C(4===s.rank||1===s.rank,(function(){return\"Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank \"+s.rank+\".\"})),Uu(u,c,l,s,i,a)}function Uu(t,e,n,r,o,a){null==a&&(a=.001);var i,s,u,c=mn(t,\"x\",\"batchNorm\"),l=mn(e,\"mean\",\"batchNorm\"),h=mn(n,\"variance\",\"batchNorm\");null!=o&&(i=mn(o,\"scale\",\"batchNorm\")),null!=r&&(s=mn(r,\"offset\",\"batchNorm\")),C(l.rank===h.rank,(function(){return\"Batch normalization gradient requires mean and variance to have equal ranks.\"})),C(null==s||l.rank===s.rank,(function(){return\"Batch normalization gradient requires mean and offset to have equal ranks.\"})),C(null==i||l.rank===i.rank,(function(){return\"Batch normalization gradient requires mean and scale to have equal ranks.\"})),u=0===c.rank||1===c.rank?c.as4D(1,1,1,c.size):2===c.rank?c.as4D(1,1,c.shape[0],c.shape[1]):3===c.rank?c.as4D(1,c.shape[0],c.shape[1],c.shape[2]):c;var f=[c,l,h,i];return Lt.runKernelFunc((function(t,e){var n=t.batchNormalization(u,Vu(l),Vu(h),a,Vu(i),Vu(s));return e([c,l,h,i]),n}),{x:c,mean:l,variance:h,scale:i,offset:s},(function(t,e){var n=e,r=n[0],o=n[1],i=n[2],s=n[3],c=null==s?On(1):s,l=Eo(o.shape,u.shape),h=[];if(1===o.rank){for(var f=0;f<u.shape.length-1;++f)h.push(u.shape[f]);h.push(1)}var d=r.sub(o),p=t.mul(c),v=Ru(i.add(On(a))),m=v.mul(v).mul(v).mul(On(-.5));return{x:function(){return 1===o.rank?t.mul(Lr(v.as4D(1,1,1,o.shape[0]),h)).mul(c).reshape(r.shape):t.mul(v).mul(c).reshape(r.shape)},mean:function(){var t=v.mul(On(-1)).mul(p);return 1===o.rank&&(t=t.sum(l)),t.reshape(o.shape)},variance:function(){var t=m.mul(d).mul(p);return 1===o.rank&&(t=t.sum(l)),t.reshape(o.shape)},scale:function(){var e=d.mul(v),n=t.mul(e);return 1===o.rank&&(n=n.sum(l)),n.reshape(o.shape)},offset:function(){var e=t;return 1===o.rank&&(e=e.sum(l)),e.reshape(o.shape)}}}),\"BatchNormalization\",{varianceEpsilon:a},f).reshape(c.shape)}function Vu(t){return null==t?null:0===t.rank?t.as1D():1===t.rank?t:2===t.rank?t.as4D(1,1,t.shape[0],t.shape[1]):3===t.rank?t.as4D(1,t.shape[0],t.shape[1],t.shape[2]):t}function zu(){Xe(\"tf.batchNormalization() is going away. Use tf.batchNorm() instead, and note the positional argument change of scale, offset, and varianceEpsilon\")}var Gu=An({batchNormalization2d_:function(t,e,n,r,o,a){return void 0===r&&(r=.001),zu(),Pu(t,e,n,a,o,r)}}),Hu=An({batchNormalization3d_:function(t,e,n,r,o,a){return void 0===r&&(r=.001),zu(),Lu(t,e,n,a,o,r)}}),qu=An({batchNormalization4d_:function(t,e,n,r,o,a){return void 0===r&&(r=.001),zu(),Wu(t,e,n,a,o,r)}}),Ku=An({batchNormalization_:function(t,e,n,r,o,a){return void 0===r&&(r=.001),zu(),Uu(t,e,n,a,o,r)}}),ju=An({batchNorm_:Uu}),Xu=An({batchNorm2d_:Pu}),Yu=An({batchNorm3d_:Lu}),$u=An({batchNorm4d_:Wu});var Qu=An({logicalAnd_:function(t,e){var n=mn(t,\"a\",\"logicalAnd\",\"bool\"),r=mn(e,\"b\",\"logicalAnd\",\"bool\");return Ro(n.shape,r.shape),Lt.runKernelFunc((function(t){return t.logicalAnd(n,r)}),{a:n,b:r},null,\"LogicalAnd\")}}),Ju=An({logicalNot_:function(t){var e=mn(t,\"x\",\"logicalNot\",\"bool\");return Lt.runKernelFunc((function(t){return t.logicalNot(e)}),{$x:e})}}),Zu=An({logicalOr_:function(t,e){var n=mn(t,\"a\",\"logicalOr\",\"bool\"),r=mn(e,\"b\",\"logicalOr\",\"bool\");return Ro(n.shape,r.shape),Lt.runKernelFunc((function(t){return t.logicalOr(n,r)}),{$a:n,$b:r})}}),tc=An({logicalXor_:function(t,e){var n=mn(t,\"a\",\"logicalXor\",\"bool\"),r=mn(e,\"b\",\"logicalXor\",\"bool\");return Ro(n.shape,r.shape),Zu(t,e).logicalAnd(Qu(t,e).logicalNot())}}),ec=An({where_:function(t,e,n){var r=mn(e,\"a\",\"where\"),o=mn(n,\"b\",\"where\"),a=mn(t,\"condition\",\"where\",\"bool\");return E(r.shape,o.shape,\"Error in where: \"),1===a.rank?C(a.shape[0]===r.shape[0],(function(){return\"The first dimension of `a` must match the size of `condition`.\"})):E(a.shape,o.shape,\"Error in where: \"),Lt.runKernelFunc((function(t,e){var n=t.select(a,r,o);return e([a]),n}),{$condition:a,$a:r,$b:o},(function(t,e){var n=e[0];return{$condition:function(){return Xn(n).toFloat()},$a:function(){return t.mul(n.cast(t.dtype))},$b:function(){return t.mul(n.logicalNot().cast(t.dtype))}}}))}}),nc=function(t){return n(this,void 0,void 0,(function(){var e,n,o;return r(this,(function(r){switch(r.label){case 0:return[4,(e=mn(t,\"condition\",\"whereAsync\",\"bool\")).data()];case 1:return n=r.sent(),o=na(e.shape,n),t!==e&&e.dispose(),[2,o]}}))}))};var rc=An({add_:function(t,e){var n,r=mn(t,\"a\",\"add\"),o=mn(e,\"b\",\"add\");n=Nt(r,o),r=n[0],o=n[1];var a=Ro(r.shape,o.shape);return Lt.runKernelFunc((function(t){return t.add(r,o)}),{a:r,b:o},(function(t){return{a:function(){var e=t,n=Eo(r.shape,a);return n.length>0&&(e=e.sum(n)),e.reshape(r.shape)},b:function(){var e=t,n=Eo(o.shape,a);return n.length>0&&(e=e.sum(n)),e.reshape(o.shape)}}}),\"Add\")}}),oc=An({addN_:function(t){C(Array.isArray(t),(function(){return\"The argument passed to tf.addN() must be a list of tensors\"})),C(t.length>=1,(function(){return\"Must pass at least one tensor to tf.addN(), but got \"+t.length}));var e=t.map((function(t,e){return mn(t,\"tensors\"+e,\"addN\")})),n=e[0];e.forEach((function(t){if(t.dtype!==n.dtype)throw new Error(\"All tensors passed to tf.addN() must have the same dtype\")})),e.forEach((function(t){if(!S(t.shape,n.shape))throw new Error(\"All tensors passed to tf.addN() must have the same shape\")}));var r=e;return Lt.runKernelFunc((function(t){return t.addN(e)}),r,(function(t){var n={};return e.forEach((function(e,r){n[r]=function(){return t.clone()}})),n}),\"AddN\")}}),ac=An({addStrict_:function(t,e){var n=mn(t,\"a\",\"addStrict\"),r=mn(e,\"b\",\"addStrict\");return E(n.shape,r.shape,\"Error in addStrict: \"),n.add(r)}}),ic=An({atan2_:function(t,e){var n,r=mn(t,\"a\",\"atan2\"),o=mn(e,\"b\",\"atan2\");n=Nt(r,o),r=n[0],o=n[1];var a=Ro(r.shape,o.shape);return Lt.runKernelFunc((function(t,e){var n=t.atan2(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return{$a:function(){var e=rc(n.square(),r.square()),o=t.mul(r.div(e)),i=Eo(n.shape,a);return i.length>0&&(o=o.sum(i)),o.reshape(n.shape)},$b:function(){var e=rc(n.square(),r.square()),o=wu(t.mul(n.div(e))),i=Eo(r.shape,a);return i.length>0&&(o=o.sum(i)),o.reshape(r.shape)}}}))}}),sc=An({div_:function(t,e){var n,r=mn(t,\"a\",\"div\"),o=mn(e,\"b\",\"div\");if(n=Nt(r,o),r=n[0],o=n[1],\"int32\"===r.dtype&&\"int32\"===o.dtype)return lc(r,o);var a=Ro(r.shape,o.shape);return Lt.runKernelFunc((function(t,e){var n=t.realDivide(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){var e=t.div(r.toFloat()),o=Eo(n.shape,a);return o.length>0?e.sum(o).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),o=Eo(r.shape,a);o.length>0&&(e=e.sum(o).reshape(r.shape));var i=r.square();return e.div(i.toFloat()).neg()}}}),\"Div\")}}),uc=An({divNoNan_:function(t,e){var n,r=mn(t,\"a\",\"div\"),o=mn(e,\"b\",\"div\");r=(n=Nt(r,o))[0],o=n[1];var a=sc(r,o),i=Xn(a),s=o.equal(i);return ec(s,i,a)}}),cc=An({divStrict_:function(t,e){var n=mn(t,\"a\",\"div\"),r=mn(e,\"b\",\"div\");return E(n.shape,r.shape,\"Error in divideStrict: \"),n.div(r)}}),lc=An({floorDiv_:function(t,e){var n,r=mn(t,\"a\",\"floorDiv\"),o=mn(e,\"b\",\"floorDiv\");n=Nt(r,o),r=n[0],o=n[1];var a=Ro(r.shape,o.shape);return Lt.runKernelFunc((function(t,e){var n=t.floorDiv(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){var e=t.div(r.toFloat()),o=Eo(n.shape,a);return o.length>0?e.sum(o).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),o=Eo(r.shape,a);o.length>0&&(e=e.sum(o).reshape(r.shape));var i=r.square();return e.div(i.toFloat()).neg()}}}),\"FloorDiv\")}}),hc=An({maximum_:function(t,e){var n,r=mn(t,\"a\",\"maximum\"),o=mn(e,\"b\",\"maximum\");return n=Nt(r,o),r=n[0],o=n[1],\"bool\"===r.dtype&&(r=r.toInt(),o=o.toInt()),Ro(r.shape,o.shape),Lt.runKernelFunc((function(t,e){var n=t.maximum(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){return t.mul(n.greaterEqual(r).toFloat())},b:function(){return t.mul(n.less(r).toFloat())}}}),\"Maximum\")}}),fc=An({maximumStrict_:function(t,e){var n=mn(t,\"a\",\"maximumStrict\"),r=mn(e,\"b\",\"maximumStrict\");return E(n.shape,r.shape,\"Error in maximumStrict: \"),n.maximum(r)}}),dc=An({minimum_:function(t,e){var n,r=mn(t,\"a\",\"minimum\"),o=mn(e,\"b\",\"minimum\");return n=Nt(r,o),r=n[0],o=n[1],\"bool\"===r.dtype&&(r=r.toInt(),o=o.toInt()),Ro(r.shape,o.shape),Lt.runKernelFunc((function(t,e){var n=t.minimum(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){return t.mul(n.lessEqual(r).toFloat())},b:function(){return t.mul(n.greater(r).toFloat())}}}),\"Minimum\")}}),pc=An({minimumStrict_:function(t,e){var n=mn(t,\"a\",\"minimumStrict\"),r=mn(e,\"b\",\"minimumStrict\");return E(n.shape,r.shape,\"Error in minimumStrict: \"),n.minimum(r)}}),vc=An({mod_:function(t,e){var n,r=mn(t,\"a\",\"mod\"),o=mn(e,\"b\",\"mod\");n=Nt(r,o),r=n[0],o=n[1];var a=Ro(r.shape,o.shape);return Lt.runKernelFunc((function(t,e){var n=t.mod(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return{$a:function(){var e=Eo(n.shape,a);return e.length>0?t.sum(e).reshape(n.shape):t},$b:function(){var e=t.mul(n.div(r).floor().neg()),o=Eo(r.shape,a);return o.length>0?e.sum(o).reshape(r.shape):e}}}))}}),mc=An({modStrict_:function(t,e){var n=mn(t,\"a\",\"modStrict\"),r=mn(e,\"b\",\"modStrict\");return E(n.shape,r.shape,\"Error in modStrict: \"),n.mod(r)}}),gc=An({mul_:function(t,e){var n,r=mn(t,\"a\",\"mul\"),o=mn(e,\"b\",\"mul\");n=Nt(r,o),r=n[0],o=n[1];var a=Ro(r.shape,o.shape);return Lt.runKernelFunc((function(t,e){var n=t.multiply(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){var e=t.mul(r.toFloat()),o=Eo(n.shape,a);return o.length>0?e.sum(o).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),o=Eo(r.shape,a);return o.length>0?e.sum(o).reshape(r.shape):e}}}),\"Mul\")}}),yc=An({mulStrict_:function(t,e){var n=mn(t,\"a\",\"mul\"),r=mn(e,\"b\",\"mul\");return E(n.shape,r.shape,\"Error in multiplyStrict: \"),n.mul(r)}}),xc=An({pow_:function(t,e){var n,r=mn(t,\"base\",\"pow\"),o=mn(e,\"exp\",\"pow\");n=Nt(r,o),r=n[0],o=n[1];var a=Ro(r.shape,o.shape),i=[r,o];return Lt.runKernelFunc((function(t,e){var n=t.pow(r,o);return e([r,o,n]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1],o=e[2];return{a:function(){var e=r.toFloat(),o=t.mul(e.mul(n.pow(e.sub(On(1))))),i=Eo(n.shape,a);return i.length>0&&(o=o.sum(i)),o.reshape(n.shape)},b:function(){var e=n.greater(0),i=n.log().where(e,Xn(n)),s=t.mul(o.mul(i)),u=Eo(r.shape,a);return u.length>0&&(s=s.sum(u)),s.reshape(r.shape)}}}),\"Pow\",{},i,[!0])}}),bc=An({powStrict_:function(t,e){return E(t.shape,e.shape,\"Error in powStrict: \"),t.pow(e)}}),wc=An({squaredDifferenceStrict_:function(t,e){var n=mn(t,\"a\",\"squaredDifferenceStrict\"),r=mn(e,\"b\",\"squaredDifferenceStrict\");return E(n.shape,r.shape,\"Error in squaredDifferenceStrict: \"),n.squaredDifference(r)}}),Cc=An({sub_:function(t,e){var n,r=mn(t,\"a\",\"sub\"),o=mn(e,\"b\",\"sub\");n=Nt(r,o),r=n[0],o=n[1];var a=Ro(r.shape,o.shape);return Lt.runKernelFunc((function(t){return t.subtract(r,o)}),{a:r,b:o},(function(t){return{a:function(){var e=t,n=Eo(r.shape,a);return n.length>0&&(e=e.sum(n)),e.reshape(r.shape)},b:function(){var e=t,n=Eo(o.shape,a);return n.length>0&&(e=e.sum(n)),e.neg().reshape(o.shape)}}}),\"Sub\")}}),Ec=An({subStrict_:function(t,e){var n=mn(t,\"a\",\"subStrict\"),r=mn(e,\"b\",\"subStrict\");return E(n.shape,r.shape,\"Error in subStrict: \"),n.sub(r)}});var Rc=An({equal_:function(t,e){var n,r=mn(t,\"a\",\"equal\"),o=mn(e,\"b\",\"equal\");return n=Nt(r,o),r=n[0],o=n[1],Ro(r.shape,o.shape),Lt.runKernelFunc((function(t){return t.equal(r,o)}),{$a:r,$b:o})}}),Ic=An({equalStrict_:function(t,e){var n=mn(t,\"a\",\"equalStrict\"),r=mn(e,\"b\",\"equalStrict\");return E(n.shape,r.shape,\"Error in equalStrict: \"),n.equal(r)}}),kc=An({greater_:function(t,e){var n,r=mn(t,\"a\",\"greater\"),o=mn(e,\"b\",\"greater\");return n=Nt(r,o),r=n[0],o=n[1],Ro(r.shape,o.shape),Lt.runKernelFunc((function(t){return t.greater(r,o)}),{a:r,b:o},null,\"Greater\")}}),Sc=An({greaterEqual_:function(t,e){var n,r=mn(t,\"a\",\"greaterEqual\"),o=mn(e,\"b\",\"greaterEqual\");return n=Nt(r,o),r=n[0],o=n[1],Ro(r.shape,o.shape),Lt.runKernelFunc((function(t,e){var n=t.greaterEqual(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){return Xn(n)},b:function(){return Xn(r)}}}),\"GreaterEqual\")}}),Ac=An({greaterEqualStrict_:function(t,e){var n=mn(t,\"a\",\"greaterEqualStrict\"),r=mn(e,\"b\",\"greaterEqualStrict\");return E(n.shape,r.shape,\"Error in greaterEqualStrict: \"),n.greaterEqual(r)}}),Dc=An({greaterStrict_:function(t,e){var n=mn(t,\"a\",\"greaterStrict\"),r=mn(e,\"b\",\"greaterStrict\");return E(n.shape,r.shape,\"Error in greaterStrict: \"),n.greater(r)}}),Tc=An({less_:function(t,e){var n,r=mn(t,\"a\",\"less\"),o=mn(e,\"b\",\"less\");return n=Nt(r,o),r=n[0],o=n[1],Ro(r.shape,o.shape),Lt.runKernelFunc((function(t){return t.less(r,o)}),{a:r,b:o},null,\"Less\")}}),Nc=An({lessEqual_:function(t,e){var n,r=mn(t,\"a\",\"lessEqual\"),o=mn(e,\"b\",\"lessEqual\");return n=Nt(r,o),r=n[0],o=n[1],Ro(r.shape,o.shape),Lt.runKernelFunc((function(t,e){var n=t.lessEqual(r,o);return e([r,o]),n}),{a:r,b:o},null,\"LessEqual\")}}),Fc=An({lessEqualStrict_:function(t,e){var n=mn(t,\"a\",\"lessEqualStrict\"),r=mn(e,\"b\",\"lessEqualStrict\");return E(n.shape,r.shape,\"Error in lessEqualStrict: \"),n.lessEqual(r)}}),_c=An({lessStrict_:function(t,e){var n=mn(t,\"a\",\"lessStrict\"),r=mn(e,\"b\",\"lessStrict\");return E(n.shape,r.shape,\"Error in lessStrict: \"),n.less(r)}}),Oc=An({notEqual_:function(t,e){var n,r=mn(t,\"a\",\"notEqual\"),o=mn(e,\"b\",\"notEqual\");return n=Nt(r,o),r=n[0],o=n[1],Ro(r.shape,o.shape),Lt.runKernelFunc((function(t){return t.notEqual(r,o)}),{a:r,b:o},null,\"NotEqual\")}}),Mc=An({notEqualStrict_:function(t,e){var n=mn(t,\"a\",\"notEqualStrict\"),r=mn(e,\"b\",\"notEqualStrict\");return E(n.shape,r.shape,\"Error in notEqualStrict: \"),n.notEqual(r)}});function Bc(t,e){for(var n=[],r=t;r<e;++r)n.push(r);return n}function Pc(t){for(var e=[],n=0;n<t.length;++n)for(var r=0;r<t[n].length;++r)e.push(t[n][r]);return e}var Lc=An({gather_:function(t,e,n){void 0===n&&(n=0);var r=mn(t,\"x\",\"gather\"),o=mn(e,\"indices\",\"gather\",\"int32\");n=O(n,r.shape)[0];var a=function(t,e,n){for(var r=t.shape[n],o=[],a=1,i=1,s=0;s<n;s++)o.push(t.shape[s]),a*=t.shape[s];for(s=0;s<e.rank;s++)o.push(e.shape[s]);for(s=n+1;s<t.rank;s++)o.push(t.shape[s]),i*=t.shape[s];return{batchSize:a,sliceSize:i,dimSize:r,outputShape:o}}(r,o,n);return Lt.runKernelFunc((function(t,e){var a=t.gather(r,o.flatten(),n);return e([o]),a}),{x:r,indices:o},(function(t,e){var o=e[0];return{x:function(){var e=r.shape,a=o.size,i=e.slice(0,n),s=i.length,u=e.slice(n,e.length).slice(1),c=u.length,l=Bc(0,s),h=Bc(s+1,s+1+c),f=Pc([i,[a],u]),d=t.reshape(f),p=o.reshape([a]),v=Pc([[s],l,h]),m=d.transpose(v),g=Wc(m,p,r.shape[n]),y=Rn(v);return g=g.transpose(y)},indices:function(){return o}}}),\"Gather\",{axis:n}).reshape(a.outputShape)}}),Wc=An({unsortedSegmentSum_:function(t,e,n){var r=mn(t,\"x\",\"unsortedSegmentSum\"),o=mn(e,\"segmentIds\",\"unsortedSegmentSum\",\"int32\");return C(A(n),(function(){return\"numSegments must be of dtype int\"})),Lt.runKernelFunc((function(t,e){var a=t.unsortedSegmentSum(r,o,n);return e([o]),a}),{$x:r},(function(t,e){var n=e[0];return{$x:function(){return function(t,e){for(var n=hc(e,Xn(e)),r=Lc(t,n),o=Sc(e,On(0,\"int32\")),a=r.rank-o.rank,i=0;i<a;++i)o=wr(o,i+1);o=Qu(o,zn(r.shape,\"bool\"));var s=Xn(r);return ec(o,r,s)}(t,n)}}}))}});var Uc=function(t,e,o){return n(this,void 0,void 0,(function(){var n,a,i,s,u,c,l,h,f,d,p,v,m;return r(this,(function(r){switch(r.label){case 0:for(n=mn(t,\"tensor\",\"boolMask\"),a=mn(e,\"mask\",\"boolMask\",\"bool\"),i=null==o?0:o,s=a.rank,u=n.shape,C(s>0,(function(){return\"mask cannot be scalar\"})),E(u.slice(i,i+s),a.shape,\"mask's shape must match the first K dimensions of tensor's shape,\"),c=1,l=i;l<i+s;l++)c*=u[l];return h=u.slice(0,i).concat([c],u.slice(i+s)),f=n.reshape(h),d=a.reshape([-1]),[4,nc(d)];case 1:return p=r.sent(),v=p.squeeze([1]),m=Lc(f,v,i),t!==n&&n.dispose(),e!==a&&a.dispose(),v.dispose(),f.dispose(),d.dispose(),p.dispose(),[2,m]}}))}))};function Vc(t,e,n,r,o,a,i){void 0===a&&(a=\"NHWC\"),C(t.length===e.rank,(function(){return\"Length of inShape (\"+t.length+\") and rank of dy (\"+e.rank+\") must match\"}));var s=t,u=e,c=!1;3===e.rank&&(c=!0,u=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]),s=[1,t[0],t[1],t[2]]),C(4===s.length,(function(){return\"Error in conv2dDerInput: inShape must be length 4, but got length \"+s.length+\".\"})),C(4===u.rank,(function(){return\"Error in conv2dDerInput: dy must be rank 4, but got rank \"+u.rank})),C(4===n.rank,(function(){return\"Error in conv2dDerInput: filter must be rank 4, but got rank \"+n.rank}));var l=\"NHWC\"===a?s[3]:s[1],h=\"NHWC\"===a?u.shape[3]:u.shape[1];C(l===n.shape[2],(function(){return\"Error in conv2dDerInput: depth of input (\"+l+\") must match input depth for filter \"+n.shape[2]+\".\"})),C(h===n.shape[3],(function(){return\"Error in conv2dDerInput: depth of output (\"+h+\") must match output depth for filter \"+n.shape[3]+\".\"})),null!=i&&C(A(o),(function(){return\"Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode \"+i+\" but got pad \"+o+\".\"}));var f=Bo(a),d=So(s,n.shape,r,1,o,i,!1,f),p=Lt.runKernelFunc((function(t,e){var r=t.conv2dDerInput(u,n,d);return e([n,u]),r}),{dy4D:u,filter:n},(function(t,e){var n=e[0],s=e[1];return{dy4D:function(){return qc(t,n,r,o,a,1,i)},filter:function(){return jc(t,s,n.shape,r,o,a,i)}}}));return c?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}function zc(t){var e=function(t){return\"number\"==typeof t?[t,t,t]:2===t.length?[t[0],t[1],1]:t}(t),n=e[0],r=e[1],o=e[2];return 1===n&&1===r&&1===o}function Gc(t,e,n,r,o){C(t.length===e.rank,(function(){return\"Length of inShape (\"+t.length+\") and rank of dy (\"+e.rank+\") must match\"}));var a=t,i=e,s=!1;4===e.rank&&(s=!0,i=e.as5D(1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]),a=[1,t[0],t[1],t[2],t[3]]);var u=a[4],c=i.shape[4];C(5===a.length,(function(){return\"Error in conv3dDerInput: inShape must be length 5, but got length \"+a.length+\".\"})),C(5===i.rank,(function(){return\"Error in conv3dDerInput: dy must be rank 5, but got rank \"+i.rank})),C(5===n.rank,(function(){return\"Error in conv3dDerInput: filter must be rank 5, but got rank \"+n.rank})),C(u===n.shape[3],(function(){return\"Error in conv3dDerInput: depth of input (\"+u+\") must match input depth for filter \"+n.shape[3]+\".\"})),C(c===n.shape[4],(function(){return\"Error in conv3dDerInput: depth of output (\"+c+\") must match output depth for filter \"+n.shape[4]+\".\"}));var l=Ao(a,n.shape,r,1,o),h=Lt.runKernelFunc((function(t){return t.conv3dDerInput(i,n,l)}),{dy5D:i});return s?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}var Hc=An({conv1d_:function(t,e,n,r,o,a,i){void 0===o&&(o=\"NWC\"),void 0===a&&(a=1);var s=mn(t,\"x\",\"conv1d\"),u=mn(e,\"filter\",\"conv1d\"),c=s,l=!1;2===s.rank&&(l=!0,c=s.as3D(1,s.shape[0],s.shape[1])),C(3===c.rank,(function(){return\"Error in conv1d: input must be rank 3, but got rank \"+c.rank+\".\"})),C(3===u.rank,(function(){return\"Error in conv1d: filter must be rank 3, but got rank \"+u.rank+\".\"})),null!=i&&C(A(r),(function(){return\"Error in conv1d: pad must be an integer when using, dimRoundingMode \"+i+\" but got pad \"+r+\".\"})),C(c.shape[2]===u.shape[1],(function(){return\"Error in conv1d: depth of input (\"+c.shape[2]+\") must match input depth for filter \"+u.shape[1]+\".\"})),C(Mo(n,a),(function(){return\"Error in conv1D: Either stride or dilation must be 1. Got stride \"+n+\" and dilation '\"+a+\"'\"})),C(\"NWC\"===o,(function(){return\"Error in conv1d: got dataFormat of \"+o+\" but only NWC is currently supported.\"}));var h=u.as4D(1,u.shape[0],u.shape[1],u.shape[2]),f=c.as4D(c.shape[0],1,c.shape[1],c.shape[2]),d=qc(f,h,[1,n],r,\"NHWC\",[1,a],i);return l?d.as2D(d.shape[2],d.shape[3]):d.as3D(d.shape[0],d.shape[2],d.shape[3])}}),qc=An({conv2d_:function(t,e,n,r,o,a,i){void 0===o&&(o=\"NHWC\"),void 0===a&&(a=[1,1]);var s=mn(t,\"x\",\"conv2d\"),u=mn(e,\"filter\",\"conv2d\"),c=s,l=!1;3===s.rank&&(l=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),C(4===c.rank,(function(){return\"Error in conv2d: input must be rank 4, but got rank \"+c.rank+\".\"})),C(4===u.rank,(function(){return\"Error in conv2d: filter must be rank 4, but got rank \"+u.rank+\".\"})),null!=i&&C(A(r),(function(){return\"Error in conv2d: pad must be an integer when using, dimRoundingMode \"+i+\" but got pad \"+r+\".\"}));var h=\"NHWC\"===o?c.shape[3]:c.shape[1];C(h===u.shape[2],(function(){return\"Error in conv2d: depth of input (\"+h+\") must match input depth for filter \"+u.shape[2]+\".\"})),C(Mo(n,a),(function(){return\"Error in conv2D: Either strides or dilations must be 1. Got strides \"+n+\" and dilations '\"+a+\"'\"}));var f=Bo(o),d=So(c.shape,u.shape,n,a,r,i,!1,f),p=[u,c],v=Lt.runKernelFunc((function(t,e){var n=t.conv2d(c,u,d);return e([u,c]),n}),{x:c,filter:u},(function(t,e){var i=e,s=i[0],u=i[1];return C(Oo(a),(function(){return\"Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '\"+a+\"'\"})),{x:function(){return Xc(u.shape,t,s,n,r,o)},filter:function(){return jc(u,t,s.shape,n,r,o)}}}),\"Conv2D\",d,p);return l?v.as3D(v.shape[1],v.shape[2],v.shape[3]):v}}),Kc=An({conv3d_:function(t,e,n,r,o,a){void 0===o&&(o=\"NDHWC\"),void 0===a&&(a=[1,1,1]);var i=mn(t,\"x\",\"conv3d\"),s=mn(e,\"filter\",\"conv3d\"),u=i,c=!1;4===i.rank&&(c=!0,u=i.as5D(1,i.shape[0],i.shape[1],i.shape[2],i.shape[3])),C(5===u.rank,(function(){return\"Error in conv3d: input must be rank 5, but got rank \"+u.rank+\".\"})),C(5===s.rank,(function(){return\"Error in conv3d: filter must be rank 5, but got rank \"+s.rank+\".\"})),C(u.shape[4]===s.shape[3],(function(){return\"Error in conv3d: depth of input (\"+u.shape[4]+\") must match input depth for filter \"+s.shape[3]+\".\"})),C(function(t,e){return zc(t)||zc(e)}(n,a),(function(){return\"Error in conv3D: Either strides or dilations must be 1. Got strides \"+n+\" and dilations '\"+a+\"'\"})),C(\"NDHWC\"===o,(function(){return\"Error in conv3d: got dataFormat of \"+o+\" but only NDHWC is currently supported.\"}));var l=Ao(u.shape,s.shape,n,a,r),h=Lt.runKernelFunc((function(t,e){var n=t.conv3d(u,s,l);return e([u,s]),n}),{x:u,$filter:s},(function(t,e){C(zc(a),(function(){return\"Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '\"+a+\"'\"}));var o=e[0],i=e[1];return{x:function(){return Gc(o.shape,t,i,n,r)},$filter:function(){return function(t,e,n,r,o){var a=t;4===t.rank&&(a=t.as5D(1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]));var i=e;4===i.rank&&(i=e.as5D(1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]));C(5===a.rank,(function(){return\"Error in conv3dDerFilter: input must be rank 5, but got shape \"+a.shape+\".\"})),C(5===i.rank,(function(){return\"Error in conv3dDerFilter: dy must be rank 5, but got shape \"+i.shape+\".\"})),C(5===n.length,(function(){return\"Error in conv3dDerFilter: filterShape must be length 5, but got \"+n+\".\"})),C(a.shape[4]===n[3],(function(){return\"Error in conv3dDerFilter: depth of input \"+a.shape[4]+\") must match input depth in filter (\"+n[3]+\".\"})),C(i.shape[4]===n[4],(function(){return\"Error in conv3dDerFilter: depth of dy (\"+i.shape[4]+\") must match output depth for filter (\"+n[4]+\").\"}));var s=Ao(a.shape,n,r,1,o);return Lt.runKernelFunc((function(t){return t.conv3dDerFilter(a,i,s)}),{x5D:a,dy5D:i})}(o,t,i.shape,n,r)}}}));return c?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}}),jc=An({conv2dDerFilter_:function(t,e,n,r,o,a,i){void 0===a&&(a=\"NHWC\");var s=t;3===t.rank&&(s=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var u=e;3===u.rank&&(u=e.as4D(1,e.shape[0],e.shape[1],e.shape[2])),C(4===s.rank,(function(){return\"Error in conv2dDerFilter: input must be rank 4, but got shape \"+s.shape+\".\"})),C(4===u.rank,(function(){return\"Error in conv2dDerFilter: dy must be rank 4, but got shape \"+u.shape+\".\"})),C(4===n.length,(function(){return\"Error in conv2dDerFilter: filterShape must be length 4, but got \"+n+\".\"}));var c=\"NHWC\"===a?s.shape[3]:s.shape[1],l=\"NHWC\"===a?u.shape[3]:u.shape[1];C(c===n[2],(function(){return\"Error in conv2dDerFilter: depth of input \"+c+\") must match input depth in filter (\"+n[2]+\".\"})),C(l===n[3],(function(){return\"Error in conv2dDerFilter: depth of dy (\"+l+\") must match output depth for filter (\"+n[3]+\").\"})),null!=i&&C(A(o),(function(){return\"Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode \"+i+\" but got pad \"+o+\".\"}));var h=Bo(a),f=So(s.shape,n,r,1,o,i,!1,h);return Lt.runKernelFunc((function(t){return t.conv2dDerFilter(s,u,f)}),{x4D:s,dy4D:u})}}),Xc=An({conv2dDerInput_:Vc}),Yc=An({depthwiseConv2d_:function(t,e,n,r,o,a,i){void 0===o&&(o=\"NHWC\"),void 0===a&&(a=[1,1]);var s=mn(t,\"x\",\"depthwiseConv2d\"),u=mn(e,\"filter\",\"depthwiseConv2d\"),c=s,l=!1;3===s.rank&&(l=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),C(4===c.rank,(function(){return\"Error in depthwiseConv2d: input must be rank 4, but got rank \"+c.rank+\".\"})),C(4===u.rank,(function(){return\"Error in depthwiseConv2d: filter must be rank 4, but got rank \"+u.rank+\".\"})),C(c.shape[3]===u.shape[2],(function(){return\"Error in depthwiseConv2d: number of input channels (\"+c.shape[3]+\") must match the inChannels dimension in filter \"+u.shape[2]+\".\"})),null==a&&(a=[1,1]),C(Mo(n,a),(function(){return\"Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides \"+n+\" and dilations '\"+a+\"'\"})),null!=i&&C(A(r),(function(){return\"Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode \"+i+\" but got pad \"+r+\".\"}));var h=So(c.shape,u.shape,n,a,r,i,!0),f=[c,u],d=Lt.runKernelFunc((function(t,e){var n=t.depthwiseConv2D(c,u,h);return e([c,u]),n}),{x:c,filter:u},(function(t,e){C(Oo(a),(function(){return\"Error in gradient of depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '\"+a+\"'\"}));var n=e[0],r=e[1];return{x:function(){return $c(n.shape,t,r,h)},filter:function(){return Qc(n,t,r.shape,h)}}}),\"DepthwiseConv2dNative\",h,f);return l?d.as3D(d.shape[1],d.shape[2],d.shape[3]):d}}),$c=An({depthwiseConv2dDerInput_:function(t,e,n,r){var o=e,a=!1;3===e.rank&&(a=!0,o=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]));var i=Lt.runKernelFunc((function(t){return t.depthwiseConv2DDerInput(o,n,r)}),{dy4D:o});return a?i.as3D(i.shape[1],i.shape[2],i.shape[3]):i}}),Qc=An({depthwiseConv2dDerFilter_:function(t,e,n,r){var o=t;3===t.rank&&(o=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var a=e;return 3===a.rank&&(a=e.as4D(1,e.shape[0],e.shape[1],e.shape[2])),Lt.runKernelFunc((function(t){return t.depthwiseConv2DDerFilter(o,a,r)}),{x4D:o,dy4D:a})}}),Jc=An({separableConv2d_:function(t,e,n,r,o,a,i){void 0===a&&(a=[1,1]),void 0===i&&(i=\"NHWC\");var s=mn(t,\"x\",\"separableConv2d\"),u=mn(e,\"depthwiseFilter\",\"separableConv2d\"),c=mn(n,\"pointwiseFilter\",\"separableConv2d\"),l=s,h=!1;if(3===s.rank&&(h=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),\"NCHW\"===i)throw new Error(\"separableConv2d currently does not support dataFormat NCHW; only NHWC is supported\");C(4===l.rank,(function(){return\"Error in separableConv2d: input must be rank 4, but got rank \"+l.rank+\".\"})),C(4===u.rank,(function(){return\"Error in separableConv2d: depthwise filter must be rank 4, but got rank \"+u.rank+\".\"})),C(4===c.rank,(function(){return\"Error in separableConv2d: pointwise filter must be rank 4, but got rank \"+u.rank+\".\"})),C(1===c.shape[0],(function(){return\"Error in separableConv2d: the first dimension of pointwise filter  must be 1, but got \"+c.shape[0]+\".\"})),C(1===c.shape[1],(function(){return\"Error in separableConv2d: the second dimension of pointwise filter must be 1, but got \"+c.shape[1]+\".\"}));var f=u.shape[2],d=u.shape[3];C(c.shape[2]===f*d,(function(){return\"Error in separableConv2d: the third dimension of pointwise filter must be \"+f*d+\", but got \"+c.shape[2]+\".\"}));var p=Yc(l,u,r,o,i,a),v=qc(p,c,1,\"valid\",i);return h?v.as3D(v.shape[1],v.shape[2],v.shape[3]):v}}),Zc=An({conv2dTranspose_:function(t,e,n,r,o,a){return Vc(n,mn(t,\"x\",\"conv2dTranspose\"),mn(e,\"filter\",\"conv2dTranspose\"),r,o,\"NHWC\",a)}}),tl=An({conv3dTranspose_:function(t,e,n,r,o){return Gc(n,mn(t,\"x\",\"conv3dTranspose\"),mn(e,\"filter\",\"conv3dTranspose\"),r,o)}});var el=An({matMul_:function(t,e,n,r){var o;void 0===n&&(n=!1),void 0===r&&(r=!1);var a=mn(t,\"a\",\"matMul\"),i=mn(e,\"b\",\"matMul\");o=Nt(a,i),a=o[0],i=o[1];var s=n?a.shape[a.rank-2]:a.shape[a.rank-1],u=r?i.shape[i.rank-1]:i.shape[i.rank-2],c=n?a.shape[a.rank-1]:a.shape[a.rank-2],l=r?i.shape[i.rank-2]:i.shape[i.rank-1],h=a.shape.slice(0,-2),f=i.shape.slice(0,-2),d=k(h),p=k(f);C(a.rank>=2&&i.rank>=2&&a.rank===i.rank,(function(){return\"Error in matMul: inputs must have the same rank of at least 2, got ranks \"+a.rank+\" and \"+i.rank+\".\"})),C(S(h,f),(function(){return\"Error in matMul: outer dimensions (\"+h+\") and (\"+f+\") of Tensors with shapes \"+a.shape+\" and \"+i.shape+\" must match.\"})),C(s===u,(function(){return\"Error in matMul: inner shapes (\"+s+\") and (\"+u+\") of Tensors with shapes \"+a.shape+\" and \"+i.shape+\" and transposeA=\"+n+\" and transposeB=\"+r+\" must match.\"}));var v=a.shape.slice(0,-2).concat([c,l]),m=n?a.as3D(d,s,c):a.as3D(d,c,s),g=r?i.as3D(p,l,u):i.as3D(p,u,l),y={transposeA:n,transposeB:r};return Lt.runKernelFunc((function(t,e){var o=t.batchMatMul(m,g,n,r);return e([m,g]),o}),{a:m,b:g},(function(t,e){var o=e,a=o[0],i=o[1];return n||r?!n&&r?{a:function(){return t.matMul(i,!1,!1)},b:function(){return t.matMul(a,!0,!1)}}:n&&!r?{a:function(){return i.matMul(t,!1,!0)},b:function(){return a.matMul(t,!1,!1)}}:{a:function(){return i.matMul(t,!0,!0)},b:function(){return t.matMul(a,!0,!0)}}:{a:function(){return t.matMul(i,!1,!0)},b:function(){return a.matMul(t,!0,!1)}}}),\"BatchMatMul\",y).reshape(v)}}),nl=An({dot_:function(t,e){var n=mn(t,\"t1\",\"dot\"),r=mn(e,\"t2\",\"dot\");C(!(1!==n.rank&&2!==n.rank||1!==r.rank&&2!==r.rank),(function(){return\"Error in dot: inputs must all be rank 1 or 2, but got ranks \"+n.rank+\" and \"+r.rank+\".\"}));var o=1===n.rank?n.size:n.shape[1],a=1===r.rank?r.size:r.shape[0];return C(o===a,(function(){return\"Error in dot: inner dimensions of inputs must match, but got \"+o+\" and \"+a+\".\"})),1===n.rank&&1===r.rank?n.as2D(1,-1).matMul(r.as2D(-1,1)).asScalar():1===n.rank&&2===r.rank?n.as2D(1,-1).matMul(r.as2D(r.shape[0],r.shape[1])).as1D():2===n.rank&&1===r.rank?n.matMul(r.as2D(-1,1)).as1D():n.matMul(r.as2D(r.shape[0],r.shape[1]))}}),rl=An({outerProduct_:function(t,e){var n=mn(t,\"v1\",\"outerProduct\"),r=mn(e,\"v2\",\"outerProduct\");return C(1===n.rank&&1===r.rank,(function(){return\"Error in outerProduct: inputs must be rank 1, but got ranks \"+n.rank+\" and \"+r.rank+\".\"})),n.as2D(-1,1).matMul(r.as2D(1,-1))}});var ol=An({reverse_:function(t,e){var n=mn(t,\"x\",\"reverse\");if(0===n.rank)return n.clone();var r=O(e,n.shape);return Lt.runKernelFunc((function(t){return t.reverse(n,r)}),{$x:n},(function(t){return{$x:function(){return t.reverse(r)}}})).reshapeAs(n)}}),al=An({reverse1d_:function(t){var e=mn(t,\"x\",\"reverse\");return C(1===e.rank,(function(){return\"Error in reverse1D: x must be rank 1 but got rank \"+e.rank+\".\"})),ol(e,0)}}),il=An({reverse2d_:function(t,e){var n=mn(t,\"x\",\"reverse\");return C(2===n.rank,(function(){return\"Error in reverse2D: x must be rank 2 but got rank \"+n.rank+\".\"})),ol(n,e)}}),sl=An({reverse3d_:function(t,e){var n=mn(t,\"x\",\"reverse\");return C(3===n.rank,(function(){return\"Error in reverse3D: x must be rank 3 but got rank \"+n.rank+\".\"})),ol(n,e)}}),ul=An({reverse4d_:function(t,e){var n=mn(t,\"x\",\"reverse\");return C(4===n.rank,(function(){return\"Error in reverse4D: x must be rank 4 but got rank \"+n.rank+\".\"})),ol(n,e)}});function cl(t,e,n,r,o,a){var i=mn(t,\"x\",\"maxPool\"),s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),null==r&&(r=[1,1]),C(4===s.rank,(function(){return\"Error in maxPool: input must be rank 4 but got rank \"+s.rank+\".\"})),C(Mo(n,r),(function(){return\"Error in maxPool: Either strides or dilations must be 1. Got strides \"+n+\" and dilations '\"+r+\"'\"})),null!=a&&C(A(o),(function(){return\"Error in maxPool: pad must be an integer when using, dimRoundingMode \"+a+\" but got pad \"+o+\".\"}));var c=Io(s.shape,e,n,r,o,a);if(1===c.filterWidth&&1===c.filterHeight&&S(c.inShape,c.outShape))return i.clone();var l=[s],h=Lt.runKernelFunc((function(t,e){var n=t.maxPool(s,c);return e([s,n]),n}),{x:s},(function(t,a){var i=a[0],s=a[1];return{x:function(){return function(t,e,n,r,o,a,i,s){var u=mn(t,\"dy\",\"maxPoolBackprop\"),c=mn(e,\"input\",\"maxPoolBackprop\"),l=mn(n,\"output\",\"maxPoolBackprop\");C(c.rank===u.rank,(function(){return\"Rank of input (\"+c.rank+\") does not match rank of dy (\"+u.rank+\")\"})),null==a&&(a=[1,1]);C(Mo(o,a),(function(){return\"Error in maxPoolBackProp: Either strides or dilations must be 1. Got strides \"+o+\" and dilations '\"+a+\"'\"})),C(4===u.rank,(function(){return\"Error in maxPoolBackprop: dy must be rank 4 but got rank \"+u.rank+\".\"})),C(4===c.rank,(function(){return\"Error in maxPoolBackprop: input must be rank 4 but got rank \"+c.rank+\".\"})),null!=s&&C(A(i),(function(){return\"Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode \"+s+\" but got pad \"+i+\".\"}));var h=Io(c.shape,r,o,a,i,s);return Lt.runKernelFunc((function(t){return t.maxPoolBackprop(u,c,l,h)}),{$dy:u,$input:c})}(t,i,s,e,n,r,o)}}}),\"MaxPool\",c,l);return u?h.as3D(h.shape[1],h.shape[2],h.shape[3]):h}function ll(t,e,n,r,o,a){var i=mn(t,\"x\",\"avgPool\",\"float32\");null==r&&(r=[1,1]),C(Mo(n,r),(function(){return\"Error in avgPool: Either strides or dilations must be 1. Got strides \"+n+\" and dilations '\"+r+\"'\"}));var s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),C(4===s.rank,(function(){return\"Error in avgPool: x must be rank 4 but got rank \"+s.rank+\".\"})),null!=a&&C(A(o),(function(){return\"Error in avgPool: pad must be an integer when using, dimRoundingMode \"+a+\" but got pad \"+o+\".\"}));var c=Io(s.shape,e,n,r,o,a);if(1===c.filterWidth&&1===c.filterHeight&&S(c.inShape,c.outShape))return i.clone();var l=Lt.runKernelFunc((function(t){return t.avgPool(s,c)}),{x:s},(function(t){return{x:function(){return function(t,e,n,r,o,a){var i=mn(t,\"dy\",\"avgPoolBackprop\"),s=mn(e,\"input\",\"avgPoolBackprop\");C(s.rank===i.rank,(function(){return\"Rank of input (\"+s.rank+\") does not match rank of dy (\"+i.rank+\")\"})),null==o&&(o=[1,1]);C(Mo(r,o),(function(){return\"Error in avgPoolBackprop: Either strides or dilations must be 1. Got strides \"+r+\" and dilations '\"+o+\"'\"}));var u=s,c=i,l=!1;3===s.rank&&(l=!0,u=s.as4D(1,s.shape[0],s.shape[1],s.shape[2]),c=i.as4D(1,i.shape[0],i.shape[1],i.shape[2]));C(4===c.rank,(function(){return\"Error in avgPoolBackprop: dy must be rank 4 but got rank \"+c.rank+\".\"})),C(4===u.rank,(function(){return\"Error in avgPoolBackprop: input must be rank 4 but got rank \"+u.rank+\".\"}));var h=Io(u.shape,n,r,o,a),f=Lt.runKernelFunc((function(t){return t.avgPoolBackprop(c,u,h)}),{dy4D:c,input4D:u});if(l)return f.as3D(f.shape[1],f.shape[2],f.shape[3]);return f}(t,s,e,n,r,o)}}}),\"AvgPool\",c);return l=l.cast(i.dtype),u?l.as3D(l.shape[1],l.shape[2],l.shape[3]):l}var hl=An({maxPool_:function(t,e,n,r,o){return cl(t,e,n,1,r,o)}}),fl=An({avgPool_:function(t,e,n,r,o){return ll(t,e,n,1,r,o)}}),dl=An({pool_:function(t,e,n,r,o,a){null==o&&(o=[1,1]),null==a&&(a=1),0===r&&(r=\"valid\");var i=mn(t,\"x\",\"maxPool\"),s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),C(Mo(a,o),(function(){return\"Error in pool: Either strides or dilations must be 1. Got strides \"+a+\" and dilations '\"+o+\"'\"}));var c,l=Io(s.shape,e,a,o,r),h=[l.dilationHeight,l.dilationWidth];c=\"same\"===r?function(t,e){var n=t.map((function(t,n){return t+(t-1)*(e[n]-1)})).map((function(t){return t-1})),r=n.map((function(t){return Math.floor(t/2)})),o=n.map((function(t,e){return t-r[e]}));return n.map((function(t,e){return[r[e],o[e]]}))}([l.filterHeight,l.filterWidth],h):[[0,0],[0,0]];var f=1===h[0]&&1===h[1],d=function(t,e,n){var r=n.map((function(t){return t[0]})),o=n.map((function(t){return t[1]})),a=t.concat(r,o),i=e.map((function(t,e){return(t-a[e]%t)%t})),s=o.map((function(t,e){return t+i[e]})),u=e.map((function(t,e){return[r[e],s[e]]})),c=e.map((function(t,e){return[0,i[e]]}));return[u,c]}([l.inHeight,l.inWidth],h,c),p=d[0],v=d[1],m=f?r:\"valid\",g=f?s:Mr(s,h,p),y=(\"avg\"===n?function(){return ll(g,e,a,1,m)}:function(){return cl(g,e,a,1,m)})(),x=f?y:vr(y,h,v);return u?x.as3D(x.shape[1],x.shape[2],x.shape[3]):x}}),pl=An({maxPool3d_:function(t,e,n,r,o,a,i){void 0===a&&(a=\"NDHWC\");var s=mn(t,\"x\",\"maxPool3d\"),u=s,c=!1;4===s.rank&&(c=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),null==i&&(i=[1,1,1]),C(5===u.rank,(function(){return\"Error in maxPool3d: x must be rank 5 but got rank \"+u.rank+\".\"})),C(\"NDHWC\"===a,(function(){return\"Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of \"+a})),C(Mo(n,i),(function(){return\"Error in maxPool3d: Either strides or dilations must be 1. Got strides \"+n+\" and dilations '\"+i+\"'\"})),null!=o&&C(A(r),(function(){return\"Error in maxPool3d: pad must be an integer when using, dimRoundingMode \"+o+\" but got pad \"+r+\".\"}));var l=ko(u.shape,e,n,i,r,o,a),h=Lt.runKernelFunc((function(t,e){var n=t.maxPool3d(u,l);return e([u,n]),n}),{x:u},(function(t,a){var s=a[0],u=a[1];return{x:function(){return function(t,e,n,r,o,a,i,s){var u=mn(t,\"dy\",\"maxPool3dBackprop\"),c=mn(e,\"input\",\"maxPool3dBackprop\"),l=mn(n,\"output\",\"maxPool3dBackprop\"),h=u,f=c,d=l,p=!1;4===c.rank&&(p=!0,h=u.as5D(1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]),f=c.as5D(1,c.shape[0],c.shape[1],c.shape[2],c.shape[3]),d=l.as5D(1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]));C(5===h.rank,(function(){return\"Error in maxPool3dBackprop: dy must be rank 5 but got rank \"+h.rank+\".\"})),C(5===f.rank,(function(){return\"Error in maxPool3dBackprop: input must be rank 5 but got rank \"+f.rank+\".\"})),C(5===d.rank,(function(){return\"Error in maxPool3dBackprop: output must be rank 5 but got rank \"+d.rank+\".\"})),null==a&&(a=[1,1,1]);C(Mo(o,a),(function(){return\"Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides \"+o+\" and dilations '\"+a+\"'\"})),null!=s&&C(A(i),(function(){return\"Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode \"+s+\" but got pad \"+i+\".\"}));var v=ko(f.shape,r,o,a,i,s),m=Lt.runKernelFunc((function(t){return t.maxPool3dBackprop(h,f,d,v)}),{dy5D:h,input5D:f});if(p)return m.as4D(m.shape[1],m.shape[2],m.shape[3],m.shape[4]);return m}(t,s,u,e,n,i,r,o)}}}));return c?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}}),vl=An({avgPool3d_:function(t,e,n,r,o,a,i){void 0===a&&(a=\"NDHWC\");var s=mn(t,\"x\",\"avgPool3d\",\"float32\"),u=s,c=!1;4===s.rank&&(c=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),null==i&&(i=[1,1,1]),C(5===u.rank,(function(){return\"Error in avgPool3d: x must be rank 5 but got rank \"+u.rank+\".\"})),C(\"NDHWC\"===a,(function(){return\"Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of \"+a})),C(Mo(n,i),(function(){return\"Error in avgPool3d: Either strides or dilations must be 1. Got strides \"+n+\" and dilations '\"+i+\"'\"})),null!=o&&C(A(r),(function(){return\"Error in avgPool3d: pad must be an integer when using, dimRoundingMode \"+o+\" but got pad \"+r+\".\"}));var l=ko(u.shape,e,n,i,r,o,a),h=Lt.runKernelFunc((function(t){return t.avgPool3d(u,l)}),{x:u},(function(t){return{x:function(){return function(t,e,n,r,o,a,i){var s=mn(t,\"dy\",\"avgPool3dBackprop\"),u=mn(e,\"input\",\"avgPool3dBackprop\"),c=s,l=u,h=!1;4===u.rank&&(h=!0,c=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]),l=u.as5D(1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]));C(5===c.rank,(function(){return\"Error in avgPool3dBackprop: dy must be rank 5 but got rank \"+c.rank+\".\"})),C(5===l.rank,(function(){return\"Error in avgPool3dBackprop: input must be rank 5 but got rank \"+l.rank+\".\"})),null==o&&(o=[1,1,1]);C(Mo(r,o),(function(){return\"Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides \"+r+\" and dilations '\"+o+\"'\"})),null!=i&&C(A(a),(function(){return\"Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode \"+i+\" but got pad \"+a+\".\"}));var f=ko(l.shape,n,r,o,a,i),d=Lt.runKernelFunc((function(t){return t.avgPool3dBackprop(c,l,f)}),{dy5D:c,input5D:l});if(h)return d.as4D(d.shape[1],d.shape[2],d.shape[3],d.shape[4]);return d}(t,u,e,n,i,r,o)}}}));return h=h.cast(u.dtype),c?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}});var ml=An({slice_:function(t,e,n){var r,o,a=mn(t,\"x\",\"slice\");if(0===a.rank)throw new Error(\"Slicing scalar is not possible\");(r=\"number\"==typeof e?[e].concat(new Array(a.rank-1).fill(0)):e.length<a.rank?e.concat(new Array(a.rank-e.length).fill(0)):e.slice()).forEach((function(t){C(-1!==t,(function(){return\"slice() does not support negative begin indexing.\"}))})),o=(o=null==n?new Array(a.rank).fill(-1):\"number\"==typeof n?[n].concat(new Array(a.rank-1).fill(-1)):n.length<a.rank?n.concat(new Array(a.rank-n.length).fill(-1)):n).map((function(t,e){return t>=0?t:(C(-1===t,(function(){return\"Negative size values should be exactly -1 but got \"+t+\" for the slice() size at index \"+e+\".\"})),a.shape[e]-r[e])})),eo(a,r,o);var i=a.shape,s={begin:r,size:o};return Lt.runKernelFunc((function(t){return t.slice(a,r,o)}),{x:a},(function(t){for(var e=[],n=0;n<t.rank;n++)e.push([r[n],i[n]-r[n]-o[n]]);return{x:function(){return t.pad(e)}}}),\"Slice\",s)}}),gl=An({slice1d_:function(t,e,n){var r=mn(t,\"x\",\"slice1d\");return C(1===r.rank,(function(){return\"slice1d expects a rank-1 tensor, but got a rank-\"+r.rank+\" tensor\"})),ml(r,[e],[n])}}),yl=An({slice2d_:function(t,e,n){var r=mn(t,\"x\",\"slice2d\");return C(2===r.rank,(function(){return\"slice2d expects a rank-2 tensor, but got a rank-\"+r.rank+\" tensor\"})),ml(r,e,n)}}),xl=An({slice3d_:function(t,e,n){var r=mn(t,\"x\",\"slice3d\");return C(3===r.rank,(function(){return\"slice3d expects a rank-3 tensor, but got a rank-\"+r.rank+\" tensor\"})),ml(r,e,n)}}),bl=An({slice4d_:function(t,e,n){var r=mn(t,\"x\",\"slice4d\");return C(4===r.rank,(function(){return\"slice4d expects a rank-4 tensor, but got a rank-\"+r.rank+\" tensor\"})),ml(r,e,n)}});function wl(t,e,n,r,o){return e.rank<n.rank&&(e=e.reshape(wn(e.shape,r))),t.rank<n.rank&&(t=t.reshape(wn(t.shape,r))),{x:function(){var r=t.mul(n.equal(e).cast(t.dtype));return null==o?r:r.transpose(o)}}}var Cl=An({all_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=mn(t,\"x\",\"all\",\"bool\"),o=O(e,r.shape),a=o,i=En(a,r.rank);null!=i&&(r=r.transpose(i),a=In(a.length,r.rank));var s=Lt.runKernelFunc((function(t){return t.all(r,a)}),{$x:r});if(n){var u=wn(s.shape,o);return s.reshape(u)}return s}}),El=An({any_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=mn(t,\"x\",\"any\",\"bool\"),o=O(e,r.shape),a=o,i=En(a,r.rank);null!=i&&(r=r.transpose(i),a=In(a.length,r.rank));var s=Lt.runKernelFunc((function(t){return t.any(r,a)}),{$x:r});if(n){var u=wn(s.shape,o);return s.reshape(u)}return s}}),Rl=An({argMax_:function(t,e){void 0===e&&(e=0);var n=mn(t,\"x\",\"argMax\");null==e&&(e=0);var r=O(e,n.shape),o=En(r,n.rank);null!=o&&(n=n.transpose(o),r=In(r.length,n.rank));var a={axis:r[0]},i=[n];return Lt.runKernelFunc((function(t,e){var o=t.argMax(n,r[0]);return e([n]),o}),{x:n},(function(t,e){var n=e[0];return{x:function(){return Xn(n)}}}),\"ArgMax\",a,i)}}),Il=An({argMin_:function(t,e){void 0===e&&(e=0);var n=mn(t,\"x\",\"argMin\");null==e&&(e=0);var r=O(e,n.shape),o=En(r,n.rank);return null!=o&&(n=n.transpose(o),r=In(r.length,n.rank)),Lt.runKernelFunc((function(t,e){var o=t.argMin(n,r[0]);return e([n]),o}),{$x:n},(function(t,e){var n=e[0];return{$x:function(){return Xn(n)}}}))}}),kl=An({logSumExp_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=mn(t,\"x\",\"logSumExp\"),o=O(e,r.shape),a=r.max(o,!0),i=r.sub(a).exp().sum(o).log(),s=a.reshape(i.shape).add(i);if(n){var u=wn(s.shape,o);return s.reshape(u)}return s}}),Sl=An({max_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=mn(t,\"x\",\"max\"),o=r,a=O(e,r.shape),i=a,s=En(i,r.rank);null!=s&&(r=r.transpose(s),i=In(i.length,r.rank));var u=[r],c=Lt.runKernelFunc((function(t,e){var n=t.max(r,i);return e([o,n]),n}),{x:r},(function(t,e){return wl(t,e[1],e[0],a,s)}),\"Max\",{axes:i},u,[!0]);if(n){var l=wn(c.shape,a);c=c.reshape(l)}return c}}),Al=An({mean_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=mn(t,\"x\",\"mean\"),o=O(e,r.shape),a=k(bn(r.shape,o)[1]);return vo((function(t){var r=On(a);return{value:(r.dtype===t.dtype?t:t.cast(r.dtype)).div(r).sum(e,n),gradFunc:function(e){var n=t.shape.slice();return o.forEach((function(t){n[t]=1})),e.reshape(n).mul(zn(t.shape,\"float32\")).div(a)}}}))(r)}}),Dl=An({min_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=mn(t,\"x\",\"min\"),o=r,a=O(e,r.shape),i=a,s=En(i,r.rank);null!=s&&(r=r.transpose(s),i=In(i.length,r.rank));var u=[r],c=Lt.runKernelFunc((function(t,e){var n=t.min(r,i);return e([o,n]),n}),{x:r},(function(t,e){return wl(t,e[1],e[0],a,s)}),\"Min\",{axes:i},u,[!0]);if(n){var l=wn(c.shape,a);c=c.reshape(l)}return c}}),Tl=An({moments_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=O(e,(t=mn(t,\"x\",\"moments\")).shape),o=t.mean(r,n),a=o.shape;n||(a=wn(o.shape,r));var i=t.toFloat().sub(o.reshape(a)).square();return{mean:o,variance:i.mean(r,n)}}}),Nl=An({sum_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=mn(t,\"x\",\"sum\");\"bool\"===r.dtype&&(r=r.toInt());var o=O(e,r.shape);return vo((function(t){var e=En(o,t.rank),r=o,a=t;null!=e&&(a=t.transpose(e),r=In(r.length,t.rank));var i=function(e){var n=t.shape.slice();return o.forEach((function(t){n[t]=1})),e.reshape(n).mul(zn(t.shape,\"float32\"))},s={axes:r},u=Lt.runKernelFunc((function(t){return t.sum(a,r)}),{x:a},(function(t){return{x:function(){return i(t)}}}),\"Sum\",s);if(n){var c=wn(u.shape,o);u=u.reshape(c)}return{value:u,gradFunc:i}}))(r)}}),Fl=An({prod_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=mn(t,\"x\",\"prod\");\"bool\"===r.dtype&&(r=r.toInt());var o=O(e,r.shape),a=En(o,r.rank),i=o,s=r;null!=a&&(s=r.transpose(a),i=In(i.length,r.rank));var u=Lt.runKernelFunc((function(t){return t.prod(s,i)}),{permutedX:s});if(n){var c=wn(u.shape,o);u=u.reshape(c)}return u}});var _l=An({elu_:function(t){var e=mn(t,\"x\",\"elu\");return Lt.runKernelFunc((function(t,n){var r=t.elu(e);return n([r]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return Lt.runKernelFunc((function(e){return e.eluDer(t,n)}),{dy:t,y:n})}}}))}}),Ol=An({leakyRelu_:function(t,e){void 0===e&&(e=.2);var n=mn(t,\"x\",\"leakyRelu\");return hc(On(e).mul(n),n)}}),Ml=An({prelu_:function(t,e){var n=mn(t,\"x\",\"prelu\"),r=mn(e,\"alpha\",\"prelu\");return Lt.runKernelFunc((function(t,e){var o=t.prelu(n,r);return e([n,r]),o}),{x:n,alpha:r},(function(t,e){var n=e[0],r=e[1],o=n.greater(0);return{x:function(){return ec(o,t,t.mul(r))},alpha:function(){var e=ec(o,Xn(t),t.mul(n)),a=Eo(r.shape,t.shape);return a.length>0&&(e=e.sum(a)),e.reshape(r.shape)}}}),\"Prelu\")}}),Bl=An({relu_:function(t){var e=mn(t,\"x\",\"relu\");return\"bool\"===e.dtype?e.toInt():Lt.runKernelFunc((function(t,n){var r=t.relu(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.mulStrict(n.step().toFloat())}}}),\"Relu\")}}),Pl=An({relu6_:function(t){var e=mn(t,\"x\",\"relu6\");return\"bool\"===e.dtype?e.toInt():Lt.runKernelFunc((function(t,n){var r=t.relu6(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0],r=n.lessEqual(6).mul(n.step());return{x:function(){return t.mulStrict(r.toFloat())}}}),\"Relu6\")}}),Ll=An({selu_:function(t){var e=mn(t,\"x\",\"selu\");return Lt.runKernelFunc((function(t,n){var r=t.selu(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){var e=n.greater(On(0)),r=On(bs),o=On(ws),a=t.mul(o),i=t.mul(r).mul(n.toFloat().exp());return ec(e,a,i)}}}))}});var Wl=An({transpose_:function(t,e){var n=mn(t,\"x\",\"transpose\");if(null==e&&(e=n.shape.map((function(t,e){return e})).reverse()),C(n.rank===e.length,(function(){return\"Error in transpose: rank of input \"+n.rank+\" must match length of perm \"+e+\".\"})),e.forEach((function(t){C(t>=0&&t<n.rank,(function(){return\"All entries in 'perm' must be between 0 and \"+(n.rank-1)+\" but got \"+e}))})),n.rank<=1)return n.clone();var r={perm:e};return Lt.runKernelFunc((function(t){return t.transpose(n,e)}),{x:n},(function(t){var n=Rn(e);return{x:function(){return t.transpose(n)}}}),\"Transpose\",r)}});var Ul=An({localResponseNormalization_:function(t,e,n,r,o){void 0===e&&(e=5),void 0===n&&(n=1),void 0===r&&(r=1),void 0===o&&(o=.5);var a=mn(t,\"x\",\"localResponseNormalization\");C(4===a.rank||3===a.rank,(function(){return\"Error in localResponseNormalization: x must be rank 3 or 4 but got\\n               rank \"+a.rank+\".\"})),C(A(e),(function(){return\"Error in localResponseNormalization: depthRadius must be an integer but got depthRadius \"+e+\".\"}));var i=a,s=!1;3===a.rank&&(s=!0,i=a.as4D(1,a.shape[0],a.shape[1],a.shape[2]));var u=Lt.runKernelFunc((function(t,a){var s=t.localResponseNormalization4D(i,e,n,r,o);return a([i,s]),s}),{x4D:i},(function(t,a){var i=a[0],s=a[1];return{x4D:function(){return Lt.runKernelFunc((function(a){return a.LRNGrad(t,i,s,e,n,r,o)}),{})}}}));return s?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}});var Vl=An({norm_:function(t,e,n,r){void 0===e&&(e=\"euclidean\"),void 0===n&&(n=null),void 0===r&&(r=!1);var o=function t(e,n,r){void 0===r&&(r=null);if(0===e.rank)return e.abs();if(1!==e.rank&&null===r)return t(e.reshape([-1]),n,r);if(1===e.rank||\"number\"==typeof r||Array.isArray(r)&&1===r.length){if(1===n)return e.abs().sum(r);if(n===1/0)return e.abs().max(r);if(n===-1/0)return e.abs().min(r);if(\"euclidean\"===n||2===n)return e.abs().pow(On(2,\"int32\")).sum(r).sqrt();throw new Error(\"Error in norm: invalid ord value: \"+n)}if(Array.isArray(r)&&2===r.length){if(1===n)return e.abs().sum(r[0]).max(r[1]-1);if(n===1/0)return e.abs().sum(r[1]).max(r[0]);if(n===-1/0)return e.abs().sum(r[1]).min(r[0]);if(\"fro\"===n||\"euclidean\"===n)return e.square().sum(r).sqrt();throw new Error(\"Error in norm: invalid ord value: \"+n)}throw new Error(\"Error in norm: invalid axis: \"+r)}(t=mn(t,\"x\",\"norm\"),e,n),a=o.shape;if(r){var i=O(n,t.shape);a=wn(o.shape,i)}return o.reshape(a)}});var zl=An({basicLSTMCell_:function(t,e,n,r,o,a){var i=mn(t,\"forgetBias\",\"basicLSTMCell\"),s=mn(e,\"lstmKernel\",\"basicLSTMCell\"),u=mn(n,\"lstmBias\",\"basicLSTMCell\"),c=mn(r,\"data\",\"basicLSTMCell\"),l=mn(o,\"c\",\"basicLSTMCell\"),h=mn(a,\"h\",\"basicLSTMCell\"),f=c.concat(h,1).matMul(s).add(u),d=f.shape[0],p=f.shape[1]/4,v=[d,p],m=f.slice([0,0],v),g=f.slice([0,p],v),y=f.slice([0,2*p],v),x=f.slice([0,3*p],v),b=m.sigmoid().mulStrict(g.tanh()).addStrict(l.mulStrict(i.add(y).sigmoid())),w=b.tanh().mulStrict(x.sigmoid());return[b,w]}}),Gl=An({multiRNNCell_:function(t,e,n,r){for(var o=mn(e,\"data\",\"multiRNNCell\"),a=gn(n,\"c\",\"multiRNNCell\"),i=gn(r,\"h\",\"multiRNNCell\"),s=o,u=[],c=0;c<t.length;c++){var l=t[c](s,a[c],i[c]);u.push(l[0]),u.push(l[1]),s=l[1]}var h=[],f=[];for(c=0;c<u.length;c+=2)h.push(u[c]),f.push(u[c+1]);return[h,f]}});var Hl=An({movingAverage_:function(t,e,n,r,o){void 0===o&&(o=!0);var a=mn(t,\"v\",\"movingAverage\"),i=mn(e,\"x\",\"movingAverage\"),s=mn(n,\"decay\",\"movingAverage\");Ft(a,i),C(S(a.shape,i.shape),(function(){return\"Shape mismatch in v and x\"}));var u=On(1),c=u.sub(s),l=i.sub(a).mul(c);if(o){C(null!=r,(function(){return\"When using zeroDebias: true, step is required.\"}));var h=mn(r,\"step\",\"movingAverage\");l=l.div(u.sub(xc(s,h)))}return a.add(l)}});var ql=An({stridedSlice_:function(t,e,n,r,o,a,i,s,u){if(void 0===o&&(o=0),void 0===a&&(a=0),void 0===i&&(i=0),void 0===s&&(s=0),void 0===u&&(u=0),null==r&&(r=new Array(e.length)),0!==i)throw new Error(\"ellipsis mask is not yet supported\");var c=mn(t,\"x\",\"stridedSlice\"),l=no(s),h=c.shape.slice();l.forEach((function(t){e[t]=0,n[t]=1,h.splice(t,0,1)})),c=c.reshape(h);for(var f=0;f<c.rank;f++)e[f]=oo(o,e,r,c.shape,f),n[f]=ao(a,n,r,c.shape,f),r[f]=r[f]||1;var d=no(u);d.forEach((function(t){n[t]=e[t]+1,r[t]=1}));var p=ro(e,n,r),v=p.filter((function(t,e){return-1===d.indexOf(e)}));return r.every((function(t){return 1===t}))?ml(c,e,p).reshape(v):Lt.runKernelFunc((function(t){return t.stridedSlice(c,e,n,r)}),{$x:c}).reshape(v)}});var Kl=An({topk_:function(t,e,n){void 0===e&&(e=1),void 0===n&&(n=!0);var r=mn(t,\"x\",\"topk\");if(0===r.rank)throw new Error(\"topk() expects the input to be of rank 1 or higher\");var o=r.shape[r.shape.length-1];if(e>o)throw new Error(\"'k' passed to topk() must be <= the last dimension (\"+o+\") but got \"+e);var a=Lt.runKernelFunc((function(t){return t.topk(r,e,n)}),{$x:r});return{values:a[0],indices:a[1]}}});var jl=An({scatterND_:function(t,e,n){var r=mn(t,\"indices\",\"scatterND\",\"int32\"),o=mn(e,\"updates\",\"scatterND\");return Jr(o,r,n),Lt.runKernelFunc((function(t){return t.scatterND(r,o,n)}),{indices:r,updates:o},null,\"ScatterNd\",{shape:n})}});var Xl=An({fft_:function(t){C(\"complex64\"===t.dtype,(function(){return\"The dtype for tf.spectral.fft() must be complex64 but got \"+t.dtype+\".\"}));var e=t.shape[t.shape.length-1],n=t.size/e,r=t.as2D(n,e);return Lt.runKernelFunc((function(t){return t.fft(r)}),{input:t}).reshape(t.shape)}}),Yl=An({ifft_:function(t){C(\"complex64\"===t.dtype,(function(){return\"The dtype for tf.spectral.ifft() must be complex64 but got \"+t.dtype+\".\"}));var e=t.shape[t.shape.length-1],n=t.size/e,r=t.as2D(n,e);return Lt.runKernelFunc((function(t){return t.ifft(r)}),{input:t}).reshape(t.shape)}}),$l=An({rfft_:function(t,e){C(\"float32\"===t.dtype,(function(){return\"The dtype for rfft() must be real value but got \"+t.dtype}));var n,r=t.shape[t.shape.length-1],o=t.size/r;if(null!=e&&e<r){var a=t.shape.map((function(t){return 0})),i=t.shape.map((function(t){return t}));i[t.shape.length-1]=e,n=t.slice(a,i),r=e}else if(null!=e&&e>r){var s=t.shape.map((function(t){return t}));s[t.shape.length-1]=e-r,n=t.concat(Gn(s),t.shape.length-1),r=e}else n=t;var u=n.zerosLike(),c=Dn(n,u).as2D(o,r),l=Xl(c),h=Math.floor(r/2)+1,f=Tn(l),d=Nn(l),p=f.split([h,r-h],f.shape.length-1),v=d.split([h,r-h],d.shape.length-1),m=n.shape.slice();return m[n.shape.length-1]=h,Dn(p[0],v[0]).reshape(m)}}),Ql=An({irfft_:function(t){var e=t.shape[t.shape.length-1],n=t.size/e;if(e<=2){var r=t.as2D(n,e),o=Yl(r);return Tn(o)}var a=[n,2*(e-1)],i=Tn(t).as2D(n,e),s=Nn(t).as2D(n,e),u=i.slice([0,1],[n,e-2]).reverse(1),c=s.slice([0,1],[n,e-2]).reverse(1).mul(On(-1)),l=i.concat(u,1),h=s.concat(c,1);return r=Dn(l,h).as2D(a[0],a[1]),o=Yl(r),Tn(o)}}),Jl=Object.freeze({fft:Xl,ifft:Yl,rfft:$l,irfft:Ql});var Zl=An({sparseToDense_:function(t,e,n,r){void 0===r&&(r=0);var o=mn(t,\"sparseIndices\",\"sparseToDense\",\"int32\"),a=mn(e,\"sparseValues\",\"sparseToDense\"),i=mn(r,\"defaultValue\",\"sparseToDense\",a.dtype);return function(t,e,n,r){if(\"int32\"!==t.dtype)throw new Error(\"tf.sparseToDense() expects the indices to be int32 type, but the dtype was \"+t.dtype+\".\");if(t.rank>2)throw new Error(\"sparseIndices should be a scalar, vector, or matrix, but got shape \"+t.shape+\".\");var o=t.rank>0?t.shape[0]:1,a=t.rank>1?t.shape[1]:1;if(n.length!==a)throw new Error(\"outputShape has incorrect number of elements:, \"+n.length+\", should be: \"+a+\".\");var i=e.size;if(0!==e.rank&&(1!==e.rank||i!==o))throw new Error(\"sparseValues has incorrect shape \"+e.shape+\", should be [] or [\"+o+\"]\");if(e.dtype!==r.dtype)throw new Error(\"sparseValues.dtype must match defaultValues.dtype\")}(o,a,n,i),Lt.runKernelFunc((function(t){return t.sparseToDense(o,a,n,i)}),{$sparseIndices:o,$sparseValues:a,$defaultValue:i})}});var th=An({gatherND_:function(t,e){var n=mn(e,\"indices\",\"gatherND\",\"int32\"),r=mn(t,\"x\",\"gatherND\");return Lt.runKernelFunc((function(t){return t.gatherND(r,n)}),{x:r,indices:n},null,\"GatherNd\")}});var eh=An({diag_:function(t){var e=mn(t,\"x\",\"diag\").flatten(),n=t.shape.concat(t.shape);return Lt.runKernelFunc((function(t){return t.diag(e)}),{$x:e}).reshape(n)}});var nh=An({dropout_:function(t,e,n,r){var o=mn(t,\"x\",\"dropout\");if(C(\"float32\"===o.dtype,(function(){return\"x has to be a floating point tensor since it's going to be scaled, but got a \"+o.dtype+\" tensor instead.\"})),C(e>=0&&e<1,(function(){return\"rate must be a float in the range [0, 1), but got \"+e+\".\"})),0===e)return t instanceof wt?o.clone():o;var a=function(t,e){if(null==e)return t.shape.slice();if(S(t.shape,e))return e;if(t.shape.length===e.length){for(var n=[],r=0;r<t.shape.length;r++)null==e[r]&&null!=t.shape[r]?n.push(t.shape[r]):n.push(e[r]);return n}return e}(o,n),i=1-e,s=_r(a,0,1,\"float32\",r).add(i).floor().div(i);return o.mul(s)}});function rh(t,e,n){for(var r=1-t%2,o=new Float32Array(t),a=0;a<t;++a){var i=2*Math.PI*a/(t+r-1);o[a]=e-n*Math.cos(i)}return Mn(o,\"float32\")}var oh=An({hannWindow_:function(t){return rh(t,.5,.5)}}),ah=An({hammingWindow_:function(t){return rh(t,.54,.46)}}),ih=An({frame_:function(t,e,n,r,o){void 0===r&&(r=!1),void 0===o&&(o=0);for(var a=0,i=[];a+e<=t.size;)i.push(ml(t,a,e)),a+=n;if(r)for(;a<t.size;){var s=a+e-t.size,u=Yn([ml(t,a,e-s),Hn([s],o)]);i.push(u),a+=n}return 0===i.length?Bn([],[0,e]):Yn(i).as2D(i.length,e)}}),sh=An({stft_:function(t,e,n,r,o){var a;void 0===o&&(o=oh),null==r&&(a=e,r=Math.floor(Math.pow(2,Math.ceil(Math.log(a)/Math.log(2)))));for(var i=ih(t,e,n),s=gc(i,o(e)),u=[],c=0;c<i.shape[0];c++)u.push($l(s.slice([c,0],[1,e]),r));return Yn(u)}}),uh=Object.freeze({hannWindow:oh,hammingWindow:ah,frame:ih,stft:sh});var ch,lh=function(t,e,o){return void 0===o&&(o=1),n(this,void 0,void 0,(function(){var n,a,i,s,u,c,l,h,f,d,p,v,m,g;return r(this,(function(r){switch(r.label){case 0:return n=mn(t,\"predictions\",\"inTopK\"),a=mn(e,\"targets\",\"inTopK\"),C(n.rank>1,(function(){return\"inTopK() expects the predictions to be of rank 2 or higher, but got \"+n.rank})),C(n.rank-1===a.rank,(function(){return\"predictions rank should be 1 larger than targets rank, but got predictions rank \"+n.rank+\" and targets rank \"+a.rank})),E(n.shape.slice(0,n.shape.length-1),a.shape,\"predictions's shape should be align with the targets' shape, except the last dimension.\"),i=n.shape[n.shape.length-1],C(o>0&&o<=i,(function(){return\"'k' passed to inTopK() must be > 0 && <= the predictions last dimension (\"+i+\"), but got \"+o})),[4,n.data()];case 1:return s=r.sent(),[4,a.data()];case 2:for(u=r.sent(),c=[s.length/i,i],h=c[1],f=B(\"bool\",l=c[0]),d=0;d<l;d++){for(p=d*h,v=s.subarray(p,p+h),m=[],g=0;g<v.length;g++)m.push({value:v[g],index:g});for(m.sort((function(t,e){return e.value-t.value})),f[d]=0,g=0;g<o;g++)if(m[g].index===u[d]){f[d]=1;break}}return t!==n&&n.dispose(),e!==a&&a.dispose(),[2,Fn(f,a.shape,\"bool\")]}}))}))};!function(t){t[t.NONE=0]=\"NONE\",t[t.MEAN=1]=\"MEAN\",t[t.SUM=2]=\"SUM\",t[t.SUM_BY_NONZERO_WEIGHTS=3]=\"SUM_BY_NONZERO_WEIGHTS\"}(ch||(ch={}));var hh=An({absoluteDifference_:function(t,e,n,r){void 0===r&&(r=ch.SUM_BY_NONZERO_WEIGHTS);var o=mn(t,\"labels\",\"absoluteDifference\"),a=mn(e,\"predictions\",\"absoluteDifference\"),i=null;null!=n&&(i=mn(n,\"weights\",\"absoluteDifference\")),E(o.shape,a.shape,\"Error in absoluteDifference: \");var s=o.sub(a).abs();return fh(s,i,r)}}),fh=An({computeWeightedLoss_:function(t,e,n){void 0===n&&(n=ch.SUM_BY_NONZERO_WEIGHTS);var r=mn(t,\"losses\",\"computeWeightedLoss\"),o=null;null!=e&&(o=mn(e,\"weights\",\"computeWeightedLoss\"));var a=null==o?r:r.mul(o);if(n===ch.NONE)return a;if(n===ch.SUM)return a.sum();if(n===ch.MEAN){if(null==o)return a.mean();var i=r.size/o.size,s=a.sum().div(o.sum());return i>1?s.div(On(i)):s}if(n===ch.SUM_BY_NONZERO_WEIGHTS){if(null==o)return a.sum().div(On(r.size));var u=o.mul(zn(r.shape)).notEqual(On(0)).sum().toFloat();return a.sum().div(u)}throw Error(\"Unknown reduction: \"+n)}}),dh=An({cosineDistance_:function(t,e,n,r,o){void 0===o&&(o=ch.SUM_BY_NONZERO_WEIGHTS);var a=mn(t,\"labels\",\"cosineDistance\"),i=mn(e,\"predictions\",\"cosineDistance\"),s=null;null!=r&&(s=mn(r,\"weights\",\"cosineDistance\")),E(a.shape,i.shape,\"Error in cosineDistance: \");var u=On(1).sub(a.mul(i).sum(n,!0));return fh(u,s,o)}}),ph=An({hingeLoss_:function(t,e,n,r){void 0===r&&(r=ch.SUM_BY_NONZERO_WEIGHTS);var o=mn(t,\"labels\",\"hingeLoss\"),a=mn(e,\"predictions\",\"hingeLoss\"),i=null;null!=n&&(i=mn(n,\"weights\",\"hingeLoss\")),E(o.shape,a.shape,\"Error in hingeLoss: \");var s=On(1);o=On(2).mul(o).sub(s);var u=s.sub(o.mul(a)).relu();return fh(u,i,r)}}),vh=An({huberLoss_:function(t,e,n,r,o){void 0===r&&(r=1),void 0===o&&(o=ch.SUM_BY_NONZERO_WEIGHTS);var a=mn(t,\"labels\",\"huberLoss\"),i=mn(e,\"predictions\",\"huberLoss\"),s=null;null!=n&&(s=mn(n,\"weights\",\"huberLoss\")),E(a.shape,i.shape,\"Error in huberLoss: \");var u=On(r),c=i.sub(a).abs(),l=dc(c,u),h=c.sub(l),f=On(.5).mul(l.square()).add(u.mul(h));return fh(f,s,o)}}),mh=An({logLoss_:function(t,e,n,r,o){void 0===r&&(r=1e-7),void 0===o&&(o=ch.SUM_BY_NONZERO_WEIGHTS);var a=mn(t,\"labels\",\"logLoss\"),i=mn(e,\"predictions\",\"logLoss\"),s=null;null!=n&&(s=mn(n,\"weights\",\"logLoss\")),E(a.shape,i.shape,\"Error in logLoss: \");var u=On(1),c=On(r),l=a.mul(i.add(c).log()).neg().sub(u.sub(a).mul(u.sub(i).add(c).log()));return fh(l,s,o)}}),gh=An({meanSquaredError_:function(t,e,n,r){void 0===r&&(r=ch.SUM_BY_NONZERO_WEIGHTS);var o=mn(t,\"labels\",\"meanSquaredError\"),a=mn(e,\"predictions\",\"meanSquaredError\"),i=null;null!=n&&(i=mn(n,\"weights\",\"meanSquaredError\")),E(o.shape,a.shape,\"Error in meanSquaredError: \");var s=o.squaredDifference(a);return fh(s,i,r)}}),yh=An({sigmoidCrossEntropy_:function(t,e,n,r,o){void 0===r&&(r=0),void 0===o&&(o=ch.SUM_BY_NONZERO_WEIGHTS);var a=mn(t,\"multiClassLabels\",\"sigmoidCrossEntropy\"),i=mn(e,\"logits\",\"sigmoidCrossEntropy\"),s=null;if(null!=n&&(s=mn(n,\"weights\",\"sigmoidCrossEntropy\")),E(a.shape,i.shape,\"Error in sigmoidCrossEntropy: \"),r>0){var u=On(r),c=On(1),l=On(.5);a=a.mul(c.sub(u)).add(l.mul(u))}var h=function(t,e){var n=mn(t,\"labels\",\"sigmoidCrossEntropyWithLogits\"),r=mn(e,\"logits\",\"sigmoidCrossEntropyWithLogits\");E(n.shape,r.shape,\"Error in sigmoidCrossEntropyWithLogits: \");var o=r.relu(),a=r.mul(n),i=r.abs().neg().exp().log1p();return o.sub(a).add(i)}(a,i);return fh(h,s,o)}}),xh=An({softmaxCrossEntropy_:function(t,e,n,r,o){void 0===r&&(r=0),void 0===o&&(o=ch.SUM_BY_NONZERO_WEIGHTS);var a=mn(t,\"onehotLabels\",\"softmaxCrossEntropy\"),i=mn(e,\"logits\",\"softmaxCrossEntropy\"),s=null;if(null!=n&&(s=mn(n,\"weights\",\"softmaxCrossEntropy\")),E(a.shape,i.shape,\"Error in softmaxCrossEntropy: \"),r>0){var u=On(r),c=On(1),l=On(a.shape[1]);a=a.mul(c.sub(u)).add(u.div(l))}var h=function(t,e,n){if(void 0===n&&(n=-1),-1===n&&(n=e.rank-1),n!==e.rank-1)throw Error(\"Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank \"+e.rank+\" and dim was \"+n);return vo((function(t,e,r){var o=e.logSumExp([n],!0),a=e.toFloat().sub(o);r([t,a]);return{value:a.mul(t).neg().sum([n]),gradFunc:function(t,e){var r=e[0],o=e[1],a=wn(t.shape,[n]);return[t.reshape(a).mul(r.toFloat().sub(o.exp())),t.reshape(a).mul(o.exp().sub(r.toFloat()))]}}}))(t,e)}(a,i);return fh(h,s,o)}}),bh=Object.freeze({get Reduction(){return ch},absoluteDifference:hh,computeWeightedLoss:fh,cosineDistance:dh,hingeLoss:ph,huberLoss:vh,logLoss:mh,meanSquaredError:gh,sigmoidCrossEntropy:yh,softmaxCrossEntropy:xh});function wh(t,e){return void 0===e&&(e=!1),Lt.tidy((function(){if(2!==t.shape.length)throw new Error(\"qr2d() requires a 2D Tensor, but got a \"+t.shape.length+\"D Tensor.\");for(var n=t.shape[0],r=t.shape[1],o=Cr(n),a=t.clone(),i=Bn([[1]],[1,1]),s=i.clone(),u=n>=r?r:n,c=function(t){var e,u=a,c=s,l=o;e=Lt.tidy((function(){var e=a.slice([t,t],[n-t,1]),u=e.norm(),c=a.slice([t,t],[1,1]),l=Bn([[-1]]).where(c.greater(0),Bn([[1]])),h=c.sub(l.mul(u)),f=e.div(h);s=1===f.shape[0]?i.clone():i.concat(f.slice([1,0],[f.shape[0]-1,f.shape[1]]),0);var d=l.matMul(h).div(u).neg(),p=a.slice([t,0],[n-t,r]),v=d.mul(s);if(0===t)a=p.sub(v.matMul(s.transpose().matMul(p)));else{var m=p.sub(v.matMul(s.transpose().matMul(p)));a=a.slice([0,0],[t,r]).concat(m,0)}var g=o.slice([0,t],[n,o.shape[1]-t]);if(0===t)o=g.sub(g.matMul(s).matMul(v.transpose()));else{var y=g.sub(g.matMul(s).matMul(v.transpose()));o=o.slice([0,0],[n,t]).concat(y,1)}return[s,a,o]})),s=e[0],a=e[1],o=e[2],tn([u,c,l])},l=0;l<u;++l)c(l);return!e&&n>r&&(o=o.slice([0,0],[n,r]),a=a.slice([0,0],[r,r])),[o,a]}))}var Ch=An({bandPart_:function(t,e,n){if(e%1!=0)throw new Error(\"bandPart(): numLower must be an integer, got \"+e+\".\");if(n%1!=0)throw new Error(\"bandPart(): numUpper must be an integer, got \"+n+\".\");var r=mn(t,\"a\",\"bandPart\");if(r.rank<2)throw new Error(\"bandPart(): Rank must be at least 2, got \"+r.rank+\".\");var o=r.shape,a=r.shape.slice(-2),i=a[0],s=a[1];if(!(e<=i))throw new Error(\"bandPart(): numLower (\"+e+\") must not be greater than the number of rows (\"+i+\").\");if(!(n<=s))throw new Error(\"bandPart(): numUpper (\"+n+\") must not be greater than the number of columns (\"+s+\").\");e<0&&(e=i),n<0&&(n=s);var u=Kn(0,i,1,\"int32\").reshape([-1,1]),c=Kn(0,s,1,\"int32\"),l=Cc(u,c),h=Qu(l.lessEqual(On(+e,\"int32\")),l.greaterEqual(On(-n,\"int32\"))),f=Gn([i,s],r.dtype);return Pr(Ur(r.reshape([-1,i,s])).map((function(t){return ec(h,t,f)}))).reshape(o)}}),Eh=An({gramSchmidt_:function(t){var e;if(Array.isArray(t)){e=!1,C(null!=t&&t.length>0,(function(){return\"Gram-Schmidt process: input must not be null, undefined, or empty\"}));for(var n=t[0].shape[0],r=function(e){C(t[e].shape[0]===n,(function(){return\"Gram-Schmidt: Non-unique lengths found in the input vectors: (\"+t[e].shape[0]+\" vs. \"+n+\")\"}))},o=1;o<t.length;++o)r(o)}else e=!0,t=tr(t,t.shape[0],0).map((function(t){return Br(t,[0])}));C(t.length<=t[0].shape[0],(function(){return\"Gram-Schmidt: Number of vectors (\"+t.length+\") exceeds number of dimensions (\"+t[0].shape[0]+\").\"}));var a=[],i=t,s=function(t){a.push(Lt.tidy((function(){var e=i[t];if(t>0)for(var n=0;n<t;++n){var r=Nl(a[n].mulStrict(e)).mul(a[n]);e=e.sub(r)}return e.div(Vl(e,\"euclidean\"))})))};for(o=0;o<t.length;++o)s(o);return e?Pr(a,0):a}}),Rh=An({qr_:function(t,e){if(void 0===e&&(e=!1),t.rank<2)throw new Error(\"qr() requires input tensor to have a rank >= 2, but got rank \"+t.rank);if(2===t.rank)return wh(t,e);var n=t.shape.slice(0,t.shape.length-2).reduce((function(t,e){return t*e})),r=Ur(t.reshape([n,t.shape[t.shape.length-2],t.shape[t.shape.length-1]]),0),o=[],a=[];return r.forEach((function(t){var n=wh(t,e),r=n[0],i=n[1];o.push(r),a.push(i)})),[Pr(o,0).reshape(t.shape),Pr(a,0).reshape(t.shape)]}}),Ih=Object.freeze({bandPart:Ch,gramSchmidt:Eh,qr:Rh});function kh(t,e,n,r,o,a){null==r&&(r=.5),null==o&&(o=Number.NEGATIVE_INFINITY),null==a&&(a=0);var i=t.shape[0];return n=Math.min(n,i),C(0<=r&&r<=1,(function(){return\"iouThreshold must be in [0, 1], but was '\"+r+\"'\"})),C(2===t.rank,(function(){return\"boxes must be a 2D tensor, but was of rank '\"+t.rank+\"'\"})),C(4===t.shape[1],(function(){return\"boxes must have 4 columns, but 2nd dimension was \"+t.shape[1]})),C(1===e.rank,(function(){return\"scores must be a 1D tensor\"})),C(e.shape[0]===i,(function(){return\"scores has incompatible shape with boxes. Expected \"+i+\", but was \"+e.shape[0]})),C(0<=a&&a<=1,(function(){return\"softNmsSigma must be in [0, 1], but was '\"+a+\"'\"})),{maxOutputSize:n,iouThreshold:r,scoreThreshold:o,softNmsSigma:a}}var Sh=An({resizeBilinear_:function(t,e,n){void 0===n&&(n=!1);var r=mn(t,\"images\",\"resizeBilinear\");C(3===r.rank||4===r.rank,(function(){return\"Error in resizeBilinear: x must be rank 3 or 4, but got rank \"+r.rank+\".\"})),C(2===e.length,(function(){return\"Error in resizeBilinear: new shape must 2D, but got shape \"+e+\".\"}));var o=r,a=!1;3===r.rank&&(a=!0,o=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var i=e[0],s=e[1],u=Lt.runKernelFunc((function(t,e){return e([o]),t.resizeBilinear(o,i,s,n)}),{x:o},(function(t,e){return{x:function(){return Lt.runKernelFunc((function(r){return r.resizeBilinearBackprop(t,e[0],n)}),{})}}}),\"ResizeBilinear\",{alignCorners:n,newHeight:i,newWidth:s});return a?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Ah=An({resizeNearestNeighbor_:function(t,e,n){void 0===n&&(n=!1);var r=mn(t,\"images\",\"resizeNearestNeighbor\");C(3===r.rank||4===r.rank,(function(){return\"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank \"+r.rank+\".\"})),C(2===e.length,(function(){return\"Error in resizeNearestNeighbor: new shape must 2D, but got shape \"+e+\".\"})),C(\"float32\"===r.dtype||\"int32\"===r.dtype,(function(){return\"`images` must have `int32` or `float32` as dtype\"}));var o=r,a=!1;3===r.rank&&(a=!0,o=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var i=e[0],s=e[1],u=Lt.runKernelFunc((function(t,e){return e([o]),t.resizeNearestNeighbor(o,i,s,n)}),{batchImages:o},(function(t,e){return{batchImages:function(){return Lt.runKernelFunc((function(r){return r.resizeNearestNeighborBackprop(t,e[0],n)}),{})}}}));return a?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Dh=An({nonMaxSuppression_:function(t,e,n,r,o){void 0===r&&(r=.5),void 0===o&&(o=Number.NEGATIVE_INFINITY);var a=mn(t,\"boxes\",\"nonMaxSuppression\"),i=mn(e,\"scores\",\"nonMaxSuppression\"),s=kh(a,i,n,r,o);n=s.maxOutputSize,r=s.iouThreshold,o=s.scoreThreshold;var u={maxOutputSize:n,iouThreshold:r,scoreThreshold:o};return Lt.runKernelFunc((function(t){return t.nonMaxSuppression(a,i,n,r,o)}),{boxes:a,scores:i},null,\"NonMaxSuppressionV3\",u)}}),Th=function(t,e,o,a,i){return void 0===a&&(a=.5),void 0===i&&(i=Number.NEGATIVE_INFINITY),n(this,void 0,void 0,(function(){var n,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:return n=mn(t,\"boxes\",\"nonMaxSuppressionAsync\"),s=mn(e,\"scores\",\"nonMaxSuppressionAsync\"),u=kh(n,s,o,a,i),o=u.maxOutputSize,a=u.iouThreshold,i=u.scoreThreshold,[4,Promise.all([n.data(),s.data()])];case 1:return c=r.sent(),l=c[0],h=c[1],f=jo(l,h,o,a,i),n!==t&&n.dispose(),s!==e&&s.dispose(),[2,f]}}))}))},Nh=An({nonMaxSuppressionWithScore_:function(t,e,n,r,o,a){void 0===r&&(r=.5),void 0===o&&(o=Number.NEGATIVE_INFINITY),void 0===a&&(a=0);var i=mn(t,\"boxes\",\"nonMaxSuppression\"),s=mn(e,\"scores\",\"nonMaxSuppression\"),u=kh(i,s,n,r,o,a),c={maxOutputSize:n=u.maxOutputSize,iouThreshold:r=u.iouThreshold,scoreThreshold:o=u.scoreThreshold,softNmsSigma:a=u.softNmsSigma},l=Lt.runKernel(\"NonMaxSuppressionV5\",{boxes:i,scores:s},c);return{selectedIndices:l[0],selectedScores:l[1]}}}),Fh=function(t,e,o,a,i,s){return void 0===a&&(a=.5),void 0===i&&(i=Number.NEGATIVE_INFINITY),void 0===s&&(s=0),n(this,void 0,void 0,(function(){var n,u,c,l,h,f,d;return r(this,(function(r){switch(r.label){case 0:return n=mn(t,\"boxes\",\"nonMaxSuppressionAsync\"),u=mn(e,\"scores\",\"nonMaxSuppressionAsync\"),c=kh(n,u,o,a,i,s),o=c.maxOutputSize,a=c.iouThreshold,i=c.scoreThreshold,s=c.softNmsSigma,[4,Promise.all([n.data(),u.data()])];case 1:return l=r.sent(),h=l[0],f=l[1],d=Xo(h,f,o,a,i,s),n!==t&&n.dispose(),u!==e&&u.dispose(),[2,d]}}))}))},_h=An({cropAndResize_:function(t,e,n,r,o,a){var i=mn(t,\"image\",\"cropAndResize\"),s=mn(e,\"boxes\",\"cropAndResize\",\"float32\"),u=mn(n,\"boxInd\",\"cropAndResize\",\"int32\");o=o||\"bilinear\",a=a||0;var c=s.shape[0];return C(4===i.rank,(function(){return\"Error in cropAndResize: image must be rank 4,but got rank \"+i.rank+\".\"})),C(2===s.rank&&4===s.shape[1],(function(){return\"Error in cropAndResize: boxes must be have size [\"+c+\",4] but had shape \"+s.shape+\".\"})),C(1===u.rank&&u.shape[0]===c,(function(){return\"Error in cropAndResize: boxInd must be have size [\"+c+\"] but had shape \"+s.shape+\".\"})),C(2===r.length,(function(){return\"Error in cropAndResize: cropSize must be of length 2, but got length \"+r.length+\".\"})),C(r[0]>=1&&r[1]>=1,(function(){return\"cropSize must be atleast [1,1], but was \"+r})),C(\"bilinear\"===o||\"nearest\"===o,(function(){return\"method must be bilinear or nearest, but was \"+o})),Lt.runKernelFunc((function(t,e){return t.cropAndResize(i,s,u,r,o,a)}),{images:i,boxes:s,boxInd:u},null,\"CropAndResize\",{method:o,extrapolationValue:a,cropSize:r})}}),Oh=Object.freeze({resizeBilinear:Sh,resizeNearestNeighbor:Ah,nonMaxSuppression:Dh,nonMaxSuppressionAsync:Th,nonMaxSuppressionWithScore:Nh,nonMaxSuppressionWithScoreAsync:Fh,cropAndResize:_h}),Mh=function(t,e){return!(t>0)||\"linear\"===e},Bh=function(t,e,n){if(null==n||\"linear\"===n)return t;if(\"relu\"===n)return t.mul(e.step());throw new Error(\"Gradient for activation \"+n+\" has not been implemented yet.\")},Ph=function(t,e){var n=e,r=Eo(t.shape,e.shape);return r.length>0&&(n=n.sum(r)),n.reshape(t.shape)},Lh=function(t,e,n){if(\"linear\"===e)return t;if(\"relu\"===e)return Bl(t);if(\"elu\"===e)return _l(t);if(\"relu6\"===e)return Pl(t);if(\"prelu\"===e)return Ml(t,n);throw new Error(\"Unknown fused activation \"+e+\".\")};var Wh=An({fusedMatMul_:function(t){var e,n=t.a,r=t.b,o=t.transposeA,a=void 0!==o&&o,i=t.transposeB,s=void 0!==i&&i,u=t.bias,c=t.activation,l=void 0===c?\"linear\":c,h=t.preluActivationWeights;if(!1===Mh(Lt.state.gradientDepth,l)){var f=el(n,r,a,s);return null!=u&&(f=rc(f,u)),Lh(f,l,h)}var d=mn(n,\"a\",\"fused matMul\"),p=mn(r,\"b\",\"fused matMul\");e=Nt(d,p),d=e[0],p=e[1];var v=a?d.shape[d.rank-2]:d.shape[d.rank-1],m=s?p.shape[p.rank-1]:p.shape[p.rank-2],g=a?d.shape[d.rank-1]:d.shape[d.rank-2],y=s?p.shape[p.rank-2]:p.shape[p.rank-1],x=d.shape.slice(0,-2),b=p.shape.slice(0,-2),w=k(x),E=k(b);C(d.rank>=2&&p.rank>=2&&d.rank===p.rank,(function(){return\"Error in fused matMul: inputs must have the same rank of at least 2, got ranks \"+d.rank+\" and \"+p.rank+\".\"})),C(S(x,b),(function(){return\"Error in fused matMul: outer dimensions (\"+x+\") and (\"+b+\") of Tensors with shapes \"+d.shape+\" and \"+p.shape+\" must match.\"})),C(v===m,(function(){return\"Error in fused matMul: inner shapes (\"+v+\") and (\"+m+\") of Tensors with shapes \"+d.shape+\" and \"+p.shape+\" and transposeA=\"+a+\" and transposeB=\"+s+\" must match.\"}));var R,I,A=d.shape.slice(0,-2).concat([g,y]),D=a?d.as3D(w,v,g):d.as3D(w,g,v),T=s?p.as3D(E,y,m):p.as3D(E,m,y);null!=u&&Ro(A,(R=Nt(R=mn(u,\"bias\",\"fused matMul\"),d)[0]).shape),null!=h&&(I=mn(h,\"prelu weights\",\"fused matMul\"));var N={a:D,b:T};null!=u&&(N.bias=R),null!=h&&(N.preluActivationWeights=I);var F=[D,T];return Lt.runKernelFunc((function(t,e){var n=t.fusedBatchMatMul({a:D,b:T,transposeA:a,transposeB:s,bias:R,activation:l,preluActivationWeights:I});return e([D,T,n]),n}),N,(function(t,e){var n=e[0],r=e[1],o=e[2],i=Bh(t,o,l),c={};return null!=u&&(c={bias:function(){return Ph(R,i)}}),a||s?!a&&s?Object.assign({a:function(){return i.matMul(r,!1,!1)},b:function(){return i.matMul(n,!0,!1)}},c):a&&!s?Object.assign({a:function(){return r.matMul(i,!1,!0)},b:function(){return n.matMul(i,!1,!1)}},c):Object.assign({a:function(){return r.matMul(i,!0,!0)},b:function(){return i.matMul(n,!0,!0)}},c):Object.assign({a:function(){return i.matMul(r,!1,!0)},b:function(){return n.matMul(i,!0,!1)}},c)}),\"_FusedMatMul\",{transposeA:a,transposeB:s,activation:l},F,[!0]).reshape(A)}}),Uh=An({fusedConv2d_:function(t){var e=t.x,n=t.filter,r=t.strides,o=t.pad,a=t.dataFormat,i=void 0===a?\"NHWC\":a,s=t.dilations,u=void 0===s?[1,1]:s,c=t.dimRoundingMode,l=t.bias,h=t.activation,f=void 0===h?\"linear\":h,d=t.preluActivationWeights;if(f=f||\"linear\",!1===Mh(Lt.state.gradientDepth,f)){var p=qc(e,n,r,o,i,u,c);return null!=l&&(p=rc(p,l)),Lh(p,f,d)}var v=mn(e,\"x\",\"conv2d\"),m=mn(n,\"filter\",\"conv2d\"),g=v,y=!1;3===v.rank&&(y=!0,g=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),C(4===g.rank,(function(){return\"Error in fused conv2d: input must be rank 4, but got rank \"+g.rank+\".\"})),C(4===m.rank,(function(){return\"Error in fused conv2d: filter must be rank 4, but got rank \"+m.rank+\".\"})),null!=c&&C(A(o),(function(){return\"Error in fused conv2d: pad must be an integer when using, dimRoundingMode \"+c+\" but got pad \"+o+\".\"})),C(g.shape[3]===m.shape[2],(function(){return\"Error in conv2d: depth of input (\"+g.shape[3]+\") must match input depth for filter \"+m.shape[2]+\".\"})),C(Mo(r,u),(function(){return\"Error in conv2D: Either strides or dilations must be 1. Got strides \"+r+\" and dilations '\"+u+\"'\"})),C(\"NHWC\"===i,(function(){return\"Error in conv2d: got dataFormat of \"+i+\" but only NHWC is currently supported.\"}));var x,b,w=So(g.shape,m.shape,r,u,o,c);null!=l&&(x=Nt(x=mn(l,\"bias\",\"fused conv2d\"),v)[0],Ro(w.outShape,x.shape)),null!=d&&(b=mn(d,\"prelu weights\",\"fused conv2d\"));var E={x:g,filter:m};null!=l&&(E.bias=x),null!=d&&(E.preluActivationWeights=b);var R=[m,g],I=Lt.runKernelFunc((function(t,e){var n=t.fusedConv2d({input:g,filter:m,convInfo:w,bias:x,activation:f,preluActivationWeights:b});return e([m,g,n]),n}),E,(function(t,e){var n=e,a=n[0],i=n[1],s=n[2],c=Bh(t,s,f);C(Oo(u),(function(){return\"Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '\"+u+\"'\"}));var h={};return null!=l&&(h={bias:function(){return Ph(x,c)}}),Object.assign({x:function(){return Xc(i.shape,c,a,r,o)},filter:function(){return jc(i,c,a.shape,r,o)}},h)}),\"FusedConv2D\",{convInfo:w,activation:f},R,[!0]);return y?I.as3D(I.shape[1],I.shape[2],I.shape[3]):I}}),Vh=An({fusedDepthwiseConv2d_:function(t){var e=t.x,n=t.filter,r=t.strides,o=t.pad,a=t.dataFormat,i=void 0===a?\"NHWC\":a,s=t.dilations,u=void 0===s?[1,1]:s,c=t.dimRoundingMode,l=t.bias,h=t.activation,f=void 0===h?\"linear\":h,d=t.preluActivationWeights;if(!1===Mh(Lt.state.gradientDepth,f)){var p=Yc(e,n,r,o,i,u,c);return null!=l&&(p=rc(p,l)),Lh(p,f,d)}var v=mn(e,\"x\",\"depthwiseConv2d\"),m=mn(n,\"filter\",\"depthwiseConv2d\"),g=v,y=!1;3===v.rank&&(y=!0,g=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),C(4===g.rank,(function(){return\"Error in fused depthwiseConv2d: input must be rank 4, but got rank \"+g.rank+\".\"})),C(4===m.rank,(function(){return\"Error in fused depthwiseConv2d: filter must be rank 4, but got rank \"+m.rank+\".\"})),C(g.shape[3]===m.shape[2],(function(){return\"Error in fused depthwiseConv2d: number of input channels (\"+g.shape[3]+\") must match the inChannels dimension in filter \"+m.shape[2]+\".\"})),null==u&&(u=[1,1]),C(Mo(r,u),(function(){return\"Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides \"+r+\" and dilations '\"+u+\"'\"})),null!=c&&C(A(o),(function(){return\"Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode \"+c+\" but got pad \"+o+\".\"}));var x,b,w=So(g.shape,m.shape,r,u,o,c,!0);null!=l&&(x=Nt(x=mn(l,\"bias\",\"fused conv2d\"),v)[0],Ro(w.outShape,x.shape)),null!=d&&(b=mn(d,\"prelu weights\",\"fused depthwiseConv2d\"));var E={x:g,filter:m};null!=l&&(E.bias=x),null!=d&&(E.preluActivationWeights=b);var R=[m,g],I=Lt.runKernelFunc((function(t,e){var n=t.fusedDepthwiseConv2D({input:g,filter:m,convInfo:w,bias:x,activation:f,preluActivationWeights:b});return e([m,g,n]),n}),E,(function(t,e){C(Oo(u),(function(){return\"Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '\"+u+\"'\"}));var n=e[0],r=e[1],o=e[2],a=Bh(t,o,f),i={};return null!=l&&(i={bias:function(){return Ph(x,a)}}),Object.assign({x:function(){return $c(r.shape,a,n,w)},filter:function(){return Qc(r,a,n.shape,w)}},i)}),\"FusedDepthwiseConv2D\",{convInfo:w,activation:f},R,[!0]);return y?I.as3D(I.shape[1],I.shape[2],I.shape[3]):I}}),zh=Object.freeze({matMul:Wh,conv2d:Uh,depthwiseConv2d:Vh}),Gh=Object.freeze({image:Oh,linalg:Ih,losses:bh,spectral:Jl,fused:zh,signal:uh,square:tu,squaredDifference:nu,conv1d:Hc,conv2d:qc,conv3d:Kc,depthwiseConv2d:Yc,separableConv2d:Jc,conv2dTranspose:Zc,conv3dTranspose:tl,op:An,batchNormalization2d:Gu,batchNormalization3d:Hu,batchNormalization4d:qu,batchNormalization:Ku,batchNorm:ju,batchNorm2d:Xu,batchNorm3d:Yu,batchNorm4d:$u,booleanMaskAsync:Uc,complex:Dn,real:Tn,imag:Nn,concat:Yn,concat1d:$n,concat2d:Qn,concat3d:Jn,concat4d:Zn,split:tr,matMul:el,dot:nl,outerProduct:rl,reverse:ol,reverse1d:al,reverse2d:il,reverse3d:sl,reverse4d:ul,maxPool:hl,avgPool:fl,pool:dl,maxPool3d:pl,avgPool3d:vl,slice:ml,slice1d:gl,slice2d:yl,slice3d:xl,slice4d:bl,abs:ru,acos:ou,acosh:au,asin:iu,asinh:su,atan:uu,atanh:cu,ceil:lu,clipByValue:hu,cos:fu,cosh:du,erf:pu,exp:vu,expm1:mu,floor:gu,log:yu,log1p:xu,logSigmoid:bu,neg:wu,reciprocal:Cu,round:Eu,rsqrt:Ru,sigmoid:Iu,sign:ku,isNaN:Su,isInf:Au,isFinite:Du,sin:Tu,sinh:Nu,softplus:Fu,sqrt:_u,step:Ou,tan:Mu,tanh:Bu,all:Cl,any:El,argMax:Rl,argMin:Il,logSumExp:kl,max:Sl,mean:Al,min:Dl,moments:Tl,sum:Nl,prod:Fl,equal:Rc,equalStrict:Ic,greater:kc,greaterEqual:Sc,greaterEqualStrict:Ac,greaterStrict:Dc,less:Tc,lessEqual:Nc,lessEqualStrict:Fc,lessStrict:_c,notEqual:Oc,notEqualStrict:Mc,add:rc,addN:oc,addStrict:ac,atan2:ic,div:sc,divNoNan:uc,divStrict:cc,floorDiv:lc,maximum:hc,maximumStrict:fc,minimum:dc,minimumStrict:pc,mod:vc,modStrict:mc,mul:gc,mulStrict:yc,pow:xc,powStrict:bc,squaredDifferenceStrict:wc,sub:Cc,subStrict:Ec,elu:_l,leakyRelu:Ol,prelu:Ml,relu:Bl,relu6:Pl,selu:Ll,logicalAnd:Qu,logicalNot:Ju,logicalOr:Zu,logicalXor:tc,where:ec,whereAsync:nc,buffer:dr,print:pr,batchToSpaceND:vr,broadcastTo:mr,cast:gr,clone:yr,cumsum:xr,depthToSpace:br,expandDims:wr,eye:Cr,multinomial:Er,oneHot:Rr,pad:Ir,pad1d:kr,pad2d:Sr,pad3d:Ar,pad4d:Dr,rand:Tr,randomNormal:Nr,randomGamma:Fr,randomUniform:_r,reshape:Or,spaceToBatchND:Mr,squeeze:Br,stack:Pr,tile:Lr,truncatedNormal:Wr,unstack:Ur,setdiff1dAsync:Vr,fill:Hn,linspace:qn,ones:zn,range:Kn,scalar:On,tensor:Fn,tensor1d:Mn,tensor2d:Bn,tensor3d:Pn,tensor4d:Ln,tensor5d:Wn,tensor6d:Un,variable:Vn,zeros:Gn,onesLike:jn,zerosLike:Xn,transpose:Wl,softmax:go,logSoftmax:yo,localResponseNormalization:Ul,norm:Vl,gather:Lc,unsortedSegmentSum:Wc,basicLSTMCell:zl,multiRNNCell:Gl,movingAverage:Hl,stridedSlice:ql,topk:Kl,scatterND:jl,fft:Xl,ifft:Yl,rfft:$l,irfft:Ql,sparseToDense:Zl,gatherND:th,diag:eh,dropout:nh,hannWindow:oh,hammingWindow:ah,frame:ih,stft:sh,inTopKAsync:lh});function Hh(t,e){Array.isArray(t)||(t=[t]),t.forEach((function(t){null!=t&&C(\"complex64\"!==t.dtype,(function(){return e+\" does not support complex64 tensors.\"}))}))}function qh(t,e,n,r){if(\"linear\"===n)return t.linear(e);if(\"relu\"===n)return t.relu(e);if(\"elu\"===n)return t.elu(e);if(\"relu6\"===n)return t.relu6(e);if(\"prelu\"===n)return t.prelu(e,r);throw new Error(\"Activation \"+n+\" has not been implemented for the CPU backend.\")}var Kh=function(t){function o(){var e=t.call(this)||this;return e.blockSize=48,e.firstUse=!0,e.data=new xo(e,Lt),e}return e(o,t),o.prototype.write=function(t,e,n){this.firstUse&&(this.firstUse=!1,i().get(\"IS_NODE\")&&dn(\"\\n============================\\nHi there 👋. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details.\\n============================\"));var r={};return this.data.set(r,{values:t,dtype:n}),r},o.prototype.move=function(t,e,n,r){this.data.set(t,{values:e,dtype:r})},o.prototype.numDataIds=function(){return this.data.numDataIds()},o.prototype.read=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(e){return[2,this.readSync(t)]}))}))},o.prototype.readSync=function(t){var e=this.data.get(t),n=e.dtype,r=e.complexTensors;return\"complex64\"===n?Vo(this.readSync(r.real.dataId),this.readSync(r.imag.dataId)):this.data.get(t).values},o.prototype.bufferSync=function(t){var e=this.readSync(t.dataId),n=e;if(\"string\"===t.dtype)try{n=e.map((function(t){return ot(t)}))}catch(t){throw new Error(\"Failed to decode encoded string bytes into utf-8\")}return dr(t.shape,t.dtype,n)},o.prototype.makeOutput=function(t,e,n){var r=this.write(t,e,n);return Lt.makeTensorFromDataId(r,e,n,this)},o.prototype.disposeData=function(t){if(this.data.has(t)){var e=this.data.get(t).complexTensors;null!=e&&(e.real.dispose(),e.imag.dispose()),this.data.delete(t)}},o.prototype.time=function(t){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){return e=et(),t(),[2,{kernelMs:et()-e}]}))}))},o.prototype.memory=function(){return{unreliable:!0,reasons:[\"The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less.\"]}},o.prototype.complex=function(t,e){var n=this.makeOutput(null,t.shape,\"complex64\");return this.data.get(n.dataId).complexTensors={real:Lt.keep(t.clone()),imag:Lt.keep(e.clone())},n},o.prototype.real=function(t){return this.data.get(t.dataId).complexTensors.real.clone()},o.prototype.imag=function(t){return this.data.get(t.dataId).complexTensors.imag.clone()},o.prototype.slice=function(t,e,n){if(Hh(t,\"slice\"),io(t.shape,e,n)){var r=so(e,t.strides),o=k(n);return Fn(this.readSync(t.dataId).subarray(r,r+o),n,t.dtype)}for(var a=dr(n,t.dtype),i=this.bufferSync(t),s=0;s<a.size;++s){var u=a.indexToLoc(s).map((function(t,n){return t+e[n]}));a.values[s]=i.get.apply(i,u)}return a.toTensor()},o.prototype.stridedSlice=function(t,e,n,r){Hh(t,\"stridedSlice\");var o=ro(e,n,r);if(o.some((function(t){return 0===t})))return Fn([],o);for(var a=dr(o,t.dtype),i=this.bufferSync(t),s=0;s<a.size;s++){for(var u=a.indexToLoc(s),c=new Array(u.length),l=0;l<c.length;l++)c[l]=u[l]*r[l]+e[l];a.set.apply(a,[i.get.apply(i,c)].concat(u))}return a.toTensor()},o.prototype.diag=function(t){for(var e=this.readSync(t.dataId),n=dr([t.size,t.size],t.dtype),r=n.values,o=0;o<e.length;o++)r[o*t.size+o]=e[o];return n.toTensor()},o.prototype.unstack=function(t,e){for(var n=t.shape[e],r=new Array(t.rank-1),o=0,a=0;a<t.rank;a++)a!==e&&(r[o++]=t.shape[a]);var i=new Array(t.rank).fill(0),s=t.shape.slice();s[e]=1;var u=new Array(n);for(a=0;a<u.length;a++)i[e]=a,u[a]=this.slice(t,i,s).reshape(r);return u},o.prototype.reverse=function(t,e){Hh(t,\"reverse\");for(var n=dr(t.shape,t.dtype),r=this.bufferSync(t),o=function(o){var a=n.indexToLoc(o),i=a.slice();e.forEach((function(e){return i[e]=t.shape[e]-1-i[e]})),n.set.apply(n,[r.get.apply(r,i)].concat(a))},a=0;a<n.size;a++)o(a);return n.toTensor()},o.prototype.concat=function(t,e){var n=this;if(\"complex64\"===t[0].dtype){var r=t.map((function(t){return Tn(t)})),o=t.map((function(t){return Nn(t)}));return Dn(this.concat(r,e),this.concat(o,e))}var a=t.map((function(t){var n=k(t.shape.slice(e));return t.as2D(-1,n)})),i=Sn(a.map((function(t){return t.shape})),1),s=dr(i,t[0].dtype).values;if(1===a[0].shape[0]){var u=0;a.forEach((function(t){s.set(n.readSync(t.dataId),u),u+=t.size}))}else{var c=0;a.forEach((function(t){for(var e=n.readSync(t.dataId),r=0,o=0;o<t.shape[0];++o)for(var a=o*i[1]+c,u=0;u<t.shape[1];++u)s[a+u]=e[r++];c+=t.shape[1]}))}var l=Sn(t.map((function(t){return t.shape})),e);return Fn(s,l,t[0].dtype)},o.prototype.neg=function(t){return Hh(t,\"neg\"),this.multiply(On(-1),t)},o.prototype.add=function(t,e){return\"complex64\"===t.dtype||\"complex64\"===e.dtype?this.broadcastedBinaryComplexOp(t.cast(\"complex64\"),e.cast(\"complex64\"),(function(t,e,n,r){return{real:t+n,imag:e+r}})):this.broadcastedBinaryOp(t,e,Dt(t.dtype,e.dtype),(function(t,e){return t+e}))},o.prototype.addN=function(t){var e=this;Hh(t,\"addN\");for(var n=t.map((function(t){return e.readSync(t.dataId)})),r=dr(t[0].shape,t[0].dtype),o=r.values,a=0;a<t.length;a++)for(var i=n[a],s=0;s<o.length;s++)o[s]+=i[s];return r.toTensor()},o.prototype.softmax=function(t,e){var n=O([e],t.shape),r=this.max(t,n),o=wn(r.shape,n),a=this.subtract(t,r.reshape(o)),i=this.exp(a),s=this.sum(i,n).reshape(o);return this.realDivide(i,s)},o.prototype.subtract=function(t,e){return\"complex64\"===t.dtype||\"complex64\"===e.dtype?this.broadcastedBinaryComplexOp(t.cast(\"complex64\"),e.cast(\"complex64\"),(function(t,e,n,r){return{real:t-n,imag:e-r}})):this.broadcastedBinaryOp(t,e,Dt(t.dtype,e.dtype),(function(t,e){return t-e}))},o.prototype.pow=function(t,e){return Hh([t,e],\"pow\"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.pow(t,e)}))},o.prototype.batchMatMul=function(t,e,n,r){Hh([t,e],\"matMul\");for(var o=n?t.shape[1]:t.shape[2],a=n?t.shape[2]:t.shape[1],i=r?e.shape[1]:e.shape[2],s=t.shape[0],u=this.readSync(t.dataId),c=this.readSync(e.dataId),l=n?[t.strides[0],1,t.strides[1]]:[t.strides[0],t.strides[1],1],h=l[0],f=l[1],d=l[2],p=r?[1,e.strides[1],e.strides[0]]:[e.strides[1],1,e.strides[0]],v=p[0],m=p[1],g=p[2],y=a*i,x=dr([s,a,i],t.dtype),b=x.values,w=this.blockSize,C=0;C<s;C++)for(var E=0;E<a;E+=w)for(var R=0;R<i;R+=w)for(var I=0;I<o;I+=w)for(var k=Math.min(E+w,a),S=Math.min(R+w,i),A=Math.min(I+w,o),D=E;D<k;D++)for(var T=R;T<S;T++){for(var N=0,F=I;F<A;F++)N+=u[C*h+D*f+F*d]*c[F*v+T*m+C*g];b[C*y+(D*i+T)]+=N}return x.toTensor()},o.prototype.fusedBatchMatMul=function(t){var e=t.a,n=t.b,r=t.transposeA,o=t.transposeB,a=t.bias,i=t.activation,s=t.preluActivationWeights,u=this.batchMatMul(e,n,r,o);return a&&(u=this.add(u,a)),i&&(u=qh(this,u,i,s)),u},o.prototype.multiply=function(t,e){return\"complex64\"===t.dtype||\"complex64\"===e.dtype?this.broadcastedBinaryComplexOp(t.cast(\"complex64\"),e.cast(\"complex64\"),(function(t,e,n,r){return{real:t*n-e*r,imag:t*r+e*n}})):this.broadcastedBinaryOp(t,e,Dt(t.dtype,e.dtype),(function(t,e){return t*e}))},o.prototype.realDivide=function(t,e){Hh([t,e],\"realDivide\");return this.broadcastedBinaryOp(t,e,\"float32\",(function(t,e){return t/e}))},o.prototype.floorDiv=function(t,e){Hh([t,e],\"floorDiv\");return this.broadcastedBinaryOp(t,e,\"int32\",(function(t,e){return Math.floor(t/e)}))},o.prototype.sum=function(t,e){Hh(t,\"sum\"),Cn(\"sum\",e,t.rank);for(var n=bn(t.shape,e),r=n[0],o=n[1],a=Gn(r,Dt(t.dtype,\"int32\")),i=k(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,h=0,f=0;f<i;++f)h+=u[l+f];s[c]=h}return a},o.prototype.prod=function(t,e){Hh(t,\"sum\");for(var n=bn(t.shape,e),r=n[0],o=n[1],a=Gn(r,Dt(t.dtype,\"int32\")),i=k(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,h=1,f=0;f<i;++f)h*=u[l+f];s[c]=h}return a},o.prototype.unsortedSegmentSum=function(t,e,n){Hh(t,\"unsortedSegmentSum\");for(var r=[],o=t.rank-e.rank,a=0;a<o;++a)e=e.expandDims(a+1);for(a=0;a<n;++a){var i=On(a,\"int32\"),s=Rc(i,e).asType(\"float32\").mul(t).sum(0);r.push(s)}return Pr(r)},o.prototype.argMin=function(t,e){Hh(t,\"argMin\");var n=[e];Cn(\"argMin\",n,t.rank);for(var r=bn(t.shape,n),o=r[0],a=r[1],i=Gn(o,\"int32\"),s=k(a),u=this.readSync(i.dataId),c=this.readSync(t.dataId),l=0;l<u.length;++l){for(var h=l*s,f=c[h],d=0,p=0;p<s;++p){var v=c[h+p];v<f&&(f=v,d=p)}u[l]=d}return i},o.prototype.argMax=function(t,e){Hh(t,\"argMax\");var n=[e];Cn(\"argMax\",n,t.rank);for(var r=bn(t.shape,n),o=r[0],a=r[1],i=Gn(o,\"int32\"),s=k(a),u=this.readSync(i.dataId),c=this.readSync(t.dataId),l=0;l<u.length;++l){for(var h=l*s,f=c[h],d=0,p=0;p<s;++p){var v=c[h+p];v>f&&(f=v,d=p)}u[l]=d}return i},o.prototype.cumsum=function(t,e,n,r){if(Hh(t,\"cumsum\"),e!==t.rank-1)throw new Error(\"backend.cumsum in CPU expects an inner-most axis=\"+(t.rank-1)+\" but got axis=\"+e);for(var o=Dt(t.dtype,\"int32\"),a=Gn(t.shape,o),i=this.readSync(a.dataId),s=this.readSync(t.dataId),u=t.shape[t.rank-1],c=r?function(t,e){return t+u-e-1}:function(t,e){return t+e},l=0;l<s.length;l+=u)for(var h=0;h<u;h++){var f=c(l,h);if(0===h)i[f]=n?0:s[f];else{var d=c(l,h-1);i[f]=n?s[d]+i[d]:s[f]+i[d]}}return a},o.prototype.equal=function(t,e){return Hh([t,e],\"equal\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t===e?1:0}))},o.prototype.notEqual=function(t,e){return Hh([t,e],\"notEqual\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t!==e?1:0}))},o.prototype.less=function(t,e){return Hh([t,e],\"less\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t<e?1:0}))},o.prototype.lessEqual=function(t,e){return Hh([t,e],\"lessEqual\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t<=e?1:0}))},o.prototype.greater=function(t,e){return Hh([t,e],\"greater\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t>e?1:0}))},o.prototype.greaterEqual=function(t,e){return Hh([t,e],\"greaterEqual\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t>=e?1:0}))},o.prototype.logicalNot=function(t){Hh(t,\"logicalNot\");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)n[r]=e[r]?0:1;return this.makeOutput(n,t.shape,\"bool\")},o.prototype.logicalAnd=function(t,e){return Hh([t,e],\"logicalAnd\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t&&e}))},o.prototype.logicalOr=function(t,e){return Hh([t,e],\"logicalOr\"),this.broadcastedBinaryOp(t,e,\"bool\",(function(t,e){return t||e}))},o.prototype.select=function(t,e,n){Hh([t,e,n],\"select\");for(var r=this.readSync(t.dataId),o=this.readSync(e.dataId),a=this.readSync(n.dataId),i=Gn(e.shape,Dt(e.dtype,n.dtype)),s=this.readSync(i.dataId),u=0,c=0===t.rank||t.rank>1||1===e.rank?1:k(e.shape.slice(1)),l=0;l<r.length;l++)for(var h=0;h<c;h++)1===r[l]?s[u++]=o[l]:s[u++]=a[l];return i},o.prototype.where=function(t){Hh([t],\"where\");var e=this.readSync(t.dataId);return na(t.shape,e)},o.prototype.topk=function(t,e,n){return Hh(t,\"topk\"),ea(this.readSync(t.dataId),t.shape,t.dtype,e)},o.prototype.min=function(t,e){Hh(t,\"min\"),Cn(\"min\",e,t.rank);for(var n=bn(t.shape,e),r=n[0],o=n[1],a=Gn(r,t.dtype),i=k(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,h=u[l],f=0;f<i;++f){var d=u[l+f];d<h&&(h=d)}s[c]=h}return a},o.prototype.minimum=function(t,e){return Hh([t,e],\"minimum\"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.min(t,e)}))},o.prototype.mod=function(t,e){return Hh([t,e],\"mod\"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){var n=t%e;return t<0&&e<0||t>=0&&e>=0?n:(n+e)%e}))},o.prototype.max=function(t,e){Hh(t,\"max\"),Cn(\"max\",e,t.rank);for(var n=bn(t.shape,e),r=n[0],o=n[1],a=Gn(r,t.dtype),i=k(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,h=u[l],f=0;f<i;++f){var d=u[l+f];d>h&&(h=d)}s[c]=h}return a},o.prototype.maximum=function(t,e){return Hh([t,e],\"maximum\"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.max(t,e)}))},o.prototype.all=function(t,e){Hh(t,\"all\"),Cn(\"all\",e,t.rank);for(var n=bn(t.shape,e),r=n[0],o=n[1],a=Gn(r,t.dtype),i=k(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,h=u[l],f=0;f<i;++f){var d=u[l+f];h=h&&d}s[c]=h}return a},o.prototype.any=function(t,e){Hh(t,\"any\"),Cn(\"any\",e,t.rank);for(var n=bn(t.shape,e),r=n[0],o=n[1],a=Gn(r,t.dtype),i=k(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,h=u[l],f=0;f<i;++f){var d=u[l+f];h=h||d}s[c]=h}return a},o.prototype.squaredDifference=function(t,e){return Hh([t,e],\"squaredDifference\"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){var n=t-e;return n*n}))},o.prototype.ceil=function(t){Hh(t,\"ceil\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.ceil(e[r]);return this.makeOutput(n,t.shape,\"float32\")},o.prototype.floor=function(t){Hh(t,\"floor\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.floor(e[r]);return this.makeOutput(n,t.shape,\"float32\")},o.prototype.sign=function(t){Hh(t,\"x\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)e[r]<0?n[r]=-1:e[r]>0?n[r]=1:n[r]=0;return this.makeOutput(n,t.shape,\"float32\")},o.prototype.isNaN=function(t){Hh(t,\"x\");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)Number.isNaN(e[r])&&(n[r]=1);return this.makeOutput(n,t.shape,\"bool\")},o.prototype.isInf=function(t){Hh(t,\"x\");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)Math.abs(e[r])===1/0&&(n[r]=1);return this.makeOutput(n,t.shape,\"bool\")},o.prototype.isFinite=function(t){Hh(t,\"x\");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)Number.isFinite(e[r])&&(n[r]=1);return this.makeOutput(n,t.shape,\"bool\")},o.prototype.round=function(t){Hh(t,\"round\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=Math.floor(e[r]);e[r]-o<.5?n[r]=Math.floor(e[r]):e[r]-o>.5?n[r]=Math.ceil(e[r]):n[r]=o%2==0?o:o+1}return this.makeOutput(n,t.shape,\"float32\")},o.prototype.exp=function(t){Hh(t,\"exp\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.exp(e[r]);return this.makeOutput(n,t.shape,\"float32\")},o.prototype.expm1=function(t){Hh(t,\"expm1\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.expm1(e[r]);return this.makeOutput(n,t.shape,\"float32\")},o.prototype.log=function(t){Hh(t,\"log\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=Math.log(o)}return this.makeOutput(n,t.shape,\"float32\")},o.prototype.log1p=function(t){Hh(t,\"log1p\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=Math.log1p(o)}return this.makeOutput(n,t.shape,\"float32\")},o.prototype.sqrt=function(t){Hh(t,\"sqrt\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=Math.sqrt(o)}return this.makeOutput(n,t.shape,\"float32\")},o.prototype.rsqrt=function(t){Hh(t,\"rsqrt\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=1/Math.sqrt(o)}return this.makeOutput(n,t.shape,\"float32\")},o.prototype.reciprocal=function(t){Hh(t,\"reciprocal\");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=1/e[r];return this.makeOutput(n,t.shape,\"float32\")},o.prototype.linear=function(t){return t},o.prototype.relu=function(t){Hh(t,\"relu\");for(var e=Gn(t.shape,t.dtype),n=this.readSync(e.dataId),r=this.readSync(t.dataId),o=0;o<r.length;++o)n[o]=Math.max(0,r[o]);return e},o.prototype.relu6=function(t){Hh(t,\"relu\");for(var e=Gn(t.shape,t.dtype),n=this.readSync(e.dataId),r=this.readSync(t.dataId),o=0;o<r.length;++o)n[o]=Math.min(Math.max(0,r[o]),6);return e},o.prototype.prelu=function(t,e){return Hh([t,e],\"prelu\"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return t<0?e*t:t}))},o.prototype.elu=function(t){Hh(t,\"elu\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r){var o=n[r];e[r]=o>=0?o:Math.exp(o)-1}return this.makeOutput(e,t.shape,\"float32\")},o.prototype.eluDer=function(t,e){Hh([t,e],\"eluDer\");for(var n=new Float32Array(e.size),r=this.readSync(e.dataId),o=this.readSync(t.dataId),a=0;a<r.length;++a){var i=r[a];n[a]=i>=1?o[a]:o[a]*(i+1)}return this.makeOutput(n,e.shape,\"float32\")},o.prototype.selu=function(t){Hh(t,\"selu\");for(var e=bs,n=ws,r=new Float32Array(t.size),o=this.readSync(t.dataId),a=0;a<o.length;++a){var i=o[a];r[a]=i>=0?n*i:e*(Math.exp(i)-1)}return this.makeOutput(r,t.shape,\"float32\")},o.prototype.clip=function(t,e,n){Hh(t,\"clip\");for(var r=new Float32Array(t.size),o=this.readSync(t.dataId),a=0;a<o.length;++a){var i=o[a];r[a]=i>n?n:i<e?e:i}return this.makeOutput(r,t.shape,\"float32\")},o.prototype.abs=function(t){for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.abs(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.complexAbs=function(t){for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<t.size;++r){var o=n[2*r],a=n[2*r+1];e[r]=Math.hypot(o,a)}return this.makeOutput(e,t.shape,\"float32\")},o.prototype.int=function(t){Hh(t,\"int\");for(var e=new Int32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=n[r];return this.makeOutput(e,t.shape,\"int32\")},o.prototype.sigmoid=function(t){Hh(t,\"sigmoid\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=1/(1+Math.exp(-n[r]));return this.makeOutput(e,t.shape,\"float32\")},o.prototype.softplus=function(t){Hh(t,\"softplus\");for(var e=Math.log(1.1920928955078125e-7)+2,n=new Float32Array(t.size),r=this.readSync(t.dataId),o=0;o<r.length;++o){var a=r[o]>-e,i=r[o]<e,s=Math.exp(r[o]),u=void 0;u=i?s:a?r[o]:Math.log(1+s),n[o]=u}return this.makeOutput(n,t.shape,\"float32\")},o.prototype.sin=function(t){Hh(t,\"sin\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.sin(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.cos=function(t){Hh(t,\"cos\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.cos(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.tan=function(t){Hh(t,\"tan\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.tan(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.asin=function(t){Hh(t,\"asin\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.asin(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.acos=function(t){Hh(t,\"acos\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.acos(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.atan=function(t){Hh(t,\"atan\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.atan(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.atan2=function(t,e){return Hh([t,e],\"atan2\"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.atan2(t,e)}))},o.prototype.sinh=function(t){Hh(t,\"sinh\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.sinh(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.cosh=function(t){Hh(t,\"cosh\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.cosh(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.tanh=function(t){Hh(t,\"tanh\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=D(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.asinh=function(t){Hh(t,\"asinh\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.asinh(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.acosh=function(t){Hh(t,\"acosh\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.acosh(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.atanh=function(t){Hh(t,\"atanh\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.atanh(n[r]);return this.makeOutput(e,t.shape,\"float32\")},o.prototype.erf=function(t){Hh(t,\"erf\");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r){var o=Math.sign(n[r]),a=Math.abs(n[r]),i=1/(1+.3275911*a);e[r]=o*(1-((((1.061405429*i-1.453152027)*i+1.421413741)*i-.284496736)*i+.254829592)*i*Math.exp(-a*a))}return this.makeOutput(e,t.shape,\"float32\")},o.prototype.step=function(t,e){void 0===e&&(e=0),Hh(t,\"step\");for(var n=new Float32Array(t.size),r=this.readSync(t.dataId),o=0;o<r.length;++o){var a=r[o];isNaN(a)?n[o]=NaN:n[o]=a>0?1:e}return this.makeOutput(n,t.shape,\"float32\")},o.prototype.fusedConv2d=function(t){var e=t.input,n=t.filter,r=t.convInfo,o=t.bias,a=t.activation,i=t.preluActivationWeights,s=this.conv2d(e,n,r);return o&&(s=this.add(s,o)),a&&(s=qh(this,s,a,i)),s},o.prototype.conv2d=function(t,e,n){Hh([t,e],\"conv2d\");for(var r=n.filterHeight,o=n.filterWidth,a=n.dilationHeight,i=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,c=\"channelsLast\"===n.dataFormat,l=dr(n.outShape,t.dtype),h=t.strides[0],f=c?t.strides[1]:t.strides[2],d=c?t.strides[2]:1,p=c?1:t.strides[1],v=l.strides[0],m=c?l.strides[1]:l.strides[2],g=c?l.strides[2]:1,y=c?1:l.strides[1],x=this.readSync(t.dataId),b=this.readSync(e.dataId),w=l.values,C=0;C<n.batchSize;++C)for(var E=C*h,R=C*v,I=0;I<n.outHeight;++I)for(var k=R+I*m,S=I*n.strideHeight-u,A=0;A<r;A++){var D=S+A*a;if(!(D<0||D>=n.inHeight))for(var T=A*e.strides[0],N=E+D*f,F=0;F<n.outWidth;++F)for(var _=k+F*g,O=F*n.strideWidth-s,M=0;M<o;M++){var B=O+M*i;if(!(B<0||B>=n.inWidth))for(var P=N+B*d,L=T+M*e.strides[1],W=0;W<n.inChannels;++W){for(var U=x[P+W*p],V=0;V<n.outChannels;++V)w[_+V*y]+=U*b[L+V];L+=n.outChannels}}}return l.toTensor()},o.prototype.conv3d=function(t,e,n){for(var r=n.filterDepth,o=n.filterHeight,a=n.filterWidth,i=n.dilationDepth,s=n.dilationHeight,u=n.dilationWidth,c=n.padInfo.front,l=n.padInfo.left,h=n.padInfo.top,f=dr(n.outShape,t.dtype),d=this.readSync(t.dataId),p=this.readSync(e.dataId),v=f.values,m=0;m<n.batchSize;++m)for(var g=m*t.strides[0],y=m*f.strides[0],x=0;x<n.outDepth;++x)for(var b=y+x*f.strides[1],w=x*n.strideDepth-c,C=0;C<r;C++){var E=w+C*i;if(!(E<0||E>=n.inDepth))for(var R=C*e.strides[0],I=g+E*t.strides[1],k=0;k<n.outHeight;++k)for(var S=b+k*f.strides[2],A=k*n.strideHeight-h,D=0;D<o;D++){var T=A+D*s;if(!(T<0||T>=n.inHeight))for(var N=R+D*e.strides[1],F=I+T*t.strides[2],_=0;_<n.outWidth;++_)for(var O=S+_*n.outChannels,M=_*n.strideWidth-l,B=0;B<a;B++){var P=M+B*u;if(!(P<0||P>=n.inWidth))for(var L=N+B*e.strides[2],W=F+P*n.inChannels,U=L,V=0;V<n.inChannels;++V){for(var z=d[W+V],G=0;G<n.outChannels;++G)v[O+G]+=z*p[U+G];U+=n.outChannels}}}}return f.toTensor()},o.prototype.conv2dDerInput=function(t,e,n){Hh([t,e],\"conv2dDerInput\");for(var r=dr(n.inShape,\"float32\"),o=r.values,a=this.readSync(t.dataId),i=this.readSync(e.dataId),s=e.strides,u=s[0],c=s[1],l=s[2],h=n.batchSize,f=n.filterHeight,d=n.filterWidth,p=n.inChannels,v=n.inHeight,m=n.inWidth,g=n.outChannels,y=n.outHeight,x=n.outWidth,b=n.strideHeight,w=n.strideWidth,C=n.dataFormat,E=f-1-n.padInfo.top,R=d-1-n.padInfo.left,I=\"channelsLast\"===C,k=r.strides[0],S=I?r.strides[1]:r.strides[2],A=I?r.strides[2]:1,D=I?1:r.strides[1],T=t.strides[0],N=I?t.strides[1]:t.strides[2],F=I?t.strides[2]:1,_=I?1:t.strides[1],O=0;O<h;++O)for(var M=0;M<p;++M)for(var B=0;B<v;++B)for(var P=B-E,L=Math.max(0,Math.ceil(P/b)),W=Math.min(y,(f+P)/b),U=0;U<m;++U){for(var V=U-R,z=Math.max(0,Math.ceil(V/w)),G=Math.min(x,(d+V)/w),H=0,q=L;q<W;++q)for(var K=q*b-P,j=z;j<G;++j)for(var X=T*O+N*q+F*j,Y=u*(f-1-K)+c*(d-1-(j*w-V))+l*M,$=0;$<g;++$){H+=a[X+_*$]*i[Y+$]}o[k*O+S*B+A*U+D*M]=H}return r.toTensor()},o.prototype.conv3dDerInput=function(t,e,n){for(var r=dr(n.inShape,\"float32\"),o=r.values,a=r.strides,i=a[0],s=a[1],u=a[2],c=a[3],l=this.readSync(t.dataId),h=t.strides,f=h[0],d=h[1],p=h[2],v=h[3],m=this.readSync(e.dataId),g=e.strides,y=g[0],x=g[1],b=g[2],w=g[3],C=n.batchSize,E=n.filterDepth,R=n.filterHeight,I=n.filterWidth,k=n.inChannels,S=n.inDepth,A=n.inHeight,D=n.inWidth,T=n.outChannels,N=n.outDepth,F=n.outHeight,_=n.outWidth,O=n.strideDepth,M=n.strideHeight,B=n.strideWidth,P=E-1-n.padInfo.front,L=R-1-n.padInfo.top,W=I-1-n.padInfo.left,U=0;U<C;++U)for(var V=0;V<k;++V)for(var z=0;z<S;++z)for(var G=z-P,H=Math.max(0,Math.ceil(G/O)),q=Math.min(N,(E+G)/O),K=0;K<A;++K)for(var j=K-L,X=Math.max(0,Math.ceil(j/M)),Y=Math.min(F,(R+j)/M),$=0;$<D;++$){for(var Q=$-W,J=Math.max(0,Math.ceil(Q/B)),Z=Math.min(_,(I+Q)/B),tt=0,et=H;et<q;++et)for(var nt=et*O-G,rt=X;rt<Y;++rt)for(var ot=rt*M-j,at=J;at<Z;++at)for(var it=f*U+d*et+p*rt+v*at,st=y*(E-1-nt)+x*(R-1-ot)+b*(I-1-(at*B-Q))+w*V,ut=0;ut<T;++ut){tt+=l[it+ut]*m[st+ut]}o[i*U+s*z+u*K+c*$+V]=tt}return r.toTensor()},o.prototype.conv2dDerFilter=function(t,e,n){Hh([t,e],\"conv2dDerFilter\");for(var r=n.strideHeight,o=n.strideWidth,a=n.filterHeight,i=n.filterWidth,s=\"channelsLast\"===n.dataFormat,u=dr(n.filterShape,\"float32\"),c=n.padInfo.left,l=n.padInfo.top,h=this.bufferSync(t),f=this.bufferSync(e),d=0;d<a;++d)for(var p=Math.max(0,Math.ceil((l-d)/r)),v=Math.min(n.outHeight,(n.inHeight+l-d)/r),m=0;m<i;++m)for(var g=Math.max(0,Math.ceil((c-m)/o)),y=Math.min(n.outWidth,(n.inWidth+c-m)/o),x=0;x<n.inChannels;++x)for(var b=0;b<n.outChannels;++b){for(var w=0,C=0;C<n.batchSize;++C)for(var E=p;E<v;++E)for(var R=d+E*r-l,I=g;I<y;++I){var k=m+I*o-c;w+=s?h.get(C,R,k,x)*f.get(C,E,I,b):h.get(C,x,R,k)*f.get(C,b,E,I)}u.set(w,d,m,x,b)}return u.toTensor()},o.prototype.conv3dDerFilter=function(t,e,n){for(var r=n.strideDepth,o=n.strideHeight,a=n.strideWidth,i=n.filterDepth,s=n.filterHeight,u=n.filterWidth,c=dr(n.filterShape,\"float32\"),l=c.values,h=c.strides,f=h[0],d=h[1],p=h[2],v=h[3],m=this.readSync(e.dataId),g=e.strides,y=g[0],x=g[1],b=g[2],w=g[3],C=this.readSync(t.dataId),E=t.strides,R=E[0],I=E[1],k=E[2],S=E[3],A=n.padInfo.front,D=n.padInfo.left,T=n.padInfo.top,N=0;N<i;++N)for(var F=Math.max(0,Math.ceil((A-N)/r)),_=Math.min(n.outDepth,(n.inDepth+A-N)/r),O=N*f,M=0;M<s;++M)for(var B=Math.max(0,Math.ceil((T-M)/o)),P=Math.min(n.outHeight,(n.inHeight+T-M)/o),L=M*d+O,W=0;W<u;++W)for(var U=Math.max(0,Math.ceil((D-W)/a)),V=Math.min(n.outWidth,(n.inWidth+D-W)/a),z=W*p+L,G=0;G<n.inChannels;++G)for(var H=G*v+z,q=0;q<n.outChannels;++q){for(var K=0,j=0;j<n.batchSize;++j)for(var X=j*R,Y=j*y,$=F;$<_;++$)for(var Q=(N+$*r-A)*I+X,J=$*x+Y,Z=B;Z<P;++Z)for(var tt=(M+Z*o-T)*k+Q,et=Z*b+J,nt=U;nt<V;++nt){var rt=nt*w+et;K+=C[(W+nt*a-D)*S+tt+G]*m[rt+q]}l[H+q]=K}return c.toTensor()},o.prototype.fusedDepthwiseConv2D=function(t){var e=t.input,n=t.filter,r=t.convInfo,o=t.bias,a=t.activation,i=t.preluActivationWeights,s=this.depthwiseConv2D(e,n,r);return o&&(s=this.add(s,o)),a&&(s=qh(this,s,a,i)),s},o.prototype.depthwiseConv2D=function(t,e,n){Hh([t,e],\"depthwiseConv2D\");for(var r=n.filterHeight,o=n.filterWidth,a=n.dilationHeight,i=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,c=n.outChannels/n.inChannels,l=dr(n.outShape,t.dtype),h=this.readSync(t.dataId),f=this.readSync(e.dataId),d=l.values,p=0;p<n.batchSize;++p)for(var v=p*t.strides[0],m=p*l.strides[0],g=0;g<n.outHeight;++g)for(var y=m+g*l.strides[1],x=g*n.strideHeight-s,b=0;b<r;++b){var w=x+b*a;if(!(w<0||w>=n.inHeight))for(var C=b*e.strides[0],E=v+w*t.strides[1],R=0;R<n.outWidth;++R)for(var I=y+R*l.strides[2],k=R*n.strideWidth-u,S=0;S<o;++S){var A=k+S*i;if(!(A<0||A>=n.inWidth))for(var D=C+S*e.strides[1],T=E+A*n.inChannels,N=I,F=D,_=0;_<n.inChannels;++_){for(var O=h[T+_],M=0;M<c;++M)d[N+M]+=O*f[F+M];N+=c,F+=c}}}return l.toTensor()},o.prototype.depthwiseConv2DDerInput=function(t,e,n){Hh([t,e],\"depthwiseConv2DDerInput\");for(var r=dr(n.inShape,\"float32\"),o=r.values,a=r.strides,i=a[0],s=a[1],u=a[2],c=this.readSync(t.dataId),l=t.strides,h=l[0],f=l[1],d=l[2],p=this.readSync(e.dataId),v=e.strides,m=v[0],g=v[1],y=v[2],x=n.batchSize,b=n.filterHeight,w=n.filterWidth,C=n.inChannels,E=n.inHeight,R=n.inWidth,I=n.outChannels,k=n.outHeight,S=n.outWidth,A=n.strideHeight,D=n.strideWidth,T=b-1-n.padInfo.top,N=w-1-n.padInfo.left,F=I/C,_=0;_<x;++_)for(var O=0;O<C;++O)for(var M=0;M<E;++M)for(var B=M-T,P=Math.max(0,Math.ceil(B/A)),L=Math.min(k,(b+B)/A),W=0;W<R;++W){for(var U=W-N,V=Math.max(0,Math.ceil(U/D)),z=Math.min(S,(w+U)/D),G=0,H=P;H<L;++H)for(var q=H*A-B,K=V;K<z;++K)for(var j=h*_+f*H+d*K,X=m*(b-1-q)+g*(w-1-(K*D-U))+y*O,Y=0;Y<F;++Y){G+=c[j+(O*F+Y)]*p[X+Y]}o[i*_+s*M+u*W+O]=G}return r.toTensor()},o.prototype.depthwiseConv2DDerFilter=function(t,e,n){Hh([t,e],\"depthwiseConv2DDerFilter\");for(var r=n.strideHeight,o=n.strideWidth,a=n.filterHeight,i=n.filterWidth,s=dr(n.filterShape,\"float32\"),u=n.padInfo.left,c=n.padInfo.top,l=n.outChannels/n.inChannels,h=this.bufferSync(t),f=this.bufferSync(e),d=0;d<a;++d)for(var p=Math.max(0,Math.ceil((c-d)/r)),v=Math.min(n.outHeight,(n.inHeight+c-d)/r),m=0;m<i;++m)for(var g=Math.max(0,Math.ceil((u-m)/o)),y=Math.min(n.outWidth,(n.inWidth+u-m)/o),x=0;x<n.outChannels;++x){for(var b=Math.trunc(x/l),w=x%l,C=0,E=0;E<n.batchSize;++E)for(var R=p;R<v;++R)for(var I=d+R*r-c,k=g;k<y;++k){var S=m+k*o-u;C+=h.get(E,I,S,b)*f.get(E,R,k,x)}s.set(C,d,m,b,w)}return s.toTensor()},o.prototype.tile=function(t,e){return Hh(t,\"tile\"),ta(this.bufferSync(t),e)},o.prototype.pad=function(t,e,n){Hh(t,\"pad\");var r=e.map((function(e,n){return e[0]+t.shape[n]+e[1]})),o=e.map((function(t){return t[0]})),a=this.bufferSync(t),i=dr(r,t.dtype);0!==n&&i.values.fill(n);for(var s=0;s<t.size;s++){var u=a.indexToLoc(s),c=u.map((function(t,e){return t+o[e]}));i.set.apply(i,[a.get.apply(a,u)].concat(c))}return i.toTensor()},o.prototype.transpose=function(t,e){Hh(t,\"transpose\");for(var n=new Array(t.rank),r=0;r<n.length;r++)n[r]=t.shape[e[r]];var o=this.readSync(t.dataId),a=dr(n,t.dtype),i=this.bufferSync(t);for(r=0;r<t.size;++r){for(var s=i.indexToLoc(r),u=new Array(s.length),c=0;c<u.length;c++)u[c]=s[e[c]];var l=a.locToIndex(u);a.values[l]=o[r]}return a.toTensor()},o.prototype.gather=function(t,e,n){Hh([t,e],\"gather\");var r=t.shape.slice(),o=this.readSync(e.dataId);r[n]=o.length;for(var a=dr(r,t.dtype),i=this.bufferSync(t),s=0;s<a.size;++s){var u=a.indexToLoc(s),c=u.slice();c[n]=o[u[n]];var l=i.locToIndex(c);a.values[s]=i.values[l]}return a.toTensor()},o.prototype.batchToSpaceND=function(t,e,n){Hh([t],\"batchToSpaceND\");var r=e.reduce((function(t,e){return t*e})),o=zr(t.shape,e,r),a=Gr(o.length,e.length),i=Hr(t.shape,e,r),s=qr(n,e.length),u=Kr(i,n,e.length);return t.reshape(o).transpose(a).reshape(i).slice(s,u)},o.prototype.spaceToBatchND=function(t,e,n){Hh([t],\"spaceToBatchND\");var r=e.reduce((function(t,e){return t*e})),o=[[0,0]];o.push.apply(o,n);for(var a=1+e.length;a<t.shape.length;++a)o.push([0,0]);var i=t.pad(o),s=zr(i.shape,e,r,!1),u=Gr(s.length,e.length,!1),c=Hr(i.shape,e,r,!1);return i.reshape(s).transpose(u).reshape(c)},o.prototype.pool=function(t,e,n){Hh(t,\"pool\");for(var r=e.strideHeight,o=e.strideWidth,a=e.dilationHeight,i=e.dilationWidth,s=e.effectiveFilterHeight,u=e.effectiveFilterWidth,c=e.padInfo.top,l=e.padInfo.left,h=\"max\"===n?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,f=this.readSync(t.dataId),d=dr(e.outShape,t.dtype),p=d.values,v=e.outShape[1]*e.outShape[2]*e.outShape[3],m=e.outShape[2]*e.outShape[3],g=e.outShape[3],y=0;y<e.batchSize;++y)for(var x=y*v,b=y*t.strides[0],w=0;w<e.inChannels;++w)for(var C=0;C<e.outHeight;++C)for(var E=C*r-c,R=Math.max(0,E),I=Math.min(e.inHeight,s+E),k=x+C*m,S=0;S<e.outWidth;++S){for(var A=S*o-l,D=Math.max(0,A),T=Math.min(e.inWidth,u+A),N=h,F=0,_=0,O=R;O<I;O+=a){for(var M=b+O*t.strides[1],B=D;B<T;B+=i){var P=f[M+B*t.strides[2]+w];\"max\"===n&&P>N?N=P:\"avg\"===n&&(F+=P,_++)}if(isNaN(N))break}p[k+S*g+w]=\"avg\"===n?F/_:N}return d.toTensor()},o.prototype.maxPool=function(t,e){return this.pool(t,e,\"max\")},o.prototype.maxPoolPositions=function(t,e){for(var n=dr(e.outShape,\"int32\"),r=e.strideHeight,o=e.strideWidth,a=e.dilationHeight,i=e.dilationWidth,s=e.effectiveFilterHeight,u=e.effectiveFilterWidth,c=e.padInfo.top,l=e.padInfo.left,h=this.bufferSync(t),f=0;f<e.batchSize;++f)for(var d=0;d<e.inChannels;++d)for(var p=0;p<e.outHeight;++p){for(var v=p*r-c,m=v;m<0;)m+=a;for(var g=Math.min(e.inHeight,s+v),y=0;y<e.outWidth;++y){for(var x=y*o-l,b=x;b<0;)b+=i;for(var w=Math.min(e.inWidth,u+x),C=Number.NEGATIVE_INFINITY,E=-1,R=m;R<g;R+=a)for(var I=R-v,k=b;k<w;k+=i){var S=k-x,A=h.get(f,R,k,d);A>C&&(C=A,E=I*u+S)}n.set(E,f,p,y,d)}}return n.toTensor()},o.prototype.maxPoolBackprop=function(t,e,n,r){Hh([e,n],\"maxPoolBackprop\");for(var o=this.maxPoolPositions(e,r),a=r.strideHeight,i=r.strideWidth,s=r.dilationHeight,u=r.dilationWidth,c=r.effectiveFilterHeight,l=r.effectiveFilterWidth,h=l-1-r.padInfo.left,f=c-1-r.padInfo.top,d=dr(e.shape,\"float32\"),p=this.bufferSync(o),v=this.bufferSync(t),m=0;m<r.batchSize;++m)for(var g=0;g<r.inChannels;++g)for(var y=0;y<r.inHeight;++y)for(var x=0;x<r.inWidth;++x){for(var b=y-f,w=x-h,C=0,E=0;E<c;E+=s){var R=(b+E)/a;if(!(R<0||R>=r.outHeight||Math.floor(R)!==R))for(var I=0;I<l;I+=u){var k=(w+I)/i;if(!(k<0||k>=r.outWidth||Math.floor(k)!==k)){var S=c*l-1-p.get(m,R,k,g)===E*l+I?1:0;if(0!==S)C+=v.get(m,R,k,g)*S}}}d.set(C,m,y,x,g)}return d.toTensor()},o.prototype.avgPoolBackprop=function(t,e,n){Hh([t,e],\"avgPoolBackprop\");for(var r=n.strideHeight,o=n.strideWidth,a=n.filterHeight,i=n.filterWidth,s=n.dilationHeight,u=n.dilationWidth,c=n.effectiveFilterHeight,l=n.effectiveFilterWidth,h=l-1-n.padInfo.left,f=c-1-n.padInfo.top,d=dr(e.shape,\"float32\"),p=1/(a*i),v=this.bufferSync(t),m=0;m<n.batchSize;++m)for(var g=0;g<n.inChannels;++g)for(var y=0;y<n.inHeight;++y)for(var x=0;x<n.inWidth;++x){for(var b=y-f,w=x-h,C=0,E=0;E<c;E+=s){var R=(b+E)/r;if(!(R<0||R>=n.outHeight||Math.floor(R)!==R))for(var I=0;I<l;I+=u){var k=(w+I)/o;if(!(k<0||k>=n.outWidth||Math.floor(k)!==k))C+=v.get(m,R,k,g)}}d.set(C*p,m,y,x,g)}return d.toTensor()},o.prototype.pool3d=function(t,e,n){Hh(t,\"pool3d\");for(var r=e.strideDepth,o=e.strideHeight,a=e.strideWidth,i=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,l=e.effectiveFilterHeight,h=e.effectiveFilterWidth,f=e.padInfo.front,d=e.padInfo.top,p=e.padInfo.left,v=\"max\"===n?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=this.readSync(t.dataId),g=dr(e.outShape,t.dtype),y=g.values,x=e.outShape[1]*e.outShape[2]*e.outShape[3]*e.outShape[4],b=e.outShape[2]*e.outShape[3]*e.outShape[4],w=e.outShape[3]*e.outShape[4],C=e.outShape[4],E=0;E<e.batchSize;++E)for(var R=E*x,I=E*t.strides[0],k=0;k<e.inChannels;++k)for(var S=0;S<e.outDepth;++S){for(var A=S*r-f,D=A;D<0;)D+=i;for(var T=Math.min(e.inDepth,c+A),N=R+S*b,F=0;F<e.outHeight;++F){for(var _=F*o-d,O=_;O<0;)O+=s;for(var M=Math.min(e.inHeight,l+_),B=N+F*w,P=0;P<e.outWidth;++P){for(var L=P*a-p,W=L;W<0;)W+=u;for(var U=Math.min(e.inWidth,h+L),V=B+P*C,z=v,G=0,H=0,q=D;q<T;q+=i){for(var K=I+q*t.strides[1],j=O;j<M;j+=s){for(var X=K+j*t.strides[2],Y=W;Y<U;Y+=u){var $=m[X+Y*t.strides[3]+k];if(\"max\"===n&&$>z?z=$:\"avg\"===n&&(G+=$,H++),isNaN(z))break}if(isNaN(z))break}if(isNaN(z))break}y[V+k]=\"avg\"===n?G/H:z}}}return g.toTensor()},o.prototype.avgPool3d=function(t,e){return Hh(t,\"avgPool3d\"),this.pool3d(t,e,\"avg\").toFloat()},o.prototype.avgPool3dBackprop=function(t,e,n){Hh([t,e],\"avgPool3dBackprop\");for(var r=n.strideDepth,o=n.strideHeight,a=n.strideWidth,i=n.filterDepth,s=n.filterHeight,u=n.filterWidth,c=n.dilationDepth,l=n.dilationHeight,h=n.dilationWidth,f=n.effectiveFilterDepth,d=n.effectiveFilterHeight,p=n.effectiveFilterWidth,v=f-1-n.padInfo.front,m=p-1-n.padInfo.left,g=d-1-n.padInfo.top,y=dr(e.shape,\"float32\"),x=1/(i*s*u),b=this.bufferSync(t),w=0;w<n.batchSize;++w)for(var C=0;C<n.inChannels;++C)for(var E=0;E<n.inDepth;++E)for(var R=0;R<n.inHeight;++R)for(var I=0;I<n.inWidth;++I){for(var k=E-v,S=R-g,A=I-m,D=0,T=0;T<f;T+=c){var N=(k+T)/r;if(!(N<0||N>=n.outDepth||Math.floor(N)!==N))for(var F=0;F<d;F+=l){var _=(S+F)/o;if(!(_<0||_>=n.outHeight||Math.floor(_)!==_))for(var O=0;O<p;O+=h){var M=(A+O)/a;if(!(M<0||M>=n.outWidth||Math.floor(M)!==M))D+=b.get(w,N,_,M,C)}}}y.set(D*x,w,E,R,I,C)}return y.toTensor()},o.prototype.maxPool3d=function(t,e){return Hh(t,\"maxPool3d\"),this.pool3d(t,e,\"max\").toFloat()},o.prototype.maxPool3dPositions=function(t,e){for(var n=dr(e.outShape,\"int32\"),r=e.strideDepth,o=e.strideHeight,a=e.strideWidth,i=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,l=e.effectiveFilterHeight,h=e.effectiveFilterWidth,f=e.padInfo.front,d=e.padInfo.top,p=e.padInfo.left,v=this.bufferSync(t),m=0;m<e.batchSize;++m)for(var g=0;g<e.inChannels;++g)for(var y=0;y<e.outDepth;++y){for(var x=y*r-f,b=x;b<0;)b+=i;for(var w=Math.min(e.inDepth,c+x),C=0;C<e.outHeight;++C){for(var E=C*o-d,R=E;R<0;)R+=s;for(var I=Math.min(e.inHeight,l+E),k=0;k<e.outWidth;++k){for(var S=k*a-p,A=S;A<0;)A+=u;for(var D=Math.min(e.inWidth,h+S),T=Number.NEGATIVE_INFINITY,N=-1,F=b;F<w;F+=i)for(var _=F-x,O=R;O<I;O+=s)for(var M=O-E,B=A;B<D;B+=u){var P=B-S,L=v.get(m,F,O,B,g);L>=T&&(T=L,N=_*l*h+M*l+P)}n.set(N,m,y,C,k,g)}}}return n.toTensor()},o.prototype.maxPool3dBackprop=function(t,e,n,r){Hh([e,n],\"maxPool3dBackprop\");for(var o=this.maxPool3dPositions(e,r),a=r.strideDepth,i=r.strideHeight,s=r.strideWidth,u=r.dilationDepth,c=r.dilationHeight,l=r.dilationWidth,h=r.effectiveFilterDepth,f=r.effectiveFilterHeight,d=r.effectiveFilterWidth,p=h-1-r.padInfo.front,v=d-1-r.padInfo.left,m=f-1-r.padInfo.top,g=dr(e.shape,\"float32\"),y=this.bufferSync(o),x=this.bufferSync(t),b=0;b<r.batchSize;++b)for(var w=0;w<r.inChannels;++w)for(var C=0;C<r.inDepth;++C)for(var E=0;E<r.inHeight;++E)for(var R=0;R<r.inWidth;++R){for(var I=C-p,k=E-m,S=R-v,A=0,D=0;D<h;D+=u){var T=(I+D)/a;if(!(T<0||T>=r.outDepth||Math.floor(T)!==T))for(var N=0;N<f;N+=c){var F=(k+N)/i;if(!(F<0||F>=r.outHeight||Math.floor(F)!==F))for(var _=0;_<d;_+=l){var O=(S+_)/s;if(!(O<0||O>=r.outWidth||Math.floor(O)!==O)){var M=h*f*d-1-y.get(b,T,F,O,w)===D*f*d+N*d+_?1:0;if(0!==M)A+=x.get(b,T,F,O,w)*M}}}}g.set(A,b,C,E,R,w)}return g.toTensor()},o.prototype.cast=function(t,e){return Po(t,e,this)},o.prototype.reshape=function(t,e){return Lo(t,e)},o.prototype.avgPool=function(t,e){return Hh(t,\"avgPool\"),this.pool(t,e,\"avg\").toFloat()},o.prototype.resizeBilinear=function(t,e,n,r){Hh(t,\"resizeBilinear\");for(var o=t.shape,a=o[0],i=o[1],s=o[2],u=o[3],c=this.readSync(t.dataId),l=new Float32Array(k([a,e,n,u])),h=[r&&e>1?i-1:i,r&&n>1?s-1:s],f=[r&&e>1?e-1:e,r&&n>1?n-1:n],d=0,p=h[0]/f[0],v=h[1]/f[1],m=0;m<a;m++)for(var g=0;g<e;g++)for(var y=p*g,x=Math.floor(y),b=y-x,w=Math.min(i-1,Math.ceil(y)),C=m*t.strides[0]+x*t.strides[1],E=m*t.strides[0]+w*t.strides[1],R=0;R<n;R++)for(var I=v*R,S=Math.floor(I),A=I-S,D=Math.min(s-1,Math.ceil(I)),T=C+S*t.strides[2],N=E+S*t.strides[2],F=C+D*t.strides[2],_=E+D*t.strides[2],O=0;O<u;O++){var M=c[T+O],B=c[N+O],P=M+(c[F+O]-M)*A,L=P+(B+(c[_+O]-B)*A-P)*b;l[d++]=L}return Fn(l,[a,e,n,u])},o.prototype.resizeBilinearBackprop=function(t,e,n){Hh([t,e],\"resizeBilinearBackprop\");for(var r=e.shape,o=r[0],a=r[1],i=r[2],s=r[3],u=t.shape,c=u[1],l=u[2],h=new Float32Array(o*a*i*s),f=[n&&c>1?a-1:a,n&&l>1?i-1:i],d=[n&&c>1?c-1:c,n&&l>1?l-1:l],p=f[0]/d[0],v=f[1]/d[1],m=this.readSync(t.dataId),g=0,y=0;y<o;y++)for(var x=y*e.strides[0],b=0;b<c;b++)for(var w=b*p,C=Math.floor(w),E=Math.min(Math.ceil(w),a-1),R=x+C*e.strides[1],I=x+E*e.strides[1],k=w-C,S=1-k,A=0;A<l;A++)for(var D=A*v,T=Math.floor(D),N=Math.min(Math.ceil(D),i-1),F=D-T,_=1-F,O=R+T*e.strides[2],M=R+N*e.strides[2],B=I+T*e.strides[2],P=I+N*e.strides[2],L=S*_,W=S*F,U=k*_,V=k*F,z=0;z<s;z++){var G=m[g++];h[O+z]+=G*L,h[M+z]+=G*W,h[B+z]+=G*U,h[P+z]+=G*V}return Ln(h,[o,i,a,s],e.dtype)},o.prototype.resizeNearestNeighbor=function(t,e,n,r){Hh(t,\"resizeNearestNeighbor\");for(var o=t.shape,a=o[0],i=o[1],s=o[2],u=o[3],c=this.readSync(t.dataId),l=new Float32Array(a*e*n*u),h=[r&&e>1?i-1:i,r&&n>1?s-1:s],f=[r&&e>1?e-1:e,r&&n>1?n-1:n],d=h[0]/f[0],p=h[1]/f[1],v=0,m=0;m<a;m++)for(var g=m*t.strides[0],y=0;y<e;y++)for(var x=d*y,b=g+Math.min(i-1,r?Math.round(x):Math.floor(x))*t.strides[1],w=0;w<n;w++)for(var C=p*w,E=b+Math.min(s-1,r?Math.round(C):Math.floor(C))*t.strides[2],R=0;R<u;R++){var I=c[E+R];l[v++]=I}return Fn(l,[a,e,n,u],t.dtype)},o.prototype.resizeNearestNeighborBackprop=function(t,e,n){Hh([t,e],\"resizeNearestNeighborBackprop\");for(var r=e.shape,o=r[0],a=r[1],i=r[2],s=r[3],u=t.shape,c=u[1],l=u[2],h=new Float32Array(o*a*i*s),f=this.readSync(t.dataId),d=[n&&c>1?a-1:a,n&&l>1?i-1:i],p=[n&&c>1?c-1:c,n&&l>1?l-1:l],v=d[0]/p[0],m=d[1]/p[1],g=1/v,y=1/m,x=2*Math.ceil(g)+2,b=2*Math.ceil(y)+2,w=0;w<o;w++)for(var C=w*e.strides[0],E=0;E<a;E++)for(var R=C+E*e.strides[1],I=Math.floor(E*g),k=Math.floor(I-x/2),S=0;S<i;S++)for(var A=R+S*e.strides[2],D=Math.floor(S*y),T=Math.floor(D-b/2),N=0;N<s;N++){for(var F=0,_=0;_<x;_++){var O=_+k;if(!(O<0||O>=c)){var M=C+O*t.strides[1],B=O*v;if(E===Math.min(a-1,n?Math.round(B):Math.floor(B)))for(var P=0;P<b;P++){var L=P+T;if(!(L<0||L>=l)){var W=M+L*t.strides[2],U=L*m;S===Math.min(i-1,n?Math.round(U):Math.floor(U))&&(F+=f[W+N])}}}}h[A+N]=F}return Ln(h,e.shape,e.dtype)},o.prototype.batchNormalization=function(t,e,n,r,o,a){Hh([t,e,n,o,a],\"batchNorm\");for(var i=this.readSync(t.dataId),s=this.readSync(e.dataId),u=this.readSync(n.dataId),c=o?this.readSync(o.dataId):new Float32Array([1]),l=a?this.readSync(a.dataId):new Float32Array([0]),h=new Float32Array(i.length),f=l.length,d=c.length,p=u.length,v=s.length,m=0,g=0,y=0,x=0,b=0;b<i.length;++b)h[b]=l[m++]+(i[b]-s[g++])*c[y++]/Math.sqrt(u[x++]+r),m>=f&&(m=0),g>=v&&(g=0),y>=d&&(y=0),x>=p&&(x=0);return Ln(h,t.shape)},o.prototype.localResponseNormalization4D=function(t,e,n,r,o){Hh(t,\"localResponseNormalization4D\");var a=t.shape[3],i=a-1,s=this.readSync(t.dataId),u=t.size,c=new Float32Array(u);function l(t){for(var n=t%a,r=t-n+Math.max(0,n-e),o=t-n+Math.min(n+e,i),u=0;r<=o;r++){var c=s[r];u+=c*c}return u}for(var h=0;h<u;h++){var f=l(h),d=s[h]*Math.pow(n+r*f,-o);c[h]=d}return Ln(c,t.shape)},o.prototype.LRNGrad=function(t,e,n,r,o,a,i){Hh(t,\"LRNGrad\");for(var s=t.shape[3],u=this.readSync(t.dataId),c=this.readSync(e.dataId),l=this.readSync(n.dataId),h=new Float32Array(t.size),f=t.size,d=0;d<f;d++){for(var p=d%s,v=d-p+Math.max(0,p-r),m=d-p+Math.min(s,p+r+1),g=0,y=v;y<m;y++)g+=Math.pow(c[y],2);g=a*g+o;for(y=v;y<m;y++){var x=-2*a*i*c[y]*l[d]/g;d===y&&(x+=Math.pow(g,-i)),x*=u[d],h[y]+=x}}return Ln(h,t.shape)},o.prototype.multinomial=function(t,e,n,r){Hh(t,\"multinomial\");for(var o=e?t:go(t),a=o.shape[0],i=o.shape[1],s=Gn([a,n],\"int32\"),u=this.readSync(s.dataId),c=this.readSync(o.dataId),l=0;l<a;++l){var h=l*i,f=new Float32Array(i-1);f[0]=c[h];for(var d=1;d<f.length;++d)f[d]=f[d-1]+c[h+d];for(var p=cr(r.toString()),v=l*n,m=0;m<n;++m){var g=p();u[v+m]=f.length;for(var y=0;y<f.length;y++)if(g<f[y]){u[v+m]=y;break}}}return s},o.prototype.oneHot=function(t,e,n,r){Hh(t,\"oneHot\");var o=new Float32Array(t.size*e);o.fill(r);for(var a=this.readSync(t.dataId),i=0;i<t.size;++i)a[i]>=0&&a[i]<e&&(o[i*e+a[i]]=n);return Bn(o,[t.size,e],\"int32\")},o.prototype.nonMaxSuppression=function(t,e,n,r,o){return Hh(t,\"nonMaxSuppression\"),jo(this.readSync(t.dataId),this.readSync(e.dataId),n,r,o)},o.prototype.fft=function(t){return this.fftBatch(t,!1)},o.prototype.ifft=function(t){return this.fftBatch(t,!0)},o.prototype.fftBatch=function(t,e){for(var n=t.shape[0],r=t.shape[1],o=dr(t.shape,\"float32\"),a=dr(t.shape,\"float32\"),i=Tn(t).as2D(n,r),s=Nn(t).as2D(n,r),u=0;u<n;u++)for(var c=i.slice([u,0],[1,r]),l=s.slice([u,0],[1,r]),h=Dn(c,l),f=this.readSync(this.fftImpl(h,e).dataId),d=0;d<r;d++){var p=zo(f,d);o.values[u*r+d]=p.real,a.values[u*r+d]=p.imag}return Dn(o.toTensor(),a.toTensor()).as2D(n,r)},o.prototype.fftImpl=function(t,e){var n=t.as1D(),r=n.size;if(this.isExponentOf2(r)){var o=this.fftRadix2(n,r,e).as2D(t.shape[0],t.shape[1]);return e&&(o=Dn(Tn(o).div(On(r)),Nn(o).div(On(r)))),o}var a=this.readSync(t.dataId),i=function(t){for(var e=new Float32Array(t.length/2),n=new Float32Array(t.length/2),r=0;r<t.length;r+=2)e[r/2]=t[r],n[r/2]=t[r+1];return{real:e,imag:n}}(this.fourierTransformByMatmul(a,r,e));return Dn(i.real,i.imag).as2D(t.shape[0],t.shape[1])},o.prototype.isExponentOf2=function(t){return 0==(t&t-1)},o.prototype.fftRadix2=function(t,e,n){if(1===e)return t;var r=this.readSync(t.dataId),o=e/2,a=function(t){for(var e=Math.ceil(t.length/4),n=new Float32Array(e),r=new Float32Array(e),o=0;o<t.length;o+=4)n[Math.floor(o/4)]=t[o],r[Math.floor(o/4)]=t[o+1];return{real:n,imag:r}}(r),i=Dn(a.real,a.imag).as1D(),s=function(t){for(var e=Math.floor(t.length/4),n=new Float32Array(e),r=new Float32Array(e),o=2;o<t.length;o+=4)n[Math.floor(o/4)]=t[o],r[Math.floor(o/4)]=t[o+1];return{real:n,imag:r}}(r),u=Dn(s.real,s.imag).as1D();i=this.fftRadix2(i,o,n),u=this.fftRadix2(u,o,n);var c=function(t,e){for(var n=new Float32Array(t/2),r=new Float32Array(t/2),o=0;o<Math.ceil(t/2);o++){var a=(e?2:-2)*Math.PI*(o/t);n[o]=Math.cos(a),r[o]=Math.sin(a)}return{real:n,imag:r}}(e,n),l=Dn(c.real,c.imag).mul(u),h=i.add(l),f=i.sub(l),d=Tn(h).concat(Tn(f)),p=Nn(h).concat(Nn(f));return Dn(d,p).as1D()},o.prototype.fourierTransformByMatmul=function(t,e,n){for(var r=new Float32Array(2*e),o=0;o<e;o++){for(var a=0,i=0,s=0;s<e;s++){var u=Ho(o*s,e,n),c=zo(t,s);a+=c.real*u.real-c.imag*u.imag,i+=c.real*u.imag+c.imag*u.real}n&&(a/=e,i/=e),Go(r,a,i,o)}return r},o.prototype.depthToSpace=function(t,e,n){C(\"NHWC\"===n,(function(){return\"Only NHWC dataFormat supported on CPU for depthToSpace. Got \"+n})),C(e>1,(function(){return\"blockSize should be > 1 for depthToSpace, but was: \"+e}));for(var r=t.shape[0],o=t.shape[1],a=t.shape[2],i=t.shape[3],s=o*e,u=a*e,c=i/(e*e),l=this.readSync(t.dataId),h=new Float32Array(r*s*u*c),f=0,d=0;d<r;++d)for(var p=0;p<s;++p)for(var v=Math.floor(p/e),m=p%e,g=0;g<u;++g)for(var y=Math.floor(g/e),x=(m*e+g%e)*c,b=0;b<c;++b){var w=b+x+i*(y+a*(v+o*d));h[f++]=l[w]}return Ln(h,[r,s,u,c])},o.prototype.broadcastedBinaryOp=function(t,e,n,r){var o=Ro(t.shape,e.shape),a=dr(o,n),i=this.readSync(t.dataId),s=this.readSync(e.dataId),u=Co(t.shape,o),c=Co(e.shape,o),l=a.values;if(u.length+c.length===0)for(var h=0;h<l.length;++h)l[h]=r(i[h%i.length],s[h%s.length]);else{var f=this.bufferSync(t),d=this.bufferSync(e),p=function(n){var o=a.indexToLoc(n),h=o.slice(-t.rank);u.forEach((function(t){return h[t]=0}));var p=f.locToIndex(h),v=o.slice(-e.rank);c.forEach((function(t){return v[t]=0}));var m=d.locToIndex(v);l[n]=r(i[p],s[m])};for(h=0;h<l.length;++h)p(h)}return a.toTensor()},o.prototype.broadcastedBinaryComplexOp=function(t,e,n){var r=Ro(t.shape,e.shape),o=dr(r,\"float32\"),a=dr(r,\"float32\"),i=this.readSync(t.dataId),s=this.readSync(e.dataId),u=Co(t.shape,r),c=Co(e.shape,r),l=o.values,h=a.values;if(u.length+c.length===0)for(var f=0;f<l.length;f++){var d=f%i.length,p=f%s.length,v=n(i[2*d],i[2*d+1],s[2*p],s[2*p+1]);l[f]=v.real,h[f]=v.imag}else{var m=this.bufferSync(this.data.get(t.dataId).complexTensors.real),g=this.bufferSync(this.data.get(e.dataId).complexTensors.real),y=function(r){var a=o.indexToLoc(r),f=a.slice(-t.rank);u.forEach((function(t){return f[t]=0}));var d=m.locToIndex(f),p=a.slice(-e.rank);c.forEach((function(t){return p[t]=0}));var v=g.locToIndex(p),y=n(i[2*d],i[2*d+1],s[2*v],s[2*v+1]);l[r]=y.real,h[r]=y.imag};for(f=0;f<l.length;f++)y(f)}return this.complex(o.toTensor(),a.toTensor())},o.prototype.split=function(t,e,n){return Zo(t,e,n)},o.prototype.dispose=function(){},o.prototype.floatPrecision=function(){return 32},o.prototype.epsilon=function(){return 1e-7},o.prototype.cropAndResize=function(t,e,n,r,o,a){for(var i=t.shape,s=i[0],u=i[1],c=i[2],l=i[3],h=e.shape[0],f=r[0],d=r[1],p=dr([h,f,d,l],\"float32\"),v=this.readSync(e.dataId),m=this.readSync(n.dataId),g=this.readSync(t.dataId),y=t.strides,x=p.strides,b=0;b<h;b++){var w=4*b,C=v[w],E=v[w+1],R=v[w+2],I=v[w+3],k=m[b];if(!(k>=s))for(var S=f>1?(R-C)*(u-1)/(f-1):0,A=d>1?(I-E)*(c-1)/(d-1):0,D=0;D<f;D++){var T=f>1?C*(u-1)+D*S:.5*(C+R)*(u-1);if(T<0||T>u-1)for(var N=0;N<d;N++)for(var F=0;F<l;F++){var _=F+N*x[2]+D*x[1]+b*x[0];p.values[_]=a}else if(\"bilinear\"===o){var O=Math.floor(T),M=Math.ceil(T),B=T-O;for(N=0;N<d;N++){if((q=d>1?E*(c-1)+N*A:.5*(E+I)*(c-1))<0||q>c-1)for(F=0;F<l;F++){_=F+N*x[2]+D*x[1]+b*x[0];p.values[_]=a}else{var P=Math.floor(q),L=Math.ceil(q),W=q-P;for(F=0;F<l;F++){var U=g[_=F+P*y[2]+O*y[1]+k*y[0]],V=g[_=F+L*y[2]+O*y[1]+k*y[0]],z=g[_=F+P*y[2]+M*y[1]+k*y[0]],G=U+(V-U)*W,H=z+(g[_=F+L*y[2]+M*y[1]+k*y[0]]-z)*W;_=F+N*x[2]+D*x[1]+b*x[0],p.values[_]=G+(H-G)*B}}}}else for(N=0;N<d;++N){var q;if((q=d>1?E*(c-1)+N*A:.5*(E+I)*(c-1))<0||q>c-1)for(F=0;F<l;F++){_=F+N*x[2]+D*x[1]+b*x[0];p.values[_]=a}else{var K=Math.round(q),j=Math.round(T);for(F=0;F<l;F++){var X=F+K*y[2]+j*y[1]+k*y[0],Y=F+N*x[2]+D*x[1]+b*x[0];p.values[Y]=g[X]}}}}}return p.toTensor()},o.prototype.sparseToDense=function(t,e,n,r){var o=Zr(0,t,n),a=o.sliceRank,i=o.numUpdates,s=o.sliceSize,u=o.strides,c=o.outputSize;return this.scatter(t,e,n,c,s,i,a,u,r,!1)},o.prototype.gatherND=function(t,e){var n=e.shape,r=n[n.length-1],o=jr(t,e),a=o[0],i=o[1],s=o[2],u=o[3];if(0===i)return Fn([],a,t.dtype);for(var c=new gt([i,s],t.dtype),l=this.readSync(e.dataId),h=this.readSync(t.dataId),f=0;f<i;f++){for(var d=[],p=0,v=0;v<r;v++){var m=l[f*r+v];p+=m*u[v],d.push(m)}if(p<0||p>=t.size/s)throw new Error(\"Invalid indices: \"+d+\" does not index into \"+t.shape);for(var g=0;g<s;g++)c.values[f*s+g]=h[p*s+g]}return c.toTensor().reshape(a)},o.prototype.scatterND=function(t,e,n){var r=Zr(0,t,n),o=r.sliceRank,a=r.numUpdates,i=r.sliceSize,s=r.strides,u=r.outputSize,c=On(0);return this.scatter(t,e,n,u,i,a,o,s,c,!0)},o.prototype.fill=function(t,e,n){var r=P(n=n||j(e),k(t));return r.fill(e),Lt.makeTensor(r,t,n,this)},o.prototype.onesLike=function(t){if(\"string\"===t.dtype)throw new Error(\"onesLike is not supported for string tensors\");return this.fill(t.shape,1,t.dtype)},o.prototype.zerosLike=function(t){var e=P(t.dtype,k(t.shape));return this.makeOutput(e,t.shape,t.dtype)},o.prototype.linspace=function(t,e,n){return Wo(t,e,n)},o.prototype.scatter=function(t,e,n,r,o,a,i,s,u,c){var l=[r/o,o],h=this.readSync(t.dataId),f=this.readSync(e.dataId);if(0===r)return Fn([],n,e.dtype);var d=new gt(l,e.dtype);d.values.fill(this.readSync(u.dataId)[0]);for(var p=0;p<a;p++){for(var v=[],m=0,g=0;g<i;g++){var y=h[p*i+g];v.push(y),m+=y*s[g]}if(m<0||m>=r/o)throw new Error(\"Invalid indices: \"+v+\" does not index into \"+n);for(var x=0;x<o;x++)c?d.values[m*o+x]+=f[p*o+x]:d.values[m*o+x]=0===e.rank?f[0]:f[p*o+x]}return d.toTensor().reshape(n)},o}(bo);Lt.registerBackend(\"cpu\",(function(){return new Kh}),1);for(var jh=0,Xh=[{kernelName:\"NonMaxSuppressionV5\",backendName:\"cpu\",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=t.attrs,o=e,a=o.boxes,i=o.scores,s=r,u=s.maxOutputSize,c=s.iouThreshold,l=s.scoreThreshold,h=s.softNmsSigma,f=n;Hh(a,\"NonMaxSuppressionWithScore\");var d=Xo(f.data.get(a.dataId).values,f.data.get(i.dataId).values,u,c,l,h);return[d.selectedIndices,d.selectedScores]}},{kernelName:\"Square\",backendName:\"cpu\",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=e.x,o=n;Hh(r,\"square\");for(var a=o.data.get(r.dataId).values,i=new Float32Array(a.length),s=0;s<a.length;++s){var u=a[s];i[s]=u*u}return{dataId:o.write(i,r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}},{kernelName:eu,backendName:\"cpu\",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=e,o=r.a,a=r.b,i=n;Hh([o,a],eu);var s=i.data.get(o.dataId).values,u=i.data.get(a.dataId).values,c=function(t,e,n,r,o,a){var i=Ro(t,e),s=i.length,u=$(i),c=B(o,k(i)),l=t.length,h=e.length,f=$(t),d=$(e),p=Co(t,i),v=Co(e,i);if(p.length+v.length===0)for(var m=0;m<c.length;++m)c[m]=a(n[m%n.length],r[m%r.length]);else{var g=function(t){var e=it(t,s,u),o=e.slice(-l);p.forEach((function(t){return o[t]=0}));var i=at(o,l,f),m=e.slice(-h);v.forEach((function(t){return m[t]=0}));var g=at(m,h,d);c[t]=a(n[i],r[g])};for(m=0;m<c.length;++m)g(m)}return[c,i]}(o.shape,a.shape,s,u,o.dtype,(function(t,e){var n=t-e;return n*n})),l=c[0],h=c[1];return{dataId:i.write(l,h,o.dtype),shape:h,dtype:o.dtype}}}];jh<Xh.length;jh++){d(Xh[jh])}var Yh,$h=function(t){this.variableNames=[\"A\"];var e=ua(),n=t[0],r=t[1];this.outputShape=t,this.userCode=\"\\n      void main() {\\n        ivec3 coords = getOutputCoords();\\n        int texR = coords[0];\\n        int texC = coords[1];\\n        int depth = coords[2];\\n        vec2 uv = (vec2(texC, texR) + halfCR) / vec2(\"+r+\".0, \"+n+\".0);\\n\\n        vec4 values = \"+e.texture2D+\"(A, uv);\\n        float value;\\n        if (depth == 0) {\\n          value = values.r;\\n        } else if (depth == 1) {\\n          value = values.g;\\n        } else if (depth == 2) {\\n          value = values.b;\\n        } else if (depth == 3) {\\n          value = values.a;\\n        }\\n\\n        setOutput(floor(value * 255.0 + 0.5));\\n      }\\n    \"},Qh=function(t){this.variableNames=[\"A\"],this.packedInputs=!1,this.packedOutput=!0;var e=ua(),n=t[0],r=t[1];this.outputShape=t,this.userCode=\"\\n      void main() {\\n        ivec3 coords = getOutputCoords();\\n        int texR = coords[0];\\n        int texC = coords[1];\\n        int depth = coords[2];\\n\\n        vec4 result = vec4(0.);\\n\\n        for(int row=0; row<=1; row++) {\\n          for(int col=0; col<=1; col++) {\\n            texC = coords[1] + row;\\n            depth = coords[2] + col;\\n\\n            vec2 uv = (vec2(texC, texR) + halfCR) /\\n                       vec2(\"+r+\".0, \"+n+\".0);\\n            vec4 values = \"+e.texture2D+\"(A, uv);\\n            float value;\\n            if (depth == 0) {\\n              value = values.r;\\n            } else if (depth == 1) {\\n              value = values.g;\\n            } else if (depth == 2) {\\n              value = values.b;\\n            } else if (depth == 3) {\\n              value = values.a;\\n            }\\n\\n            result[row * 2 + col] = floor(value * 255.0 + 0.5);\\n          }\\n        }\\n\\n        \"+e.output+\" = result;\\n      }\\n    \"};for(var Jh=0,Zh=[{kernelName:\"FromPixels\",backendName:\"webgl\",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=t.attrs,o=e.pixels,a=r.numChannels,s=\"undefined\"!=typeof HTMLVideoElement&&o instanceof HTMLVideoElement,u=\"undefined\"!=typeof HTMLImageElement&&o instanceof HTMLImageElement,c=s?[o.videoWidth,o.videoHeight]:[o.width,o.height],l=c[0],h=c[1],f=[h,l],d=[h,l,a];(u||s)&&(null==Yh&&(Yh=document.createElement(\"canvas\").getContext(\"2d\")),Yh.canvas.width=l,Yh.canvas.height=h,Yh.drawImage(o,0,0,l,h),o=Yh.canvas);var p=n.makeTensorInfo(f,\"int32\");n.texData.get(p.dataId).usage=zt.PIXELS,n.gpgpu.uploadPixelDataToTexture(n.getTexture(p.dataId),o);var v=i().getBool(\"WEBGL_PACK\")?new Qh(d):new $h(d),m=n.runWebGLProgram(v,[p],\"int32\");return n.disposeData(p.dataId),m}},{kernelName:\"NonMaxSuppressionV5\",backendName:\"webgl\",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=t.attrs;dn(\"tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead\");var o=e,a=o.boxes,i=o.scores,s=r,u=s.maxOutputSize,c=s.iouThreshold,l=s.scoreThreshold,h=s.softNmsSigma,f=n,d=Xo(f.readSync(a.dataId),f.readSync(i.dataId),u,c,l,h);return[d.selectedIndices,d.selectedScores]}},{kernelName:\"Square\",backendName:\"webgl\",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=e.x,o=n,a=new Cs(r.shape,\"return x * x;\");return o.runWebGLProgram(a,[r],r.dtype)}},{kernelName:eu,backendName:\"webgl\",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=e,o=r.a,a=r.b,s=n,u=i().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\")?new La(\"return (a - b) * (a - b);\",o.shape,a.shape):new Ba(\"return (a - b) * (a - b);\",o.shape,a.shape);return s.compileAndRun(u,[o,a])}}];Jh<Zh.length;Jh++){d(Zh[Jh])}for(var tf=0,ef=[{kernelName:\"Square\",gradFunc:function(t,e){var n=e[0];return{x:function(){return t.mul(n.toFloat().mul(2))}}}},{kernelName:eu,gradFunc:function(t,e){var n=e[0],r=e[1],o=On(2);return{a:function(){return gc(t,gc(o,Cc(n,r)))},b:function(){return gc(t,gc(o,Cc(r,n)))}}}}];tf<ef.length;tf++){p(ef[tf])}var nf=function(){function t(){}return t.prototype.fetch=function(t,e){return fetch(t,e)},t.prototype.now=function(){return performance.now()},t.prototype.encode=function(t,e){if(\"utf-8\"!==e&&\"utf8\"!==e)throw new Error(\"Browser's encoder only supports utf-8, but got \"+e);return null==this.textEncoder&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(t)},t.prototype.decode=function(t,e){return new TextDecoder(e).decode(t)},t}();i().get(\"IS_BROWSER\")&&i().setPlatform(\"browser\",new nf);var rf,of=function(){return require(\"node-fetch\")},af=function(){function t(){this.util=require(\"util\"),this.textEncoder=new this.util.TextEncoder}return t.prototype.fetch=function(t,e){return null!=i().global.fetch?i().global.fetch(t,e):(null==rf&&(rf=of()),rf(t,e))},t.prototype.now=function(){var t=process.hrtime();return 1e3*t[0]+t[1]/1e6},t.prototype.encode=function(t,e){if(\"utf-8\"!==e&&\"utf8\"!==e)throw new Error(\"Node built-in encoder only supports utf-8, but got \"+e);return this.textEncoder.encode(t)},t.prototype.decode=function(t,e){return 0===t.length?\"\":new this.util.TextDecoder(e).decode(t)},t}();i().get(\"IS_NODE\")&&i().setPlatform(\"node\",new af);var sf={float32:4,int32:4,uint16:2,uint8:1,bool:1},uf=4;function cf(t,e){for(var n={},r=0,o=function(e){var o=e.name,a=e.dtype,i=e.shape,s=k(i),u=void 0;if(\"quantization\"in e){var c=e.quantization;if(\"uint8\"!==c.dtype&&\"uint16\"!==c.dtype)throw new Error(\"Weight \"+e.name+\" has unknown quantization dtype \"+c.dtype+\". Supported quantization dtypes are: 'uint8' and 'uint16'.\");var l=sf[c.dtype],h=t.slice(r,r+s*l),f=\"uint8\"===c.dtype?new Uint8Array(h):new Uint16Array(h);if(\"float32\"===a)u=Float32Array.from(f,(function(t){return t*c.scale+c.min}));else{if(\"int32\"!==a)throw new Error(\"Unsupported dtype in weight '\"+o+\"': \"+a);u=Int32Array.from(f,(function(t){return Math.round(t*c.scale+c.min)}))}r+=s*l}else if(\"string\"===a){var d=k(e.shape);u=[];for(var p=0;p<d;p++){var v=new Uint32Array(t.slice(r,r+uf))[0];r+=uf;var m=new Uint8Array(t.slice(r,r+v));u.push(m),r+=v}}else{var g=sf[a];h=t.slice(r,r+s*g);if(\"float32\"===a)u=new Float32Array(h);else if(\"int32\"===a)u=new Int32Array(h);else{if(\"bool\"!==a)throw new Error(\"Unsupported dtype in weight '\"+o+\"': \"+a);u=new Uint8Array(h)}r+=s*g}n[o]=Fn(u,i,a)},a=0,i=e;a<i.length;a++){o(i[a])}return n}function lf(t){if(null===t)throw new Error(\"Invalid input value: \"+JSON.stringify(t));var e=0,n=[];t.forEach((function(t){if(e+=t.byteLength,n.push(t.byteLength===t.buffer.byteLength?t:new t.constructor(t)),!(t instanceof Float32Array||t instanceof Int32Array||t instanceof Uint8Array))throw new Error(\"Unsupported TypedArray subtype: \"+t.constructor.name)}));var r=new Uint8Array(e),o=0;return n.forEach((function(t){r.set(new Uint8Array(t.buffer),o),o+=t.byteLength})),r.buffer}var hf=\"undefined\"!=typeof Buffer&&(\"undefined\"==typeof Blob||\"undefined\"==typeof atob||\"undefined\"==typeof btoa);function ff(t){return hf?Buffer.byteLength(t):new Blob([t]).size}function df(t){var e=0;t.forEach((function(t){e+=t.byteLength}));var n=new Uint8Array(e),r=0;return t.forEach((function(t){n.set(new Uint8Array(t),r),r+=t.byteLength})),n.buffer}function pf(t){for(t=t.trim();t.endsWith(\"/\");)t=t.slice(0,t.length-1);var e=t.split(\"/\");return e[e.length-1]}function vf(t){if(t.modelTopology instanceof ArrayBuffer)throw new Error(\"Expected JSON model topology, received ArrayBuffer.\");return{dateSaved:new Date,modelTopologyType:\"JSON\",modelTopologyBytes:null==t.modelTopology?0:ff(JSON.stringify(t.modelTopology)),weightSpecsBytes:null==t.weightSpecs?0:ff(JSON.stringify(t.weightSpecs)),weightDataBytes:null==t.weightData?0:t.weightData.byteLength}}var mf=function(){function t(){this.saveRouters=[],this.loadRouters=[]}return t.getInstance=function(){return null==t.instance&&(t.instance=new t),t.instance},t.registerSaveRouter=function(e){t.getInstance().saveRouters.push(e)},t.registerLoadRouter=function(e){t.getInstance().loadRouters.push(e)},t.getSaveHandlers=function(e){return t.getHandlers(e,\"save\")},t.getLoadHandlers=function(e,n){return t.getHandlers(e,\"load\",n)},t.getHandlers=function(e,n,r){var o=[];return(\"load\"===n?t.getInstance().loadRouters:t.getInstance().saveRouters).forEach((function(t){var n=t(e,r);null!==n&&o.push(n)})),o},t}(),gf=\"://\",yf=function(){function t(){this.managers={}}return t.getInstance=function(){return null==t.instance&&(t.instance=new t),t.instance},t.registerManager=function(e,n){C(null!=e,(function(){return\"scheme must not be undefined or null.\"})),e.endsWith(gf)&&(e=e.slice(0,e.indexOf(gf))),C(e.length>0,(function(){return\"scheme must not be an empty string.\"}));var r=t.getInstance();C(null==r.managers[e],(function(){return\"A model store manager is already registered for scheme '\"+e+\"'.\"})),r.managers[e]=n},t.getManager=function(t){var e=this.getInstance().managers[t];if(null==e)throw new Error(\"Cannot find model manager for scheme '\"+t+\"'\");return e},t.getSchemes=function(){return Object.keys(this.getInstance().managers)},t}();function xf(t){if(-1===t.indexOf(gf))throw new Error(\"The url string provided does not contain a scheme. Supported schemes are: \"+yf.getSchemes().join(\",\"));return{scheme:t.split(gf)[0],path:t.split(gf)[1]}}function bf(t,e,o){return void 0===o&&(o=!1),n(this,void 0,void 0,(function(){var n,a,i,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:return C(t!==e,(function(){return\"Old path and new path are the same: '\"+t+\"'\"})),C((n=mf.getLoadHandlers(t)).length>0,(function(){return\"Copying failed because no load handler is found for source URL \"+t+\".\"})),C(n.length<2,(function(){return\"Copying failed because more than one (\"+n.length+\") load handlers for source URL \"+t+\".\"})),a=n[0],C((i=mf.getSaveHandlers(e)).length>0,(function(){return\"Copying failed because no save handler is found for destination URL \"+e+\".\"})),C(i.length<2,(function(){return\"Copying failed because more than one (\"+n.length+\") save handlers for destination URL \"+e+\".\"})),s=i[0],u=xf(t).scheme,c=xf(t).path,l=u===xf(t).scheme,[4,a.load()];case 1:return h=r.sent(),o&&l?[4,yf.getManager(u).removeModel(c)]:[3,3];case 2:r.sent(),r.label=3;case 3:return[4,s.save(h)];case 4:return f=r.sent(),!o||l?[3,6]:[4,yf.getManager(u).removeModel(c)];case 5:r.sent(),r.label=6;case 6:return[2,f.modelArtifactsInfo]}}))}))}var wf=\"models_store\",Cf=\"model_info_store\";function Ef(){if(!i().getBool(\"IS_BROWSER\"))throw new Error(\"Failed to obtain IndexedDB factory because the current environmentis not a web browser.\");var t=window||self,e=t.indexedDB||t.mozIndexedDB||t.webkitIndexedDB||t.msIndexedDB||t.shimIndexedDB;if(null==e)throw new Error(\"The current browser does not appear to support IndexedDB.\");return e}function Rf(t){var e=t.result;e.createObjectStore(wf,{keyPath:\"modelPath\"}),e.createObjectStore(Cf,{keyPath:\"modelPath\"})}var If=function(){function t(t){if(this.indexedDB=Ef(),null==t||!t)throw new Error(\"For IndexedDB, modelPath must not be null, undefined or empty.\");this.modelPath=t}return t.prototype.save=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(e){if(t.modelTopology instanceof ArrayBuffer)throw new Error(\"BrowserLocalStorage.save() does not support saving model topology in binary formats yet.\");return[2,this.databaseAction(this.modelPath,t)]}))}))},t.prototype.load=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){return[2,this.databaseAction(this.modelPath)]}))}))},t.prototype.databaseAction=function(t,e){var n=this;return new Promise((function(t,r){var o=n.indexedDB.open(\"tensorflowjs\",1);o.onupgradeneeded=function(){return Rf(o)},o.onsuccess=function(){var a=o.result;if(null==e){var i=a.transaction(wf,\"readonly\"),s=i.objectStore(wf).get(n.modelPath);s.onsuccess=function(){if(null==s.result)return a.close(),r(new Error(\"Cannot find model with path '\"+n.modelPath+\"' in IndexedDB.\"));t(s.result.modelArtifacts)},s.onerror=function(t){return a.close(),r(s.error)},i.oncomplete=function(){return a.close()}}else{var u,c=vf(e),l=a.transaction(Cf,\"readwrite\"),h=l.objectStore(Cf),f=h.put({modelPath:n.modelPath,modelArtifactsInfo:c});f.onsuccess=function(){var o=(u=a.transaction(wf,\"readwrite\")).objectStore(wf).put({modelPath:n.modelPath,modelArtifacts:e,modelArtifactsInfo:c});o.onsuccess=function(){return t({modelArtifactsInfo:c})},o.onerror=function(t){var e=(h=l.objectStore(Cf)).delete(n.modelPath);e.onsuccess=function(){return a.close(),r(o.error)},e.onerror=function(t){return a.close(),r(o.error)}}},f.onerror=function(t){return a.close(),r(f.error)},l.oncomplete=function(){null==u?a.close():u.oncomplete=function(){return a.close()}}}},o.onerror=function(t){return r(o.error)}}))},t.URL_SCHEME=\"indexeddb://\",t}(),kf=function(t){return i().getBool(\"IS_BROWSER\")&&!Array.isArray(t)&&t.startsWith(If.URL_SCHEME)?(e=t.slice(If.URL_SCHEME.length),new If(e)):null;var e};mf.registerSaveRouter(kf),mf.registerLoadRouter(kf);var Sf=function(){function t(){this.indexedDB=Ef()}return t.prototype.listModels=function(){return n(this,void 0,void 0,(function(){var t=this;return r(this,(function(e){return[2,new Promise((function(e,n){var r=t.indexedDB.open(\"tensorflowjs\",1);r.onupgradeneeded=function(){return Rf(r)},r.onsuccess=function(){var t=r.result,o=t.transaction(Cf,\"readonly\"),a=o.objectStore(Cf).getAll();a.onsuccess=function(){for(var t={},n=0,r=a.result;n<r.length;n++){var o=r[n];t[o.modelPath]=o.modelArtifactsInfo}e(t)},a.onerror=function(e){return t.close(),n(a.error)},o.oncomplete=function(){return t.close()}},r.onerror=function(t){return n(r.error)}}))]}))}))},t.prototype.removeModel=function(t){return n(this,void 0,void 0,(function(){var e=this;return r(this,(function(n){var r;return t=(r=t).startsWith(If.URL_SCHEME)?r.slice(If.URL_SCHEME.length):r,[2,new Promise((function(n,r){var o=e.indexedDB.open(\"tensorflowjs\",1);o.onupgradeneeded=function(){return Rf(o)},o.onsuccess=function(){var e,a=o.result,i=a.transaction(Cf,\"readwrite\"),s=i.objectStore(Cf),u=s.get(t);u.onsuccess=function(){if(null==u.result)return a.close(),r(new Error(\"Cannot find model with path '\"+t+\"' in IndexedDB.\"));var o=s.delete(t),i=function(){var o=(e=a.transaction(wf,\"readwrite\")).objectStore(wf).delete(t);o.onsuccess=function(){return n(u.result.modelArtifactsInfo)},o.onerror=function(t){return r(u.error)}};o.onsuccess=i,o.onerror=function(t){return i(),a.close(),r(u.error)}},u.onerror=function(t){return a.close(),r(u.error)},i.oncomplete=function(){null==e?a.close():e.oncomplete=function(){return a.close()}}},o.onerror=function(t){return r(o.error)}}))]}))}))},t}();if(i().getBool(\"IS_BROWSER\"))try{yf.registerManager(If.URL_SCHEME,new Sf)}catch(t){}var Af=\"/\",Df=\"tensorflowjs_models\",Tf=\"info\",Nf=\"model_topology\",Ff=\"weight_specs\",_f=\"weight_data\",Of=\"model_metadata\";function Mf(t){return{info:[Df,t,Tf].join(Af),topology:[Df,t,Nf].join(Af),weightSpecs:[Df,t,Ff].join(Af),weightData:[Df,t,_f].join(Af),modelMetadata:[Df,t,Of].join(Af)}}function Bf(t){var e=t.split(Af);if(e.length<3)throw new Error(\"Invalid key format: \"+t);return e.slice(1,e.length-1).join(Af)}var Pf=function(){function t(t){if(!i().getBool(\"IS_BROWSER\")||\"undefined\"==typeof window||void 0===window.localStorage)throw new Error(\"The current environment does not support local storage.\");if(this.LS=window.localStorage,null==t||!t)throw new Error(\"For local storage, modelPath must not be null, undefined or empty.\");this.modelPath=t,this.keys=Mf(this.modelPath)}return t.prototype.save=function(t){return n(this,void 0,void 0,(function(){var e,n,o;return r(this,(function(r){if(t.modelTopology instanceof ArrayBuffer)throw new Error(\"BrowserLocalStorage.save() does not support saving model topology in binary formats yet.\");e=JSON.stringify(t.modelTopology),n=JSON.stringify(t.weightSpecs),o=vf(t);try{return this.LS.setItem(this.keys.info,JSON.stringify(o)),this.LS.setItem(this.keys.topology,e),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,function(t){if(hf)return Buffer.from(t).toString(\"base64\");for(var e=new Uint8Array(t),n=\"\",r=0,o=e.length;r<o;r++)n+=String.fromCharCode(e[r]);return btoa(n)}(t.weightData)),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata})),[2,{modelArtifactsInfo:o}]}catch(t){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(\"Failed to save model '\"+this.modelPath+\"' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=\"+o.modelTopologyBytes+\", weightSpecsBytes=\"+o.weightSpecsBytes+\", weightDataBytes=\"+o.weightDataBytes+\".\")}return[2]}))}))},t.prototype.load=function(){return n(this,void 0,void 0,(function(){var t,e,n,o,a,i,s;return r(this,(function(r){if(null==(t=JSON.parse(this.LS.getItem(this.keys.info))))throw new Error(\"In local storage, there is no model with name '\"+this.modelPath+\"'\");if(\"JSON\"!==t.modelTopologyType)throw new Error(\"BrowserLocalStorage does not support loading non-JSON model topology yet.\");if(e={},null==(n=JSON.parse(this.LS.getItem(this.keys.topology))))throw new Error(\"In local storage, the topology of model '\"+this.modelPath+\"' is missing.\");if(e.modelTopology=n,null==(o=JSON.parse(this.LS.getItem(this.keys.weightSpecs))))throw new Error(\"In local storage, the weight specs of model '\"+this.modelPath+\"' are missing.\");if(e.weightSpecs=o,null!=(a=this.LS.getItem(this.keys.modelMetadata))&&(i=JSON.parse(a),e.format=i.format,e.generatedBy=i.generatedBy,e.convertedBy=i.convertedBy,e.userDefinedMetadata=i.userDefinedMetadata),null==(s=this.LS.getItem(this.keys.weightData)))throw new Error(\"In local storage, the binary weight values of model '\"+this.modelPath+\"' are missing.\");return e.weightData=function(t){if(hf){var e=Buffer.from(t,\"base64\");return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}for(var n=atob(t),r=new Uint8Array(n.length),o=0;o<n.length;++o)r.set([n.charCodeAt(o)],o);return r.buffer}(s),[2,e]}))}))},t.URL_SCHEME=\"localstorage://\",t}(),Lf=function(t){return i().getBool(\"IS_BROWSER\")&&!Array.isArray(t)&&t.startsWith(Pf.URL_SCHEME)?(e=t.slice(Pf.URL_SCHEME.length),new Pf(e)):null;var e};mf.registerSaveRouter(Lf),mf.registerLoadRouter(Lf);var Wf=function(){function t(){C(i().getBool(\"IS_BROWSER\"),(function(){return\"Current environment is not a web browser\"})),C(\"undefined\"==typeof window||void 0!==window.localStorage,(function(){return\"Current browser does not appear to support localStorage\"})),this.LS=window.localStorage}return t.prototype.listModels=function(){return n(this,void 0,void 0,(function(){var t,e,n,o,a,i;return r(this,(function(r){for(t={},e=Df+Af,n=Af+Tf,o=0;o<this.LS.length;++o)(a=this.LS.key(o)).startsWith(e)&&a.endsWith(n)&&(i=Bf(a),t[i]=JSON.parse(this.LS.getItem(a)));return[2,t]}))}))},t.prototype.removeModel=function(t){return n(this,void 0,void 0,(function(){var e,n;return r(this,(function(r){var o;if(t=(o=t).startsWith(Pf.URL_SCHEME)?o.slice(Pf.URL_SCHEME.length):o,e=Mf(t),null==this.LS.getItem(e.info))throw new Error(\"Cannot find model at path '\"+t+\"'\");return n=JSON.parse(this.LS.getItem(e.info)),this.LS.removeItem(e.info),this.LS.removeItem(e.topology),this.LS.removeItem(e.weightSpecs),this.LS.removeItem(e.weightData),[2,n]}))}))},t}();if(i().getBool(\"IS_BROWSER\"))try{yf.registerManager(Pf.URL_SCHEME,new Wf)}catch(t){}var Uf=\"model\",Vf=\".json\",zf=\".weights.bin\";function Gf(t){return new Promise((function(t){return setTimeout(t)})).then(t)}var Hf=function(){function t(e){if(!i().getBool(\"IS_BROWSER\"))throw new Error(\"browserDownloads() cannot proceed because the current environment is not a browser.\");e.startsWith(t.URL_SCHEME)&&(e=e.slice(t.URL_SCHEME.length)),null!=e&&0!==e.length||(e=Uf),this.modelTopologyFileName=e+Vf,this.weightDataFileName=e+zf}return t.prototype.save=function(t){return n(this,void 0,void 0,(function(){var e,n,o,a,i,s;return r(this,(function(r){switch(r.label){case 0:if(\"undefined\"==typeof document)throw new Error(\"Browser downloads are not supported in this environment since `document` is not present\");if(e=window.URL.createObjectURL(new Blob([t.weightData],{type:\"application/octet-stream\"})),!(t.modelTopology instanceof ArrayBuffer))return[3,1];throw new Error(\"BrowserDownloads.save() does not support saving model topology in binary formats yet.\");case 1:return n=[{paths:[\"./\"+this.weightDataFileName],weights:t.weightSpecs}],o={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,weightsManifest:n},a=window.URL.createObjectURL(new Blob([JSON.stringify(o)],{type:\"application/json\"})),(i=null==this.jsonAnchor?document.createElement(\"a\"):this.jsonAnchor).download=this.modelTopologyFileName,i.href=a,[4,Gf((function(){return i.dispatchEvent(new MouseEvent(\"click\"))}))];case 2:return r.sent(),null==t.weightData?[3,4]:((s=null==this.weightDataAnchor?document.createElement(\"a\"):this.weightDataAnchor).download=this.weightDataFileName,s.href=e,[4,Gf((function(){return s.dispatchEvent(new MouseEvent(\"click\"))}))]);case 3:r.sent(),r.label=4;case 4:return[2,{modelArtifactsInfo:vf(t)}]}}))}))},t.URL_SCHEME=\"downloads://\",t}(),qf=function(){function t(t){if(null==t||t.length<1)throw new Error(\"When calling browserFiles, at least 1 file is required, but received \"+t);this.files=t}return t.prototype.load=function(){return n(this,void 0,void 0,(function(){var t,e,n=this;return r(this,(function(r){return t=this.files[0],e=this.files.slice(1),[2,new Promise((function(r,o){var a=new FileReader;a.onload=function(a){var i=JSON.parse(a.target.result),s=i.modelTopology;if(null!=s){0===e.length&&r({modelTopology:s});var u=i.weightsManifest;if(null!=u){var c;try{c=n.checkManifestAndWeightFiles(u,e)}catch(t){return void o(t)}var l=[],h=[],f=[];u.forEach((function(t){t.paths.forEach((function(t){h.push(t),f.push(null)})),l.push.apply(l,t.weights)})),u.forEach((function(t){t.paths.forEach((function(t){var e=new FileReader;e.onload=function(e){var n=e.target.result,o=h.indexOf(t);f[o]=n,-1===f.indexOf(null)&&r({modelTopology:s,weightSpecs:l,weightData:df(f),format:i.format,generatedBy:i.generatedBy,convertedBy:i.convertedBy,userDefinedMetadata:i.userDefinedMetadata})},e.onerror=function(e){return o(\"Failed to weights data from file of path '\"+t+\"'.\")},e.readAsArrayBuffer(c[t])}))}))}else o(new Error(\"weightManifest field is missing from file \"+t.name))}else o(new Error(\"modelTopology field is missing from file \"+t.name))},a.onerror=function(e){return o(\"Failed to read model topology and weights manifest JSON from file '\"+t.name+\"'. BrowserFiles supports loading Keras-style tf.Model artifacts only.\")},a.readAsText(t)}))]}))}))},t.prototype.checkManifestAndWeightFiles=function(t,e){for(var n=[],r=e.map((function(t){return pf(t.name)})),o={},a=0,i=t;a<i.length;a++){i[a].paths.forEach((function(t){var a=pf(t);if(-1!==n.indexOf(a))throw new Error(\"Duplicate file basename found in weights manifest: '\"+a+\"'\");if(n.push(a),-1===r.indexOf(a))throw new Error(\"Weight file with basename '\"+a+\"' is not provided.\");o[t]=e[r.indexOf(a)]}))}if(n.length!==e.length)throw new Error(\"Mismatch in the number of files in weights manifest (\"+n.length+\") and the number of weight files provided (\"+e.length+\").\");return o},t}();function Kf(t,e,n,r){!function(t){C(null!=t&&Array.isArray(t)&&t.length>0,(function(){return\"promises must be a none empty array\"}))}(t),function(t,e){C(t>=0&&t<=1,(function(){return\"Progress fraction must be in range [0, 1], but got startFraction \"+t})),C(e>=0&&e<=1,(function(){return\"Progress fraction must be in range [0, 1], but got endFraction \"+e})),C(e>=t,(function(){return\"startFraction must be no more than endFraction, but got startFraction \"+t+\" and endFraction \"+e}))}(n=null==n?0:n,r=null==r?1:r);var o=0;return Promise.all(t.map((function(a){return a.then((function(a){var i=n+ ++o/t.length*(r-n);return e(i),a})),a})))}function jf(t,e){return n(this,void 0,void 0,(function(){var n,o,a,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:return null==e&&(e={}),n=null==e.fetchFunc?i().platform.fetch:e.fetchFunc,o=t.map((function(t){return n(t,e.requestInit,{isBinary:!0})})),a=0,s=.5,null!=e.onProgress?[3,2]:[4,Promise.all(o)];case 1:return u=r.sent(),[3,4];case 2:return[4,Kf(o,e.onProgress,a,s)];case 3:u=r.sent(),r.label=4;case 4:return c=u.map((function(t){return t.arrayBuffer()})),l=.5,h=1,null!=e.onProgress?[3,6]:[4,Promise.all(c)];case 5:return f=r.sent(),[3,8];case 6:return[4,Kf(c,e.onProgress,l,h)];case 7:f=r.sent(),r.label=8;case 8:return[2,f]}}))}))}function Xf(t){var e=this;return function(o,a,i){return void 0===a&&(a=\"\"),n(e,void 0,void 0,(function(){var e,n,s,u,c,l,h,f,d,p;return r(this,(function(r){switch(r.label){case 0:if(e=o.map((function(){return!1})),n={},s=null!=i?i.map((function(){return!1})):[],u=[],o.forEach((function(t,r){var o=0;t.weights.forEach((function(t){var a=\"quantization\"in t?t.quantization.dtype:t.dtype,c=sf[a]*k(t.shape),l=function(){e[r]=!0,null==n[r]&&(n[r]=[]),n[r].push({manifestEntry:t,groupOffset:o,sizeBytes:c})};null!=i?i.forEach((function(e,n){e===t.name&&(l(),s[n]=!0)})):l(),u.push(t.name),o+=c}))})),!s.every((function(t){return t})))throw c=i.filter((function(t,e){return!s[e]})),new Error(\"Could not find weights in manifest with names: \"+c.join(\", \")+\". \\nManifest JSON has weights with names: \"+u.join(\", \")+\".\");return l=e.reduce((function(t,e,n){return e&&t.push(n),t}),[]),h=[],l.forEach((function(t){o[t].paths.forEach((function(t){var e=a+(a.endsWith(\"/\")?\"\":\"/\")+t;h.push(e)}))})),[4,t(h)];case 1:return f=r.sent(),d={},p=0,l.forEach((function(t){for(var e=o[t].paths.length,r=0,a=0;a<e;a++)r+=f[p+a].byteLength;for(var i=new ArrayBuffer(r),s=new Uint8Array(i),u=0,c=0;c<e;c++){var l=new Uint8Array(f[p+c]);s.set(l,u),u+=l.byteLength}n[t].forEach((function(t){var e=cf(i.slice(t.groupOffset,t.groupOffset+t.sizeBytes),[t.manifestEntry]);for(var n in e)d[n]=e[n]})),p+=e})),[2,d]}}))}))}}mf.registerSaveRouter((function(t){return i().getBool(\"IS_BROWSER\")&&!Array.isArray(t)&&t.startsWith(Hf.URL_SCHEME)?function(t){void 0===t&&(t=\"model\");return new Hf(t)}(t.slice(Hf.URL_SCHEME.length)):null}));var Yf=function(){function t(t,e){if(this.DEFAULT_METHOD=\"POST\",null==e&&(e={}),this.weightPathPrefix=e.weightPathPrefix,this.onProgress=e.onProgress,null!=e.fetchFunc?(C(\"function\"==typeof e.fetchFunc,(function(){return\"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)\"})),this.fetch=e.fetchFunc):this.fetch=i().platform.fetch,C(null!=t&&t.length>0,(function(){return\"URL path for http must not be null, undefined or empty.\"})),Array.isArray(t)&&C(2===t.length,(function(){return\"URL paths for http must have a length of 2, (actual length is \"+t.length+\").\"})),this.path=t,null!=e.requestInit&&null!=e.requestInit.body)throw new Error(\"requestInit is expected to have no pre-existing body, but has one.\");this.requestInit=e.requestInit||{}}return t.prototype.save=function(t){return n(this,void 0,void 0,(function(){var e,n,o,a;return r(this,(function(r){switch(r.label){case 0:if(t.modelTopology instanceof ArrayBuffer)throw new Error(\"BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.\");return(e=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:[\"./model.weights.bin\"],weights:t.weightSpecs}],o={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata,weightsManifest:n},e.body.append(\"model.json\",new Blob([JSON.stringify(o)],{type:\"application/json\"}),\"model.json\"),null!=t.weightData&&e.body.append(\"model.weights.bin\",new Blob([t.weightData],{type:\"application/octet-stream\"}),\"model.weights.bin\"),[4,this.fetch(this.path,e)];case 1:if((a=r.sent()).ok)return[2,{modelArtifactsInfo:vf(t),responses:[a]}];throw new Error(\"BrowserHTTPRequest.save() failed due to HTTP response status \"+a.status+\".\")}}))}))},t.prototype.load=function(){return n(this,void 0,void 0,(function(){var t,e,n,o,a,i,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:return[4,this.fetch(this.path,this.requestInit)];case 1:if(!(t=r.sent()).ok)throw new Error(\"Request to \"+this.path+\" failed with status code \"+t.status+\". Please verify this URL points to the model JSON of the model to load.\");r.label=2;case 2:return r.trys.push([2,4,,5]),[4,t.json()];case 3:return e=r.sent(),[3,5];case 4:throw r.sent(),n=\"Failed to parse model JSON of response from \"+this.path+\".\",this.path.endsWith(\".pb\")?n+=\" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.\":n+=\" Please make sure the server is serving valid JSON for this request.\",new Error(n);case 5:if(o=e.modelTopology,a=e.weightsManifest,i=e.generatedBy,s=e.convertedBy,u=e.format,c=e.userDefinedMetadata,null==o&&null==a)throw new Error(\"The JSON from HTTP path \"+this.path+\" contains neither model topology or manifest for weights.\");return null==a?[3,7]:[4,this.loadWeights(a)];case 6:f=r.sent(),l=f[0],h=f[1],r.label=7;case 7:return[2,{modelTopology:o,weightSpecs:l,weightData:h,userDefinedMetadata:c,generatedBy:i,convertedBy:s,format:u}]}}))}))},t.prototype.loadWeights=function(t){return n(this,void 0,void 0,(function(){var e,n,o,a,i,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:for(e=Array.isArray(this.path)?this.path[1]:this.path,n=function(t){var e=t.lastIndexOf(\"/\"),n=t.lastIndexOf(\"?\"),r=t.substring(0,e),o=n>e?t.substring(n):\"\";return[r+\"/\",o]}(e),o=n[0],a=n[1],i=this.weightPathPrefix||o,s=[],u=0,c=t;u<c.length;u++)l=c[u],s.push.apply(s,l.weights);return h=[],t.forEach((function(t){t.paths.forEach((function(t){h.push(i+t+a)}))})),[4,jf(h,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress})];case 1:return f=r.sent(),[2,[s,df(f)]]}}))}))},t.URL_SCHEME_REGEX=/^https?:\\/\\//,t}();function $f(t){return null!=t.match(Yf.URL_SCHEME_REGEX)}var Qf=function(t,e){if(\"undefined\"==typeof fetch)return null;return(Array.isArray(t)?t.every((function(t){return $f(t)})):$f(t))?Jf(t,{onProgress:e}):null};function Jf(t,e){return new Yf(t,e)}mf.registerSaveRouter(Qf),mf.registerLoadRouter(Qf);var Zf=function(){function t(t){this.modelArtifacts=t}return t.prototype.load=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){return[2,this.modelArtifacts]}))}))},t}(),td=function(){function t(t){this.saveHandler=t}return t.prototype.save=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(e){return[2,this.saveHandler(t)]}))}))},t}();var ed=Object.freeze({browserFiles:function(t){return new qf(t)},browserHTTPRequest:function(t,e){return Jf(t,e)},concatenateArrayBuffers:df,decodeWeights:cf,encodeWeights:function(t,e){return n(this,void 0,void 0,(function(){var o,a,i,s,u,c=this;return r(this,(function(l){switch(l.label){case 0:for(o=[],a=[],i=Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t),s=function(s){var u=i[s],l=Array.isArray(t)?t[s].tensor:t[u];if(\"float32\"!==l.dtype&&\"int32\"!==l.dtype&&\"bool\"!==l.dtype&&\"string\"!==l.dtype)throw new Error(\"Unsupported dtype in weight '\"+u+\"': \"+l.dtype);var h={name:u,shape:l.shape,dtype:l.dtype};if(\"string\"===l.dtype){var f=new Promise((function(t){return n(c,void 0,void 0,(function(){var e,n,o,a,i,s,u;return r(this,(function(r){switch(r.label){case 0:return[4,l.bytes()];case 1:for(e=r.sent(),n=e.reduce((function(t,e){return t+e.length}),0)+uf*e.length,o=new Uint8Array(n),a=0,i=0;i<e.length;i++)s=e[i],u=new Uint8Array(new Uint32Array([s.length]).buffer),o.set(u,a),a+=uf,o.set(s,a),a+=s.length;return t(o),[2]}}))}))}));a.push(f)}else a.push(l.data());null!=e&&(h.group=e),o.push(h)},u=0;u<i.length;++u)s(u);return[4,Promise.all(a)];case 1:return[2,{data:lf(l.sent()),specs:o}]}}))}))},fromMemory:function(t,e,n,r){return 1===arguments.length?null!=t.modelTopology||null!=t.weightSpecs?new Zf(t):(console.warn(\"Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release.\"),new Zf({modelTopology:t})):(console.warn(\"Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release.\"),new Zf({modelTopology:t,weightSpecs:e,weightData:n,trainingConfig:r}))},getLoadHandlers:function(t,e){return mf.getLoadHandlers(t,e)},getModelArtifactsInfoForJSON:vf,getSaveHandlers:function(t){return mf.getSaveHandlers(t)},http:Jf,isHTTPScheme:$f,loadWeights:function(t,e,o,a){return void 0===e&&(e=\"\"),n(this,void 0,void 0,(function(){return r(this,(function(n){return[2,Xf((function(t){return jf(t,{requestInit:a})}))(t,e,o)]}))}))},registerLoadRouter:function(t){return mf.registerLoadRouter(t)},registerSaveRouter:function(t){return mf.registerSaveRouter(t)},weightsLoaderFactory:Xf,withSaveHandler:function(t){return new td(t)},copyModel:function(t,e){return n(this,void 0,void 0,(function(){return r(this,(function(n){return!1,[2,bf(t,e,!1)]}))}))},listModels:function(){return n(this,void 0,void 0,(function(){var t,e,n,o,a,i,s;return r(this,(function(r){switch(r.label){case 0:t=yf.getSchemes(),e={},n=0,o=t,r.label=1;case 1:return n<o.length?(a=o[n],[4,yf.getManager(a).listModels()]):[3,4];case 2:for(s in i=r.sent())e[a+gf+s]=i[s];r.label=3;case 3:return n++,[3,1];case 4:return[2,e]}}))}))},moveModel:function(t,e){return n(this,void 0,void 0,(function(){return r(this,(function(n){return!0,[2,bf(t,e,!0)]}))}))},removeModel:function(t){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){return e=xf(t),[2,yf.getManager(e.scheme).removeModel(e.path)]}))}))}});var nd,rd=An({confusionMatrix_:function(t,e,n){var r=mn(t,\"labels\",\"confusionMatrix\"),o=mn(e,\"predictions\",\"confusionMatrix\");C(null==n||n>0&&Number.isInteger(n),(function(){return\"If provided, numClasses must be a positive integer, but got \"+n})),C(1===r.rank,(function(){return\"Expected the rank of labels to be 1, but got \"+r.rank})),C(1===o.rank,(function(){return\"Expected the rank of predictions to be 1, but got \"+o.rank})),C(r.shape[0]===o.shape[0],(function(){return\"Mismatch in the number of examples: \"+r.shape[0]+\" vs. \"+o.shape[0]+\". Labels and predictions should have the same number of elements.\"})),C(n>0&&Number.isInteger(n),(function(){return\"numClasses is required to be a positive integer, but got \"+n}));var a=Rr(r.asType(\"int32\"),n),i=Rr(o.asType(\"int32\"),n);return a.transpose().matMul(i).asType(\"int32\")}}),od=Object.freeze({confusionMatrix:rd});var ad=An({fromPixels_:function(t,e){if(void 0===e&&(e=3),e>4)throw new Error(\"Cannot construct Tensor with more than 4 channels from pixels.\");if(null==t)throw new Error(\"pixels passed to tf.browser.fromPixels() can not be null\");var n=!1,r=!1,o=!1,a=!1,i=!1;if(t.data instanceof Uint8Array)n=!0;else if(\"undefined\"!=typeof ImageData&&t instanceof ImageData)r=!0;else if(\"undefined\"!=typeof HTMLVideoElement&&t instanceof HTMLVideoElement)o=!0;else if(\"undefined\"!=typeof HTMLImageElement&&t instanceof HTMLImageElement)a=!0;else{if(null==t.getContext)throw new Error(\"pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was \"+t.constructor.name);i=!0}if(o){if(o&&t.readyState<2)throw new Error(\"The video element has not loaded data yet. Please wait for `loadeddata` event on the <video> element.\")}if(null!=l(\"FromPixels\",Lt.backendName))return Lt.runKernel(\"FromPixels\",{pixels:t},{numChannels:e});var s,u,c=o?[t.videoWidth,t.videoHeight]:[t.width,t.height],h=c[0],f=c[1];if(i?s=t.getContext(\"2d\").getImageData(0,0,h,f).data:r||n?s=t.data:(a||o)&&(null==nd&&(nd=document.createElement(\"canvas\").getContext(\"2d\")),nd.canvas.width=h,nd.canvas.height=f,nd.drawImage(t,0,0,h,f),s=nd.getImageData(0,0,h,f).data),4===e)u=new Int32Array(s);else{var d=h*f;u=new Int32Array(d*e);for(var p=0;p<d;p++)for(var v=0;v<e;++v)u[p*e+v]=s[4*p+v]}return Pn(u,[f,h,e],\"int32\")}}),id=Object.freeze({toPixels:function(t,e){return n(this,void 0,void 0,(function(){var n,o,a,i,s,u,c,l,h,f,d,p,v,m,g,y,x,b,w,C,E,R,I;return r(this,(function(r){switch(r.label){case 0:if(n=mn(t,\"img\",\"toPixels\"),t instanceof wt||(n=n.toInt()),2!==n.rank&&3!==n.rank)throw new Error(\"toPixels only supports rank 2 or 3 tensors, got rank \"+n.rank+\".\");if(o=n.shape.slice(0,2),a=o[0],i=o[1],(s=2===n.rank?1:n.shape[2])>4||2===s)throw new Error(\"toPixels only supports depth of size 1, 3 or 4 but got \"+s);return[4,n.data()];case 1:return u=r.sent(),c=n.min(),l=n.max(),[4,Promise.all([c.data(),l.data()])];case 2:if(h=r.sent(),f=h[0],d=h[1],p=f[0],v=d[0],c.dispose(),l.dispose(),\"float32\"===n.dtype){if(p<0||v>1)throw new Error(\"Tensor values for a float32 Tensor must be in the range [0 - 1] but got range [\"+p+\" - \"+v+\"].\")}else{if(\"int32\"!==n.dtype)throw new Error(\"Unsupported type for toPixels: \"+n.dtype+\". Please use float32 or int32 tensors.\");if(p<0||v>255)throw new Error(\"Tensor values for a int32 Tensor must be in the range [0 - 255] but got range [\"+p+\" - \"+v+\"].\")}for(m=\"float32\"===n.dtype?255:1,g=new Uint8ClampedArray(i*a*4),y=0;y<a*i;++y)x=void 0,b=void 0,w=void 0,C=void 0,1===s?(x=u[y]*m,b=u[y]*m,w=u[y]*m,C=255):3===s?(x=u[3*y]*m,b=u[3*y+1]*m,w=u[3*y+2]*m,C=255):4===s&&(x=u[4*y]*m,b=u[4*y+1]*m,w=u[4*y+2]*m,C=u[4*y+3]*m),g[(E=4*y)+0]=Math.round(x),g[E+1]=Math.round(b),g[E+2]=Math.round(w),g[E+3]=Math.round(C);return null!=e&&(e.width=i,e.height=a,R=e.getContext(\"2d\"),I=new ImageData(g,i,a),R.putImageData(I,0,0)),n!==t&&n.dispose(),[2,g]}}))}))},fromPixels:ad}),sd=function(){function t(){}return t.prototype.getClassName=function(){return this.constructor.className},t.fromConfig=function(t,e){return new t(e)},t}(),ud=function(){function t(){this.classNameMap={}}return t.getMap=function(){return null==t.instance&&(t.instance=new t),t.instance},t.register=function(e){t.getMap().classNameMap[e.className]=[e,e.fromConfig]},t}();function cd(t){C(null!=t.className,(function(){return\"Class being registered does not have the static className property defined.\"})),C(\"string\"==typeof t.className,(function(){return\"className is required to be a string, but got type \"+typeof t.className})),C(t.className.length>0,(function(){return\"Class being registered has an empty-string as its className, which is disallowed.\"})),ud.register(t)}var ld=Object.freeze({Serializable:sd,SerializationMap:ud,registerClass:cd}),hd=.001,fd=.1;function dd(){return 32===Lt.backend.floatPrecision()?hd:fd}function pd(t,e,n){var r=!0;if((V(t)||V(e))&&(r=!1),V(t)&&V(e)&&(r=!0),r){var o=t.constructor.name,a=e.constructor.name;if(o!==a)throw new Error(\"Arrays are of different type. Actual: \"+o+\". Expected: \"+a)}if(Array.isArray(t)&&Array.isArray(e)){var i=pn(t),s=pn(e);if(!S(i,s))throw new Error(\"Arrays have different shapes. Actual: [\"+i+\"]. Expected: [\"+s+\"]\")}var u=V(t)?t:I(t),c=V(e)?e:I(e);if(u.length!==c.length)throw new Error(\"Arrays have different lengths actual: \"+u.length+\" vs expected: \"+c.length+\".\\nActual:   \"+u+\".\\nExpected: \"+c+\".\");for(var l=0;l<c.length;++l){var h=u[l],f=c[l];if(!n(h,f))throw new Error(\"Arrays differ: actual[\"+l+\"] = \"+h+\", expected[\"+l+\"] = \"+f+\".\\nActual:   \"+u+\".\\nExpected: \"+c+\".\")}}function vd(t,e,n){return!isFinite(t)&&!isFinite(e)||!(isNaN(t)||isNaN(e)||Math.abs(t-e)>n)}var md=Object.freeze({TEST_EPSILON_FLOAT16:fd,expectArraysClose:function(t,e,n){return null==n&&(n=dd()),pd(t,e,(function(t,e){return vd(t,e,n)}))},testEpsilon:dd,expectPromiseToFail:function(t,e){t().then((function(){return e.fail()}),(function(){return e()}))},expectArraysEqual:function(t,e){var n=\"string\"==typeof e||\"number\"==typeof e||\"boolean\"==typeof e?[e]:e;return H(t)||H(t[0])||H(e)||H(e[0])?pd(t,n,(function(t,e){return t==e})):pd(t,e,(function(t,e){return vd(t,e,0)}))},expectNumbersClose:function(t,e,n){if(null==n&&(n=dd()),!vd(t,e,n))throw new Error(\"Numbers differ: actual === \"+t+\", expected === \"+e)},expectValuesInRange:function(t,e,n){for(var r=0;r<t.length;r++)if(t[r]<e||t[r]>n)throw new Error(\"Value out of range:\"+t[r]+\" low: \"+e+\", high: \"+n)},expectArrayBuffersEqual:function(t,e){expect(new Float32Array(t)).toEqual(new Float32Array(e))}}),gd=\"1.7.0\";var yd=Object.freeze({gpgpu_util:Mi,webgl_util:Ge,forceHalfFloat:function(){i().set(\"WEBGL_FORCE_F16_TEXTURES\",!0)},MathBackendWebGL:Zs,setWebGLContext:Kt,GPGPUContext:Bi}),xd=function(t){function o(){return null!==t&&t.apply(this,arguments)||this}return e(o,t),o.prototype.minimize=function(t,e,n){void 0===e&&(e=!1);var r=this.computeGradients(t,n),o=r.value,a=r.grads;if(null!=n){var i=n.map((function(t){return{name:t.name,tensor:a[t.name]}}));this.applyGradients(i)}else this.applyGradients(a);return tn(a),e?o:(o.dispose(),null)},Object.defineProperty(o.prototype,\"iterations\",{get:function(){return null==this.iterations_&&(this.iterations_=0),this.iterations_},enumerable:!0,configurable:!0}),o.prototype.incrementIterations=function(){this.iterations_=this.iterations+1},o.prototype.computeGradients=function(t,e){return po(t,e)},o.prototype.dispose=function(){null!=this.iterations_&&tn(this.iterations_)},o.prototype.saveIterations=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){return null==this.iterations_&&(this.iterations_=0),[2,{name:\"iter\",tensor:On(this.iterations_,\"int32\")}]}))}))},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){throw new Error(\"getWeights() is not implemented for this optimizer yet.\")}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(t){throw new Error(\"setWeights() is not implemented for this optimizer class \"+this.getClassName())}))}))},o.prototype.extractIterations=function(t){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){switch(n.label){case 0:return e=this,[4,t[0].tensor.data()];case 1:return e.iterations_=n.sent()[0],[2,t.slice(1)]}}))}))},o}(sd);Object.defineProperty(xd,Symbol.hasInstance,{value:function(t){return null!=t.minimize&&null!=t.computeGradients&&null!=t.applyGradients}});var bd=function(t){function o(e,n,r){void 0===r&&(r=null);var o=t.call(this)||this;return o.learningRate=e,o.rho=n,o.epsilon=r,o.accumulatedGrads=[],o.accumulatedUpdates=[],null==r&&(o.epsilon=Lt.backend.epsilon()),o}return e(o,t),o.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Lt.registeredVariables[n];null==e.accumulatedGrads[r]&&(e.accumulatedGrads[r]={originalName:n+\"/accum_grad\",variable:Ze((function(){return Xn(o).variable(!1)}))}),null==e.accumulatedUpdates[r]&&(e.accumulatedUpdates[r]={originalName:n+\"/accum_var\",variable:Ze((function(){return Xn(o).variable(!1)}))});var a=Array.isArray(t)?t[r].tensor:t[n];if(null!=a){var i=e.accumulatedGrads[r].variable,s=e.accumulatedUpdates[r].variable;Ze((function(){var t=i.mul(e.rho).add(a.square().mul(1-e.rho)),n=s.add(e.epsilon).sqrt().div(i.add(e.epsilon).sqrt()).mul(a),r=s.mul(e.rho).add(n.square().mul(1-e.rho));i.assign(t),s.assign(r);var u=n.mul(-e.learningRate).add(o);o.assign(u)}))}})),this.incrementIterations()},o.prototype.dispose=function(){null!=this.accumulatedUpdates&&(tn(this.accumulatedGrads.map((function(t){return t.variable}))),tn(this.accumulatedUpdates.map((function(t){return t.variable}))))},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){var t;return r(this,(function(e){switch(e.label){case 0:return t=this.accumulatedGrads.concat(this.accumulatedUpdates),[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(t.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){switch(n.label){case 0:return[4,this.extractIterations(t)];case 1:return t=n.sent(),e=t.length/2,!1,this.accumulatedGrads=t.slice(0,e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.accumulatedUpdates=t.slice(e,2*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},o.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},o.fromConfig=function(t,e){return new t(e.learningRate,e.rho,e.epsilon)},o.className=\"Adadelta\",o}(xd);cd(bd);var wd=function(t){function o(e,n){void 0===n&&(n=.1);var r=t.call(this)||this;return r.learningRate=e,r.initialAccumulatorValue=n,r.accumulatedGrads=[],r}return e(o,t),o.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Lt.registeredVariables[n];if(null==e.accumulatedGrads[r]){e.accumulatedGrads[r]={originalName:n+\"/accumulator\",variable:Ze((function(){return Hn(o.shape,e.initialAccumulatorValue).variable(!1)}))}}var a=Array.isArray(t)?t[r].tensor:t[n];if(null!=a){var i=e.accumulatedGrads[r].variable;Ze((function(){var t=i.add(a.square());i.assign(t);var n=a.div(t.add(Lt.backend.epsilon()).sqrt()).mul(-e.learningRate).add(o);o.assign(n)}))}})),this.incrementIterations()},o.prototype.dispose=function(){null!=this.accumulatedGrads&&tn(this.accumulatedGrads.map((function(t){return t.variable})))},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){switch(t.label){case 0:return[4,this.saveIterations()];case 1:return[2,[t.sent()].concat(this.accumulatedGrads.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(e){switch(e.label){case 0:return[4,this.extractIterations(t)];case 1:return t=e.sent(),!1,this.accumulatedGrads=t.map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},o.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},o.fromConfig=function(t,e){return new t(e.learningRate,e.initialAccumulatorValue)},o.className=\"Adagrad\",o}(xd);cd(wd);var Cd=function(t){function o(e,n,r,o){void 0===o&&(o=null);var a=t.call(this)||this;return a.learningRate=e,a.beta1=n,a.beta2=r,a.epsilon=o,a.accumulatedFirstMoment=[],a.accumulatedSecondMoment=[],Ze((function(){a.accBeta1=On(n).variable(),a.accBeta2=On(r).variable()})),null==o&&(a.epsilon=Lt.backend.epsilon()),a}return e(o,t),o.prototype.applyGradients=function(t){var e=this,n=Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t);Ze((function(){var r=Cc(1,e.accBeta1),o=Cc(1,e.accBeta2);n.forEach((function(n,a){var i=Lt.registeredVariables[n];null==e.accumulatedFirstMoment[a]&&(e.accumulatedFirstMoment[a]={originalName:n+\"/m\",variable:Ze((function(){return Xn(i).variable(!1)}))}),null==e.accumulatedSecondMoment[a]&&(e.accumulatedSecondMoment[a]={originalName:n+\"/v\",variable:Ze((function(){return Xn(i).variable(!1)}))});var s=Array.isArray(t)?t[a].tensor:t[n];if(null!=s){var u=e.accumulatedFirstMoment[a].variable,c=e.accumulatedSecondMoment[a].variable,l=u.mul(e.beta1).add(s.mul(1-e.beta1)),h=c.mul(e.beta2).add(s.square().mul(1-e.beta2)),f=l.div(r),d=h.div(o);u.assign(l),c.assign(h);var p=f.div(d.sqrt().add(e.epsilon)).mul(-e.learningRate).add(i);i.assign(p)}})),e.accBeta1.assign(e.accBeta1.mul(e.beta1)),e.accBeta2.assign(e.accBeta2.mul(e.beta2))})),this.incrementIterations()},o.prototype.dispose=function(){this.accBeta1.dispose(),this.accBeta2.dispose(),null!=this.accumulatedFirstMoment&&tn(this.accumulatedFirstMoment.map((function(t){return t.variable}))),null!=this.accumulatedSecondMoment&&tn(this.accumulatedSecondMoment.map((function(t){return t.variable})))},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){var t;return r(this,(function(e){switch(e.label){case 0:return t=this.accumulatedFirstMoment.concat(this.accumulatedSecondMoment),[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(t.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){var e,n=this;return r(this,(function(r){switch(r.label){case 0:return[4,this.extractIterations(t)];case 1:return t=r.sent(),Ze((function(){n.accBeta1.assign(xc(n.beta1,n.iterations_+1)),n.accBeta2.assign(xc(n.beta2,n.iterations_+1))})),e=t.length/2,!1,this.accumulatedFirstMoment=t.slice(0,e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.accumulatedSecondMoment=t.slice(e,2*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},o.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},o.fromConfig=function(t,e){return new t(e.learningRate,e.beta1,e.beta2,e.epsilon)},o.className=\"Adam\",o}(xd);cd(Cd);var Ed=function(t){function o(e,n,r,o,a){void 0===o&&(o=null),void 0===a&&(a=0);var i=t.call(this)||this;return i.learningRate=e,i.beta1=n,i.beta2=r,i.epsilon=o,i.decay=a,i.accumulatedFirstMoment=[],i.accumulatedWeightedInfNorm=[],Ze((function(){i.iteration=On(0).variable(),i.accBeta1=On(n).variable()})),null==o&&(i.epsilon=Lt.backend.epsilon()),i}return e(o,t),o.prototype.applyGradients=function(t){var e=this,n=Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t);Ze((function(){var r=Cc(1,e.accBeta1),o=sc(-e.learningRate,e.iteration.mul(e.decay).add(1));n.forEach((function(n,a){var i=Lt.registeredVariables[n];null==e.accumulatedFirstMoment[a]&&(e.accumulatedFirstMoment[a]={originalName:n+\"/m\",variable:Xn(i).variable(!1)}),null==e.accumulatedWeightedInfNorm[a]&&(e.accumulatedWeightedInfNorm[a]={originalName:n+\"/v\",variable:Xn(i).variable(!1)});var s=Array.isArray(t)?t[a].tensor:t[n];if(null!=s){var u=e.accumulatedFirstMoment[a].variable,c=e.accumulatedWeightedInfNorm[a].variable,l=u.mul(e.beta1).add(s.mul(1-e.beta1)),h=c.mul(e.beta2),f=s.abs(),d=h.maximum(f);u.assign(l),c.assign(d);var p=o.div(r).mul(l.div(d.add(e.epsilon))).add(i);i.assign(p)}})),e.iteration.assign(e.iteration.add(1)),e.accBeta1.assign(e.accBeta1.mul(e.beta1))})),this.incrementIterations()},o.prototype.dispose=function(){this.accBeta1.dispose(),this.iteration.dispose(),null!=this.accumulatedFirstMoment&&tn(this.accumulatedFirstMoment.map((function(t){return t.variable}))),null!=this.accumulatedWeightedInfNorm&&tn(this.accumulatedWeightedInfNorm.map((function(t){return t.variable})))},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){throw new Error(\"getWeights() is not implemented for Adamax yet.\")}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(t){throw new Error(\"setWeights() is not implemented for Adamax yet.\")}))}))},o.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},o.fromConfig=function(t,e){return new t(e.learningRate,e.beta1,e.beta2,e.epsilon,e.decay)},o.className=\"Adamax\",o}(xd);cd(Ed);var Rd=function(t){function o(e){var n=t.call(this)||this;return n.learningRate=e,n.setLearningRate(e),n}return e(o,t),o.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Array.isArray(t)?t[r].tensor:t[n];if(null!=o){var a=Lt.registeredVariables[n];Ze((function(){var t=e.c.mul(o).add(a);a.assign(t)}))}})),this.incrementIterations()},o.prototype.setLearningRate=function(t){this.learningRate=t,null!=this.c&&this.c.dispose(),this.c=en(On(-t))},o.prototype.dispose=function(){this.c.dispose()},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){switch(t.label){case 0:return[4,this.saveIterations()];case 1:return[2,[t.sent()]]}}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(e){switch(e.label){case 0:return[4,this.extractIterations(t)];case 1:if(0!==(t=e.sent()).length)throw new Error(\"SGD optimizer does not have settable weights.\");return[2]}}))}))},o.prototype.getConfig=function(){return{learningRate:this.learningRate}},o.fromConfig=function(t,e){return new t(e.learningRate)},o.className=\"SGD\",o}(xd);cd(Rd);var Id=function(t){function o(e,n,r){void 0===r&&(r=!1);var o=t.call(this,e)||this;return o.learningRate=e,o.momentum=n,o.useNesterov=r,o.accumulations=[],o.m=On(o.momentum),o}return e(o,t),o.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Lt.registeredVariables[n];if(null==e.accumulations[r]){e.accumulations[r]={originalName:n+\"/momentum\",variable:Ze((function(){return Xn(o).variable(!1)}))}}var a=e.accumulations[r].variable,i=Array.isArray(t)?t[r].tensor:t[n];null!=i&&Ze((function(){var t,n=e.m.mul(a).add(i);t=e.useNesterov?e.c.mul(i.add(n.mul(e.m))).add(o):e.c.mul(n).add(o),a.assign(n),o.assign(t)}))})),this.incrementIterations()},o.prototype.dispose=function(){this.m.dispose(),null!=this.accumulations&&tn(this.accumulations.map((function(t){return t.variable})))},o.prototype.setMomentum=function(t){this.momentum=t},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){switch(t.label){case 0:return[4,this.saveIterations()];case 1:return[2,[t.sent()].concat(this.accumulations.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(e){switch(e.label){case 0:return[4,this.extractIterations(t)];case 1:return t=e.sent(),!1,this.accumulations=t.map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},o.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},o.fromConfig=function(t,e){return new t(e.learningRate,e.momentum,e.useNesterov)},o.className=\"Momentum\",o}(Rd);cd(Id);var kd=function(t){function o(e,n,r,o,a){void 0===n&&(n=.9),void 0===r&&(r=0),void 0===o&&(o=null),void 0===a&&(a=!1);var i=t.call(this)||this;if(i.learningRate=e,i.decay=n,i.momentum=r,i.epsilon=o,i.accumulatedMeanSquares=[],i.accumulatedMoments=[],i.accumulatedMeanGrads=[],i.centered=a,null==o&&(i.epsilon=Lt.backend.epsilon()),null==e)throw new Error(\"learningRate for RMSPropOptimizer must be defined.\");return i}return e(o,t),o.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Lt.registeredVariables[n];null==e.accumulatedMeanSquares[r]&&(e.accumulatedMeanSquares[r]={originalName:n+\"/rms\",variable:Ze((function(){return Xn(o).variable(!1)}))}),null==e.accumulatedMoments[r]&&(e.accumulatedMoments[r]={originalName:n+\"/momentum\",variable:Ze((function(){return Xn(o).variable(!1)}))}),null==e.accumulatedMeanGrads[r]&&e.centered&&(e.accumulatedMeanGrads[r]={originalName:n+\"/mg\",variable:Ze((function(){return Xn(o).variable(!1)}))});var a=Array.isArray(t)?t[r].tensor:t[n];if(null!=a){var i=e.accumulatedMeanSquares[r].variable,s=e.accumulatedMoments[r].variable;Ze((function(){var t=i.mul(e.decay).add(a.square().mul(1-e.decay));if(e.centered){var n=e.accumulatedMeanGrads[r].variable,u=n.mul(e.decay).add(a.mul(1-e.decay)),c=s.mul(e.momentum).add(a.mul(e.learningRate).div(t.sub(u.square().add(e.epsilon)).sqrt()));i.assign(t),n.assign(u),s.assign(c);var l=o.sub(c);o.assign(l)}else{var h=i.mul(e.decay).add(a.square().mul(1-e.decay));c=s.mul(e.momentum).add(a.mul(e.learningRate).div(h.add(e.epsilon).sqrt()));i.assign(h),s.assign(c);l=o.sub(c);o.assign(l)}}))}})),this.incrementIterations()},o.prototype.dispose=function(){null!=this.accumulatedMeanSquares&&tn(this.accumulatedMeanSquares.map((function(t){return t.variable}))),null!=this.accumulatedMeanGrads&&this.centered&&tn(this.accumulatedMeanGrads.map((function(t){return t.variable}))),null!=this.accumulatedMoments&&tn(this.accumulatedMoments.map((function(t){return t.variable})))},o.prototype.getWeights=function(){return n(this,void 0,void 0,(function(){var t;return r(this,(function(e){switch(e.label){case 0:return t=this.accumulatedMeanSquares.concat(this.accumulatedMoments),this.centered&&t.push.apply(t,this.accumulatedMeanGrads),[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(t.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},o.prototype.setWeights=function(t){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){switch(n.label){case 0:return[4,this.extractIterations(t)];case 1:return t=n.sent(),e=this.centered?t.length/3:t.length/2,!1,this.accumulatedMeanSquares=t.slice(0,e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.accumulatedMoments=t.slice(e,2*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.centered&&(this.accumulatedMeanGrads=t.slice(2*e,3*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}}))),[2]}}))}))},o.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},o.fromConfig=function(t,e){return new t(e.learningRate,e.decay,e.momentum,e.epsilon,e.centered)},o.className=\"RMSProp\",o}(xd);cd(kd);var Sd=function(){function t(){}return t.sgd=function(t){return new Rd(t)},t.momentum=function(t,e,n){return void 0===n&&(n=!1),new Id(t,e,n)},t.rmsprop=function(t,e,n,r,o){return void 0===e&&(e=.9),void 0===n&&(n=0),void 0===r&&(r=null),void 0===o&&(o=!1),new kd(t,e,n,r,o)},t.adam=function(t,e,n,r){return void 0===t&&(t=.001),void 0===e&&(e=.9),void 0===n&&(n=.999),void 0===r&&(r=null),new Cd(t,e,n,r)},t.adadelta=function(t,e,n){return void 0===t&&(t=.001),void 0===e&&(e=.95),void 0===n&&(n=null),new bd(t,e,n)},t.adamax=function(t,e,n,r,o){return void 0===t&&(t=.002),void 0===e&&(e=.9),void 0===n&&(n=.999),void 0===r&&(r=null),void 0===o&&(o=0),new Ed(t,e,n,r,o)},t.adagrad=function(t,e){return void 0===e&&(e=.1),new wd(t,e)},t}(),Ad={sgd:Sd.sgd,momentum:Sd.momentum,adadelta:Sd.adadelta,adagrad:Sd.adagrad,rmsprop:Sd.rmsprop,adamax:Sd.adamax,adam:Sd.adam},Dd=\"undefined\"!=typeof requestAnimationFrame?requestAnimationFrame:\"undefined\"!=typeof setImmediate?setImmediate:function(t){return t()};function Td(){return new Promise((function(t){return Dd((function(){return t()}))}))}wt.prototype.squaredDifference=function(t){return nu(this,t)},xt=Gh;export{bd as AdadeltaOptimizer,wd as AdagradOptimizer,Cd as AdamOptimizer,Ed as AdamaxOptimizer,xo as DataStorage,s as ENV,o as Environment,bo as KernelBackend,Id as MomentumOptimizer,xd as Optimizer,kd as RMSPropOptimizer,Ct as Rank,ch as Reduction,Rd as SGDOptimizer,wt as Tensor,gt as TensorBuffer,St as Variable,ru as abs,ou as acos,au as acosh,rc as add,oc as addN,ac as addStrict,Cl as all,El as any,Rl as argMax,Il as argMin,iu as asin,su as asinh,uu as atan,ic as atan2,cu as atanh,fl as avgPool,vl as avgPool3d,hn as backend,Uo as backend_util,zl as basicLSTMCell,ju as batchNorm,Xu as batchNorm2d,Yu as batchNorm3d,$u as batchNorm4d,Ku as batchNormalization,Gu as batchNormalization2d,Hu as batchNormalization3d,qu as batchNormalization4d,vr as batchToSpaceND,Uc as booleanMaskAsync,mr as broadcastTo,id as browser,dr as buffer,gr as cast,lu as ceil,hu as clipByValue,yr as clone,Dn as complex,Yn as concat,$n as concat1d,Qn as concat2d,Jn as concat3d,Zn as concat4d,Hc as conv1d,qc as conv2d,Zc as conv2dTranspose,Kc as conv3d,tl as conv3dTranspose,fu as cos,du as cosh,xr as cumsum,vo as customGrad,Xe as deprecationWarn,br as depthToSpace,Yc as depthwiseConv2d,eh as diag,je as disableDeprecationWarnings,tn as dispose,Ye as disposeVariables,sc as div,uc as divNoNan,cc as divStrict,nl as dot,nh as dropout,_l as elu,Ke as enableDebugMode,qe as enableProdMode,$e as engine,i as env,Rc as equal,Ic as equalStrict,pu as erf,vu as exp,wr as expandDims,mu as expm1,Cr as eye,Xl as fft,Hn as fill,un as findBackend,cn as findBackendFactory,gu as floor,lc as floorDiv,ih as frame,zh as fused,Lc as gather,th as gatherND,Xr as gather_util,an as getBackend,h as getGradient,l as getKernel,f as getKernelsForBackend,co as grad,lo as grads,kc as greater,Sc as greaterEqual,Ac as greaterEqualStrict,Dc as greaterStrict,ah as hammingWindow,oh as hannWindow,Yl as ifft,Nn as imag,Oh as image,lh as inTopKAsync,ed as io,Ql as irfft,Du as isFinite,Au as isInf,Su as isNaN,en as keep,Ol as leakyRelu,Tc as less,Nc as lessEqual,Fc as lessEqualStrict,_c as lessStrict,Ih as linalg,qn as linspace,Ul as localResponseNormalization,yu as log,xu as log1p,bu as logSigmoid,yo as logSoftmax,kl as logSumExp,Qu as logicalAnd,Ju as logicalNot,Zu as logicalOr,tc as logicalXor,bh as losses,el as matMul,od as math,Sl as max,hl as maxPool,pl as maxPool3d,hc as maximum,fc as maximumStrict,Al as mean,Qe as memory,Dl as min,dc as minimum,pc as minimumStrict,vc as mod,mc as modStrict,Tl as moments,Hl as movingAverage,gc as mul,yc as mulStrict,Gl as multiRNNCell,Er as multinomial,wu as neg,Td as nextFrame,Vl as norm,Oc as notEqual,Mc as notEqualStrict,Rr as oneHot,zn as ones,jn as onesLike,An as op,rl as outerProduct,Ir as pad,kr as pad1d,Sr as pad2d,Ar as pad3d,Dr as pad4d,dl as pool,xc as pow,bc as powStrict,Ml as prelu,pr as print,Fl as prod,Je as profile,Tr as rand,Fr as randomGamma,Nr as randomNormal,_r as randomUniform,Kn as range,on as ready,Tn as real,Cu as reciprocal,ln as registerBackend,p as registerGradient,d as registerKernel,Bl as relu,Pl as relu6,sn as removeBackend,Or as reshape,ol as reverse,al as reverse1d,il as reverse2d,sl as reverse3d,ul as reverse4d,$l as rfft,Eu as round,Ru as rsqrt,On as scalar,jl as scatterND,to as scatter_util,Ll as selu,Jc as separableConv2d,ld as serialization,rn as setBackend,fn as setPlatform,Vr as setdiff1dAsync,Iu as sigmoid,ku as sign,uh as signal,Tu as sin,Nu as sinh,ml as slice,gl as slice1d,yl as slice2d,xl as slice3d,bl as slice4d,uo as slice_util,go as softmax,Fu as softplus,Mr as spaceToBatchND,Zl as sparseToDense,Jl as spectral,tr as split,_u as sqrt,tu as square,nu as squaredDifference,wc as squaredDifferenceStrict,Br as squeeze,Pr as stack,Ou as step,sh as stft,ql as stridedSlice,Cc as sub,Ec as subStrict,Nl as sum,Tt as sumOutType,Mu as tan,Bu as tanh,Fn as tensor,Mn as tensor1d,Bn as tensor2d,Pn as tensor3d,Ln as tensor4d,Wn as tensor5d,Un as tensor6d,Mt as tensor_util,md as test_util,Ze as tidy,Lr as tile,nn as time,Kl as topk,Ad as train,Wl as transpose,Wr as truncatedNormal,m as unregisterGradient,v as unregisterKernel,Wc as unsortedSegmentSum,Ur as unstack,st as util,ho as valueAndGrad,fo as valueAndGrads,Vn as variable,po as variableGrads,gd as version_core,yd as webgl,ec as where,nc as whereAsync,Gn as zeros,Xn as zerosLike};\n//# sourceMappingURL=tf-core.esm.js.map\n","module.exports = require(\"regenerator-runtime\");\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    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;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\n\nfunction _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return (module.exports = _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  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\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\nfunction _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\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { array, error, hasOwnProperty, extend, peek, toSet, constant, zero, one, span } from 'vega-util';\nimport { timeDay, timeWeek, utcDay, utcWeek, timeYear, timeMonth, timeHour, timeMinute, timeSecond, timeMillisecond, utcYear, utcMonth, utcHour, utcMinute, utcSecond, utcMillisecond } from 'd3-time';\nimport { bisector, tickStep } from 'd3-array';\n\nconst YEAR = 'year';\nconst QUARTER = 'quarter';\nconst MONTH = 'month';\nconst WEEK = 'week';\nconst DATE = 'date';\nconst DAY = 'day';\nconst DAYOFYEAR = 'dayofyear';\nconst HOURS = 'hours';\nconst MINUTES = 'minutes';\nconst SECONDS = 'seconds';\nconst MILLISECONDS = 'milliseconds';\nconst TIME_UNITS = [YEAR, QUARTER, MONTH, WEEK, DATE, DAY, DAYOFYEAR, HOURS, MINUTES, SECONDS, MILLISECONDS];\nconst UNITS = TIME_UNITS.reduce((o, u, i) => (o[u] = 1 + i, o), {});\nfunction timeUnits(units) {\n  const u = array(units).slice(),\n        m = {}; // check validity\n\n  if (!u.length) error('Missing time unit.');\n  u.forEach(unit => {\n    if (hasOwnProperty(UNITS, unit)) {\n      m[unit] = 1;\n    } else {\n      error(\"Invalid time unit: \".concat(unit, \".\"));\n    }\n  });\n  const numTypes = (m[WEEK] || m[DAY] ? 1 : 0) + (m[QUARTER] || m[MONTH] || m[DATE] ? 1 : 0) + (m[DAYOFYEAR] ? 1 : 0);\n\n  if (numTypes > 1) {\n    error(\"Incompatible time units: \".concat(units));\n  } // ensure proper sort order\n\n\n  u.sort((a, b) => UNITS[a] - UNITS[b]);\n  return u;\n}\nconst defaultSpecifiers = {\n  [YEAR]: '%Y ',\n  [QUARTER]: 'Q%q ',\n  [MONTH]: '%b ',\n  [DATE]: '%d ',\n  [WEEK]: 'W%U ',\n  [DAY]: '%a ',\n  [DAYOFYEAR]: '%j ',\n  [HOURS]: '%H:00',\n  [MINUTES]: '00:%M',\n  [SECONDS]: ':%S',\n  [MILLISECONDS]: '.%L',\n  [\"\".concat(YEAR, \"-\").concat(MONTH)]: '%Y-%m ',\n  [\"\".concat(YEAR, \"-\").concat(MONTH, \"-\").concat(DATE)]: '%Y-%m-%d ',\n  [\"\".concat(HOURS, \"-\").concat(MINUTES)]: '%H:%M'\n};\nfunction timeUnitSpecifier(units, specifiers) {\n  const s = extend({}, defaultSpecifiers, specifiers),\n        u = timeUnits(units),\n        n = u.length;\n  let fmt = '',\n      start = 0,\n      end,\n      key;\n\n  for (start = 0; start < n;) {\n    for (end = u.length; end > start; --end) {\n      key = u.slice(start, end).join('-');\n\n      if (s[key] != null) {\n        fmt += s[key];\n        start = end;\n        break;\n      }\n    }\n  }\n\n  return fmt.trim();\n}\n\nconst t0 = new Date();\n\nfunction localYear(y) {\n  t0.setFullYear(y);\n  t0.setMonth(0);\n  t0.setDate(1);\n  t0.setHours(0, 0, 0, 0);\n  return t0;\n}\n\nfunction dayofyear(d) {\n  return localDayOfYear(new Date(d));\n}\nfunction week(d) {\n  return localWeekNum(new Date(d));\n}\nfunction localDayOfYear(d) {\n  return timeDay.count(localYear(d.getFullYear()) - 1, d);\n}\nfunction localWeekNum(d) {\n  return timeWeek.count(localYear(d.getFullYear()) - 1, d);\n}\nfunction localFirst(y) {\n  return localYear(y).getDay();\n}\nfunction localDate(y, m, d, H, M, S, L) {\n  if (0 <= y && y < 100) {\n    const date = new Date(-1, m, d, H, M, S, L);\n    date.setFullYear(y);\n    return date;\n  }\n\n  return new Date(y, m, d, H, M, S, L);\n}\nfunction utcdayofyear(d) {\n  return utcDayOfYear(new Date(d));\n}\nfunction utcweek(d) {\n  return utcWeekNum(new Date(d));\n}\nfunction utcDayOfYear(d) {\n  const y = Date.UTC(d.getUTCFullYear(), 0, 1);\n  return utcDay.count(y - 1, d);\n}\nfunction utcWeekNum(d) {\n  const y = Date.UTC(d.getUTCFullYear(), 0, 1);\n  return utcWeek.count(y - 1, d);\n}\nfunction utcFirst(y) {\n  t0.setTime(Date.UTC(y, 0, 1));\n  return t0.getUTCDay();\n}\nfunction utcDate(y, m, d, H, M, S, L) {\n  if (0 <= y && y < 100) {\n    const date = new Date(Date.UTC(-1, m, d, H, M, S, L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n\n  return new Date(Date.UTC(y, m, d, H, M, S, L));\n}\n\nfunction floor(units, step, get, inv, newDate) {\n  const s = step || 1,\n        b = peek(units),\n        _ = (unit, p, key) => {\n    key = key || unit;\n    return getUnit(get[key], inv[key], unit === b && s, p);\n  };\n\n  const t = new Date(),\n        u = toSet(units),\n        y = u[YEAR] ? _(YEAR) : constant(2012),\n        m = u[MONTH] ? _(MONTH) : u[QUARTER] ? _(QUARTER) : zero,\n        d = u[WEEK] && u[DAY] ? _(DAY, 1, WEEK + DAY) : u[WEEK] ? _(WEEK, 1) : u[DAY] ? _(DAY, 1) : u[DATE] ? _(DATE, 1) : u[DAYOFYEAR] ? _(DAYOFYEAR, 1) : one,\n        H = u[HOURS] ? _(HOURS) : zero,\n        M = u[MINUTES] ? _(MINUTES) : zero,\n        S = u[SECONDS] ? _(SECONDS) : zero,\n        L = u[MILLISECONDS] ? _(MILLISECONDS) : zero;\n  return function (v) {\n    t.setTime(+v);\n    const year = y(t);\n    return newDate(year, m(t), d(t, year), H(t), M(t), S(t), L(t));\n  };\n}\n\nfunction getUnit(f, inv, step, phase) {\n  const u = step <= 1 ? f : phase ? (d, y) => phase + step * Math.floor((f(d, y) - phase) / step) : (d, y) => step * Math.floor(f(d, y) / step);\n  return inv ? (d, y) => inv(u(d, y), y) : u;\n} // returns the day of the year based on week number, day of week,\n// and the day of the week for the first day of the year\n\n\nfunction weekday(week, day, firstDay) {\n  return day + week * 7 - (firstDay + 6) % 7;\n} // -- LOCAL TIME --\n\n\nconst localGet = {\n  [YEAR]: d => d.getFullYear(),\n  [QUARTER]: d => Math.floor(d.getMonth() / 3),\n  [MONTH]: d => d.getMonth(),\n  [DATE]: d => d.getDate(),\n  [HOURS]: d => d.getHours(),\n  [MINUTES]: d => d.getMinutes(),\n  [SECONDS]: d => d.getSeconds(),\n  [MILLISECONDS]: d => d.getMilliseconds(),\n  [DAYOFYEAR]: d => localDayOfYear(d),\n  [WEEK]: d => localWeekNum(d),\n  [WEEK + DAY]: (d, y) => weekday(localWeekNum(d), d.getDay(), localFirst(y)),\n  [DAY]: (d, y) => weekday(1, d.getDay(), localFirst(y))\n};\nconst localInv = {\n  [QUARTER]: q => 3 * q,\n  [WEEK]: (w, y) => weekday(w, 0, localFirst(y))\n};\nfunction timeFloor(units, step) {\n  return floor(units, step || 1, localGet, localInv, localDate);\n} // -- UTC TIME --\n\nconst utcGet = {\n  [YEAR]: d => d.getUTCFullYear(),\n  [QUARTER]: d => Math.floor(d.getUTCMonth() / 3),\n  [MONTH]: d => d.getUTCMonth(),\n  [DATE]: d => d.getUTCDate(),\n  [HOURS]: d => d.getUTCHours(),\n  [MINUTES]: d => d.getUTCMinutes(),\n  [SECONDS]: d => d.getUTCSeconds(),\n  [MILLISECONDS]: d => d.getUTCMilliseconds(),\n  [DAYOFYEAR]: d => utcDayOfYear(d),\n  [WEEK]: d => utcWeekNum(d),\n  [DAY]: (d, y) => weekday(1, d.getUTCDay(), utcFirst(y)),\n  [WEEK + DAY]: (d, y) => weekday(utcWeekNum(d), d.getUTCDay(), utcFirst(y))\n};\nconst utcInv = {\n  [QUARTER]: q => 3 * q,\n  [WEEK]: (w, y) => weekday(w, 0, utcFirst(y))\n};\nfunction utcFloor(units, step) {\n  return floor(units, step || 1, utcGet, utcInv, utcDate);\n}\n\nconst timeIntervals = {\n  [YEAR]: timeYear,\n  [QUARTER]: timeMonth.every(3),\n  [MONTH]: timeMonth,\n  [WEEK]: timeWeek,\n  [DATE]: timeDay,\n  [DAY]: timeDay,\n  [DAYOFYEAR]: timeDay,\n  [HOURS]: timeHour,\n  [MINUTES]: timeMinute,\n  [SECONDS]: timeSecond,\n  [MILLISECONDS]: timeMillisecond\n};\nconst utcIntervals = {\n  [YEAR]: utcYear,\n  [QUARTER]: utcMonth.every(3),\n  [MONTH]: utcMonth,\n  [WEEK]: utcWeek,\n  [DATE]: utcDay,\n  [DAY]: utcDay,\n  [DAYOFYEAR]: utcDay,\n  [HOURS]: utcHour,\n  [MINUTES]: utcMinute,\n  [SECONDS]: utcSecond,\n  [MILLISECONDS]: utcMillisecond\n};\nfunction timeInterval(unit) {\n  return timeIntervals[unit];\n}\nfunction utcInterval(unit) {\n  return utcIntervals[unit];\n}\n\nfunction offset(ival, date, step) {\n  return ival ? ival.offset(date, step) : undefined;\n}\n\nfunction timeOffset(unit, date, step) {\n  return offset(timeInterval(unit), date, step);\n}\nfunction utcOffset(unit, date, step) {\n  return offset(utcInterval(unit), date, step);\n}\n\nfunction sequence(ival, start, stop, step) {\n  return ival ? ival.range(start, stop, step) : undefined;\n}\n\nfunction timeSequence(unit, start, stop, step) {\n  return sequence(timeInterval(unit), start, stop, step);\n}\nfunction utcSequence(unit, start, stop, step) {\n  return sequence(utcInterval(unit), start, stop, step);\n}\n\nconst durationSecond = 1000,\n      durationMinute = durationSecond * 60,\n      durationHour = durationMinute * 60,\n      durationDay = durationHour * 24,\n      durationWeek = durationDay * 7,\n      durationMonth = durationDay * 30,\n      durationYear = durationDay * 365;\nconst Milli = [YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS],\n      Seconds = Milli.slice(0, -1),\n      Minutes = Seconds.slice(0, -1),\n      Hours = Minutes.slice(0, -1),\n      Day = Hours.slice(0, -1),\n      Week = [YEAR, WEEK],\n      Month = [YEAR, MONTH],\n      Year = [YEAR];\nconst intervals = [[Seconds, 1, durationSecond], [Seconds, 5, 5 * durationSecond], [Seconds, 15, 15 * durationSecond], [Seconds, 30, 30 * durationSecond], [Minutes, 1, durationMinute], [Minutes, 5, 5 * durationMinute], [Minutes, 15, 15 * durationMinute], [Minutes, 30, 30 * durationMinute], [Hours, 1, durationHour], [Hours, 3, 3 * durationHour], [Hours, 6, 6 * durationHour], [Hours, 12, 12 * durationHour], [Day, 1, durationDay], [Week, 1, durationWeek], [Month, 1, durationMonth], [Month, 3, 3 * durationMonth], [Year, 1, durationYear]];\nfunction bin (opt) {\n  const ext = opt.extent,\n        max = opt.maxbins || 40,\n        target = Math.abs(span(ext)) / max;\n  let i = bisector(i => i[2]).right(intervals, target),\n      units,\n      step;\n\n  if (i === intervals.length) {\n    units = Year, step = tickStep(ext[0] / durationYear, ext[1] / durationYear, max);\n  } else if (i) {\n    i = intervals[target / intervals[i - 1][2] < intervals[i][2] / target ? i - 1 : i];\n    units = i[0];\n    step = i[1];\n  } else {\n    units = Milli;\n    step = Math.max(tickStep(ext[0], ext[1], max), 1);\n  }\n\n  return {\n    units,\n    step\n  };\n}\n\nexport { DATE, DAY, DAYOFYEAR, HOURS, MILLISECONDS, MINUTES, MONTH, QUARTER, SECONDS, TIME_UNITS, WEEK, YEAR, dayofyear, bin as timeBin, timeFloor, timeInterval, timeOffset, timeSequence, timeUnitSpecifier, timeUnits, utcFloor, utcInterval, utcOffset, utcSequence, utcdayofyear, utcweek, week };\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = require('./lib/axios');","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\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport{env,concat,slice,stack,tensor,tidy,unstack,util,io,Tensor,add,addN,mod,mul,div,divNoNan,floorDiv,sub,minimum,maximum,pow,squaredDifference,abs,acos,acosh,asin,asinh,atan,atan2,atanh,ceil,complex,cos,cosh,elu,erf,exp,expm1,floor,log,log1p,imag,neg,reciprocal,real,relu,round,selu,sigmoid,sin,sign,sinh,softplus,sqrt,square,tanh,tan,clipByValue,rsqrt,prod,leakyRelu,prelu,scalar,conv1d,conv2d,fused,conv2dTranspose,depthwiseConv2d,conv3d,avgPool,maxPool,maxPoolWithArgmax,avgPool3d,maxPool3d,fill,linspace,multinomial,oneHot,ones,onesLike,randomUniform,range,truncatedNormal,zeros,zerosLike,image,whereAsync,setdiff1dAsync,topk,tensor1d,equal,notEqual,greater,greaterEqual,less,lessEqual,logicalAnd,logicalNot,logicalOr,where,matMul,transpose,batchNorm,localResponseNormalization,softmax,logSoftmax,sparseToDense,max,mean,min,sum,all,any,argMax,argMin,gather,reverse,stridedSlice,tile,split,scatterND,gatherND,fft,ifft,rfft,irfft,cast,expandDims,squeeze,reshape,pad,spaceToBatchND,batchToSpaceND,depthToSpace}from\"@tensorflow/tfjs-core\";var DataType,SaverDef,__assign=function(){return(__assign=Object.assign||function(e){for(var t,a=1,r=arguments.length;a<r;a++)for(var n in t=arguments[a])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function __awaiter(e,t,a,r){return new(a||(a=Promise))(function(n,s){function o(e){try{u(r.next(e))}catch(e){s(e)}}function p(e){try{u(r.throw(e))}catch(e){s(e)}}function u(e){e.done?n(e.value):new a(function(t){t(e.value)}).then(o,p)}u((r=r.apply(e,t||[])).next())})}function __generator(e,t){var a,r,n,s,o={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return s={next:p(0),throw:p(1),return:p(2)},\"function\"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function p(s){return function(p){return function(s){if(a)throw new TypeError(\"Generator is already executing.\");for(;o;)try{if(a=1,r&&(n=2&s[0]?r.return:s[0]?r.throw||((n=r.return)&&n.call(r),0):r.next)&&!(n=n.call(r,s[1])).done)return n;switch(r=0,n&&(s=[2&s[0],n.value]),s[0]){case 0:case 1:n=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,r=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!(n=(n=o.trys).length>0&&n[n.length-1])&&(6===s[0]||2===s[0])){o=0;continue}if(3===s[0]&&(!n||s[1]>n[0]&&s[1]<n[3])){o.label=s[1];break}if(6===s[0]&&o.label<n[1]){o.label=n[1],n=s;break}if(n&&o.label<n[2]){o.label=n[2],o.ops.push(s);break}n[2]&&o.ops.pop(),o.trys.pop();continue}s=t.call(e,o)}catch(e){s=[6,e],r=0}finally{a=n=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,p])}}}!function(e){e[e.DT_INVALID=0]=\"DT_INVALID\",e[e.DT_FLOAT=1]=\"DT_FLOAT\",e[e.DT_DOUBLE=2]=\"DT_DOUBLE\",e[e.DT_INT32=3]=\"DT_INT32\",e[e.DT_UINT8=4]=\"DT_UINT8\",e[e.DT_INT16=5]=\"DT_INT16\",e[e.DT_INT8=6]=\"DT_INT8\",e[e.DT_STRING=7]=\"DT_STRING\",e[e.DT_COMPLEX64=8]=\"DT_COMPLEX64\",e[e.DT_INT64=9]=\"DT_INT64\",e[e.DT_BOOL=10]=\"DT_BOOL\",e[e.DT_QINT8=11]=\"DT_QINT8\",e[e.DT_QUINT8=12]=\"DT_QUINT8\",e[e.DT_QINT32=13]=\"DT_QINT32\",e[e.DT_BFLOAT16=14]=\"DT_BFLOAT16\",e[e.DT_FLOAT_REF=101]=\"DT_FLOAT_REF\",e[e.DT_DOUBLE_REF=102]=\"DT_DOUBLE_REF\",e[e.DT_INT32_REF=103]=\"DT_INT32_REF\",e[e.DT_UINT8_REF=104]=\"DT_UINT8_REF\",e[e.DT_INT16_REF=105]=\"DT_INT16_REF\",e[e.DT_INT8_REF=106]=\"DT_INT8_REF\",e[e.DT_STRING_REF=107]=\"DT_STRING_REF\",e[e.DT_COMPLEX64_REF=108]=\"DT_COMPLEX64_REF\",e[e.DT_INT64_REF=109]=\"DT_INT64_REF\",e[e.DT_BOOL_REF=110]=\"DT_BOOL_REF\",e[e.DT_QINT8_REF=111]=\"DT_QINT8_REF\",e[e.DT_QUINT8_REF=112]=\"DT_QUINT8_REF\",e[e.DT_QINT32_REF=113]=\"DT_QINT32_REF\",e[e.DT_BFLOAT16_REF=114]=\"DT_BFLOAT16_REF\"}(DataType||(DataType={})),function(e){!function(e){e[e.LEGACY=0]=\"LEGACY\",e[e.V1=1]=\"V1\",e[e.V2=2]=\"V2\"}(e.CheckpointFormatVersion||(e.CheckpointFormatVersion={}))}(SaverDef||(SaverDef={}));var CUSTOM_OPS={};function registerOp(e,t){var a={tfOpName:e,category:\"custom\",inputs:[],attrs:[],customExecutor:t};CUSTOM_OPS[e]=a}function getRegisteredOp(e){return CUSTOM_OPS[e]}function deregisterOp(e){delete CUSTOM_OPS[e]}function getParamValue(e,t,a,r){var n=t.inputParams[e];if(n&&void 0!==n.inputIndexStart){var s=n.inputIndexStart,o=0===n.inputIndexEnd?void 0:void 0===n.inputIndexEnd?s+1:n.inputIndexEnd;if(\"tensor\"===n.type)return getTensor(t.inputNames[n.inputIndexStart],a,r);if(\"tensors\"===n.type)return t.inputNames.slice(s,o).map(function(e){return getTensor(e,a,r)});var p=Array.prototype.slice.call(getTensor(t.inputNames.slice(s)[0],a,r).dataSync());return\"number\"===n.type?p[0]:p}var u=t.attrParams[e];return u&&u.value}function getTensor(e,t,a){var r=parseNodeName(e),n=r[0],s=r[1],o=a.currentContextIds.find(function(e){return!!t[getNodeNameWithContextId(n,e)]});return void 0!==o?t[getNodeNameWithContextId(n,o)][s]:void 0}function getTensorsForCurrentContenxt(e,t,a){return t[getNodeNameWithContextId(e,a.currentContextId)]}function getNodeNameAndIndex(e,t){var a=parseNodeName(e),r=a[0],n=a[1];return[getNodeNameWithContextId(r,t&&t.currentContextId),n]}function getNodeNameWithContextId(e,t){return t?e+\"-\"+t:e}function parseNodeName(e){var t=e.lastIndexOf(\":\");return-1===t?[e,0]:[e.substring(0,t),Number(e.substring(t+1))]}function split$1(e,t){for(var a=[],r=0;r<e.length;r+=t)a.push(e.slice(r,r+t));return a}var json=[{tfOpName:\"Add\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"AddV2\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"AddN\",category:\"arithmetic\",inputs:[{start:0,end:0,name:\"tensors\",type:\"tensors\"}]},{tfOpName:\"BiasAdd\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Sub\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"RealDiv\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Div\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"DivNoNan\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"FloorDiv\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Mul\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Maximum\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}]},{tfOpName:\"Minimum\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}]},{tfOpName:\"Pow\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"SquaredDifference\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Mod\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"FloorMod\",category:\"arithmetic\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]}],arithmetic=Object.freeze({json:json}),json$1=[{tfOpName:\"Abs\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Acos\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Asin\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Atan\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Atan2\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"y\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Ceil\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"ClipByValue\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"clip_value_min\",name:\"clipValueMin\",type:\"number\"},{tfName:\"clip_value_max\",name:\"clipValueMax\",type:\"number\"}]},{tfOpName:\"Complex\",category:\"basic_math\",inputs:[{start:0,name:\"real\",type:\"tensor\"},{start:1,name:\"imag\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"ComplexAbs\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Cos\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Cosh\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Elu\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Exp\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Floor\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Log\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Imag\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0},{tfName:\"Tout\",name:\"outputType\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Neg\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Real\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0},{tfName:\"Tout\",name:\"outputType\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Prelu\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"alpha\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Relu\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Relu6\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0},{tfName:\"clipValueMin\",name:\"clipValueMin\",type:\"number\",defaultValue:0},{tfName:\"clipValueMax\",name:\"clipValueMax\",type:\"number\",defaultValue:6}]},{tfOpName:\"Selu\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Sigmoid\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Sin\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Sinh\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Sqrt\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Rsqrt\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Square\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Tan\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Tanh\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Sign\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Round\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Expm1\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Log1p\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Reciprocal\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Softplus\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Asinh\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Acosh\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Atanh\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Erf\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Prod\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"axes\",type:\"number[]\"}],attrs:[{tfName:\"keep_dims\",name:\"keepDims\",type:\"bool\",notSupported:!0},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"LeakyRelu\",category:\"basic_math\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"alpha\",name:\"alpha\",type:\"number\",defaultValue:.2},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]}],basicMath=Object.freeze({json:json$1}),json$2=[{tfOpName:\"LoopCond\",category:\"control\",inputs:[{start:0,name:\"pred\",type:\"tensor\"}]},{tfOpName:\"Switch\",category:\"control\",inputs:[{start:0,name:\"data\",type:\"tensor\"},{start:1,name:\"pred\",type:\"tensor\"}]},{tfOpName:\"Merge\",category:\"control\",inputs:[{start:0,end:0,name:\"tensors\",type:\"tensors\"}]},{tfOpName:\"Enter\",category:\"control\",inputs:[{start:0,name:\"tensor\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0},{tfName:\"frame_name\",name:\"frameName\",type:\"string\"},{tfName:\"is_constant\",name:\"isConstant\",type:\"bool\"}]},{tfOpName:\"Exit\",category:\"control\",inputs:[{start:0,name:\"tensor\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"NextIteration\",category:\"control\",inputs:[{start:0,name:\"tensor\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"TensorArrayV3\",category:\"control\",inputs:[{start:0,name:\"size\",type:\"number\"}],attrs:[{tfName:\"dtype\",name:\"dtype\",type:\"dtype\"},{tfName:\"element_shape\",name:\"elementShape\",type:\"shape\"},{tfName:\"dynamic_size\",name:\"dynamicSize\",type:\"bool\"},{tfName:\"clear_after_read\",name:\"clearAfterRead\",type:\"bool\"},{tfName:\"identical_element_shapes\",name:\"identicalElementShapes\",type:\"bool\"},{tfName:\"tensor_array_name\",name:\"name\",type:\"string\"}]},{tfOpName:\"TensorArrayWriteV3\",category:\"control\",inputs:[{start:0,name:\"tensorArrayId\",type:\"number\"},{start:1,name:\"index\",type:\"number\"},{start:2,name:\"tensor\",type:\"tensor\"},{start:3,name:\"flowIn\",type:\"number\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"TensorArrayReadV3\",category:\"control\",inputs:[{start:0,name:\"tensorArrayId\",type:\"number\"},{start:1,name:\"index\",type:\"number\"},{start:2,name:\"flowIn\",type:\"number\"}],attrs:[{tfName:\"dtype\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"TensorArrayGatherV3\",category:\"control\",inputs:[{start:0,name:\"tensorArrayId\",type:\"number\"},{start:1,name:\"indices\",type:\"number[]\"},{start:2,name:\"flowIn\",type:\"number\"}],attrs:[{tfName:\"dtype\",name:\"dtype\",type:\"dtype\"},{tfName:\"element_shape\",name:\"elementShape\",type:\"shape\"}]},{tfOpName:\"TensorArrayScatterV3\",category:\"control\",inputs:[{start:0,name:\"tensorArrayId\",type:\"number\"},{start:1,name:\"indices\",type:\"number[]\"},{start:2,name:\"tensor\",type:\"tensor\"},{start:3,name:\"flowIn\",type:\"number\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\"}]},{tfOpName:\"TensorArrayConcatV3\",category:\"control\",inputs:[{start:0,name:\"tensorArrayId\",type:\"number\"},{start:1,name:\"flowIn\",type:\"number\"}],attrs:[{tfName:\"dtype\",name:\"dtype\",type:\"dtype\"},{tfName:\"element_shape_except0\",name:\"elementShapeExcept0\",type:\"shape\",notSupported:!0}]},{tfOpName:\"TensorArraySplitV3\",category:\"control\",inputs:[{start:0,name:\"tensorArrayId\",type:\"number\"},{start:1,name:\"tensor\",type:\"tensor\"},{start:2,name:\"lengths\",type:\"number[]\"},{start:3,name:\"flowIn\",type:\"number\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\"}]},{tfOpName:\"TensorArraySizeV3\",category:\"control\",inputs:[{start:0,name:\"tensorArrayId\",type:\"number\"},{start:1,name:\"flowIn\",type:\"number\"}]},{tfOpName:\"TensorArrayCloseV3\",category:\"control\",inputs:[{start:0,name:\"tensorArrayId\",type:\"number\"}]}],control=Object.freeze({json:json$2}),json$3=[{tfOpName:\"AvgPool\",category:\"convolution\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"strides\",name:\"strides\",type:\"number[]\"},{tfName:\"padding\",name:\"pad\",type:\"string\"},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",notSupported:!0},{tfName:\"ksize\",name:\"kernelSize\",type:\"number[]\"},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"MaxPool\",category:\"convolution\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"strides\",name:\"strides\",type:\"number[]\"},{tfName:\"padding\",name:\"pad\",type:\"string\"},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",notSupported:!0},{tfName:\"ksize\",name:\"kernelSize\",type:\"number[]\"},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"MaxPoolWithArgmax\",category:\"convolution\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"strides\",name:\"strides\",type:\"number[]\"},{tfName:\"padding\",name:\"pad\",type:\"string\"},{tfName:\"ksize\",name:\"kernelSize\",type:\"number[]\"},{tfName:\"include_batch_in_index\",name:\"includeBatchInIndex\",type:\"bool\"},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"AvgPool3D\",category:\"convolution\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"strides\",name:\"strides\",type:\"number[]\"},{tfName:\"padding\",name:\"pad\",type:\"string\"},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",notSupported:!0},{tfName:\"ksize\",name:\"kernelSize\",type:\"number[]\"},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"MaxPool3D\",category:\"convolution\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"strides\",name:\"strides\",type:\"number[]\"},{tfName:\"padding\",name:\"pad\",type:\"string\"},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",notSupported:!0},{tfName:\"ksize\",name:\"kernelSize\",type:\"number[]\"},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Conv1D\",category:\"convolution\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"filter\",type:\"tensor\"}],attrs:[{tfName:\"stride\",name:\"stride\",type:\"number\"},{tfName:\"padding\",name:\"pad\",type:\"string\"},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",defaultValue:\"NWC\"},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0},{tfName:\"dilation\",name:\"dilation\",type:\"number\",defaultValue:1}]},{tfOpName:\"Conv2D\",category:\"convolution\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"filter\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0},{tfName:\"strides\",name:\"strides\",type:\"number[]\"},{tfName:\"padding\",name:\"pad\",type:\"string\"},{tfName:\"useCudnnOnGpu\",name:\"useCudnnOnGpu\",type:\"bool\"},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",defaultValue:\"NHWC\"},{tfName:\"dilations\",name:\"dilations\",type:\"number[]\"}]},{tfOpName:\"_FusedConv2D\",category:\"convolution\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"filter\",type:\"tensor\"},{start:2,end:0,name:\"args\",type:\"tensors\"}],attrs:[{tfName:\"num_args\",name:\"numArgs\",type:\"number\"},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0},{tfName:\"strides\",name:\"strides\",type:\"number[]\"},{tfName:\"padding\",name:\"pad\",type:\"string\"},{tfName:\"explicit_paddings\",name:\"explicitPaddings\",type:\"number[]\",defaultValue:[]},{tfName:\"use_cudnn_on_gpu\",name:\"useCudnnOnGpu\",type:\"bool\",defaultValue:!0},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",defaultValue:\"NHWC\"},{tfName:\"dilations\",name:\"dilations\",type:\"number[]\",defaultValue:[1,1,1,1]},{tfName:\"fused_ops\",name:\"fusedOps\",type:\"string[]\",defaultValue:[]},{tfName:\"epsilon\",name:\"epsilon\",type:\"number\",defaultValue:1e-4}]},{tfOpName:\"Conv2DBackpropInput\",category:\"convolution\",inputs:[{start:2,name:\"x\",type:\"tensor\"},{start:1,name:\"filter\",type:\"tensor\"},{start:0,name:\"outputShape\",type:\"number[]\"}],attrs:[{tfName:\"strides\",name:\"strides\",type:\"number[]\"},{tfName:\"padding\",name:\"pad\",type:\"string\"},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",notSupported:!0}]},{tfOpName:\"DepthwiseConv2d\",category:\"convolution\",inputs:[{start:0,name:\"input\",type:\"tensor\"},{start:1,name:\"filter\",type:\"tensor\"}],attrs:[{tfName:\"strides\",name:\"strides\",type:\"number[]\"},{tfName:\"padding\",name:\"pad\",type:\"string\"},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",defaultValue:\"NHWC\"},{tfName:\"dilations\",name:\"dilations\",type:\"number[]\"}]},{tfOpName:\"DepthwiseConv2dNative\",category:\"convolution\",inputs:[{start:0,name:\"input\",type:\"tensor\"},{start:1,name:\"filter\",type:\"tensor\"}],attrs:[{tfName:\"strides\",name:\"strides\",type:\"number[]\"},{tfName:\"padding\",name:\"pad\",type:\"string\"},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",defaultValue:\"NHWC\"},{tfName:\"dilations\",name:\"dilations\",type:\"number[]\"}]},{tfOpName:\"FusedDepthwiseConv2dNative\",category:\"convolution\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"filter\",type:\"tensor\"},{start:2,end:0,name:\"args\",type:\"tensors\"}],attrs:[{tfName:\"num_args\",name:\"numArgs\",type:\"number\"},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0},{tfName:\"strides\",name:\"strides\",type:\"number[]\"},{tfName:\"padding\",name:\"pad\",type:\"string\"},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",defaultValue:\"NHWC\"},{tfName:\"dilations\",name:\"dilations\",type:\"number[]\",defaultValue:[1,1,1,1]},{tfName:\"fused_ops\",name:\"fusedOps\",type:\"string[]\",defaultValue:[]}]},{tfOpName:\"Conv3D\",category:\"convolution\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"filter\",type:\"tensor\"}],attrs:[{tfName:\"strides\",name:\"strides\",type:\"number[]\"},{tfName:\"padding\",name:\"pad\",type:\"string\"},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",defaultValue:\"NHWC\"},{tfName:\"dilations\",name:\"dilations\",type:\"number[]\"}]}],convolution=Object.freeze({json:json$3}),json$4=[{tfOpName:\"Fill\",category:\"creation\",inputs:[{start:0,name:\"shape\",type:\"number[]\"},{start:1,name:\"value\",type:\"number\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\"}]},{tfOpName:\"LinSpace\",category:\"creation\",inputs:[{start:0,name:\"start\",type:\"number\"},{start:1,name:\"stop\",type:\"number\"},{start:2,name:\"num\",type:\"number\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"OneHot\",category:\"creation\",inputs:[{start:0,name:\"indices\",type:\"tensor\"},{start:1,name:\"depth\",type:\"number\"},{start:2,name:\"onValue\",type:\"number\",defaultValue:1},{start:3,name:\"offValue\",type:\"number\",defaultValue:0}],attrs:[{tfName:\"axis\",name:\"axis\",type:\"number\",notSupported:!0},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Ones\",category:\"creation\",inputs:[{start:0,name:\"shape\",type:\"number[]\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\"}]},{tfOpName:\"OnesLike\",category:\"creation\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"dtype\",name:\"dtype\",type:\"dtype\"}]},{tfOpName:\"RandomUniform\",category:\"creation\",inputs:[{start:0,name:\"shape\",type:\"number[]\"}],attrs:[{tfName:\"minval\",name:\"minval\",type:\"number\",defaultValue:0},{tfName:\"maxval\",name:\"maxval\",type:\"number\",defaultValue:1},{tfName:\"dtype\",name:\"dtype\",type:\"dtype\"},{tfName:\"seed\",name:\"seed\",type:\"number\",defaultValue:0},{tfName:\"seed2\",name:\"seed2\",type:\"number\",defaultValue:0,notSupported:!0},{tfName:\"T\",name:\"T\",type:\"number\",notSupported:!0}]},{tfOpName:\"Range\",category:\"creation\",inputs:[{start:0,name:\"start\",type:\"number\"},{start:1,name:\"stop\",type:\"number\"},{start:2,name:\"step\",type:\"number\",defaultValue:0}],attrs:[{tfName:\"Tidx\",name:\"dtype\",type:\"dtype\"}]},{tfOpName:\"TruncatedNormal\",category:\"creation\",inputs:[{start:0,name:\"shape\",type:\"number[]\"}],attrs:[{tfName:\"means\",name:\"mean\",type:\"number\",defaultValue:0},{tfName:\"stddev\",name:\"stdDev\",type:\"number\",defaultValue:1},{tfName:\"seed\",name:\"seed\",type:\"number\"},{tfName:\"seed2\",name:\"seed2\",type:\"number\",defaultValue:0,notSupported:!0},{tfName:\"dtype\",name:\"dtype\",type:\"dtype\"},{tfName:\"T\",name:\"T\",type:\"number\",notSupported:!0}]},{tfOpName:\"Zeros\",category:\"creation\",inputs:[{start:0,name:\"shape\",type:\"number[]\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\"}]},{tfOpName:\"ZerosLike\",category:\"creation\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\"}]},{tfOpName:\"Multinomial\",category:\"creation\",inputs:[{start:0,name:\"logits\",type:\"tensor\"},{start:1,name:\"numSamples\",type:\"number\"}],attrs:[{tfName:\"seed\",name:\"seed\",type:\"number\"},{tfName:\"seed2\",name:\"seed2\",type:\"number\"},{tfName:\"T\",name:\"dtype\",type:\"dtype\"},{tfName:\"output_dtype\",name:\"output_dtype\",type:\"dtype\"}]}],creation=Object.freeze({json:json$4}),json$5=[{tfOpName:\"NonMaxSuppressionV2\",category:\"dynamic\",inputs:[{start:0,name:\"boxes\",type:\"tensor\"},{start:1,name:\"scores\",type:\"tensor\"},{start:2,name:\"maxOutputSize\",type:\"number\"},{start:3,name:\"iouThreshold\",type:\"number\"}]},{tfOpName:\"NonMaxSuppressionV3\",category:\"dynamic\",inputs:[{start:0,name:\"boxes\",type:\"tensor\"},{start:1,name:\"scores\",type:\"tensor\"},{start:2,name:\"maxOutputSize\",type:\"number\"},{start:3,name:\"iouThreshold\",type:\"number\"},{start:4,name:\"scoreThreshold\",type:\"number\"}]},{tfOpName:\"NonMaxSuppressionV5\",category:\"dynamic\",inputs:[{start:0,name:\"boxes\",type:\"tensor\"},{start:1,name:\"scores\",type:\"tensor\"},{start:2,name:\"maxOutputSize\",type:\"number\"},{start:3,name:\"iouThreshold\",type:\"number\"},{start:4,name:\"scoreThreshold\",type:\"number\"},{start:5,name:\"softNmsSigma\",type:\"number\"}]},{tfOpName:\"Where\",category:\"dynamic\",inputs:[{start:0,name:\"condition\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"ListDiff\",category:\"dynamic\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"y\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]}],dynamic=Object.freeze({json:json$5}),json$6=[{tfOpName:\"TopKV2\",category:\"evaluation\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"k\",type:\"number\"}],attrs:[{tfName:\"sorted\",name:\"sorted\",type:\"bool\"}]}],evaluation=Object.freeze({json:json$6}),json$7=[{tfOpName:\"PlaceholderWithDefault\",category:\"graph\",inputs:[{start:0,name:\"default\",type:\"tensor\"}],attrs:[{tfName:\"shape\",name:\"shape\",type:\"shape\"},{tfName:\"dtype\",name:\"dtype\",type:\"dtype\"}]},{tfOpName:\"Placeholder\",category:\"graph\",attrs:[{tfName:\"shape\",name:\"shape\",type:\"shape\"},{tfName:\"dtype\",name:\"dtype\",type:\"dtype\"}]},{tfOpName:\"Const\",category:\"graph\"},{tfOpName:\"Identity\",category:\"graph\",inputs:[{start:0,name:\"x\",type:\"tensor\"}]},{tfOpName:\"IdentityN\",category:\"graph\",inputs:[{start:0,end:0,name:\"x\",type:\"tensors\"}]},{tfOpName:\"Snapshot\",category:\"graph\",inputs:[{start:0,name:\"x\",type:\"tensor\"}]},{tfOpName:\"Rank\",category:\"graph\",inputs:[{start:0,name:\"x\",type:\"tensor\"}]},{tfOpName:\"Size\",category:\"graph\",inputs:[{start:0,name:\"x\",type:\"tensor\"}]},{tfOpName:\"Shape\",category:\"graph\",inputs:[{start:0,name:\"x\",type:\"tensor\"}]},{tfOpName:\"ShapeN\",category:\"graph\",inputs:[{start:0,end:0,name:\"x\",type:\"tensors\"}]},{tfOpName:\"Print\",category:\"graph\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"data\",type:\"tensors\"}],attrs:[{tfName:\"message\",name:\"message\",type:\"string\"},{tfName:\"first_n\",name:\"firstN\",type:\"number\",notSupported:!0},{tfName:\"summarize\",name:\"summarize\",type:\"number\",defaultValue:3}]},{tfOpName:\"NoOp\",category:\"graph\",inputs:[]},{tfOpName:\"StopGradient\",category:\"graph\",inputs:[{start:0,name:\"x\",type:\"tensor\"}]},{tfOpName:\"FakeQuantWithMinMaxVars\",category:\"graph\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"min\",name:\"min\",type:\"number\"},{tfName:\"max\",name:\"max\",type:\"number\"}]}],graph=Object.freeze({json:json$7}),json$8=[{tfOpName:\"ResizeBilinear\",category:\"image\",inputs:[{start:0,name:\"images\",type:\"tensor\"},{start:1,name:\"size\",type:\"number[]\"}],attrs:[{tfName:\"align_corners\",name:\"alignCorners\",type:\"bool\"},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"ResizeNearestNeighbor\",category:\"image\",inputs:[{start:0,name:\"images\",type:\"tensor\"},{start:1,name:\"size\",type:\"number[]\"}],attrs:[{tfName:\"align_corners\",name:\"alignCorners\",type:\"bool\"},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"CropAndResize\",category:\"image\",inputs:[{start:0,name:\"image\",type:\"tensor\"},{start:1,name:\"boxes\",type:\"tensor\"},{start:2,name:\"boxInd\",type:\"tensor\"},{start:3,name:\"cropSize\",type:\"number[]\"}],attrs:[{tfName:\"method\",name:\"method\",type:\"string\"},{tfName:\"extrapolation_value\",name:\"extrapolationValue\",type:\"number\"}]}],image$1=Object.freeze({json:json$8}),json$9=[{tfOpName:\"Equal\",category:\"logical\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"NotEqual\",category:\"logical\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Greater\",category:\"logical\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"GreaterEqual\",category:\"logical\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Less\",category:\"logical\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"LessEqual\",category:\"logical\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"LogicalAnd\",category:\"logical\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"LogicalNot\",category:\"logical\",inputs:[{start:0,name:\"a\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"LogicalOr\",category:\"logical\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Select\",category:\"logical\",inputs:[{start:0,name:\"condition\",type:\"tensor\"},{start:1,name:\"a\",type:\"tensor\"},{start:2,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"SelectV2\",category:\"logical\",inputs:[{start:0,name:\"condition\",type:\"tensor\"},{start:1,name:\"a\",type:\"tensor\"},{start:2,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]}],logical=Object.freeze({json:json$9}),json$10=[{tfOpName:\"_FusedMatMul\",category:\"matrices\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"},{start:2,end:0,name:\"args\",type:\"tensors\"}],attrs:[{tfName:\"num_args\",name:\"numArgs\",type:\"number\"},{tfName:\"fused_ops\",name:\"fusedOps\",type:\"string[]\",defaultValue:[]},{tfName:\"epsilon\",name:\"epsilon\",type:\"number\",defaultValue:1e-4},{tfName:\"transpose_a\",name:\"transposeA\",type:\"bool\",defaultValue:!1},{tfName:\"transpose_b\",name:\"transposeB\",type:\"bool\",defaultValue:!1},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"MatMul\",category:\"matrices\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"transpose_a\",name:\"transposeA\",type:\"bool\",defaultValue:!1},{tfName:\"transpose_b\",name:\"transposeB\",type:\"bool\",defaultValue:!1},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"BatchMatMul\",category:\"matrices\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"adj_x\",name:\"transposeA\",type:\"bool\",defaultValue:!1},{tfName:\"adj_y\",name:\"transposeB\",type:\"bool\",defaultValue:!1},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"BatchMatMulV2\",category:\"matrices\",inputs:[{start:0,name:\"a\",type:\"tensor\"},{start:1,name:\"b\",type:\"tensor\"}],attrs:[{tfName:\"adj_x\",name:\"transposeA\",type:\"bool\",defaultValue:!1},{tfName:\"adj_y\",name:\"transposeB\",type:\"bool\",defaultValue:!1},{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]},{tfOpName:\"Transpose\",category:\"matrices\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"perm\",type:\"number[]\"}],attrs:[{tfName:\"T\",name:\"dtype\",type:\"dtype\",notSupported:!0}]}],matrices=Object.freeze({json:json$10}),json$11=[{tfOpName:\"FusedBatchNorm\",category:\"normalization\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"scale\",type:\"tensor\"},{start:2,name:\"offset\",type:\"tensor\"},{start:3,name:\"mean\",type:\"tensor\"},{start:4,name:\"variance\",type:\"tensor\"}],attrs:[{tfName:\"epsilon\",name:\"epsilon\",type:\"number\",defaultValue:.001},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",notSupported:!0}]},{tfOpName:\"FusedBatchNormV2\",category:\"normalization\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"scale\",type:\"tensor\"},{start:2,name:\"offset\",type:\"tensor\"},{start:3,name:\"mean\",type:\"tensor\"},{start:4,name:\"variance\",type:\"tensor\"}],attrs:[{tfName:\"epsilon\",name:\"epsilon\",type:\"number\",defaultValue:.001},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",notSupported:!0}]},{tfOpName:\"FusedBatchNormV3\",category:\"normalization\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"scale\",type:\"tensor\"},{start:2,name:\"offset\",type:\"tensor\"},{start:3,name:\"mean\",type:\"tensor\"},{start:4,name:\"variance\",type:\"tensor\"}],attrs:[{tfName:\"epsilon\",name:\"epsilon\",type:\"number\",defaultValue:.001},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\",notSupported:!0}]},{tfOpName:\"LRN\",category:\"normalization\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"depth_radius\",name:\"radius\",type:\"number\",defaultValue:5},{tfName:\"bias\",name:\"bias\",type:\"number\",defaultValue:1},{tfName:\"alpha\",name:\"alpha\",type:\"number\",defaultValue:1},{tfName:\"beta\",name:\"beta\",type:\"number\",defaultValue:.5}]},{tfOpName:\"Softmax\",category:\"normalization\",inputs:[{start:0,name:\"x\",type:\"tensor\"}]},{tfOpName:\"LogSoftmax\",category:\"normalization\",inputs:[{start:0,name:\"x\",type:\"tensor\"}]},{tfOpName:\"SparseToDense\",category:\"normalization\",inputs:[{start:0,name:\"sparseIndices\",type:\"tensor\"},{start:1,name:\"outputShape\",type:\"number[]\"},{start:2,name:\"sparseValues\",type:\"tensor\"},{start:3,name:\"defaultValue\",type:\"tensor\"}],attrs:[{tfName:\"validate_indices\",name:\"validateIndices\",type:\"bool\",defaultValue:!0,notSupported:!0}]}],normalization=Object.freeze({json:json$11}),json$12=[{tfOpName:\"Max\",category:\"reduction\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"axis\",type:\"number[]\"}],attrs:[{tfName:\"keep_dims\",name:\"keepDims\",type:\"bool\"}]},{tfOpName:\"Mean\",category:\"reduction\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"axis\",type:\"number[]\"}],attrs:[{tfName:\"keep_dims\",name:\"keepDims\",type:\"bool\"}]},{tfOpName:\"Min\",category:\"reduction\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"axis\",type:\"number[]\"}],attrs:[{tfName:\"keep_dims\",name:\"keepDims\",type:\"bool\"}]},{tfOpName:\"Sum\",category:\"reduction\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"axis\",type:\"number[]\"}],attrs:[{tfName:\"keep_dims\",name:\"keepDims\",type:\"bool\"}]},{tfOpName:\"All\",category:\"reduction\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"axis\",type:\"number[]\"}],attrs:[{tfName:\"keep_dims\",name:\"keepDims\",type:\"bool\"}]},{tfOpName:\"Any\",category:\"reduction\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"axis\",type:\"number[]\"}],attrs:[{tfName:\"keep_dims\",name:\"keepDims\",type:\"bool\"}]},{tfOpName:\"ArgMax\",category:\"reduction\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"axis\",type:\"number\"}]},{tfOpName:\"ArgMin\",category:\"reduction\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"axis\",type:\"number\"}]},{tfOpName:\"Prod\",category:\"reduction\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"axis\",type:\"number[]\"}],attrs:[{tfName:\"keep_dims\",name:\"keepDims\",type:\"bool\"}]}],reduction=Object.freeze({json:json$12}),json$13=[{tfOpName:\"ConcatV2\",category:\"slice_join\",inputs:[{start:0,end:-1,name:\"tensors\",type:\"tensors\"},{start:-1,name:\"axis\",type:\"number\"}],attrs:[{tfName:\"N\",name:\"n\",type:\"number\",defaultValue:2}]},{tfOpName:\"Concat\",category:\"slice_join\",inputs:[{start:1,end:0,name:\"tensors\",type:\"tensors\"},{start:0,name:\"axis\",type:\"number\"}],attrs:[{tfName:\"N\",name:\"n\",type:\"number\",defaultValue:2}]},{tfOpName:\"GatherV2\",category:\"slice_join\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"indices\",type:\"tensor\"},{start:2,name:\"axis\",type:\"number\",defaultValue:0}]},{tfOpName:\"Gather\",category:\"slice_join\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"indices\",type:\"tensor\"}],attrs:[{tfName:\"axis\",name:\"axis\",type:\"number\",defaultValue:0},{tfName:\"validate_indices\",name:\"validateIndices\",type:\"bool\",notSupported:!0}]},{tfOpName:\"Reverse\",category:\"slice_join\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"dims\",type:\"bool\",notSupported:!0}]},{tfOpName:\"ReverseV2\",category:\"slice_join\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"axis\",type:\"number[]\"}]},{tfOpName:\"Slice\",category:\"slice_join\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"begin\",type:\"number[]\"},{start:2,name:\"size\",type:\"number[]\"}]},{tfOpName:\"StridedSlice\",category:\"slice_join\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"begin\",type:\"number[]\"},{start:2,name:\"end\",type:\"number[]\"},{start:3,name:\"strides\",type:\"number[]\"}],attrs:[{tfName:\"begin_mask\",name:\"beginMask\",type:\"number\",defaultValue:0},{tfName:\"end_mask\",name:\"endMask\",type:\"number\",defaultValue:0},{tfName:\"new_axis_mask\",name:\"newAxisMask\",type:\"number\",defaultValue:0},{tfName:\"ellipsis_mask\",name:\"ellipsisMask\",type:\"number\",defaultValue:0},{tfName:\"shrink_axis_mask\",name:\"shrinkAxisMask\",type:\"number\",defaultValue:0}]},{tfOpName:\"Pack\",category:\"slice_join\",inputs:[{start:0,end:0,name:\"tensors\",type:\"tensors\"}],attrs:[{tfName:\"axis\",name:\"axis\",type:\"number\",defaultValue:0}]},{tfOpName:\"Unpack\",category:\"slice_join\",inputs:[{start:0,name:\"tensor\",type:\"tensor\"}],attrs:[{tfName:\"axis\",name:\"axis\",type:\"number\",defaultValue:0},{tfName:\"num\",name:\"num\",type:\"number\",defaultValue:0,notSupported:!0}]},{tfOpName:\"Tile\",category:\"slice_join\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"reps\",type:\"number[]\"}]},{tfOpName:\"Split\",category:\"slice_join\",inputs:[{start:0,name:\"axis\",type:\"number\",defaultValue:0},{start:1,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"num_split\",name:\"numOrSizeSplits\",type:\"number\",defaultValue:1}]},{tfOpName:\"SplitV\",category:\"slice_join\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"numOrSizeSplits\",type:\"number[]\"},{start:2,name:\"axis\",type:\"number\",defaultValue:0}]},{tfOpName:\"ScatterNd\",category:\"slice_join\",inputs:[{start:0,name:\"indices\",type:\"tensor\"},{start:1,name:\"values\",type:\"tensor\"},{start:2,name:\"shape\",type:\"number[]\"}]},{tfOpName:\"GatherNd\",category:\"slice_join\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"indices\",type:\"tensor\"}]},{tfOpName:\"SparseToDense\",category:\"slice_join\",inputs:[{start:0,name:\"sparseIndices\",type:\"tensor\"},{start:1,name:\"outputShape\",type:\"number[]\"},{start:2,name:\"sparseValues\",type:\"tensor\"},{start:3,name:\"defaultValue\",type:\"tensor\"}],attrs:[{tfName:\"validate_indices\",name:\"validateIndices\",type:\"bool\",defaultValue:!1,notSupported:!0}]}],sliceJoin=Object.freeze({json:json$13}),json$14=[{tfOpName:\"FFT\",category:\"spectral\",inputs:[{start:0,name:\"x\",type:\"tensor\"}]},{tfOpName:\"IFFT\",category:\"spectral\",inputs:[{start:0,name:\"x\",type:\"tensor\"}]},{tfOpName:\"RFFT\",category:\"spectral\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"fft_length\",type:\"number\",notSupported:!0}]},{tfOpName:\"IRFFT\",category:\"spectral\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"fft_length\",type:\"number\",notSupported:!0}]}],spectral=Object.freeze({json:json$14}),json$15=[{tfOpName:\"Cast\",category:\"transformation\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"SrcT\",name:\"sdtype\",type:\"dtype\",notSupported:!0},{tfName:\"DstT\",name:\"dtype\",type:\"dtype\"}]},{tfOpName:\"ExpandDims\",category:\"transformation\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"axis\",type:\"number\"}]},{tfOpName:\"Pad\",category:\"transformation\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"padding\",type:\"number[]\"}],attrs:[{tfName:\"constant_value\",name:\"constantValue\",type:\"number\",defaultValue:0}]},{tfOpName:\"PadV2\",category:\"transformation\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"padding\",type:\"number[]\"},{start:2,name:\"constantValue\",type:\"number\",defaultValue:0}]},{tfOpName:\"Reshape\",category:\"transformation\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"shape\",type:\"number[]\"}]},{tfOpName:\"Squeeze\",category:\"transformation\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"axis\",tfDeprecatedName:\"squeeze_dims\",name:\"axis\",type:\"number[]\"}]},{tfOpName:\"SpaceToBatchND\",category:\"transformation\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"blockShape\",type:\"number[]\"},{start:2,name:\"paddings\",type:\"number[]\"}]},{tfOpName:\"BatchToSpaceND\",category:\"transformation\",inputs:[{start:0,name:\"x\",type:\"tensor\"},{start:1,name:\"blockShape\",type:\"number[]\"},{start:2,name:\"crops\",type:\"number[]\"}]},{tfOpName:\"DepthToSpace\",category:\"transformation\",inputs:[{start:0,name:\"x\",type:\"tensor\"}],attrs:[{tfName:\"block_size\",name:\"blockSize\",type:\"number\"},{tfName:\"data_format\",name:\"dataFormat\",type:\"string\"}]}],transformation=Object.freeze({json:json$15}),OperationMapper=function(){function e(){var e=[arithmetic,basicMath,control,convolution,creation,dynamic,evaluation,logical,image$1,graph,matrices,normalization,reduction,sliceJoin,spectral,transformation],t=[].concat.apply([],e.map(function(e){return e.json}));this.opMappers=t.reduce(function(e,t){return e[t.tfOpName]=t,e},{})}return Object.defineProperty(e,\"Instance\",{get:function(){return this._instance||(this._instance=new this)},enumerable:!0,configurable:!0}),e.prototype.transformGraph=function(e,t){var a=this;void 0===t&&(t={});var r=[],n=[],s=e.node.reduce(function(e,t){return e[t.name]=a.mapNode(t),t.op.startsWith(\"Placeholder\")&&r.push(e[t.name]),\"Const\"===t.op&&n.push(e[t.name]),e},{}),o=[],p=[],u={},i={};null!=t&&(u=this.mapSignatureEntries(t.inputs),i=this.mapSignatureEntries(t.outputs));var m=Object.keys(s);return m.forEach(function(e){var t=s[e];t.inputNames.forEach(function(e){var a=getNodeNameAndIndex(e)[0];t.inputs.push(s[a]),s[a].children.push(t)})}),0===Object.keys(i).length?m.forEach(function(e){var t=s[e];0===t.children.length&&p.push(t)}):Object.keys(i).forEach(function(e){var t=getNodeNameAndIndex(e)[0],a=s[t];null!=a&&(a.signatureKey=i[e],p.push(a))}),Object.keys(u).length>0?Object.keys(u).forEach(function(e){var t=getNodeNameAndIndex(e)[0],a=s[t];a&&(a.signatureKey=u[e],o.push(a))}):o=r,{nodes:s,inputs:o,outputs:p,weights:n,placeholders:r,signature:t}},e.prototype.mapSignatureEntries=function(e){return Object.keys(e||{}).reduce(function(t,a){return t[e[a].name]=a,t},{})},e.prototype.mapNode=function(e){var t=getRegisteredOp(e.op)||this.opMappers[e.op]||{};null==e.attr&&(e.attr={});var a={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map(function(e){return e.startsWith(\"^\")?e.substr(1):e}),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr};return null!=t.inputs&&(a.inputParams=t.inputs.reduce(function(e,t){return e[t.name]={type:t.type,inputIndexStart:t.start,inputIndexEnd:t.end},e},{})),null!=t.attrs&&(a.attrParams=t.attrs.reduce(function(t,a){var r=a.type,n=void 0;switch(a.type){case\"string\":void 0===(n=getStringParam(e.attr,a.tfName,a.defaultValue))&&a.tfDeprecatedName&&(n=getStringParam(e.attr,a.tfDeprecatedName,a.defaultValue));break;case\"string[]\":void 0===(n=getStringArrayParam(e.attr,a.tfName,a.defaultValue))&&a.tfDeprecatedName&&(n=getStringArrayParam(e.attr,a.tfDeprecatedName,a.defaultValue));break;case\"number\":void 0===(n=getNumberParam(e.attr,a.tfName,a.defaultValue||0))&&a.tfDeprecatedName&&(n=getNumberParam(e.attr,a.tfDeprecatedName,a.defaultValue));break;case\"number[]\":void 0===(n=getNumericArrayParam(e.attr,a.tfName,a.defaultValue))&&a.tfDeprecatedName&&(n=getNumericArrayParam(e.attr,a.tfDeprecatedName,a.defaultValue));break;case\"bool\":void 0===(n=getBoolParam(e.attr,a.tfName,a.defaultValue))&&a.tfDeprecatedName&&(n=getBoolParam(e.attr,a.tfDeprecatedName,a.defaultValue));break;case\"bool[]\":void 0===(n=getBoolArrayParam(e.attr,a.tfName,a.defaultValue))&&a.tfDeprecatedName&&(n=getBoolArrayParam(e.attr,a.tfDeprecatedName,a.defaultValue));break;case\"shape\":void 0===(n=getTensorShapeParam(e.attr,a.tfName,a.defaultValue))&&a.tfDeprecatedName&&(n=getTensorShapeParam(e.attr,a.tfDeprecatedName,a.defaultValue));break;case\"shape[]\":void 0===(n=getTensorShapeArrayParam(e.attr,a.tfName,a.defaultValue))&&a.tfDeprecatedName&&(n=getTensorShapeArrayParam(e.attr,a.tfDeprecatedName,a.defaultValue));break;case\"dtype\":void 0===(n=getDtypeParam(e.attr,a.tfName,a.defaultValue))&&a.tfDeprecatedName&&(n=getDtypeParam(e.attr,a.tfDeprecatedName,a.defaultValue));break;case\"dtype[]\":void 0===(n=getDtypeArrayParam(e.attr,a.tfName,a.defaultValue))&&a.tfDeprecatedName&&(n=getDtypeArrayParam(e.attr,a.tfDeprecatedName,a.defaultValue));break;case\"tensor\":case\"tensors\":break;default:throw new Error(\"Unsupported param type: \"+a.type+\" for op: \"+e.op)}return t[a.name]={value:n,type:r},t},{})),a},e}();function decodeBase64(e){var t=env().global;if(void 0!==t.atob)return t.atob(e);if(\"undefined\"!=typeof Buffer)return new Buffer(e,\"base64\").toString();throw new Error(\"Unable to decode base64 in this environment. Missing built-in atob() or Buffer()\")}function parseStringParam(e,t){var a=Array.isArray(e)?String.fromCharCode.apply(null,e):decodeBase64(e);return t?a:a.toLowerCase()}function getStringParam(e,t,a,r){void 0===r&&(r=!1);var n=e[t];return null!=n?parseStringParam(n.s,r):a}function getBoolParam(e,t,a){var r=e[t];return r?r.b:a}function getNumberParam(e,t,a){var r=e[t]||{},n=null!=r.i?r.i:null!=r.f?r.f:a;return\"number\"==typeof n?n:parseInt(n,10)}function parseDtypeParam(e){switch(\"string\"==typeof e&&(e=DataType[e]),e){case DataType.DT_FLOAT:return\"float32\";case DataType.DT_INT32:case DataType.DT_INT64:case DataType.DT_INT8:case DataType.DT_UINT8:return\"int32\";case DataType.DT_BOOL:return\"bool\";case DataType.DT_DOUBLE:return\"float32\";case DataType.DT_STRING:return\"string\";default:return null}}function getDtypeParam(e,t,a){var r=e[t];return r&&r.type?parseDtypeParam(r.type):a}function getDtypeArrayParam(e,t,a){var r=e[t];return r&&r.list&&r.list.type?r.list.type.map(function(e){return parseDtypeParam(e)}):a}function parseTensorShapeParam(e){if(!e.unknownRank)return null!=e.dim?e.dim.map(function(e){return\"number\"==typeof e.size?e.size:parseInt(e.size,10)}):[]}function getTensorShapeParam(e,t,a){var r=e[t];return r&&r.shape?parseTensorShapeParam(r.shape):a}function getNumericArrayParam(e,t,a){var r=e[t];return r?((r.list.f&&r.list.f.length?r.list.f:r.list.i)||[]).map(function(e){return\"number\"==typeof e?e:parseInt(e,10)}):a}function getStringArrayParam(e,t,a,r){void 0===r&&(r=!1);var n=e[t];return n&&n.list&&n.list.s?n.list.s.map(function(e){return parseStringParam(e,r)}):a}function getTensorShapeArrayParam(e,t,a){var r=e[t];return r&&r.list&&r.list.shape?r.list.shape.map(function(e){return parseTensorShapeParam(e)}):a}function getBoolArrayParam(e,t,a){var r=e[t];return r&&r.list&&r.list.b?r.list.b:a}var NodeValueImpl=function(){function e(e,t,a){var r=this;this.node=e,this.tensorMap=t,this.context=a,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map(function(e){return r.getInput(e)}),null!=e.rawAttrs&&(this.attrs=Object.keys(e.rawAttrs).reduce(function(e,t){return e[t]=r.getAttr(t),e},{}))}return e.prototype.getInput=function(e){return getTensor(e,this.tensorMap,this.context)},e.prototype.getAttr=function(e,t){var a=this.node.rawAttrs[e];if(null!=a.tensor)return getTensor(e,this.tensorMap,this.context);if(null!=a.i||null!=a.f)return getNumberParam(this.node.rawAttrs,e,t);if(null!=a.s)return getStringParam(this.node.rawAttrs,e,t);if(null!=a.b)return getBoolParam(this.node.rawAttrs,e,t);if(null!=a.shape)return getTensorShapeParam(this.node.rawAttrs,e,t);if(null!=a.type)return getDtypeParam(this.node.rawAttrs,e,t);if(null!=a.list){if(null!=a.list.i||null!=a.list.f)return getNumericArrayParam(this.node.rawAttrs,e,t);if(null!=a.list.s)return getStringArrayParam(this.node.rawAttrs,e,t);if(null!=a.list.shape)return getTensorShapeArrayParam(this.node.rawAttrs,e,t);if(null!=a.list.b)return getBoolArrayParam(this.node.rawAttrs,e,t);if(null!=a.list.type)return getDtypeArrayParam(this.node.rawAttrs,e,t)}return t},e}(),executeOp=function(e,t,a){switch(e.op){case\"BiasAdd\":case\"AddV2\":case\"Add\":return[add(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"AddN\":return[addN(getParamValue(\"tensors\",e,t,a))];case\"FloorMod\":case\"Mod\":return[mod(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"Mul\":return[mul(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"RealDiv\":case\"Div\":return[div(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"DivNoNan\":return[divNoNan(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"FloorDiv\":return[floorDiv(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"Sub\":return[sub(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"Minimum\":return[minimum(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"Maximum\":return[maximum(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"Pow\":return[pow(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"SquaredDifference\":return[squaredDifference(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];default:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}},executeOp$1=function(e,t,a){switch(e.op){case\"Abs\":case\"ComplexAbs\":return[abs(getParamValue(\"x\",e,t,a))];case\"Acos\":return[acos(getParamValue(\"x\",e,t,a))];case\"Acosh\":return[acosh(getParamValue(\"x\",e,t,a))];case\"Asin\":return[asin(getParamValue(\"x\",e,t,a))];case\"Asinh\":return[asinh(getParamValue(\"x\",e,t,a))];case\"Atan\":return[atan(getParamValue(\"x\",e,t,a))];case\"Atan2\":return[atan2(getParamValue(\"x\",e,t,a),getParamValue(\"y\",e,t,a))];case\"Atanh\":return[atanh(getParamValue(\"x\",e,t,a))];case\"Ceil\":return[ceil(getParamValue(\"x\",e,t,a))];case\"Complex\":return[complex(getParamValue(\"real\",e,t,a),getParamValue(\"imag\",e,t,a))];case\"Cos\":return[cos(getParamValue(\"x\",e,t,a))];case\"Cosh\":return[cosh(getParamValue(\"x\",e,t,a))];case\"Elu\":return[elu(getParamValue(\"x\",e,t,a))];case\"Erf\":return[erf(getParamValue(\"x\",e,t,a))];case\"Exp\":return[exp(getParamValue(\"x\",e,t,a))];case\"Expm1\":return[expm1(getParamValue(\"x\",e,t,a))];case\"Floor\":return[floor(getParamValue(\"x\",e,t,a))];case\"Log\":return[log(getParamValue(\"x\",e,t,a))];case\"Log1p\":return[log1p(getParamValue(\"x\",e,t,a))];case\"Imag\":return[imag(getParamValue(\"x\",e,t,a))];case\"Neg\":return[neg(getParamValue(\"x\",e,t,a))];case\"Reciprocal\":return[reciprocal(getParamValue(\"x\",e,t,a))];case\"Real\":return[real(getParamValue(\"x\",e,t,a))];case\"Relu\":return[relu(getParamValue(\"x\",e,t,a))];case\"Round\":return[round(getParamValue(\"x\",e,t,a))];case\"Selu\":return[selu(getParamValue(\"x\",e,t,a))];case\"Sigmoid\":return[sigmoid(getParamValue(\"x\",e,t,a))];case\"Sin\":return[sin(getParamValue(\"x\",e,t,a))];case\"Sign\":return[sign(getParamValue(\"x\",e,t,a))];case\"Sinh\":return[sinh(getParamValue(\"x\",e,t,a))];case\"Softplus\":return[softplus(getParamValue(\"x\",e,t,a))];case\"Sqrt\":return[sqrt(getParamValue(\"x\",e,t,a))];case\"Square\":return[square(getParamValue(\"x\",e,t,a))];case\"Tanh\":return[tanh(getParamValue(\"x\",e,t,a))];case\"Tan\":return[tan(getParamValue(\"x\",e,t,a))];case\"Relu6\":case\"ClipByValue\":return[clipByValue(getParamValue(\"x\",e,t,a),getParamValue(\"clipValueMin\",e,t,a),getParamValue(\"clipValueMax\",e,t,a))];case\"Rsqrt\":return[rsqrt(getTensor(e.inputNames[0],t,a))];case\"Prod\":return[prod(getParamValue(\"x\",e,t,a),getParamValue(\"axes\",e,t,a))];case\"LeakyRelu\":return[leakyRelu(getParamValue(\"x\",e,t,a),getParamValue(\"alpha\",e,t,a))];case\"Prelu\":return[prelu(getParamValue(\"x\",e,t,a),getParamValue(\"alpha\",e,t,a))];default:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}},TensorArray=function(){function e(t,a,r,n,s,o,p){this.name=t,this.dtype=a,this.maxSize=r,this.elementShape=n,this.identicalElementShapes=s,this.dynamicSize=o,this.clearAfterRead=p,this.tensors=[],this.closed_=!1,this.id=e.nextId++}return Object.defineProperty(e.prototype,\"closed\",{get:function(){return this.closed_},enumerable:!0,configurable:!0}),e.prototype.clearAndClose=function(){this.tensors.forEach(function(e){return e.tensor.dispose()}),this.tensors=[],this.closed_=!0},e.prototype.size=function(){return this.tensors.length},e.prototype.read=function(e){if(this.closed_)throw new Error(\"TensorArray \"+this.name+\" has already been closed.\");if(e<0||e>=this.tensors.length)throw new Error(\"Tried to read from index \"+e+\", but array size is: \"+this.tensors.length);var t=this.tensors[e];if(t.cleared)throw new Error(\"TensorArray \"+this.name+\": Could not read index \"+e+\" twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).\");return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor},e.prototype.readMany=function(e){var t=this;return e.map(function(e){return t.read(e)})},e.prototype.write=function(e,t){if(this.closed_)throw new Error(\"TensorArray \"+this.name+\" has already been closed.\");if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error(\"Tried to write to index \"+e+\", but array is not resizeable and size is: \"+this.maxSize);var a=this.tensors[e]||{};if(t.dtype!==this.dtype)throw new Error(\"TensorArray \"+this.name+\": Could not write to TensorArray index \"+e+\",\\n          because the value dtype is \"+t.dtype+\", but TensorArray dtype is \"+this.dtype+\".\");if(0!==this.size()||null!=this.elementShape&&0!==this.elementShape.length||(this.elementShape=t.shape),this.assertShapesMatchAllowUndefinedSize(this.elementShape,t.shape,\"TensorArray \"+this.name+\": Could not write to TensorArray index \"+e+\".\"),a&&a.read)throw new Error(\"TensorArray \"+this.name+\": Could not write to TensorArray index \"+e+\", because it has already been read.\");if(a&&a.written)throw new Error(\"TensorArray \"+this.name+\": Could not write to TensorArray index \"+e+\", because it has already been written.\");a.tensor=t,a.written=!0,this.tensors[e]=a},e.prototype.writeMany=function(e,t){var a=this;if(e.length!==t.length)throw new Error(\"TensorArray \"+this.name+\": could not write multiple tensors,because the index size: \"+e.length+\" is not the same as tensors size: \"+t.length+\".\");e.forEach(function(e,r){return a.write(e,t[r])})},e.prototype.gather=function(e,t){if(t&&t!==this.dtype)throw new Error(\"TensorArray dtype is \"+this.dtype+\" but gather requested dtype \"+t);if(!e){e=[];for(var a=0;a<this.size();a++)e.push(a)}if(0===e.length)return tensor([],[0].concat(this.elementShape));var r=this.readMany(e);return this.assertShapesMatchAllowUndefinedSize(this.elementShape,r[0].shape,\"TensorArray shape mismatch: \"),stack(r,0)},e.prototype.concat=function(e){if(e&&e!==this.dtype)throw new Error(\"TensorArray dtype is \"+this.dtype+\" but concat requested dtype \"+e);if(0===this.size())return tensor([],[0].concat(this.elementShape));for(var t=[],a=0;a<this.size();a++)t.push(a);var r=this.readMany(t);return this.assertShapesMatchAllowUndefinedSize(this.elementShape,r[0].shape,\"TensorArray shape mismatch: tensor array shape (\"+this.elementShape+\") vs first tensor shape (\"+r[0].shape+\")\"),concat(r,0)},e.prototype.scatter=function(e,t){if(t.dtype!==this.dtype)throw new Error(\"TensorArray dtype is \"+this.dtype+\" but tensor has dtype \"+t.dtype);if(e.length!==t.shape[0])throw new Error(\"Expected len(indices) == tensor.shape[0], but saw: \"+e.length+\" vs. \"+t.shape[0]);var a=Math.max.apply(Math,e);if(!this.dynamicSize&&a>=this.maxSize)throw new Error(\"Max index must be < array size (\"+a+\"  vs. \"+this.maxSize+\")\");this.writeMany(e,unstack(t,0))},e.prototype.split=function(e,t){var a=this;if(t.dtype!==this.dtype)throw new Error(\"TensorArray dtype is \"+this.dtype+\" but tensor has dtype \"+t.dtype);var r=0,n=e.map(function(e){return r+=e});if(r!==t.shape[0])throw new Error(\"Expected sum of lengths to be equal to\\n          tensor.shape[0], but sum of lengths is\\n        \"+r+\", and tensor's shape is: \"+t.shape);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(\"TensorArray's size is not equal to the size of lengths (\"+this.maxSize+\" vs. \"+e.length+\"), and the TensorArray is not marked as dynamically resizeable\");var s=0===r?0:t.size/r,o=[];tidy(function(){t=t.reshape([1,r,s]);for(var p=0;p<e.length;++p){var u=[0,0===p?0:n[p-1],0],i=[1,e[p],s];o[p]=slice(t,u,i).reshape(a.elementShape)}return o});for(var p=[],u=0;u<e.length;u++)p[u]=u;this.writeMany(p,o)},e.prototype.assertShapesMatchAllowUndefinedSize=function(e,t,a){void 0===a&&(a=\"\"),util.assert(this.shapesEqualAllowUndefinedSize(e,t),function(){return a+\" Shapes \"+e+\" and \"+t+\" must match\"})},e.prototype.shapesEqualAllowUndefinedSize=function(e,t){if(e.length!==t.length)return!1;for(var a=0;a<e.length;a++)if(-1!==e[a]&&-1!==t[a]&&e[a]!==t[a])return!1;return!0},e.nextId=0,e}(),_this=void 0,executeOp$2=function(e,t,a){return __awaiter(_this,void 0,void 0,function(){var r,n,s,o,p,u,i,m,l,c,d,y,f,g,h,N,x,V,b,P,T,v,O,S,_,w,A,D,E,I,M,C,k,z,F;return __generator(this,function(j){switch(j.label){case 0:switch(e.op){case\"LoopCond\":return[3,1];case\"Switch\":return[3,2];case\"Merge\":return[3,4];case\"Enter\":return[3,5];case\"Exit\":return[3,6];case\"NextIteration\":return[3,7];case\"TensorArrayV3\":return[3,8];case\"TensorArrayWriteV3\":return[3,9];case\"TensorArrayReadV3\":return[3,10];case\"TensorArrayGatherV3\":return[3,11];case\"TensorArrayScatterV3\":return[3,12];case\"TensorArrayConcatV3\":return[3,13];case\"TensorArraySplitV3\":return[3,14];case\"TensorArraySizeV3\":return[3,15];case\"TensorArrayCloseV3\":return[3,16]}return[3,17];case 1:return[2,[getParamValue(\"pred\",e,t,a).clone()]];case 2:return r=getParamValue(\"pred\",e,t,a),n=getParamValue(\"data\",e,t,a),[4,r.data()];case 3:return[2,j.sent()[0]?[void 0,n.clone()]:[n.clone(),void 0]];case 4:return[2,(s=e.inputNames.find(function(e){return void 0!==getTensor(e,t,a)}))?[getTensor(s,t,a).clone()]:void 0];case 5:return o=getParamValue(\"frameName\",e,t,a),p=getParamValue(\"tensor\",e,t,a),a.enterFrame(o),[2,[p.clone()]];case 6:return u=getParamValue(\"tensor\",e,t,a),a.exitFrame(),[2,[u.clone()]];case 7:return i=getParamValue(\"tensor\",e,t,a),a.nextIteration(),[2,[i.clone()]];case 8:return m=getParamValue(\"size\",e,t,a),l=getParamValue(\"dtype\",e,t,a),c=getParamValue(\"elementShape\",e,t,a),d=getParamValue(\"dynamicSize\",e,t,a),y=getParamValue(\"clearAfterRead\",e,t,a),f=getParamValue(\"identicalElementShapes\",e,t,a),g=getParamValue(\"name\",e,t,a),h=new TensorArray(g,l,m,c,f,d,y),a.addTensorArray(h),[2,[scalar(h.id),scalar(1)]];case 9:return N=getParamValue(\"tensorArrayId\",e,t,a),x=getParamValue(\"index\",e,t,a),V=getParamValue(\"tensor\",e,t,a),a.getTensorArray(N).write(x,V),[2,[scalar(1)]];case 10:return b=getParamValue(\"tensorArrayId\",e,t,a),P=getParamValue(\"index\",e,t,a),[2,[a.getTensorArray(b).read(P)]];case 11:return T=getParamValue(\"tensorArrayId\",e,t,a),v=getParamValue(\"indices\",e,t,a),O=getParamValue(\"dtype\",e,t,a),[2,[a.getTensorArray(T).gather(v,O)]];case 12:return S=getParamValue(\"tensorArrayId\",e,t,a),_=getParamValue(\"indices\",e,t,a),w=getParamValue(\"tensor\",e,t,a),a.getTensorArray(S).scatter(_,w),[2,[scalar(1)]];case 13:return A=getParamValue(\"tensorArrayId\",e,t,a),D=a.getTensorArray(A),E=getParamValue(\"dtype\",e,t,a),[2,[D.concat(E)]];case 14:return I=getParamValue(\"tensorArrayId\",e,t,a),M=getParamValue(\"tensor\",e,t,a),C=getParamValue(\"lengths\",e,t,a),a.getTensorArray(I).split(C,M),[2,[scalar(1)]];case 15:return k=getParamValue(\"tensorArrayId\",e,t,a),z=a.getTensorArray(k),[2,[scalar(z.size(),\"int32\")]];case 16:return F=getParamValue(\"tensorArrayId\",e,t,a),a.getTensorArray(F).clearAndClose(),[2,[scalar(0)]];case 17:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}})})},executeOp$3=function(e,t,a){switch(e.op){case\"Conv1D\":var r=getParamValue(\"stride\",e,t,a),n=getParamValue(\"pad\",e,t,a),s=getParamValue(\"dataFormat\",e,t,a).toUpperCase(),o=getParamValue(\"dilation\",e,t,a);return[conv1d(getParamValue(\"x\",e,t,a),getParamValue(\"filter\",e,t,a),r,n,s,o)];case\"Conv2D\":r=getParamValue(\"strides\",e,t,a),n=getParamValue(\"pad\",e,t,a),s=getParamValue(\"dataFormat\",e,t,a).toUpperCase();var p=getParamValue(\"dilations\",e,t,a);return[conv2d(getParamValue(\"x\",e,t,a),getParamValue(\"filter\",e,t,a),[r[1],r[2]],n,s,[p[1],p[2]])];case\"_FusedConv2D\":case\"FusedDepthwiseConv2dNative\":var u=getParamValue(\"fusedOps\",e,t,a),i=u[0],m=u[1],l=\"biasadd\"===i,c=\"prelu\"===m,d=\"fusedbatchnorm\"===i,y=getParamValue(\"numArgs\",e,t,a);if(l){if(c&&2!==y)throw new Error(\"FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.\");if(!c&&1!==y)throw new Error(\"FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.\")}if(d)throw new Error(\"FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.\");r=getParamValue(\"strides\",e,t,a),n=getParamValue(\"pad\",e,t,a),s=getParamValue(\"dataFormat\",e,t,a).toUpperCase(),p=getParamValue(\"dilations\",e,t,a);var f=getParamValue(\"args\",e,t,a),g=f[0],h=f[1];return[(\"_FusedConv2D\"===e.op?fused.conv2d:fused.depthwiseConv2d)({x:getParamValue(\"x\",e,t,a),filter:getParamValue(\"filter\",e,t,a),strides:[r[1],r[2]],pad:n,dataFormat:s,dilations:[p[1],p[2]],bias:g,activation:m,preluActivationWeights:h})];case\"Conv2DBackpropInput\":case\"Conv2dTranspose\":var N=getParamValue(\"outputShape\",e,t,a);r=getParamValue(\"strides\",e,t,a),n=getParamValue(\"pad\",e,t,a);return[conv2dTranspose(getParamValue(\"x\",e,t,a),getParamValue(\"filter\",e,t,a),N,[r[1],r[2]],n)];case\"DepthwiseConv2dNative\":case\"DepthwiseConv2d\":r=getParamValue(\"strides\",e,t,a),n=getParamValue(\"pad\",e,t,a),p=getParamValue(\"dilations\",e,t,a),s=getParamValue(\"dataFormat\",e,t,a).toUpperCase();return[depthwiseConv2d(getParamValue(\"input\",e,t,a),getParamValue(\"filter\",e,t,a),[r[1],r[2]],n,s,[p[1],p[2]])];case\"Conv3D\":r=getParamValue(\"strides\",e,t,a),n=getParamValue(\"pad\",e,t,a),s=getParamValue(\"dataFormat\",e,t,a).toUpperCase(),p=getParamValue(\"dilations\",e,t,a);return[conv3d(getParamValue(\"x\",e,t,a),getParamValue(\"filter\",e,t,a),[r[1],r[2],r[3]],n,s,[p[1],p[2],p[3]])];case\"AvgPool\":r=getParamValue(\"strides\",e,t,a),n=getParamValue(\"pad\",e,t,a);var x=getParamValue(\"kernelSize\",e,t,a);return[avgPool(getParamValue(\"x\",e,t,a),[x[1],x[2]],[r[1],r[2]],n)];case\"MaxPool\":r=getParamValue(\"strides\",e,t,a),n=getParamValue(\"pad\",e,t,a),x=getParamValue(\"kernelSize\",e,t,a);return[maxPool(getParamValue(\"x\",e,t,a),[x[1],x[2]],[r[1],r[2]],n)];case\"MaxPoolWithArgmax\":r=getParamValue(\"strides\",e,t,a),n=getParamValue(\"pad\",e,t,a),x=getParamValue(\"kernelSize\",e,t,a);var V=getParamValue(\"includeBatchInIndex\",e,t,a),b=maxPoolWithArgmax(getParamValue(\"x\",e,t,a),[x[1],x[2]],[r[1],r[2]],n,V);return[b.result,b.indexes];case\"AvgPool3D\":r=getParamValue(\"strides\",e,t,a),n=getParamValue(\"pad\",e,t,a),x=getParamValue(\"kernelSize\",e,t,a);return[avgPool3d(getParamValue(\"x\",e,t,a),[x[1],x[2],x[3]],[r[1],r[2],r[3]],n)];case\"MaxPool3D\":r=getParamValue(\"strides\",e,t,a),n=getParamValue(\"pad\",e,t,a),x=getParamValue(\"kernelSize\",e,t,a);return[maxPool3d(getParamValue(\"x\",e,t,a),[x[1],x[2],x[3]],[r[1],r[2],r[3]],n)];default:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}},executeOp$4=function(e,t,a){switch(e.op){case\"Fill\":var r=getParamValue(\"shape\",e,t,a),n=getParamValue(\"dtype\",e,t,a),s=getParamValue(\"value\",e,t,a);return[fill(r,s,n)];case\"LinSpace\":var o=getParamValue(\"start\",e,t,a),p=getParamValue(\"stop\",e,t,a),u=getParamValue(\"num\",e,t,a);return[linspace(o,p,u)];case\"Multinomial\":var i=getParamValue(\"logits\",e,t,a),m=getParamValue(\"numSamples\",e,t,a),l=getParamValue(\"seed\",e,t,a);return[multinomial(i,m,l)];case\"OneHot\":var c=getParamValue(\"indices\",e,t,a),d=getParamValue(\"depth\",e,t,a),y=getParamValue(\"onValue\",e,t,a),f=getParamValue(\"offValue\",e,t,a);return[oneHot(c,d,y,f)];case\"Ones\":return[ones(getParamValue(\"shape\",e,t,a),getParamValue(\"dtype\",e,t,a))];case\"OnesLike\":return[onesLike(getParamValue(\"x\",e,t,a))];case\"RandomUniform\":return[randomUniform(getParamValue(\"shape\",e,t,a),getParamValue(\"minval\",e,t,a),getParamValue(\"maxval\",e,t,a),getParamValue(\"dtype\",e,t,a))];case\"Range\":o=getParamValue(\"start\",e,t,a);var g=getParamValue(\"stop\",e,t,a),h=getParamValue(\"step\",e,t,a);return[range(o,g,h,getParamValue(\"dtype\",e,t,a))];case\"TruncatedNormal\":r=getParamValue(\"shape\",e,t,a);var N=getParamValue(\"mean\",e,t,a),x=getParamValue(\"stdDev\",e,t,a);l=getParamValue(\"seed\",e,t,a);return[truncatedNormal(r,N,x,getParamValue(\"dtype\",e,t,a),l)];case\"Zeros\":return[zeros(getParamValue(\"shape\",e,t,a),getParamValue(\"dtype\",e,t,a))];case\"ZerosLike\":return[zerosLike(getParamValue(\"x\",e,t,a))];default:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}},_this$1=void 0,executeOp$5=function(e,t,a){return __awaiter(_this$1,void 0,void 0,function(){var r,n,s,o,p,u,i,m;return __generator(this,function(l){switch(l.label){case 0:switch(e.op){case\"NonMaxSuppressionV5\":case\"NonMaxSuppressionV3\":case\"NonMaxSuppressionV2\":return[3,1];case\"Where\":return[3,5];case\"ListDiff\":return[3,7]}return[3,8];case 1:return r=getParamValue(\"boxes\",e,t,a),n=getParamValue(\"scores\",e,t,a),s=getParamValue(\"maxOutputSize\",e,t,a),o=getParamValue(\"iouThreshold\",e,t,a),p=getParamValue(\"scoreThreshold\",e,t,a),\"NonMaxSuppressionV5\"!==e.op?[3,3]:(u=getParamValue(\"softNmsSigma\",e,t,a),[4,image.nonMaxSuppressionWithScoreAsync(r,n,s,o,p,u)]);case 2:return[2,[(m=l.sent()).selectedIndices,m.selectedScores]];case 3:return[4,image.nonMaxSuppressionAsync(r,n,s,o,p)];case 4:return[2,[l.sent()]];case 5:return i=getParamValue(\"condition\",e,t,a).asType(\"bool\"),[4,whereAsync(i)];case 6:return m=[l.sent()],i.dispose(),[2,m];case 7:return[2,setdiff1dAsync(getParamValue(\"x\",e,t,a),getParamValue(\"y\",e,t,a))];case 8:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}})})},executeOp$6=function(e,t,a){switch(e.op){case\"TopKV2\":var r=getParamValue(\"x\",e,t,a),n=getParamValue(\"k\",e,t,a),s=getParamValue(\"sorted\",e,t,a),o=topk(r,n,s);return[o.values,o.indices];default:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}},executeOp$7=function(e,t,a){switch(e.op){case\"Const\":return t[e.name];case\"PlaceholderWithDefault\":var r=getParamValue(\"default\",e,t,a);return[getTensor(e.name,t,a)||r];case\"Placeholder\":return[getTensor(e.name,t,a)];case\"Identity\":case\"StopGradient\":case\"FakeQuantWithMinMaxVars\":return[getParamValue(\"x\",e,t,a).clone()];case\"IdentityN\":return getParamValue(\"x\",e,t,a).map(function(e){return e.clone()});case\"Snapshot\":return[getParamValue(\"x\",e,t,a).clone()];case\"Shape\":return[tensor1d(getParamValue(\"x\",e,t,a).shape,\"int32\")];case\"ShapeN\":return getParamValue(\"x\",e,t,a).map(function(e){return tensor1d(e.shape)});case\"Size\":return[scalar(getParamValue(\"x\",e,t,a).size,\"int32\")];case\"Rank\":return[scalar(getParamValue(\"x\",e,t,a).rank,\"int32\")];case\"NoOp\":return[scalar(1)];case\"Print\":var n=getParamValue(\"x\",e,t,a),s=getParamValue(\"data\",e,t,a),o=getParamValue(\"message\",e,t,a),p=getParamValue(\"summarize\",e,t,a);console.warn(\"The graph has a tf.print() operation,usually used for debugging, which slows down performance.\"),console.log(o);for(var u=0;u<s.length;u++)console.log(Array.prototype.slice.call(s[u].dataSync()).slice(0,p));return[n];default:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}},executeOp$8=function(e,t,a){switch(e.op){case\"ResizeBilinear\":var r=getParamValue(\"images\",e,t,a),n=getParamValue(\"size\",e,t,a),s=getParamValue(\"alignCorners\",e,t,a);return[image.resizeBilinear(r,[n[0],n[1]],s)];case\"ResizeNearestNeighbor\":r=getParamValue(\"images\",e,t,a),n=getParamValue(\"size\",e,t,a),s=getParamValue(\"alignCorners\",e,t,a);return[image.resizeNearestNeighbor(r,[n[0],n[1]],s)];case\"CropAndResize\":var o=getParamValue(\"image\",e,t,a),p=getParamValue(\"boxes\",e,t,a),u=getParamValue(\"boxInd\",e,t,a),i=getParamValue(\"cropSize\",e,t,a),m=getParamValue(\"method\",e,t,a),l=getParamValue(\"extrapolationValue\",e,t,a);return[image.cropAndResize(o,p,u,i,m,l)];default:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}},executeOp$9=function(e,t,a){switch(e.op){case\"Equal\":return[equal(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"NotEqual\":return[notEqual(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"Greater\":return[greater(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"GreaterEqual\":return[greaterEqual(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"Less\":return[less(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"LessEqual\":return[lessEqual(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"LogicalAnd\":return[logicalAnd(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"LogicalNot\":return[logicalNot(getParamValue(\"a\",e,t,a))];case\"LogicalOr\":return[logicalOr(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];case\"Select\":case\"SelectV2\":return[where(getParamValue(\"condition\",e,t,a),getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a))];default:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}},executeOp$10=function(e,t,a){switch(e.op){case\"BatchMatMul\":case\"BatchMatMulV2\":case\"MatMul\":return[matMul(getParamValue(\"a\",e,t,a),getParamValue(\"b\",e,t,a),getParamValue(\"transposeA\",e,t,a),getParamValue(\"transposeB\",e,t,a))];case\"Transpose\":return[transpose(getParamValue(\"x\",e,t,a),getParamValue(\"perm\",e,t,a))];case\"_FusedMatMul\":var r=getParamValue(\"fusedOps\",e,t,a),n=r[0],s=r[1],o=\"biasadd\"===n,p=\"prelu\"===s,u=getParamValue(\"numArgs\",e,t,a);if(o){if(p&&2!==u)throw new Error(\"Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.\");if(!p&&1!==u)throw new Error(\"Fused MatMul with BiasAdd must have one extra argument: bias.\")}var i=getParamValue(\"args\",e,t,a),m=i[0],l=i[1];return[fused.matMul({a:getParamValue(\"a\",e,t,a),b:getParamValue(\"b\",e,t,a),transposeA:getParamValue(\"transposeA\",e,t,a),transposeB:getParamValue(\"transposeB\",e,t,a),bias:m,activation:s,preluActivationWeights:l})];default:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}},executeOp$11=function(e,t,a){switch(e.op){case\"FusedBatchNorm\":case\"FusedBatchNormV2\":case\"FusedBatchNormV3\":return[batchNorm(getParamValue(\"x\",e,t,a),getParamValue(\"mean\",e,t,a),getParamValue(\"variance\",e,t,a),getParamValue(\"offset\",e,t,a),getParamValue(\"scale\",e,t,a),getParamValue(\"epsilon\",e,t,a))];case\"LRN\":return[localResponseNormalization(getParamValue(\"x\",e,t,a),getParamValue(\"radius\",e,t,a),getParamValue(\"bias\",e,t,a),getParamValue(\"alpha\",e,t,a),getParamValue(\"beta\",e,t,a))];case\"Softmax\":return[softmax(getParamValue(\"x\",e,t,a))];case\"LogSoftmax\":return[logSoftmax(getParamValue(\"x\",e,t,a))];case\"SparseToDense\":return[sparseToDense(getParamValue(\"sparseIndices\",e,t,a),getParamValue(\"outputShape\",e,t,a),getParamValue(\"sparseValues\",e,t,a),getParamValue(\"defaultValue\",e,t,a))];default:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}},executeOp$12=function(e,t,a){switch(e.op){case\"Max\":var r=getParamValue(\"axis\",e,t,a),n=getParamValue(\"keepDims\",e,t,a);return[max(getParamValue(\"x\",e,t,a),r,n)];case\"Mean\":r=getParamValue(\"axis\",e,t,a),n=getParamValue(\"keepDims\",e,t,a);return[mean(getParamValue(\"x\",e,t,a),r,n)];case\"Min\":r=getParamValue(\"axis\",e,t,a),n=getParamValue(\"keepDims\",e,t,a);return[min(getParamValue(\"x\",e,t,a),r,n)];case\"Sum\":r=getParamValue(\"axis\",e,t,a),n=getParamValue(\"keepDims\",e,t,a);return[sum(getParamValue(\"x\",e,t,a),r,n)];case\"All\":r=getParamValue(\"axis\",e,t,a),n=getParamValue(\"keepDims\",e,t,a);return[all(getParamValue(\"x\",e,t,a),r,n)];case\"Any\":r=getParamValue(\"axis\",e,t,a),n=getParamValue(\"keepDims\",e,t,a);return[any(getParamValue(\"x\",e,t,a),r,n)];case\"ArgMax\":r=getParamValue(\"axis\",e,t,a);return[argMax(getParamValue(\"x\",e,t,a),r)];case\"ArgMin\":r=getParamValue(\"axis\",e,t,a);return[argMin(getParamValue(\"x\",e,t,a),r)];case\"Prod\":r=getParamValue(\"axis\",e,t,a),n=getParamValue(\"keepDims\",e,t,a);return[prod(getParamValue(\"x\",e,t,a),r,n)];default:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}},executeOp$13=function(e,t,a){switch(e.op){case\"ConcatV2\":case\"Concat\":var r=getParamValue(\"n\",e,t,a),n=getParamValue(\"axis\",e,t,a),s=getParamValue(\"tensors\",e,t,a);return s=s.slice(0,r),[concat(s,n)];case\"GatherV2\":case\"Gather\":n=getParamValue(\"axis\",e,t,a);var o=getParamValue(\"x\",e,t,a),p=getParamValue(\"indices\",e,t,a);return[gather(o,p.asType(\"int32\"),n)];case\"ReverseV2\":case\"Reverse\":n=getParamValue(\"axis\",e,t,a),o=getParamValue(\"x\",e,t,a);return[reverse(o,n)];case\"Slice\":var u=getParamValue(\"begin\",e,t,a),i=getParamValue(\"size\",e,t,a);return[slice(getParamValue(\"x\",e,t,a),u,i)];case\"StridedSlice\":u=getParamValue(\"begin\",e,t,a);var m=getParamValue(\"end\",e,t,a),l=getParamValue(\"strides\",e,t,a),c=getParamValue(\"beginMask\",e,t,a),d=getParamValue(\"endMask\",e,t,a),y=getParamValue(\"ellipsisMask\",e,t,a),f=getParamValue(\"newAxisMask\",e,t,a),g=getParamValue(\"shrinkAxisMask\",e,t,a),h=getParamValue(\"x\",e,t,a);if(1===u.length&&h.shape.length>1)for(var N=1;N<h.shape.length;N++)u.push(0),m.push(h.shape[N]),l.push(l[0]);return[stridedSlice(h,u,m,l,c,d,y,f,g)];case\"Pack\":return tidy(function(){var r=getParamValue(\"axis\",e,t,a),n=getParamValue(\"tensors\",e,t,a),s=n[0].shape,o=n[0].squeeze().shape,p=n.map(function(e){var t=util.arraysEqual(e.shape,s);if(!t&&!util.arraysEqual(e.squeeze().shape,o))throw new Error(\"the input tensors shape does not match\");return t?e:e.reshape(s)});return[stack(p,r)]});case\"Unpack\":return tidy(function(){var r=getParamValue(\"axis\",e,t,a),n=getParamValue(\"tensor\",e,t,a);return unstack(n,r)});case\"Tile\":var x=getParamValue(\"reps\",e,t,a);return[tile(getParamValue(\"x\",e,t,a),x)];case\"Split\":case\"SplitV\":n=getParamValue(\"axis\",e,t,a);var V=getParamValue(\"numOrSizeSplits\",e,t,a);return split(getParamValue(\"x\",e,t,a),V,n);case\"ScatterNd\":p=getParamValue(\"indices\",e,t,a);var b=getParamValue(\"values\",e,t,a),P=getParamValue(\"shape\",e,t,a);return[scatterND(p,b,P)];case\"GatherNd\":var T=getParamValue(\"x\",e,t,a);p=getParamValue(\"indices\",e,t,a);return[gatherND(T,p)];case\"SparseToDense\":p=getParamValue(\"sparseIndices\",e,t,a),P=getParamValue(\"outputShape\",e,t,a);var v=getParamValue(\"sparseValues\",e,t,a),O=getParamValue(\"defaultValue\",e,t,a);return[sparseToDense(p,v,P,v.dtype===O.dtype?O:O.asType(v.dtype))];default:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}},executeOp$14=function(e,t,a){switch(e.op){case\"FFT\":return[fft(getParamValue(\"x\",e,t,a))];case\"IFFT\":return[ifft(getParamValue(\"x\",e,t,a))];case\"RFFT\":return[rfft(getParamValue(\"x\",e,t,a))];case\"IRFFT\":return[irfft(getParamValue(\"x\",e,t,a))];default:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}},executeOp$15=function(e,t,a){switch(e.op){case\"Cast\":return[cast(getParamValue(\"x\",e,t,a),getParamValue(\"dtype\",e,t,a))];case\"ExpandDims\":var r=getParamValue(\"axis\",e,t,a);return[expandDims(getParamValue(\"x\",e,t,a),r)];case\"Squeeze\":r=getParamValue(\"axis\",e,t,a);return[squeeze(getParamValue(\"x\",e,t,a),r)];case\"Reshape\":return[reshape(getParamValue(\"x\",e,t,a),getParamValue(\"shape\",e,t,a))];case\"PadV2\":case\"Pad\":return[pad(getParamValue(\"x\",e,t,a),split$1(getParamValue(\"padding\",e,t,a),2),getParamValue(\"constantValue\",e,t,a))];case\"SpaceToBatchND\":var n=getParamValue(\"blockShape\",e,t,a),s=split$1(getParamValue(\"paddings\",e,t,a),2);return[spaceToBatchND(getParamValue(\"x\",e,t,a),n,s)];case\"BatchToSpaceND\":n=getParamValue(\"blockShape\",e,t,a);var o=split$1(getParamValue(\"crops\",e,t,a),2);return[batchToSpaceND(getParamValue(\"x\",e,t,a),n,o)];case\"DepthToSpace\":var p=getParamValue(\"blockSize\",e,t,a),u=getParamValue(\"dataFormat\",e,t,a).toUpperCase();return[depthToSpace(getParamValue(\"x\",e,t,a),p,u)];default:throw TypeError(\"Node type \"+e.op+\" is not implemented\")}};function executeOp$16(e,t,a){var r=function(e,t,a){switch(e.category){case\"arithmetic\":return tidy(function(){return executeOp(e,t,a)});case\"basic_math\":return tidy(function(){return executeOp$1(e,t,a)});case\"control\":return executeOp$2(e,t,a);case\"convolution\":return tidy(function(){return executeOp$3(e,t,a)});case\"creation\":return tidy(function(){return executeOp$4(e,t,a)});case\"dynamic\":return executeOp$5(e,t,a);case\"evaluation\":return tidy(function(){return executeOp$6(e,t,a)});case\"image\":return tidy(function(){return executeOp$8(e,t,a)});case\"graph\":return tidy(function(){return executeOp$7(e,t,a)});case\"logical\":return tidy(function(){return executeOp$9(e,t,a)});case\"matrices\":return tidy(function(){return executeOp$10(e,t,a)});case\"normalization\":return tidy(function(){return executeOp$11(e,t,a)});case\"reduction\":return tidy(function(){return executeOp$12(e,t,a)});case\"slice_join\":return tidy(function(){return executeOp$13(e,t,a)});case\"spectral\":return tidy(function(){return executeOp$14(e,t,a)});case\"transformation\":return tidy(function(){return executeOp$15(e,t,a)});case\"custom\":var r=getRegisteredOp(e.op);if(r&&r.customExecutor)return r.customExecutor(new NodeValueImpl(e,t,a));throw TypeError(\"Custom op \"+e.op+\" is not registered.\");default:throw TypeError(\"Unknown op '\"+e.op+\"'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()\")}}(e,t,a);return r instanceof Promise?r.then(function(e){return[].concat(e)}):[].concat(r)}var ExecutionContext=function(){function e(e,t){this.weightMap=e,this.tensorArrayMap=t,this.rootContext={id:0,frameName:\"\",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}return e.prototype.newFrame=function(e,t){return{id:e,frameName:t,iterationId:0}},Object.defineProperty(e.prototype,\"currentContext\",{get:function(){return this.contexts},set:function(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"currentContextId\",{get:function(){return this._currentContextIds[0]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"currentContextIds\",{get:function(){return this._currentContextIds},enumerable:!0,configurable:!0}),e.prototype.generateCurrentContextIds=function(){for(var e=[],t=0;t<this.contexts.length-1;t++){var a=this.contexts.slice(0,this.contexts.length-t);e.push(this.contextIdforContexts(a))}e.push(\"\"),this._currentContextIds=e},e.prototype.contextIdforContexts=function(e){return e?e.map(function(e){return 0===e.id&&0===e.iterationId?\"\":e.frameName+\"-\"+e.iterationId}).join(\"/\"):\"\"},e.prototype.enterFrame=function(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))},e.prototype.exitFrame=function(){if(!(this.contexts&&this.contexts.length>1))throw new Error(\"Cannot exit frame, the context is empty\");this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift()},e.prototype.nextIteration=function(){if(!(this.contexts&&this.contexts.length>0))throw new Error(\"Cannot increase frame iteration, the context is empty\");this.contexts=this.contexts.slice(),this.lastId++;var e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))},e.prototype.getWeight=function(e){return this.weightMap[e]},e.prototype.addTensorArray=function(e){this.tensorArrayMap[e.id]=e},e.prototype.getTensorArray=function(e){return this.tensorArrayMap[e]},e}();function getExecutionSubgraph(e,t,a){for(var r=new Set,n=[],s=null,o=null,p=new Set,u=Object.keys(e).map(function(e){return parseNodeName(e)[0]}),i=t.slice();i.length>0;){var m=i.pop();(isControlFlow(m)||isDynamicShape(m))&&null==s&&(o=(s=m).children.map(function(e){return e.name}).filter(function(e){return r.has(e)})),r.add(m.name),null==a[m.name]&&(-1===u.indexOf(m.name)&&(0!==m.inputs.length?m.inputs.forEach(function(e){p.has(e.name)||(p.add(e.name),i.push(e))}):n.push(m.name)))}return{inputs:e,outputs:t,usedNodes:r,missingInputs:n,dynamicNode:s,syncInputs:o}}function getNodesInTopologicalOrder(e,t,a){var r=a.usedNodes,n=a.inputs,s=[];Object.keys(n).map(function(e){return parseNodeName(e)[0]}).map(function(t){return e.nodes[t]}).forEach(function(e){r.has(e.name)&&s.push(e)}),e.weights.forEach(function(e){r.has(e.name)&&s.push(e)});for(var o=new Set,p=[];s.length>0;){var u=s.pop();o.add(u.name),t[u.name]||p.push(u),u.children.forEach(function(e){!o.has(e.name)&&r.has(e.name)&&e.inputs.every(function(e){return o.has(e.name)})&&s.push(e)})}return p}var CONTROL_FLOW_OPS=[\"Switch\",\"Merge\",\"Enter\",\"Exit\",\"NextIteration\"],DYNAMIC_SHAPE_OPS=[\"NonMaxSuppressionV2\",\"NonMaxSuppressionV3\",\"NonMaxSuppressionV5\",\"Where\"];function isControlFlow(e){return CONTROL_FLOW_OPS.indexOf(e.op)>=0}function isDynamicShape(e){return DYNAMIC_SHAPE_OPS.indexOf(e.op)>=0}var GraphExecutor=function(){function e(e){this.graph=e,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=\",\",this._outputs=e.outputs,this._inputs=e.inputs,this._signature=e.signature}return Object.defineProperty(e.prototype,\"weightMap\",{get:function(){return this._weightMap},set:function(e){var t=Object.keys(e).map(function(t){return e[t].map(function(e){return e.id})});this.weightIds=[].concat.apply([],t),this._weightMap=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"inputs\",{get:function(){return this._inputs.map(function(e){return{name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}})},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"outputs\",{get:function(){return this._outputs.map(function(e){return{name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}})},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"inputNodes\",{get:function(){return this._inputs.map(function(e){return e.signatureKey||e.name})},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"outputNodes\",{get:function(){return this._outputs.map(function(e){return e.signatureKey||e.name})},enumerable:!0,configurable:!0}),e.prototype.getCompilationKey=function(e,t){var a=e.map(function(e){return e.name}).sort(),r=t.map(function(e){return e.name}).sort();return a.join(this.SEPERATOR)+\"--\"+r.join(this.SEPERATOR)},e.prototype.compile=function(e,t){var a=getExecutionSubgraph(e,t,this.weightMap),r=a.missingInputs,n=a.dynamicNode,s=a.syncInputs;if(null!=n)throw new Error(\"This execution contains the node '\"+n.name+\"', which has the dynamic op '\"+n.op+\"'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [\"+s+\"]\");if(r.length>0){var o=t.map(function(e){return e.name}),p=Object.keys(e);throw new Error(\"Cannot compute the outputs [\"+o+\"] from the provided inputs [\"+p+\"]. Missing the following inputs: [\"+r+\"]\")}return getNodesInTopologicalOrder(this.graph,this.weightMap,a)},e.prototype.execute=function(e,t){var a=this;e=this.mapInputs(e);var r=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);var n=r.map(function(e){return a.graph.nodes[parseNodeName(e)[0]]}),s=t.map(function(e){return a.graph.nodes[parseNodeName(e)[0]]}),o=this.getCompilationKey(n,s),p=this.compiledMap.get(o);null==p&&(p=this.compile(e,s),this.compiledMap.set(o,p));var u={};return tidy(function(){var r=new ExecutionContext(a._weightMap,u),n=__assign({},a.weightMap);Object.keys(e).forEach(function(t){var a=parseNodeName(t),r=a[0],s=[];s[a[1]]=e[t],n[r]=s});for(var s=a.getFrozenTensorIds(n),o={},i=0;i<p.length;i++){var m=p[i];if(!n[m.name]){var l=executeOp$16(m,n,r);if(l instanceof Promise)throw new Error(\"The execution of the op '\"+m.op+\"' returned a promise. Please use model.executeAsync() instead.\");n[m.name]=l,a.checkTensorForDisposal(m.name,m,n,r,s,t,o)}}return t.map(function(e){return getTensor(e,n,r)})})},e.prototype.getFrozenTensorIds=function(e){var t=[].concat.apply([],Object.keys(e).map(function(t){return e[t]}).map(function(e){return e.map(function(e){return e.id})}));return new Set(t)},e.prototype.checkTensorForDisposal=function(e,t,a,r,n,s,o){\"control\"!==t.category&&-1===s.indexOf(e)&&(a[e].forEach(function(e){null!=e&&(o[e.id]=(o[e.id]||0)+t.children.length)}),t.inputs.forEach(function(e){if(\"control\"!==e.category){var t=getTensorsForCurrentContenxt(e.name,a,r);null!=t&&t.forEach(function(e){if(e&&!n.has(e.id)){var t=o[e.id];1===t?(e.dispose(),delete o[e.id]):null!=t&&o[e.id]--}})}}))},e.prototype.executeAsync=function(e,t){return __awaiter(this,void 0,void 0,function(){var a,r,n,s,o,p,u=this;return __generator(this,function(i){switch(i.label){case 0:return e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t),a={},r=new ExecutionContext(this._weightMap,a),[4,this.executeWithControlFlow(e,r,t)];case 1:return n=i.sent(),s=t.map(function(e){return getTensor(e,n,r)}),o=new Set(s.map(function(e){return e.id})),p=new Set(Object.keys(e).map(function(t){return e[t].id})),Object.keys(n).forEach(function(e){n[e].forEach(function(e){!e||e.isDisposed||o.has(e.id)||p.has(e.id)||-1!==u.weightIds.indexOf(e.id)||e.dispose()})}),[2,s]}})})},e.prototype.executeWithControlFlow=function(e,t,a){return __awaiter(this,void 0,void 0,function(){var r,n,s,o,p,u,i,m,l,c,d,y,f,g,h,N,x=this;return __generator(this,function(V){switch(V.label){case 0:r=Object.keys(e),n=r.map(function(e){return x.graph.nodes[parseNodeName(e)[0]]}),s=a.map(function(e){return x.graph.nodes[parseNodeName(e)[0]]}),o=getExecutionSubgraph(e,s,this.weightMap),p=o.usedNodes,u=o.missingInputs,i=o.dynamicNode,m=o.syncInputs,l=n.concat(this.graph.weights).map(function(e){return{node:e,contexts:t.currentContext}}),c=__assign({},this.weightMap),Object.keys(e).forEach(function(t){var a=parseNodeName(t),r=a[0],n=[];n[a[1]]=e[t],c[r]=n}),d={},y=this.getFrozenTensorIds(c),f={},V.label=1;case 1:return l.length>0?(g=this.processStack(n,l,t,c,f,y,a,d,p),[4,Promise.all(g)]):[3,3];case 2:return V.sent(),[3,1];case 3:if(null==i&&console.warn(\"This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.\"),(h=s.filter(function(e){return!isControlFlow(e)&&!getTensor(e.name,c,t)}).map(function(e){return e.name})).length>0)throw N=\"\",null!=i&&(N=\"Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [\"+m+\"]\"),new Error(\"Cannot compute the outputs [\"+h+\"] from the provided inputs [\"+r+\"]. Consider providing the following inputs: [\"+u+\"]. \"+N);return[2,c]}})})},e.prototype.processStack=function(e,t,a,r,n,s,o,p,u){for(var i=this,m=[],l=function(){var l=t.pop();a.currentContext=l.contexts;var d=\"\";if(\"Enter\"===l.node.op&&getParamValue(\"isConstant\",l.node,r,a)&&(d=getNodeNameAndIndex(l.node.name,a)[0]),-1===e.indexOf(l.node)){var y=executeOp$16(l.node,r,a);d||(d=getNodeNameAndIndex(l.node.name,a)[0]);var f=a.currentContext;y instanceof Promise?m.push(y.then(function(e){return r[d]=e,a.currentContext=f,i.checkTensorForDisposal(d,l.node,r,a,s,o,p),i.processChildNodes(l.node,t,a,r,n,u),e})):(r[d]=y,c.checkTensorForDisposal(d,l.node,r,a,s,o,p),c.processChildNodes(l.node,t,a,r,n,u))}else c.processChildNodes(l.node,t,a,r,n,u)},c=this;t.length>0;)l();return m},e.prototype.processChildNodes=function(e,t,a,r,n,s){e.children.forEach(function(e){var o=getNodeNameAndIndex(e.name,a)[0];!n[o]&&s.has(e.name)&&(\"Merge\"===e.op?e.inputNames.some(function(e){return!!getTensor(e,r,a)})&&(n[o]=!0,t.push({contexts:a.currentContext,node:e})):e.inputNames.every(function(e){return!!getTensor(e,r,a)})&&(n[o]=!0,t.push({contexts:a.currentContext,node:e})))})},e.prototype.dispose=function(){var e=this;Object.keys(this.weightMap).forEach(function(t){return e.weightMap[t].forEach(function(e){return e.dispose()})})},e.prototype.checkInputShapeAndType=function(e){var t=this;Object.keys(e).forEach(function(a){var r=e[a],n=parseNodeName(a)[0],s=t.graph.nodes[n];if(s.attrParams.shape&&s.attrParams.shape.value){var o=s.attrParams.shape.value,p=o.length===r.shape.length&&r.shape.every(function(e,t){return-1===o[t]||o[t]===e});util.assert(p,function(){return\"The shape of dict['\"+s.name+\"'] provided in model.execute(dict) must be [\"+o+\"], but was [\"+r.shape+\"]\"})}s.attrParams.dtype&&s.attrParams.dtype.value&&util.assert(r.dtype===s.attrParams.dtype.value,function(){return\"The dtype of dict['\"+s.name+\"'] provided in model.execute(dict) must be \"+s.attrParams.dtype.value+\", but was \"+r.dtype})})},e.prototype.mapInputs=function(e){var t={};for(var a in e){if(null!=this._signature&&null!=this._signature.inputs&&null!=this._signature.inputs[a])t[this._signature.inputs[a].name]=e[a];else t[a]=e[a]}return t},e.prototype.checkInputs=function(e){var t=this,a=Object.keys(e).filter(function(e){var a=parseNodeName(e)[0];return null==t.graph.nodes[a]});if(a.length>0)throw new Error(\"The dict provided in model.execute(dict) has keys: [\"+a+\"] that are not part of graph\")},e.prototype.mapOutputs=function(e){var t=this;return e.map(function(e){return null!=t._signature&&null!=t._signature.outputs&&null!=t._signature.outputs[e]?t._signature.outputs[e].name:e},{})},e.prototype.checkOutputs=function(e){var t=this;e.forEach(function(e){var a=parseNodeName(e)[0];if(!t.graph.nodes[a])throw new Error(\"The output '\"+e+\"' is not found in the graph\")})},e}(),TFHUB_SEARCH_PARAM=\"?tfjs-format=file\",DEFAULT_MODEL_NAME=\"model.json\",GraphModel=function(){function e(e,t){void 0===t&&(t={}),this.modelUrl=e,this.loadOptions=t,this.version=\"n/a\",null==t&&(this.loadOptions={})}return Object.defineProperty(e.prototype,\"modelVersion\",{get:function(){return this.version},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"inputNodes\",{get:function(){return this.executor.inputNodes},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"outputNodes\",{get:function(){return this.executor.outputNodes},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"inputs\",{get:function(){return this.executor.inputs},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"outputs\",{get:function(){return this.executor.outputs},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"weights\",{get:function(){return this.executor.weightMap},enumerable:!0,configurable:!0}),e.prototype.findIOHandler=function(){var e=this.modelUrl;if(null!=e.load)this.handler=e;else if(null!=this.loadOptions.requestInit)this.handler=io.browserHTTPRequest(e,this.loadOptions);else{var t=io.getLoadHandlers(e,this.loadOptions.onProgress);if(0===t.length)t.push(io.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(\"Found more than one (\"+t.length+\") load handlers for URL '\"+[e]+\"'\");this.handler=t[0]}},e.prototype.load=function(){return __awaiter(this,void 0,void 0,function(){var e,t,a,r;return __generator(this,function(n){switch(n.label){case 0:if(this.findIOHandler(),null==this.handler.load)throw new Error(\"Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.\");return e=this,[4,this.handler.load()];case 1:return e.artifacts=n.sent(),t=this.artifacts.modelTopology,a={},null!=this.artifacts.userDefinedMetadata&&(a=this.artifacts.userDefinedMetadata.signature),this.version=t.versions.producer+\".\"+t.versions.minConsumer,r=io.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs),this.executor=new GraphExecutor(OperationMapper.Instance.transformGraph(t,a)),this.executor.weightMap=this.convertTensorMapToTensorsMap(r),[2,!0]}})})},e.prototype.save=function(e,t){return __awaiter(this,void 0,void 0,function(){var t;return __generator(this,function(a){if(\"string\"==typeof e){if(0===(t=io.getSaveHandlers(e)).length)throw new Error(\"Cannot find any save handlers for URL '\"+e+\"'\");if(t.length>1)throw new Error(\"Found more than one (\"+t.length+\") save handlers for URL '\"+e+\"'\");e=t[0]}if(null==e.save)throw new Error(\"GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.\");return[2,e.save(this.artifacts)]})})},e.prototype.predict=function(e,t){return this.execute(e,this.outputNodes)},e.prototype.normalizeInputs=function(e){if(!(e instanceof Tensor||Array.isArray(e)))return e;if((e=Array.isArray(e)?e:[e]).length!==this.inputNodes.length)throw new Error(\"Input tensor count mismatch,the graph model has \"+this.inputNodes.length+\" placeholders, while there are \"+e.length+\" input tensors.\");return this.inputNodes.reduce(function(t,a,r){return t[a]=e[r],t},{})},e.prototype.normalizeOutputs=function(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]},e.prototype.execute=function(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);var a=this.executor.execute(e,t);return a.length>1?a:a[0]},e.prototype.executeAsync=function(e,t){return __awaiter(this,void 0,void 0,function(){var a;return __generator(this,function(r){switch(r.label){case 0:return e=this.normalizeInputs(e),t=this.normalizeOutputs(t),[4,this.executor.executeAsync(e,t)];case 1:return[2,(a=r.sent()).length>1?a:a[0]]}})})},e.prototype.convertTensorMapToTensorsMap=function(e){return Object.keys(e).reduce(function(t,a){return t[a]=[e[a]],t},{})},e.prototype.dispose=function(){this.executor.dispose()},e}();function loadGraphModel(e,t){return void 0===t&&(t={}),__awaiter(this,void 0,void 0,function(){var a;return __generator(this,function(r){switch(r.label){case 0:if(null==e)throw new Error(\"modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model\");return null==t&&(t={}),t.fromTFHub&&null==e.load&&(e.endsWith(\"/\")||(e+=\"/\"),e=\"\"+e+DEFAULT_MODEL_NAME+TFHUB_SEARCH_PARAM),[4,(a=new GraphModel(e,t)).load()];case 1:return r.sent(),[2,a]}})})}var version=\"1.7.4\";export{GraphModel,loadGraphModel,deregisterOp,registerOp,version as version_converter};\n//# sourceMappingURL=tf-converter.esm.js.map\n","\"use strict\";\n/**\n * @license\n * Copyright 2017 Google Inc. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"./environment\");\n/**\n * Shuffles the array in-place using Fisher-Yates algorithm.\n *\n * ```js\n * const a = [1, 2, 3, 4, 5];\n * tf.util.shuffle(a);\n * console.log(a);\n * ```\n *\n * @param array The array to shuffle in-place.\n */\n/** @doc {heading: 'Util', namespace: 'util'} */\n// tslint:disable-next-line:no-any\nfunction shuffle(array) {\n    var counter = array.length;\n    var temp = 0;\n    var index = 0;\n    // While there are elements in the array\n    while (counter > 0) {\n        // Pick a random index\n        index = (Math.random() * counter) | 0;\n        // Decrease counter by 1\n        counter--;\n        // And swap the last element with it\n        temp = array[counter];\n        array[counter] = array[index];\n        array[index] = temp;\n    }\n}\nexports.shuffle = shuffle;\n/** Clamps a value to a specified range. */\nfunction clamp(min, x, max) {\n    return Math.max(min, Math.min(x, max));\n}\nexports.clamp = clamp;\nfunction nearestLargerEven(val) {\n    return val % 2 === 0 ? val : val + 1;\n}\nexports.nearestLargerEven = nearestLargerEven;\nfunction sum(arr) {\n    var sum = 0;\n    for (var i = 0; i < arr.length; i++) {\n        sum += arr[i];\n    }\n    return sum;\n}\nexports.sum = sum;\n/**\n * Returns a sample from a uniform [a, b) distribution.\n *\n * @param a The minimum support (inclusive).\n * @param b The maximum support (exclusive).\n * @return A pseudorandom number on the half-open interval [a,b).\n */\nfunction randUniform(a, b) {\n    var r = Math.random();\n    return (b * r) + (1 - r) * a;\n}\nexports.randUniform = randUniform;\n/** Returns the squared Euclidean distance between two vectors. */\nfunction distSquared(a, b) {\n    var result = 0;\n    for (var i = 0; i < a.length; i++) {\n        var diff = Number(a[i]) - Number(b[i]);\n        result += diff * diff;\n    }\n    return result;\n}\nexports.distSquared = distSquared;\n/**\n * Asserts that the expression is true. Otherwise throws an error with the\n * provided message.\n *\n * ```js\n * const x = 2;\n * tf.util.assert(x === 2, 'x is not 2');\n * ```\n *\n * @param expr The expression to assert (as a boolean).\n * @param msg A function that returns the message to report when throwing an\n *     error. We use a function for performance reasons.\n */\n/** @doc {heading: 'Util', namespace: 'util'} */\nfunction assert(expr, msg) {\n    if (!expr) {\n        throw new Error(typeof msg === 'string' ? msg : msg());\n    }\n}\nexports.assert = assert;\nfunction assertShapesMatch(shapeA, shapeB, errorMessagePrefix) {\n    if (errorMessagePrefix === void 0) { errorMessagePrefix = ''; }\n    assert(arraysEqual(shapeA, shapeB), function () { return errorMessagePrefix + (\" Shapes \" + shapeA + \" and \" + shapeB + \" must match\"); });\n}\nexports.assertShapesMatch = assertShapesMatch;\nfunction assertNonNull(a) {\n    assert(a != null, function () { return \"The input to the tensor constructor must be a non-null value.\"; });\n}\nexports.assertNonNull = assertNonNull;\n// NOTE: We explicitly type out what T extends instead of any so that\n// util.flatten on a nested array of number doesn't try to infer T as a\n// number[][], causing us to explicitly type util.flatten<number>().\n/**\n *  Flattens an arbitrarily nested array.\n *\n * ```js\n * const a = [[1, 2], [3, 4], [5, [6, [7]]]];\n * const flat = tf.util.flatten(a);\n * console.log(flat);\n * ```\n *\n *  @param arr The nested array to flatten.\n *  @param result The destination array which holds the elements.\n *  @param skipTypedArray If true, avoids flattening the typed arrays. Defaults\n *      to false.\n */\n/** @doc {heading: 'Util', namespace: 'util'} */\nfunction flatten(arr, result, skipTypedArray) {\n    if (result === void 0) { result = []; }\n    if (skipTypedArray === void 0) { skipTypedArray = false; }\n    if (result == null) {\n        result = [];\n    }\n    if (Array.isArray(arr) || isTypedArray(arr) && !skipTypedArray) {\n        for (var i = 0; i < arr.length; ++i) {\n            flatten(arr[i], result, skipTypedArray);\n        }\n    }\n    else {\n        result.push(arr);\n    }\n    return result;\n}\nexports.flatten = flatten;\n/**\n * Returns the size (number of elements) of the tensor given its shape.\n *\n * ```js\n * const shape = [3, 4, 2];\n * const size = tf.util.sizeFromShape(shape);\n * console.log(size);\n * ```\n */\n/** @doc {heading: 'Util', namespace: 'util'} */\nfunction sizeFromShape(shape) {\n    if (shape.length === 0) {\n        // Scalar.\n        return 1;\n    }\n    var size = shape[0];\n    for (var i = 1; i < shape.length; i++) {\n        size *= shape[i];\n    }\n    return size;\n}\nexports.sizeFromShape = sizeFromShape;\nfunction isScalarShape(shape) {\n    return shape.length === 0;\n}\nexports.isScalarShape = isScalarShape;\nfunction arraysEqual(n1, n2) {\n    if (n1 === n2) {\n        return true;\n    }\n    if (n1 == null || n2 == null) {\n        return false;\n    }\n    if (n1.length !== n2.length) {\n        return false;\n    }\n    for (var i = 0; i < n1.length; i++) {\n        if (n1[i] !== n2[i]) {\n            return false;\n        }\n    }\n    return true;\n}\nexports.arraysEqual = arraysEqual;\nfunction isInt(a) {\n    return a % 1 === 0;\n}\nexports.isInt = isInt;\nfunction tanh(x) {\n    // tslint:disable-next-line:no-any\n    if (Math.tanh != null) {\n        // tslint:disable-next-line:no-any\n        return Math.tanh(x);\n    }\n    if (x === Infinity) {\n        return 1;\n    }\n    else if (x === -Infinity) {\n        return -1;\n    }\n    else {\n        var e2x = Math.exp(2 * x);\n        return (e2x - 1) / (e2x + 1);\n    }\n}\nexports.tanh = tanh;\nfunction sizeToSquarishShape(size) {\n    var width = Math.ceil(Math.sqrt(size));\n    return [width, Math.ceil(size / width)];\n}\nexports.sizeToSquarishShape = sizeToSquarishShape;\n/**\n * Creates a new array with randomized indicies to a given quantity.\n *\n * ```js\n * const randomTen = tf.util.createShuffledIndices(10);\n * console.log(randomTen);\n * ```\n *\n * @param number Quantity of how many shuffled indicies to create.\n */\n/** @doc {heading: 'Util', namespace: 'util'} */\nfunction createShuffledIndices(n) {\n    var shuffledIndices = new Uint32Array(n);\n    for (var i = 0; i < n; ++i) {\n        shuffledIndices[i] = i;\n    }\n    shuffle(shuffledIndices);\n    return shuffledIndices;\n}\nexports.createShuffledIndices = createShuffledIndices;\nfunction rightPad(a, size) {\n    if (size <= a.length) {\n        return a;\n    }\n    return a + ' '.repeat(size - a.length);\n}\nexports.rightPad = rightPad;\nfunction repeatedTry(checkFn, delayFn, maxCounter) {\n    if (delayFn === void 0) { delayFn = function (counter) { return 0; }; }\n    return new Promise(function (resolve, reject) {\n        var tryCount = 0;\n        var tryFn = function () {\n            if (checkFn()) {\n                resolve();\n                return;\n            }\n            tryCount++;\n            var nextBackoff = delayFn(tryCount);\n            if (maxCounter != null && tryCount >= maxCounter) {\n                reject();\n                return;\n            }\n            setTimeout(tryFn, nextBackoff);\n        };\n        tryFn();\n    });\n}\nexports.repeatedTry = repeatedTry;\n/**\n * Given the full size of the array and a shape that may contain -1 as the\n * implicit dimension, returns the inferred shape where -1 is replaced.\n * E.g. For shape=[2, -1, 3] and size=24, it will return [2, 4, 3].\n *\n * @param shape The shape, which may contain -1 in some dimension.\n * @param size The full size (number of elements) of the array.\n * @return The inferred shape where -1 is replaced with the inferred size.\n */\nfunction inferFromImplicitShape(shape, size) {\n    var shapeProd = 1;\n    var implicitIdx = -1;\n    for (var i = 0; i < shape.length; ++i) {\n        if (shape[i] >= 0) {\n            shapeProd *= shape[i];\n        }\n        else if (shape[i] === -1) {\n            if (implicitIdx !== -1) {\n                throw Error(\"Shapes can only have 1 implicit size. \" +\n                    (\"Found -1 at dim \" + implicitIdx + \" and dim \" + i));\n            }\n            implicitIdx = i;\n        }\n        else if (shape[i] < 0) {\n            throw Error(\"Shapes can not be < 0. Found \" + shape[i] + \" at dim \" + i);\n        }\n    }\n    if (implicitIdx === -1) {\n        if (size > 0 && size !== shapeProd) {\n            throw Error(\"Size(\" + size + \") must match the product of shape \" + shape);\n        }\n        return shape;\n    }\n    if (shapeProd === 0) {\n        throw Error(\"Cannot infer the missing size in [\" + shape + \"] when \" +\n            \"there are 0 elements\");\n    }\n    if (size % shapeProd !== 0) {\n        throw Error(\"The implicit shape can't be a fractional number. \" +\n            (\"Got \" + size + \" / \" + shapeProd));\n    }\n    var newShape = shape.slice();\n    newShape[implicitIdx] = size / shapeProd;\n    return newShape;\n}\nexports.inferFromImplicitShape = inferFromImplicitShape;\nfunction parseAxisParam(axis, shape) {\n    var rank = shape.length;\n    // Normalize input\n    axis = axis == null ? shape.map(function (s, i) { return i; }) : [].concat(axis);\n    // Check for valid range\n    assert(axis.every(function (ax) { return ax >= -rank && ax < rank; }), function () {\n        return \"All values in axis param must be in range [-\" + rank + \", \" + rank + \") but \" +\n            (\"got axis \" + axis);\n    });\n    // Check for only integers\n    assert(axis.every(function (ax) { return isInt(ax); }), function () { return \"All values in axis param must be integers but \" +\n        (\"got axis \" + axis); });\n    // Handle negative axis.\n    return axis.map(function (a) { return a < 0 ? rank + a : a; });\n}\nexports.parseAxisParam = parseAxisParam;\n/** Reduces the shape by removing all dimensions of shape 1. */\nfunction squeezeShape(shape, axis) {\n    var newShape = [];\n    var keptDims = [];\n    var isEmptyArray = axis != null && Array.isArray(axis) && axis.length === 0;\n    var axes = (axis == null || isEmptyArray) ?\n        null :\n        parseAxisParam(axis, shape).sort();\n    var j = 0;\n    for (var i = 0; i < shape.length; ++i) {\n        if (axes != null) {\n            if (axes[j] === i && shape[i] !== 1) {\n                throw new Error(\"Can't squeeze axis \" + i + \" since its dim '\" + shape[i] + \"' is not 1\");\n            }\n            if ((axes[j] == null || axes[j] > i) && shape[i] === 1) {\n                newShape.push(shape[i]);\n                keptDims.push(i);\n            }\n            if (axes[j] <= i) {\n                j++;\n            }\n        }\n        if (shape[i] !== 1) {\n            newShape.push(shape[i]);\n            keptDims.push(i);\n        }\n    }\n    return { newShape: newShape, keptDims: keptDims };\n}\nexports.squeezeShape = squeezeShape;\nfunction getTypedArrayFromDType(dtype, size) {\n    var values = null;\n    if (dtype == null || dtype === 'float32') {\n        values = new Float32Array(size);\n    }\n    else if (dtype === 'int32') {\n        values = new Int32Array(size);\n    }\n    else if (dtype === 'bool') {\n        values = new Uint8Array(size);\n    }\n    else {\n        throw new Error(\"Unknown data type \" + dtype);\n    }\n    return values;\n}\nexports.getTypedArrayFromDType = getTypedArrayFromDType;\nfunction getArrayFromDType(dtype, size) {\n    var values = null;\n    if (dtype == null || dtype === 'float32') {\n        values = new Float32Array(size);\n    }\n    else if (dtype === 'int32') {\n        values = new Int32Array(size);\n    }\n    else if (dtype === 'bool') {\n        values = new Uint8Array(size);\n    }\n    else if (dtype === 'string') {\n        values = new Array(size);\n    }\n    else {\n        throw new Error(\"Unknown data type \" + dtype);\n    }\n    return values;\n}\nexports.getArrayFromDType = getArrayFromDType;\nfunction checkConversionForErrors(vals, dtype) {\n    for (var i = 0; i < vals.length; i++) {\n        var num = vals[i];\n        if (isNaN(num) || !isFinite(num)) {\n            throw Error(\"A tensor of type \" + dtype + \" being uploaded contains \" + num + \".\");\n        }\n    }\n}\nexports.checkConversionForErrors = checkConversionForErrors;\n/** Returns true if the dtype is valid. */\nfunction isValidDtype(dtype) {\n    return dtype === 'bool' || dtype === 'complex64' || dtype === 'float32' ||\n        dtype === 'int32' || dtype === 'string';\n}\nexports.isValidDtype = isValidDtype;\n/**\n * Returns true if the new type can't encode the old type without loss of\n * precision.\n */\nfunction hasEncodingLoss(oldType, newType) {\n    if (newType === 'complex64') {\n        return false;\n    }\n    if (newType === 'float32' && oldType !== 'complex64') {\n        return false;\n    }\n    if (newType === 'int32' && oldType !== 'float32' && oldType !== 'complex64') {\n        return false;\n    }\n    if (newType === 'bool' && oldType === 'bool') {\n        return false;\n    }\n    return true;\n}\nexports.hasEncodingLoss = hasEncodingLoss;\nfunction isTypedArray(a) {\n    return a instanceof Float32Array || a instanceof Int32Array ||\n        a instanceof Uint8Array;\n}\nexports.isTypedArray = isTypedArray;\nfunction bytesPerElement(dtype) {\n    if (dtype === 'float32' || dtype === 'int32') {\n        return 4;\n    }\n    else if (dtype === 'complex64') {\n        return 8;\n    }\n    else if (dtype === 'bool') {\n        return 1;\n    }\n    else {\n        throw new Error(\"Unknown dtype \" + dtype);\n    }\n}\nexports.bytesPerElement = bytesPerElement;\n/**\n * Returns the approximate number of bytes allocated in the string array - 2\n * bytes per character. Computing the exact bytes for a native string in JS is\n * not possible since it depends on the encoding of the html page that serves\n * the website.\n */\nfunction bytesFromStringArray(arr) {\n    if (arr == null) {\n        return 0;\n    }\n    var bytes = 0;\n    arr.forEach(function (x) { return bytes += x.length; });\n    return bytes;\n}\nexports.bytesFromStringArray = bytesFromStringArray;\n/** Returns true if the value is a string. */\nfunction isString(value) {\n    return typeof value === 'string' || value instanceof String;\n}\nexports.isString = isString;\nfunction isBoolean(value) {\n    return typeof value === 'boolean';\n}\nexports.isBoolean = isBoolean;\nfunction isNumber(value) {\n    return typeof value === 'number';\n}\nexports.isNumber = isNumber;\nfunction inferDtype(values) {\n    if (Array.isArray(values)) {\n        return inferDtype(values[0]);\n    }\n    if (values instanceof Float32Array) {\n        return 'float32';\n    }\n    else if (values instanceof Int32Array || values instanceof Uint8Array) {\n        return 'int32';\n    }\n    else if (isNumber(values)) {\n        return 'float32';\n    }\n    else if (isString(values)) {\n        return 'string';\n    }\n    else if (isBoolean(values)) {\n        return 'bool';\n    }\n    return 'float32';\n}\nexports.inferDtype = inferDtype;\nfunction isFunction(f) {\n    return !!(f && f.constructor && f.call && f.apply);\n}\nexports.isFunction = isFunction;\nfunction nearestDivisor(size, start) {\n    for (var i = start; i < size; ++i) {\n        if (size % i === 0) {\n            return i;\n        }\n    }\n    return size;\n}\nexports.nearestDivisor = nearestDivisor;\nfunction computeStrides(shape) {\n    var rank = shape.length;\n    if (rank < 2) {\n        return [];\n    }\n    // Last dimension has implicit stride of 1, thus having D-1 (instead of D)\n    // strides.\n    var strides = new Array(rank - 1);\n    strides[rank - 2] = shape[rank - 1];\n    for (var i = rank - 3; i >= 0; --i) {\n        strides[i] = strides[i + 1] * shape[i + 1];\n    }\n    return strides;\n}\nexports.computeStrides = computeStrides;\nfunction toTypedArray(a, dtype, debugMode) {\n    if (dtype === 'string') {\n        throw new Error('Cannot convert a string[] to a TypedArray');\n    }\n    if (Array.isArray(a)) {\n        a = flatten(a);\n    }\n    if (debugMode) {\n        checkConversionForErrors(a, dtype);\n    }\n    if (noConversionNeeded(a, dtype)) {\n        return a;\n    }\n    if (dtype == null || dtype === 'float32' || dtype === 'complex64') {\n        return new Float32Array(a);\n    }\n    else if (dtype === 'int32') {\n        return new Int32Array(a);\n    }\n    else if (dtype === 'bool') {\n        var bool = new Uint8Array(a.length);\n        for (var i = 0; i < bool.length; ++i) {\n            if (Math.round(a[i]) !== 0) {\n                bool[i] = 1;\n            }\n        }\n        return bool;\n    }\n    else {\n        throw new Error(\"Unknown data type \" + dtype);\n    }\n}\nexports.toTypedArray = toTypedArray;\nfunction createNestedArray(offset, shape, a) {\n    var ret = new Array();\n    if (shape.length === 1) {\n        var d = shape[0];\n        for (var i = 0; i < d; i++) {\n            ret[i] = a[offset + i];\n        }\n    }\n    else {\n        var d = shape[0];\n        var rest = shape.slice(1);\n        var len = rest.reduce(function (acc, c) { return acc * c; });\n        for (var i = 0; i < d; i++) {\n            ret[i] = createNestedArray(offset + i * len, rest, a);\n        }\n    }\n    return ret;\n}\n// Provide a nested array of TypedArray in given shape.\nfunction toNestedArray(shape, a) {\n    if (shape.length === 0) {\n        // Scalar type should return a single number.\n        return a[0];\n    }\n    var size = shape.reduce(function (acc, c) { return acc * c; });\n    if (size === 0) {\n        // A tensor with shape zero should be turned into empty list.\n        return [];\n    }\n    if (size !== a.length) {\n        throw new Error(\"[\" + shape + \"] does not match the input size.\");\n    }\n    return createNestedArray(0, shape, a);\n}\nexports.toNestedArray = toNestedArray;\nfunction noConversionNeeded(a, dtype) {\n    return (a instanceof Float32Array && dtype === 'float32') ||\n        (a instanceof Int32Array && dtype === 'int32') ||\n        (a instanceof Uint8Array && dtype === 'bool');\n}\nfunction makeOnesTypedArray(size, dtype) {\n    var array = makeZerosTypedArray(size, dtype);\n    for (var i = 0; i < array.length; i++) {\n        array[i] = 1;\n    }\n    return array;\n}\nexports.makeOnesTypedArray = makeOnesTypedArray;\nfunction makeZerosTypedArray(size, dtype) {\n    if (dtype == null || dtype === 'float32' || dtype === 'complex64') {\n        return new Float32Array(size);\n    }\n    else if (dtype === 'int32') {\n        return new Int32Array(size);\n    }\n    else if (dtype === 'bool') {\n        return new Uint8Array(size);\n    }\n    else {\n        throw new Error(\"Unknown data type \" + dtype);\n    }\n}\nexports.makeZerosTypedArray = makeZerosTypedArray;\n/**\n * Returns the current high-resolution time in milliseconds relative to an\n * arbitrary time in the past. It works across different platforms (node.js,\n * browsers).\n *\n * ```js\n * console.log(tf.util.now());\n * ```\n */\n/** @doc {heading: 'Util', namespace: 'util'} */\nfunction now() {\n    return environment_1.env().platform.now();\n}\nexports.now = now;\nfunction assertNonNegativeIntegerDimensions(shape) {\n    shape.forEach(function (dimSize) {\n        assert(Number.isInteger(dimSize) && dimSize >= 0, function () {\n            return \"Tensor must have a shape comprised of positive integers but got \" +\n                (\"shape [\" + shape + \"].\");\n        });\n    });\n}\nexports.assertNonNegativeIntegerDimensions = assertNonNegativeIntegerDimensions;\n/**\n * Returns a platform-specific implementation of\n * [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API).\n *\n * If `fetch` is defined on the global object (`window`, `process`, etc.),\n * `tf.util.fetch` returns that function.\n *\n * If not, `tf.util.fetch` returns a platform-specific solution.\n *\n * ```js\n * const resource = await tf.util.fetch('https://unpkg.com/@tensorflow/tfjs');\n * // handle response\n * ```\n */\n/** @doc {heading: 'Util'} */\nfunction fetch(path, requestInits) {\n    return environment_1.env().platform.fetch(path, requestInits);\n}\nexports.fetch = fetch;\n/**\n * Encodes the provided string into bytes using the provided encoding scheme.\n *\n * @param s The string to encode.\n * @param encoding The encoding scheme. Defaults to utf-8.\n *\n */\n/** @doc {heading: 'Util'} */\nfunction encodeString(s, encoding) {\n    if (encoding === void 0) { encoding = 'utf-8'; }\n    encoding = encoding || 'utf-8';\n    return environment_1.env().platform.encode(s, encoding);\n}\nexports.encodeString = encodeString;\n/**\n * Decodes the provided bytes into a string using the provided encoding scheme.\n * @param bytes The bytes to decode.\n *\n * @param encoding The encoding scheme. Defaults to utf-8.\n */\n/** @doc {heading: 'Util'} */\nfunction decodeString(bytes, encoding) {\n    if (encoding === void 0) { encoding = 'utf-8'; }\n    encoding = encoding || 'utf-8';\n    return environment_1.env().platform.decode(bytes, encoding);\n}\nexports.decodeString = decodeString;\n/**\n * Computes flat index for a given location (multidimentionsal index) in a\n * Tensor/multidimensional array.\n *\n * @param locs Location in the tensor.\n * @param rank Rank of the tensor.\n * @param strides Tensor strides.\n */\nfunction locToIndex(locs, rank, strides) {\n    if (rank === 0) {\n        return 0;\n    }\n    else if (rank === 1) {\n        return locs[0];\n    }\n    var index = locs[locs.length - 1];\n    for (var i = 0; i < locs.length - 1; ++i) {\n        index += strides[i] * locs[i];\n    }\n    return index;\n}\nexports.locToIndex = locToIndex;\n/**\n * Computes the location (multidimensional index) in a tensor/multidimentional\n * array for a given flat index.\n *\n * @param index Index in flat array.\n * @param rank Rank of tensor.\n * @param strides Strides of tensor.\n */\nfunction indexToLoc(index, rank, strides) {\n    if (rank === 0) {\n        return [];\n    }\n    else if (rank === 1) {\n        return [index];\n    }\n    var locs = new Array(rank);\n    for (var i = 0; i < locs.length - 1; ++i) {\n        locs[i] = Math.floor(index / strides[i]);\n        index -= locs[i] * strides[i];\n    }\n    locs[locs.length - 1] = index;\n    return locs;\n}\nexports.indexToLoc = indexToLoc;\n//# sourceMappingURL=util.js.map","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","\"use strict\";\n/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"./environment\");\nvar kernel_registry_1 = require(\"./kernel_registry\");\nvar profiler_1 = require(\"./profiler\");\nvar tape_1 = require(\"./tape\");\nvar tensor_1 = require(\"./tensor\");\nvar tensor_util_1 = require(\"./tensor_util\");\nvar util = require(\"./util\");\nvar util_1 = require(\"./util\");\nvar EngineState = /** @class */ (function () {\n    function EngineState() {\n        // Public since optimizers will use it.\n        this.registeredVariables = {};\n        this.nextTapeNodeId = 0;\n        this.numBytes = 0;\n        this.numTensors = 0;\n        this.numStringTensors = 0;\n        this.numDataBuffers = 0;\n        // Number of nested tf.grad() statements when computing higher-order\n        // gradients. E.g. `1` for first-order gradients and `2` for second-order\n        // gradients. Used to track if the tape should be removed after a backprop.\n        this.gradientDepth = 0;\n        // Number of nested kernel calls. When kernel depth is greater than 1, we turn\n        // off the tape.\n        this.kernelDepth = 0;\n        this.scopeStack = [];\n        /**\n         * Keeps track of the number of data moves during a kernel execution. We\n         * maintain a stack since kernels can call other kernels, recursively.\n         */\n        this.numDataMovesStack = [];\n        this.nextScopeId = 0;\n        this.tensorInfo = new WeakMap();\n        this.profiling = false;\n        this.activeProfile = { newBytes: 0, newTensors: 0, peakBytes: 0, kernels: [], result: null };\n    }\n    EngineState.prototype.dispose = function () {\n        for (var variableName in this.registeredVariables) {\n            this.registeredVariables[variableName].dispose();\n        }\n    };\n    return EngineState;\n}());\nvar Engine = /** @class */ (function () {\n    function Engine(ENV) {\n        this.ENV = ENV;\n        this.registry = {};\n        this.registryFactory = {};\n        this.pendingBackendInitId = 0;\n        this.state = new EngineState();\n    }\n    Engine.prototype.ready = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var sortedBackends, i, backendName, success;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (this.pendingBackendInit != null) {\n                            return [2 /*return*/, this.pendingBackendInit.then(function () { })];\n                        }\n                        if (this.backendInstance != null) {\n                            return [2 /*return*/];\n                        }\n                        sortedBackends = this.getSortedBackends();\n                        i = 0;\n                        _a.label = 1;\n                    case 1:\n                        if (!(i < sortedBackends.length)) return [3 /*break*/, 5];\n                        backendName = sortedBackends[i];\n                        return [4 /*yield*/, this.initializeBackend(backendName).success];\n                    case 2:\n                        success = _a.sent();\n                        if (!success) return [3 /*break*/, 4];\n                        return [4 /*yield*/, this.setBackend(backendName)];\n                    case 3:\n                        _a.sent();\n                        return [2 /*return*/];\n                    case 4:\n                        i++;\n                        return [3 /*break*/, 1];\n                    case 5: throw new Error(\"Could not initialize any backends, all backend initializations \" +\n                        \"failed.\");\n                }\n            });\n        });\n    };\n    Object.defineProperty(Engine.prototype, \"backend\", {\n        get: function () {\n            if (this.pendingBackendInit != null) {\n                throw new Error(\"Backend '\" + this.backendName + \"' has not yet been initialized. Make \" +\n                    \"sure to await tf.ready() or await tf.setBackend() before calling \" +\n                    \"other methods\");\n            }\n            if (this.backendInstance == null) {\n                var _a = this.initializeBackendsAndReturnBest(), name_1 = _a.name, asyncInit = _a.asyncInit;\n                if (asyncInit) {\n                    throw new Error(\"The highest priority backend '\" + name_1 + \"' has not yet been \" +\n                        \"initialized. Make sure to await tf.ready() or \" +\n                        \"await tf.setBackend() before calling other methods\");\n                }\n                this.setBackend(name_1);\n            }\n            return this.backendInstance;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Engine.prototype.backendNames = function () {\n        return Object.keys(this.registryFactory);\n    };\n    Engine.prototype.findBackend = function (backendName) {\n        if (!(backendName in this.registry)) {\n            // If the backend hasn't been initialized but we have a registry entry for\n            // it, initialize it and return it.\n            if (backendName in this.registryFactory) {\n                var asyncInit = this.initializeBackend(backendName).asyncInit;\n                if (asyncInit) {\n                    // Backend is not ready yet.\n                    return null;\n                }\n            }\n            else {\n                return null;\n            }\n        }\n        return this.registry[backendName];\n    };\n    Engine.prototype.findBackendFactory = function (backendName) {\n        if (!(backendName in this.registryFactory)) {\n            return null;\n        }\n        return this.registryFactory[backendName].factory;\n    };\n    Engine.prototype.registerBackend = function (backendName, factory, priority) {\n        if (priority === void 0) { priority = 1; }\n        if (backendName in this.registryFactory) {\n            console.warn(backendName + \" backend was already registered. \" +\n                \"Reusing existing backend factory.\");\n            return false;\n        }\n        this.registryFactory[backendName] = { factory: factory, priority: priority };\n        return true;\n    };\n    Engine.prototype.setBackend = function (backendName) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _a, success, asyncInit, result, _b;\n            return __generator(this, function (_c) {\n                switch (_c.label) {\n                    case 0:\n                        if (this.registryFactory[backendName] == null) {\n                            throw new Error(\"Backend name '\" + backendName + \"' not found in registry\");\n                        }\n                        this.backendName = backendName;\n                        if (!(this.registry[backendName] == null)) return [3 /*break*/, 4];\n                        this.backendInstance = null;\n                        _a = this.initializeBackend(backendName), success = _a.success, asyncInit = _a.asyncInit;\n                        if (!asyncInit) return [3 /*break*/, 2];\n                        return [4 /*yield*/, success];\n                    case 1:\n                        _b = _c.sent();\n                        return [3 /*break*/, 3];\n                    case 2:\n                        _b = success;\n                        _c.label = 3;\n                    case 3:\n                        result = _b;\n                        if (!result) {\n                            return [2 /*return*/, false];\n                        }\n                        _c.label = 4;\n                    case 4:\n                        this.backendInstance = this.registry[backendName];\n                        this.setupRegisteredKernels();\n                        // Reset the profiler.\n                        this.profiler = new profiler_1.Profiler(this.backendInstance);\n                        return [2 /*return*/, true];\n                }\n            });\n        });\n    };\n    Engine.prototype.setupRegisteredKernels = function () {\n        var _this = this;\n        var kernels = kernel_registry_1.getKernelsForBackend(this.backendName);\n        kernels.forEach(function (kernel) {\n            if (kernel.setupFunc != null) {\n                kernel.setupFunc(_this.backendInstance);\n            }\n        });\n    };\n    Engine.prototype.disposeRegisteredKernels = function (backendName) {\n        var _this = this;\n        var kernels = kernel_registry_1.getKernelsForBackend(backendName);\n        kernels.forEach(function (kernel) {\n            if (kernel.disposeFunc != null) {\n                kernel.disposeFunc(_this.registry[backendName]);\n            }\n        });\n    };\n    /**\n     * Initializes a backend by looking up the backend name in the factory\n     * registry and calling the factory method. Returns a boolean representing\n     * whether the initialization of the backend suceeded. Throws an error if\n     * there is no backend in the factory registry.\n     */\n    Engine.prototype.initializeBackend = function (backendName) {\n        var _this = this;\n        var registryFactoryEntry = this.registryFactory[backendName];\n        if (registryFactoryEntry == null) {\n            throw new Error(\"Cannot initialize backend \" + backendName + \", no registration found.\");\n        }\n        try {\n            var backend = registryFactoryEntry.factory();\n            // Test if the factory returns a promise.\n            if (Promise.resolve(backend) === backend) {\n                var promiseId_1 = ++this.pendingBackendInitId;\n                var success = backend\n                    .then(function (backendInstance) {\n                    // Outdated promise. Another backend was set in the meantime.\n                    if (promiseId_1 < _this.pendingBackendInitId) {\n                        return false;\n                    }\n                    _this.registry[backendName] = backendInstance;\n                    _this.pendingBackendInit = null;\n                    return true;\n                })\n                    .catch(function (err) {\n                    // Outdated promise. Another backend was set in the meantime.\n                    if (promiseId_1 < _this.pendingBackendInitId) {\n                        return false;\n                    }\n                    _this.pendingBackendInit = null;\n                    console.warn(\"Initialization of backend \" + backendName + \" failed\");\n                    console.warn(err.stack || err.message);\n                    return false;\n                });\n                this.pendingBackendInit = success;\n                return { success: success, asyncInit: true };\n            }\n            else {\n                this.registry[backendName] = backend;\n                return { success: true, asyncInit: false };\n            }\n        }\n        catch (err) {\n            console.warn(\"Initialization of backend \" + backendName + \" failed\");\n            console.warn(err.stack || err.message);\n            return { success: false, asyncInit: false };\n        }\n    };\n    Engine.prototype.removeBackend = function (backendName) {\n        if (!(backendName in this.registryFactory)) {\n            throw new Error(backendName + \" backend not found in registry\");\n        }\n        if (this.backendName === backendName && this.pendingBackendInit != null) {\n            // There is a pending promise of the backend we want to remove. Make it\n            // obsolete.\n            this.pendingBackendInitId++;\n        }\n        if (backendName in this.registry) {\n            this.disposeRegisteredKernels(backendName);\n            this.registry[backendName].dispose();\n            delete this.registry[backendName];\n        }\n        delete this.registryFactory[backendName];\n        // Unset the backend if it is active.\n        if (this.backendName === backendName) {\n            this.pendingBackendInit = null;\n            this.backendName = null;\n            this.backendInstance = null;\n        }\n    };\n    Engine.prototype.getSortedBackends = function () {\n        var _this = this;\n        if (Object.keys(this.registryFactory).length === 0) {\n            throw new Error('No backend found in registry.');\n        }\n        return Object.keys(this.registryFactory).sort(function (a, b) {\n            // Highest priority comes first.\n            return _this.registryFactory[b].priority -\n                _this.registryFactory[a].priority;\n        });\n    };\n    Engine.prototype.initializeBackendsAndReturnBest = function () {\n        var sortedBackends = this.getSortedBackends();\n        for (var i = 0; i < sortedBackends.length; i++) {\n            var backendName = sortedBackends[i];\n            var _a = this.initializeBackend(backendName), success = _a.success, asyncInit = _a.asyncInit;\n            if (asyncInit || success) {\n                return { name: backendName, asyncInit: asyncInit };\n            }\n        }\n        throw new Error(\"Could not initialize any backends, all backend initializations \" +\n            \"failed.\");\n    };\n    Engine.prototype.moveData = function (destBackend, dataId) {\n        var info = this.state.tensorInfo.get(dataId);\n        var srcBackend = info.backend;\n        var values = this.readSync(dataId);\n        // Delete the tensor from the old backend and move it to the new\n        // backend.\n        srcBackend.disposeData(dataId);\n        info.backend = destBackend;\n        destBackend.move(dataId, values, info.shape, info.dtype);\n        if (this.shouldCheckForMemLeaks()) {\n            // Track the number of moves during a kernel execution to correctly\n            // detect memory leaks.\n            this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1]++;\n        }\n    };\n    Engine.prototype.tidy = function (nameOrFn, fn) {\n        var _this = this;\n        var name = null;\n        if (fn == null) {\n            // Called with only 1 argument.\n            if (typeof nameOrFn !== 'function') {\n                throw new Error('Please provide a function to tidy()');\n            }\n            fn = nameOrFn;\n        }\n        else {\n            // Called with 2 arguments.\n            if (typeof nameOrFn !== 'string' && !(nameOrFn instanceof String)) {\n                throw new Error('When calling with two arguments, the first argument ' +\n                    'to tidy() must be a string');\n            }\n            if (typeof fn !== 'function') {\n                throw new Error('When calling with two arguments, the 2nd argument ' +\n                    'to tidy() must be a function');\n            }\n            name = nameOrFn;\n            // TODO(nsthorat,smilkov): Do operation logging and performance\n            // profiling.\n        }\n        var result;\n        return this.scopedRun(function () { return _this.startScope(name); }, function () { return _this.endScope(result); }, function () {\n            result = fn();\n            if (result instanceof Promise) {\n                console.error('Cannot return a Promise inside of tidy.');\n            }\n            return result;\n        });\n    };\n    Engine.prototype.scopedRun = function (start, end, f) {\n        start();\n        try {\n            var res = f();\n            end();\n            return res;\n        }\n        catch (ex) {\n            end();\n            throw ex;\n        }\n    };\n    Engine.prototype.nextTensorId = function () {\n        return Engine.nextTensorId++;\n    };\n    Engine.prototype.nextVariableId = function () {\n        return Engine.nextVariableId++;\n    };\n    /**\n     * This method is called instead of the public-facing tensor.clone() when\n     * saving a tensor for backwards pass. It makes sure to add the clone\n     * operation to the tape regardless of being called inside a kernel\n     * execution.\n     *\n     * This method will go away once all kernels are modularized since we won't\n     * need to turn off the tape inside runKernel().\n     */\n    Engine.prototype.clone = function (x) {\n        var y = this.makeTensorFromDataId(x.dataId, x.shape, x.dtype);\n        var inputs = { x: x };\n        var grad = function (dy) { return ({ x: function () { return dy.toFloat(); } }); };\n        var saved = [];\n        this.addTapeNode(this.state.activeScope.name, inputs, [y], grad, saved, {});\n        return y;\n    };\n    /**\n     * Execute a kernel with the given name and return the output tensor.\n     *\n     * @param kernelName The name of the kernel to execute.\n     * @param inputs A map of input names to tensors.\n     * @param attrs A map of attribute names to their values. An attribute is a\n     *     primitive (non-tensor) input to the kernel.\n     * @param inputsToSave A list of tensors, inputs to save for the backprop\n     *     computation.\n     * @param outputsToSave A list of booleans, specifying which output to save\n     *     for the backprop computation. These are booleans since the output\n     * tensors are not visible to the user.\n     */\n    Engine.prototype.runKernel = function (kernelName, inputs, attrs, inputsToSave, outputsToSave) {\n        var forwardFunc = null;\n        var backwardsFunc = null;\n        // Call runKernel as a stop-gap until we modularize all kernels.\n        // Once we modularize all kernels, we will remove the existing\n        // `runKernelFunc`.\n        return this.runKernelFunc(forwardFunc, inputs, backwardsFunc, kernelName, attrs, inputsToSave, outputsToSave);\n    };\n    Engine.prototype.shouldCheckForMemLeaks = function () {\n        return this.ENV.getBool('IS_TEST');\n    };\n    Engine.prototype.checkKernelForMemLeak = function (kernelName, numDataIdsBefore, outInfos) {\n        var numDataIdsAfter = this.backend.numDataIds();\n        // Count the number of data ids associated with the result of the kernel.\n        var numOutputDataIds = 0;\n        outInfos.forEach(function (info) {\n            // Complex numbers allocate 3 data ids, one for 'real', one for\n            // 'imaginary', and one for the container that holds the former two.\n            numOutputDataIds += (info.dtype === 'complex64' ? 3 : 1);\n        });\n        // Account for the number of moves during kernel execution. A \"data move\"\n        // can happen in the middle of a kernel execution, placing a new (key,value)\n        // pair in the data storage. Since data moves have net zero effect (we\n        // always remove the data from the old backend), we have to cancel them out\n        // when detecting memory leaks.\n        var numMoves = this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1];\n        var dataIdsLeaked = numDataIdsAfter - numDataIdsBefore - numOutputDataIds - numMoves;\n        if (dataIdsLeaked > 0) {\n            throw new Error(\"Backend '\" + this.backendName + \"' has an internal memory leak \" +\n                (\"(\" + dataIdsLeaked + \" data ids) after running '\" + kernelName + \"'\"));\n        }\n    };\n    /**\n     * @deprecated Use `runKernel` for newly added kernels. Keep using this method\n     *     only for kernels that are not yet fully modularized.\n     */\n    Engine.prototype.runKernelFunc = function (forwardFunc, inputs, backwardsFunc, kernelName, attrs, inputsToSave, outputsToSave) {\n        var _this = this;\n        var outputs;\n        var saved = [];\n        var isTapeOn = this.isTapeOn();\n        if (kernelName == null) {\n            kernelName =\n                this.state.activeScope != null ? this.state.activeScope.name : '';\n        }\n        var startingBytecount = this.state.numBytes;\n        var startingNumTensors = this.state.numTensors;\n        if (this.shouldCheckForMemLeaks()) {\n            this.state.numDataMovesStack.push(0);\n        }\n        var kernelFunc;\n        var kernel = kernel_registry_1.getKernel(kernelName, this.backendName);\n        var out;\n        if (kernel != null) {\n            kernelFunc = function () {\n                var numDataIdsBefore = _this.backend.numDataIds();\n                out = kernel.kernelFunc({ inputs: inputs, attrs: attrs, backend: _this.backend });\n                var outInfos = Array.isArray(out) ? out : [out];\n                if (_this.shouldCheckForMemLeaks()) {\n                    _this.checkKernelForMemLeak(kernelName, numDataIdsBefore, outInfos);\n                }\n                var outTensors = outInfos.map(function (_a) {\n                    var dataId = _a.dataId, shape = _a.shape, dtype = _a.dtype;\n                    return _this.makeTensorFromDataId(dataId, shape, dtype);\n                });\n                // Save the inputs and outputs.\n                // Do not save unless we are recording to the tape. Otherwise it would\n                // cause a mem leak since we would never run backprop, which disposes\n                // the kept tensors.\n                if (isTapeOn) {\n                    var tensorsToSave = _this.getTensorsForGradient(kernelName, inputs, outTensors);\n                    if (tensorsToSave == null) {\n                        // Fallback for ops that call runKernelFunc and pass in\n                        // inputsToSave and outputsToSave. Currently this is the set of ops\n                        // with kernel support in the WASM backend. Once those ops and\n                        // respective gradients are modularised we can remove this path.\n                        if (outputsToSave == null) {\n                            outputsToSave = [];\n                        }\n                        var outsToSave = outTensors.filter(function (_, i) { return outputsToSave[i]; });\n                        tensorsToSave = (inputsToSave || []).slice().concat(outsToSave);\n                    }\n                    saved = _this.saveTensorsForBackwardMode(tensorsToSave);\n                }\n                return outTensors;\n            };\n        }\n        else {\n            var saveFunc_1 = function (tensors) {\n                // Do not save unless we are recording to the tape. Otherwise it would\n                // cause a mem leak since we would never run backprop, which disposes\n                // the kept tensors.\n                if (!isTapeOn) {\n                    return;\n                }\n                saved = tensors.map(function (tensor) { return _this.keep(_this.clone(tensor)); });\n            };\n            kernelFunc = function () {\n                var numDataIdsBefore = _this.backend.numDataIds();\n                out = _this.tidy(function () { return forwardFunc(_this.backend, saveFunc_1); });\n                var outs = (Array.isArray(out) ? out : [out]);\n                if (_this.shouldCheckForMemLeaks()) {\n                    _this.checkKernelForMemLeak(kernelName, numDataIdsBefore, outs);\n                }\n                return outs;\n            };\n        }\n        // Stop recording to a tape when running a kernel.\n        this.scopedRun(function () { return _this.state.kernelDepth++; }, function () { return _this.state.kernelDepth--; }, function () {\n            if (!_this.ENV.getBool('DEBUG')) {\n                outputs = kernelFunc();\n            }\n            else {\n                outputs = _this.profiler.profileKernel(kernelName, inputs, function () { return kernelFunc(); });\n            }\n        });\n        if (isTapeOn) {\n            this.addTapeNode(kernelName, inputs, outputs, backwardsFunc, saved, attrs);\n        }\n        if (this.state.profiling) {\n            this.state.activeProfile.kernels.push({\n                name: kernelName,\n                bytesAdded: this.state.numBytes - startingBytecount,\n                totalBytesSnapshot: this.state.numBytes,\n                tensorsAdded: this.state.numTensors - startingNumTensors,\n                totalTensorsSnapshot: this.state.numTensors,\n                inputShapes: Object.keys(inputs).map(function (key) { return inputs[key].shape; }),\n                outputShapes: outputs.map(function (item) { return item.shape; })\n            });\n        }\n        return (Array.isArray(out) ? outputs : outputs[0]);\n    };\n    /**\n     * Saves tensors used in forward mode for use in backward mode.\n     *\n     * @param tensors the list of tensors to save.\n     */\n    Engine.prototype.saveTensorsForBackwardMode = function (tensors) {\n        var _this = this;\n        var saved = tensors.map(function (tensor) { return _this.keep(_this.clone(tensor)); });\n        return saved;\n    };\n    /**\n     * Returns a list of tensors to save for a given gradient calculation.\n     *\n     * Returns undefined if their is no registered gradient for this kernel in the\n     * gradient registry.\n     *\n     * @param kernelName name of kernel to look up gradient for.\n     * @param inputs a map of input tensors.\n     * @param outputs an array of output tensors from forward mode of kernel.\n     */\n    Engine.prototype.getTensorsForGradient = function (kernelName, inputs, outputs) {\n        var gradConfig = kernel_registry_1.getGradient(kernelName);\n        if (gradConfig != null) {\n            var inputsToSave = gradConfig.inputsToSave || [];\n            var outputsToSave_1 = gradConfig.outputsToSave || [];\n            // If saveAllInputs is true, all inputs will be saved. Otherwise, inputs\n            // specified in inputsToSave will be saved.\n            var inputTensorsToSave = void 0;\n            if (gradConfig.saveAllInputs) {\n                util.assert(Array.isArray(inputs), function () { return 'saveAllInputs is true, expected inputs to be an array.'; });\n                inputTensorsToSave = Object.keys(inputs).map(function (key) { return inputs[key]; });\n            }\n            else {\n                inputTensorsToSave = inputsToSave.map(function (inputName) { return inputs[inputName]; });\n            }\n            var outputTensorsToSave = outputs.filter(function (_, i) { return outputsToSave_1[i]; });\n            return inputTensorsToSave.concat(outputTensorsToSave);\n        }\n        // TODO(yassogba) throw exception here once all runkernelFunc calls with\n        // inputsToSave/outputsToSave are removed\n        return null;\n    };\n    /**\n     * Internal method used by public APIs for tensor creation. Makes a new\n     * tensor with the provided shape, dtype and values. It always\n     * creates a new data id and writes the values to the underlying backend.\n     */\n    Engine.prototype.makeTensor = function (values, shape, dtype, backend) {\n        if (values == null) {\n            throw new Error('Values passed to engine.makeTensor() are null');\n        }\n        dtype = dtype || 'float32';\n        backend = backend || this.backend;\n        var backendVals = values;\n        if (dtype === 'string' && util.isString(values[0])) {\n            backendVals = values.map(function (d) { return util.encodeString(d); });\n        }\n        var dataId = backend.write(backendVals, shape, dtype);\n        var t = new tensor_1.Tensor(shape, dtype, dataId, this.nextTensorId());\n        this.incRef(t, backend);\n        // Count bytes for string tensors.\n        if (dtype === 'string') {\n            var info = this.state.tensorInfo.get(dataId);\n            var newBytes = util_1.bytesFromStringArray(backendVals);\n            this.state.numBytes += newBytes - info.bytes;\n            info.bytes = newBytes;\n        }\n        return t;\n    };\n    /**\n     * Internal method used by backends. Makes a new tensor\n     * that is a wrapper around an existing data id. It doesn't create\n     * a new data id, only increments the ref count used in memory tracking.\n     */\n    Engine.prototype.makeTensorFromDataId = function (dataId, shape, dtype, backend) {\n        dtype = dtype || 'float32';\n        var t = new tensor_1.Tensor(shape, dtype, dataId, this.nextTensorId());\n        this.incRef(t, backend);\n        return t;\n    };\n    Engine.prototype.makeVariable = function (initialValue, trainable, name, dtype) {\n        if (trainable === void 0) { trainable = true; }\n        name = name || this.nextVariableId().toString();\n        if (dtype != null && dtype !== initialValue.dtype) {\n            initialValue = initialValue.asType(dtype);\n        }\n        var v = new tensor_1.Variable(initialValue, trainable, name, this.nextTensorId());\n        if (this.state.registeredVariables[v.name] != null) {\n            throw new Error(\"Variable with name \" + v.name + \" was already registered\");\n        }\n        this.state.registeredVariables[v.name] = v;\n        this.incRef(v, this.backend);\n        return v;\n    };\n    Engine.prototype.incRef = function (a, backend) {\n        var refCount = this.state.tensorInfo.has(a.dataId) ?\n            this.state.tensorInfo.get(a.dataId).refCount :\n            0;\n        this.state.numTensors++;\n        if (a.dtype === 'string') {\n            this.state.numStringTensors++;\n        }\n        if (refCount === 0) {\n            this.state.numDataBuffers++;\n            // Bytes for complex numbers are counted by their components. Bytes for\n            // string tensors are counted when writing values.\n            var bytes = 0;\n            if (a.dtype !== 'complex64' && a.dtype !== 'string') {\n                bytes = a.size * util.bytesPerElement(a.dtype);\n            }\n            this.state.tensorInfo.set(a.dataId, {\n                backend: backend || this.backend,\n                dtype: a.dtype,\n                shape: a.shape,\n                bytes: bytes,\n                refCount: 0\n            });\n            this.state.numBytes += bytes;\n        }\n        this.state.tensorInfo.get(a.dataId).refCount++;\n        if (!(a instanceof tensor_1.Variable)) {\n            this.track(a);\n        }\n    };\n    Engine.prototype.disposeTensor = function (a) {\n        if (!this.state.tensorInfo.has(a.dataId)) {\n            return;\n        }\n        this.state.numTensors--;\n        if (a.dtype === 'string') {\n            this.state.numStringTensors--;\n        }\n        var info = this.state.tensorInfo.get(a.dataId);\n        var refCount = info.refCount;\n        if (refCount <= 1) {\n            // Don't count bytes for complex numbers as they are counted by their\n            // components.\n            if (a.dtype !== 'complex64') {\n                this.state.numBytes -= info.bytes;\n            }\n            this.state.numDataBuffers--;\n            info.backend.disposeData(a.dataId);\n            this.state.tensorInfo.delete(a.dataId);\n        }\n        else {\n            this.state.tensorInfo.get(a.dataId).refCount--;\n        }\n        // TODO(nsthorat): Construct an error and save the stack trace for\n        // debugging when in debug mode. Creating a stack trace is too expensive\n        // to do unconditionally.\n    };\n    Engine.prototype.disposeVariables = function () {\n        for (var varName in this.state.registeredVariables) {\n            var v = this.state.registeredVariables[varName];\n            this.disposeVariable(v);\n        }\n    };\n    Engine.prototype.disposeVariable = function (v) {\n        this.disposeTensor(v);\n        if (this.state.registeredVariables[v.name] != null) {\n            delete this.state.registeredVariables[v.name];\n        }\n    };\n    Engine.prototype.memory = function () {\n        var info = this.backend.memory();\n        info.numTensors = this.state.numTensors;\n        info.numDataBuffers = this.state.numDataBuffers;\n        info.numBytes = this.state.numBytes;\n        if (this.state.numStringTensors > 0) {\n            info.unreliable = true;\n            if (info.reasons == null) {\n                info.reasons = [];\n            }\n            info.reasons.push('Memory usage by string tensors is approximate ' +\n                '(2 bytes per character)');\n        }\n        return info;\n    };\n    Engine.prototype.profile = function (query) {\n        return __awaiter(this, void 0, void 0, function () {\n            var startBytes, startNumTensors;\n            return __generator(this, function (_a) {\n                this.state.profiling = true;\n                startBytes = this.state.numBytes;\n                startNumTensors = this.state.numTensors;\n                this.state.activeProfile.kernels = [];\n                this.state.activeProfile.result = query();\n                this.state.profiling = false;\n                this.state.activeProfile.peakBytes = Math.max.apply(Math, this.state.activeProfile.kernels.map(function (d) { return d.totalBytesSnapshot; }));\n                this.state.activeProfile.newBytes = this.state.numBytes - startBytes;\n                this.state.activeProfile.newTensors =\n                    this.state.numTensors - startNumTensors;\n                return [2 /*return*/, this.state.activeProfile];\n            });\n        });\n    };\n    Engine.prototype.isTapeOn = function () {\n        return this.state.gradientDepth > 0 && this.state.kernelDepth === 0;\n    };\n    Engine.prototype.addTapeNode = function (kernelName, inputs, outputs, gradientsFunc, saved, attrs) {\n        var _this = this;\n        var tapeNode = { id: this.state.nextTapeNodeId++, kernelName: kernelName, inputs: inputs, outputs: outputs, saved: saved };\n        var gradConfig = kernel_registry_1.getGradient(kernelName);\n        if (gradConfig != null) {\n            gradientsFunc = gradConfig.gradFunc;\n        }\n        if (gradientsFunc != null) {\n            tapeNode.gradient = function (dys) {\n                // TODO(smilkov): To optimize back-prop, pass dys that are not used in\n                // the backprop graph to the user as null instead of zeros\n                dys = dys.map(function (dy, i) {\n                    if (dy == null) {\n                        var output = outputs[i];\n                        var vals = util.makeZerosTypedArray(output.size, output.dtype);\n                        return _this.makeTensor(vals, output.shape, output.dtype);\n                    }\n                    return dy;\n                });\n                // Grad functions of ops with single outputs expect a dy, while ops\n                // with multiple outputs expect dys (array of dy).\n                return gradientsFunc(dys.length > 1 ? dys : dys[0], saved, attrs);\n            };\n        }\n        this.state.activeTape.push(tapeNode);\n    };\n    Engine.prototype.keep = function (result) {\n        result.kept = true;\n        return result;\n    };\n    Engine.prototype.startTape = function () {\n        if (this.state.gradientDepth === 0) {\n            this.state.activeTape = [];\n        }\n        this.state.gradientDepth++;\n    };\n    Engine.prototype.endTape = function () {\n        this.state.gradientDepth--;\n    };\n    /**\n     * Start a scope. Use this with endScope() to achieve the same functionality\n     * as scope() without the need for a function closure.\n     */\n    Engine.prototype.startScope = function (name) {\n        var scopeInfo = {\n            track: [],\n            name: 'unnamed scope',\n            id: this.state.nextScopeId++\n        };\n        if (name) {\n            scopeInfo.name = name;\n        }\n        this.state.scopeStack.push(scopeInfo);\n        this.state.activeScope = scopeInfo;\n    };\n    /**\n     * End a scope. Use this with startScope() to achieve the same functionality\n     * as scope() without the need for a function closure.\n     */\n    Engine.prototype.endScope = function (result) {\n        var _this = this;\n        var tensorsToTrackInParent = tensor_util_1.getTensorsInContainer(result);\n        var tensorsToTrackInParentSet = new Set(tensorsToTrackInParent.map(function (t) { return t.id; }));\n        // Dispose the arrays tracked in this scope.\n        for (var i = 0; i < this.state.activeScope.track.length; i++) {\n            var tensor = this.state.activeScope.track[i];\n            if (!tensor.kept && !tensorsToTrackInParentSet.has(tensor.id)) {\n                tensor.dispose();\n            }\n        }\n        var oldScope = this.state.scopeStack.pop();\n        this.state.activeScope = this.state.scopeStack.length === 0 ?\n            null :\n            this.state.scopeStack[this.state.scopeStack.length - 1];\n        // Track the current result in the parent scope.\n        tensorsToTrackInParent.forEach(function (tensor) {\n            // Only track the tensor if was allocated in the inner scope and is not\n            // globally kept.\n            if (!tensor.kept && tensor.scopeId === oldScope.id) {\n                _this.track(tensor);\n            }\n        });\n    };\n    /**\n     * Returns gradients of `f` with respect to each of the `xs`. The gradients\n     * returned are of the same length as `xs`, but some might be null if `f`\n     * was not a function of that `x`. It also takes optional dy to multiply the\n     * gradient, which defaults to `1`.\n     */\n    Engine.prototype.gradients = function (f, xs, dy, allowNoGradients) {\n        var _this = this;\n        if (allowNoGradients === void 0) { allowNoGradients = false; }\n        util.assert(xs.length > 0, function () { return 'gradients() received an empty list of xs.'; });\n        if (dy != null && dy.dtype !== 'float32') {\n            throw new Error(\"dy must have 'float32' dtype, but has '\" + dy.dtype + \"'\");\n        }\n        var y = this.scopedRun(function () { return _this.startTape(); }, function () { return _this.endTape(); }, function () { return _this.tidy('forward', f); });\n        util.assert(y instanceof tensor_1.Tensor, function () { return 'The result y returned by f() must be a tensor.'; });\n        // Filter out the nodes that don't connect x => y.\n        var filteredTape = tape_1.getFilteredNodesXToY(this.state.activeTape, xs, y);\n        if (!allowNoGradients && filteredTape.length === 0 && xs.length > 0) {\n            throw new Error('Cannot compute gradient of y=f(x) with respect to x. Make sure ' +\n                'that the f you passed encloses all operations that lead from x ' +\n                'to y.');\n        }\n        return this.tidy('backward', function () {\n            var accumulatedGradientMap = {};\n            accumulatedGradientMap[y.id] = (dy == null) ? ones(y.shape) : dy;\n            // Backprop gradients through the filtered nodes.\n            tape_1.backpropagateGradients(accumulatedGradientMap, filteredTape, \n            // Pass the tidy function to avoid circular dep with `tape.ts`.\n            function (f) { return _this.tidy(f); });\n            var grads = xs.map(function (x) { return accumulatedGradientMap[x.id]; });\n            if (_this.state.gradientDepth === 0) {\n                // This means that we are not computing higher-order gradients\n                // and can clean up the tape.\n                _this.state.activeTape.forEach(function (node) {\n                    for (var _i = 0, _a = node.saved; _i < _a.length; _i++) {\n                        var tensor = _a[_i];\n                        tensor.dispose();\n                    }\n                });\n                _this.state.activeTape = null;\n            }\n            return { value: y, grads: grads };\n        });\n    };\n    Engine.prototype.customGrad = function (f) {\n        var _this = this;\n        util.assert(util.isFunction(f), function () { return 'The f passed in customGrad(f) must be a function.'; });\n        return function () {\n            var inputs = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                inputs[_i] = arguments[_i];\n            }\n            util.assert(inputs.every(function (t) { return t instanceof tensor_1.Tensor; }), function () { return 'The args passed in customGrad(f)(x1, x2,...) must all be ' +\n                'tensors'; });\n            var res;\n            var inputMap = {};\n            inputs.forEach(function (input, i) {\n                inputMap[i] = input;\n            });\n            return _this.runKernelFunc(function (_, save) {\n                res = f.apply(void 0, inputs.concat([save]));\n                util.assert(res.value instanceof tensor_1.Tensor, function () { return 'The function f passed in customGrad(f) must return an ' +\n                    'object where `obj.value` is a tensor'; });\n                util.assert(util.isFunction(res.gradFunc), function () { return 'The function f passed in customGrad(f) must return an ' +\n                    'object where `obj.gradFunc` is a function.'; });\n                return res.value;\n            }, inputMap, function (dy, saved) {\n                var gradRes = res.gradFunc(dy, saved);\n                var grads = Array.isArray(gradRes) ? gradRes : [gradRes];\n                util.assert(grads.length === inputs.length, function () { return 'The function f passed in customGrad(f) must return an ' +\n                    'object where `obj.gradFunc` is a function that returns ' +\n                    'the same number of tensors as inputs passed to f(...).'; });\n                util.assert(grads.every(function (t) { return t instanceof tensor_1.Tensor; }), function () { return 'The function f passed in customGrad(f) must return an ' +\n                    'object where `obj.gradFunc` is a function that returns ' +\n                    'a list of only tensors.'; });\n                var gradMap = {};\n                grads.forEach(function (grad, i) {\n                    gradMap[i] = function () { return grad; };\n                });\n                return gradMap;\n            });\n        };\n    };\n    Engine.prototype.readSync = function (dataId) {\n        // Route the read to the correct backend.\n        var info = this.state.tensorInfo.get(dataId);\n        return info.backend.readSync(dataId);\n    };\n    Engine.prototype.read = function (dataId) {\n        // Route the read to the correct backend.\n        var info = this.state.tensorInfo.get(dataId);\n        return info.backend.read(dataId);\n    };\n    Engine.prototype.time = function (query) {\n        return __awaiter(this, void 0, void 0, function () {\n            var start, timingInfo;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        start = util_1.now();\n                        return [4 /*yield*/, this.backend.time(query)];\n                    case 1:\n                        timingInfo = _a.sent();\n                        timingInfo.wallMs = util_1.now() - start;\n                        return [2 /*return*/, timingInfo];\n                }\n            });\n        });\n    };\n    /**\n     * Tracks a Tensor in the current scope to be automatically cleaned up\n     * when the current scope ends, and returns the value.\n     *\n     * @param result The Tensor to track in the current scope.\n     */\n    Engine.prototype.track = function (result) {\n        if (this.state.activeScope != null) {\n            result.scopeId = this.state.activeScope.id;\n            this.state.activeScope.track.push(result);\n        }\n        return result;\n    };\n    Object.defineProperty(Engine.prototype, \"registeredVariables\", {\n        get: function () {\n            return this.state.registeredVariables;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Resets the engine state. Removes all backends but does not remove\n     * registered backend factories.\n     */\n    Engine.prototype.reset = function () {\n        // Make any pending promise obsolete.\n        this.pendingBackendInitId++;\n        this.state.dispose();\n        this.ENV.reset();\n        this.state = new EngineState();\n        for (var backendName in this.registry) {\n            this.disposeRegisteredKernels(backendName);\n            this.registry[backendName].dispose();\n            delete this.registry[backendName];\n        }\n        this.backendName = null;\n        this.backendInstance = null;\n        this.pendingBackendInit = null;\n    };\n    Engine.nextTensorId = 0;\n    Engine.nextVariableId = 0;\n    return Engine;\n}());\nexports.Engine = Engine;\nfunction ones(shape) {\n    var values = util_1.makeOnesTypedArray(util_1.sizeFromShape(shape), 'float32');\n    return exports.ENGINE.makeTensor(values, shape, 'float32');\n}\nvar GLOBAL;\nfunction getGlobalNamespace() {\n    if (GLOBAL == null) {\n        // tslint:disable-next-line:no-any\n        var ns = void 0;\n        if (typeof (window) !== 'undefined') {\n            ns = window;\n        }\n        else if (typeof (global) !== 'undefined') {\n            ns = global;\n        }\n        else if (typeof (process) !== 'undefined') {\n            ns = process;\n        }\n        else if (typeof (self) !== 'undefined') {\n            ns = self;\n        }\n        else {\n            throw new Error('Could not find a global object');\n        }\n        GLOBAL = ns;\n    }\n    return GLOBAL;\n}\nfunction getOrMakeEngine() {\n    var ns = getGlobalNamespace();\n    if (ns._tfengine == null) {\n        var environment = new environment_1.Environment(ns);\n        ns._tfengine = new Engine(environment);\n    }\n    environment_1.setEnvironmentGlobal(ns._tfengine.ENV);\n    // Tell the current tensor interface that the global engine is responsible\n    // for tracking.\n    tensor_1.setTensorTracker(function () { return ns._tfengine; });\n    return ns._tfengine;\n}\nexports.ENGINE = getOrMakeEngine();\n//# sourceMappingURL=engine.js.map","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @license\n * Copyright 2018 Google Inc. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nvar engine_1 = require(\"../engine\");\n/**\n * Used for wrapping functions that perform math operations on\n * Tensors. The function will be wrapped in a named scope that cleans all\n * memory usage after the function is done.\n */\nfunction op(f) {\n    var keys = Object.keys(f);\n    if (keys.length !== 1) {\n        throw new Error(\"Please provide an object with a single key \" +\n            \"(operation name) mapping to a function. Got an object with \" +\n            (keys.length + \" keys.\"));\n    }\n    var opName = keys[0];\n    var fn = f[opName];\n    // Strip the underscore from the end of the function name.\n    if (opName.endsWith('_')) {\n        opName = opName.substring(0, opName.length - 1);\n    }\n    // tslint:disable-next-line:no-any\n    var f2 = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        engine_1.ENGINE.startScope(opName);\n        try {\n            var result = fn.apply(void 0, args);\n            if (result instanceof Promise) {\n                console.error('Cannot return a Promise inside of tidy.');\n            }\n            engine_1.ENGINE.endScope(result);\n            return result;\n        }\n        catch (ex) {\n            engine_1.ENGINE.endScope(null);\n            throw ex;\n        }\n    };\n    Object.defineProperty(f2, 'name', { value: opName, configurable: true });\n    // tslint:disable-next-line:no-any\n    return f2;\n}\nexports.op = op;\n//# sourceMappingURL=operation.js.map","\"use strict\";\n/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar engine_1 = require(\"./engine\");\nvar environment_1 = require(\"./environment\");\nvar tensor_1 = require(\"./tensor\");\nvar util_1 = require(\"./util\");\nfunction inferShape(val, dtype) {\n    var firstElem = val;\n    if (util_1.isTypedArray(val)) {\n        return dtype === 'string' ? [] : [val.length];\n    }\n    if (!Array.isArray(val)) {\n        return []; // Scalar.\n    }\n    var shape = [];\n    while (Array.isArray(firstElem) ||\n        util_1.isTypedArray(firstElem) && dtype !== 'string') {\n        shape.push(firstElem.length);\n        firstElem = firstElem[0];\n    }\n    if (Array.isArray(val) &&\n        environment_1.env().getBool('TENSORLIKE_CHECK_SHAPE_CONSISTENCY')) {\n        deepAssertShapeConsistency(val, shape, []);\n    }\n    return shape;\n}\nexports.inferShape = inferShape;\nfunction deepAssertShapeConsistency(val, shape, indices) {\n    indices = indices || [];\n    if (!(Array.isArray(val)) && !util_1.isTypedArray(val)) {\n        util_1.assert(shape.length === 0, function () { return \"Element arr[\" + indices.join('][') + \"] is a primitive, \" +\n            (\"but should be an array/TypedArray of \" + shape[0] + \" elements\"); });\n        return;\n    }\n    util_1.assert(shape.length > 0, function () { return \"Element arr[\" + indices.join('][') + \"] should be a primitive, \" +\n        (\"but is an array of \" + val.length + \" elements\"); });\n    util_1.assert(val.length === shape[0], function () { return \"Element arr[\" + indices.join('][') + \"] should have \" + shape[0] + \" \" +\n        (\"elements, but has \" + val.length + \" elements\"); });\n    var subShape = shape.slice(1);\n    for (var i = 0; i < val.length; ++i) {\n        deepAssertShapeConsistency(val[i], subShape, indices.concat(i));\n    }\n}\nfunction assertDtype(expectedDtype, actualDType, argName, functionName) {\n    if (expectedDtype == null) {\n        return;\n    }\n    if (expectedDtype !== 'numeric' && expectedDtype !== actualDType ||\n        expectedDtype === 'numeric' && actualDType === 'string') {\n        throw new Error(\"Argument '\" + argName + \"' passed to '\" + functionName + \"' must \" +\n            (\"be \" + expectedDtype + \" tensor, but got \" + actualDType + \" tensor\"));\n    }\n}\nfunction convertToTensor(x, argName, functionName, parseAsDtype) {\n    if (parseAsDtype === void 0) { parseAsDtype = 'numeric'; }\n    if (x instanceof tensor_1.Tensor) {\n        assertDtype(parseAsDtype, x.dtype, argName, functionName);\n        return x;\n    }\n    var inferredDtype = util_1.inferDtype(x);\n    // If the user expects a bool/int/float, use that info to update the\n    // inferredDtype when it is not a string.\n    if (inferredDtype !== 'string' &&\n        ['bool', 'int32', 'float32'].indexOf(parseAsDtype) >= 0) {\n        inferredDtype = parseAsDtype;\n    }\n    assertDtype(parseAsDtype, inferredDtype, argName, functionName);\n    if ((x == null) ||\n        (!util_1.isTypedArray(x) && !Array.isArray(x) && typeof x !== 'number' &&\n            typeof x !== 'boolean' && typeof x !== 'string')) {\n        var type = x == null ? 'null' : x.constructor.name;\n        throw new Error(\"Argument '\" + argName + \"' passed to '\" + functionName + \"' must be a \" +\n            (\"Tensor or TensorLike, but got '\" + type + \"'\"));\n    }\n    var inferredShape = inferShape(x, inferredDtype);\n    if (!util_1.isTypedArray(x) && !Array.isArray(x)) {\n        x = [x];\n    }\n    var skipTypedArray = true;\n    var values = inferredDtype !== 'string' ?\n        util_1.toTypedArray(x, inferredDtype, environment_1.env().getBool('DEBUG')) :\n        util_1.flatten(x, [], skipTypedArray);\n    return engine_1.ENGINE.makeTensor(values, inferredShape, inferredDtype);\n}\nexports.convertToTensor = convertToTensor;\nfunction convertToTensorArray(arg, argName, functionName, parseAsDtype) {\n    if (parseAsDtype === void 0) { parseAsDtype = 'numeric'; }\n    if (!Array.isArray(arg)) {\n        throw new Error(\"Argument \" + argName + \" passed to \" + functionName + \" must be a \" +\n            '`Tensor[]` or `TensorLike[]`');\n    }\n    var tensors = arg;\n    return tensors.map(function (t, i) { return convertToTensor(t, argName + \"[\" + i + \"]\", functionName); }, parseAsDtype);\n}\nexports.convertToTensorArray = convertToTensorArray;\n//# sourceMappingURL=tensor_util_env.js.map","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var t0 = new Date,\n    t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n  constructor (version, options) {\n    options = parseOptions(options)\n\n    if (version instanceof SemVer) {\n      if (version.loose === !!options.loose &&\n          version.includePrerelease === !!options.includePrerelease) {\n        return version\n      } else {\n        version = version.version\n      }\n    } else if (typeof version !== 'string') {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    if (version.length > MAX_LENGTH) {\n      throw new TypeError(\n        `version is longer than ${MAX_LENGTH} characters`\n      )\n    }\n\n    debug('SemVer', version, options)\n    this.options = options\n    this.loose = !!options.loose\n    // this isn't actually relevant for versions, but keep it so that we\n    // don't run into trouble passing this.options around.\n    this.includePrerelease = !!options.includePrerelease\n\n    const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n    if (!m) {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    this.raw = version\n\n    // these are actually numbers\n    this.major = +m[1]\n    this.minor = +m[2]\n    this.patch = +m[3]\n\n    if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n      throw new TypeError('Invalid major version')\n    }\n\n    if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n      throw new TypeError('Invalid minor version')\n    }\n\n    if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n      throw new TypeError('Invalid patch version')\n    }\n\n    // numberify any prerelease numeric ids\n    if (!m[4]) {\n      this.prerelease = []\n    } else {\n      this.prerelease = m[4].split('.').map((id) => {\n        if (/^[0-9]+$/.test(id)) {\n          const num = +id\n          if (num >= 0 && num < MAX_SAFE_INTEGER) {\n            return num\n          }\n        }\n        return id\n      })\n    }\n\n    this.build = m[5] ? m[5].split('.') : []\n    this.format()\n  }\n\n  format () {\n    this.version = `${this.major}.${this.minor}.${this.patch}`\n    if (this.prerelease.length) {\n      this.version += `-${this.prerelease.join('.')}`\n    }\n    return this.version\n  }\n\n  toString () {\n    return this.version\n  }\n\n  compare (other) {\n    debug('SemVer.compare', this.version, this.options, other)\n    if (!(other instanceof SemVer)) {\n      if (typeof other === 'string' && other === this.version) {\n        return 0\n      }\n      other = new SemVer(other, this.options)\n    }\n\n    if (other.version === this.version) {\n      return 0\n    }\n\n    return this.compareMain(other) || this.comparePre(other)\n  }\n\n  compareMain (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    return (\n      compareIdentifiers(this.major, other.major) ||\n      compareIdentifiers(this.minor, other.minor) ||\n      compareIdentifiers(this.patch, other.patch)\n    )\n  }\n\n  comparePre (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    // NOT having a prerelease is > having one\n    if (this.prerelease.length && !other.prerelease.length) {\n      return -1\n    } else if (!this.prerelease.length && other.prerelease.length) {\n      return 1\n    } else if (!this.prerelease.length && !other.prerelease.length) {\n      return 0\n    }\n\n    let i = 0\n    do {\n      const a = this.prerelease[i]\n      const b = other.prerelease[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  compareBuild (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    let i = 0\n    do {\n      const a = this.build[i]\n      const b = other.build[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  // preminor will bump the version up to the next minor release, and immediately\n  // down to pre-release. premajor and prepatch work the same way.\n  inc (release, identifier) {\n    switch (release) {\n      case 'premajor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor = 0\n        this.major++\n        this.inc('pre', identifier)\n        break\n      case 'preminor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor++\n        this.inc('pre', identifier)\n        break\n      case 'prepatch':\n        // If this is already a prerelease, it will bump to the next version\n        // drop any prereleases that might already exist, since they are not\n        // relevant at this point.\n        this.prerelease.length = 0\n        this.inc('patch', identifier)\n        this.inc('pre', identifier)\n        break\n      // If the input is a non-prerelease version, this acts the same as\n      // prepatch.\n      case 'prerelease':\n        if (this.prerelease.length === 0) {\n          this.inc('patch', identifier)\n        }\n        this.inc('pre', identifier)\n        break\n\n      case 'major':\n        // If this is a pre-major version, bump up to the same major version.\n        // Otherwise increment major.\n        // 1.0.0-5 bumps to 1.0.0\n        // 1.1.0 bumps to 2.0.0\n        if (\n          this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0\n        ) {\n          this.major++\n        }\n        this.minor = 0\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'minor':\n        // If this is a pre-minor version, bump up to the same minor version.\n        // Otherwise increment minor.\n        // 1.2.0-5 bumps to 1.2.0\n        // 1.2.1 bumps to 1.3.0\n        if (this.patch !== 0 || this.prerelease.length === 0) {\n          this.minor++\n        }\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'patch':\n        // If this is not a pre-release version, it will increment the patch.\n        // If it is a pre-release it will bump up to the same patch version.\n        // 1.2.0-5 patches to 1.2.0\n        // 1.2.0 patches to 1.2.1\n        if (this.prerelease.length === 0) {\n          this.patch++\n        }\n        this.prerelease = []\n        break\n      // This probably shouldn't be used publicly.\n      // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n      case 'pre':\n        if (this.prerelease.length === 0) {\n          this.prerelease = [0]\n        } else {\n          let i = this.prerelease.length\n          while (--i >= 0) {\n            if (typeof this.prerelease[i] === 'number') {\n              this.prerelease[i]++\n              i = -2\n            }\n          }\n          if (i === -1) {\n            // didn't increment anything\n            this.prerelease.push(0)\n          }\n        }\n        if (identifier) {\n          // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n          // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n          if (this.prerelease[0] === identifier) {\n            if (isNaN(this.prerelease[1])) {\n              this.prerelease = [identifier, 0]\n            }\n          } else {\n            this.prerelease = [identifier, 0]\n          }\n        }\n        break\n\n      default:\n        throw new Error(`invalid increment argument: ${release}`)\n    }\n    this.format()\n    this.raw = this.version\n    return this\n  }\n}\n\nmodule.exports = SemVer\n","\"use strict\";\n/**\n * @license\n * Copyright 2017 Google Inc. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tensor_format_1 = require(\"./tensor_format\");\nvar util = require(\"./util\");\nvar util_1 = require(\"./util\");\n/**\n * A mutable object, similar to `tf.Tensor`, that allows users to set values\n * at locations before converting to an immutable `tf.Tensor`.\n *\n * See `tf.buffer` for creating a tensor buffer.\n */\n/** @doc {heading: 'Tensors', subheading: 'Classes'} */\nvar TensorBuffer = /** @class */ (function () {\n    function TensorBuffer(shape, dtype, values) {\n        var _this = this;\n        this.dtype = dtype;\n        this.shape = shape.slice();\n        this.size = util.sizeFromShape(shape);\n        if (values != null) {\n            var n_1 = values.length;\n            util.assert(n_1 === this.size, function () { return \"Length of values '\" + n_1 + \"' does not match the size \" +\n                (\"inferred by the shape '\" + _this.size + \"'.\"); });\n        }\n        if (dtype === 'complex64') {\n            throw new Error(\"complex64 dtype TensorBuffers are not supported. Please create \" +\n                \"a TensorBuffer for the real and imaginary parts separately and \" +\n                \"call tf.complex(real, imag).\");\n        }\n        this.values = values || util.getArrayFromDType(dtype, this.size);\n        this.strides = util_1.computeStrides(shape);\n    }\n    /**\n     * Sets a value in the buffer at a given location.\n     *\n     * @param value The value to set.\n     * @param locs  The location indices.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Creation'} */\n    TensorBuffer.prototype.set = function (value) {\n        var _this = this;\n        var locs = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            locs[_i - 1] = arguments[_i];\n        }\n        if (locs.length === 0) {\n            locs = [0];\n        }\n        util.assert(locs.length === this.rank, function () { return \"The number of provided coordinates (\" + locs.length + \") must \" +\n            (\"match the rank (\" + _this.rank + \")\"); });\n        var index = this.locToIndex(locs);\n        this.values[index] = value;\n    };\n    /**\n     * Returns the value in the buffer at the provided location.\n     *\n     * @param locs The location indices.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Creation'} */\n    TensorBuffer.prototype.get = function () {\n        var locs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            locs[_i] = arguments[_i];\n        }\n        if (locs.length === 0) {\n            locs = [0];\n        }\n        var i = 0;\n        for (var _a = 0, locs_1 = locs; _a < locs_1.length; _a++) {\n            var loc = locs_1[_a];\n            if (loc < 0 || loc >= this.shape[i]) {\n                var msg = \"Requested out of range element at \" + locs + \". \" +\n                    (\"  Buffer shape=\" + this.shape);\n                throw new Error(msg);\n            }\n            i++;\n        }\n        var index = locs[locs.length - 1];\n        for (var i_1 = 0; i_1 < locs.length - 1; ++i_1) {\n            index += this.strides[i_1] * locs[i_1];\n        }\n        return this.values[index];\n    };\n    TensorBuffer.prototype.locToIndex = function (locs) {\n        if (this.rank === 0) {\n            return 0;\n        }\n        else if (this.rank === 1) {\n            return locs[0];\n        }\n        var index = locs[locs.length - 1];\n        for (var i = 0; i < locs.length - 1; ++i) {\n            index += this.strides[i] * locs[i];\n        }\n        return index;\n    };\n    TensorBuffer.prototype.indexToLoc = function (index) {\n        if (this.rank === 0) {\n            return [];\n        }\n        else if (this.rank === 1) {\n            return [index];\n        }\n        var locs = new Array(this.shape.length);\n        for (var i = 0; i < locs.length - 1; ++i) {\n            locs[i] = Math.floor(index / this.strides[i]);\n            index -= locs[i] * this.strides[i];\n        }\n        locs[locs.length - 1] = index;\n        return locs;\n    };\n    Object.defineProperty(TensorBuffer.prototype, \"rank\", {\n        get: function () {\n            return this.shape.length;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Creates an immutable `tf.Tensor` object from the buffer.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Creation'} */\n    TensorBuffer.prototype.toTensor = function () {\n        return trackerFn().makeTensor(this.values, this.shape, this.dtype);\n    };\n    return TensorBuffer;\n}());\nexports.TensorBuffer = TensorBuffer;\n// For tracking tensor creation and disposal.\nvar trackerFn = null;\n// Used by chaining methods to call into ops.\nvar opHandler = null;\n// Used to warn about deprecated methods.\nvar deprecationWarningFn = null;\n// This here so that we can use this method on dev branches and keep the\n// functionality at master.\n// tslint:disable-next-line:no-unused-expression\n[deprecationWarningFn];\n/**\n * An external consumer can register itself as the tensor tracker. This way\n * the Tensor class can notify the tracker for every tensor created and\n * disposed.\n */\nfunction setTensorTracker(fn) {\n    trackerFn = fn;\n}\nexports.setTensorTracker = setTensorTracker;\n/**\n * An external consumer can register itself as the op handler. This way the\n * Tensor class can have chaining methods that call into ops via the op\n * handler.\n */\nfunction setOpHandler(handler) {\n    opHandler = handler;\n}\nexports.setOpHandler = setOpHandler;\n/**\n * Sets the deprecation warning function to be used by this file. This way the\n * Tensor class can be a leaf but still use the environment.\n */\nfunction setDeprecationWarningFn(fn) {\n    deprecationWarningFn = fn;\n}\nexports.setDeprecationWarningFn = setDeprecationWarningFn;\n/**\n * A `tf.Tensor` object represents an immutable, multidimensional array of\n * numbers that has a shape and a data type.\n *\n * See `tf.tensor` for details on how to create a `tf.Tensor`.\n */\n/** @doc {heading: 'Tensors', subheading: 'Classes'} */\nvar Tensor = /** @class */ (function () {\n    function Tensor(shape, dtype, dataId, id) {\n        /** Whether this tensor has been globally kept. */\n        this.kept = false;\n        this.isDisposedInternal = false;\n        this.shape = shape.slice();\n        this.dtype = dtype || 'float32';\n        this.size = util.sizeFromShape(shape);\n        this.strides = util_1.computeStrides(shape);\n        this.dataId = dataId;\n        this.id = id;\n        this.rankType = (this.rank < 5 ? this.rank.toString() : 'higher');\n    }\n    /** Flatten a Tensor to a 1D array. */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.flatten = function () {\n        this.throwIfDisposed();\n        return this.as1D();\n    };\n    /** Converts a size-1 `tf.Tensor` to a `tf.Scalar`. */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.asScalar = function () {\n        this.throwIfDisposed();\n        util.assert(this.size === 1, function () { return 'The array must have only 1 element.'; });\n        return this.reshape([]);\n    };\n    /** Converts a `tf.Tensor` to a `tf.Tensor1D`. */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.as1D = function () {\n        this.throwIfDisposed();\n        return this.reshape([this.size]);\n    };\n    /**\n     * Converts a `tf.Tensor` to a `tf.Tensor2D`.\n     *\n     * @param rows Number of rows in `tf.Tensor2D`.\n     * @param columns Number of columns in `tf.Tensor2D`.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.as2D = function (rows, columns) {\n        this.throwIfDisposed();\n        return this.reshape([rows, columns]);\n    };\n    /**\n     * Converts a `tf.Tensor` to a `tf.Tensor3D`.\n     *\n     * @param rows Number of rows in `tf.Tensor3D`.\n     * @param columns Number of columns in `tf.Tensor3D`.\n     * @param depth Depth of `tf.Tensor3D`.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.as3D = function (rows, columns, depth) {\n        this.throwIfDisposed();\n        return this.reshape([rows, columns, depth]);\n    };\n    /**\n     * Converts a `tf.Tensor` to a `tf.Tensor4D`.\n     *\n     * @param rows Number of rows in `tf.Tensor4D`.\n     * @param columns Number of columns in `tf.Tensor4D`.\n     * @param depth Depth of `tf.Tensor4D`.\n     * @param depth2 4th dimension of `tf.Tensor4D`.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.as4D = function (rows, columns, depth, depth2) {\n        this.throwIfDisposed();\n        return this.reshape([rows, columns, depth, depth2]);\n    };\n    /**\n     * Converts a `tf.Tensor` to a `tf.Tensor5D`.\n     *\n     * @param rows Number of rows in `tf.Tensor5D`.\n     * @param columns Number of columns in `tf.Tensor5D`.\n     * @param depth Depth of `tf.Tensor5D`.\n     * @param depth2 4th dimension of `tf.Tensor5D`.\n     * @param depth3 5th dimension of 'tf.Tensor5D'\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.as5D = function (rows, columns, depth, depth2, depth3) {\n        this.throwIfDisposed();\n        return this.reshape([rows, columns, depth, depth2, depth3]);\n    };\n    /**\n     * Casts a `tf.Tensor` to a specified dtype.\n     *\n     * @param dtype Data-type to cast the tensor to.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.asType = function (dtype) {\n        this.throwIfDisposed();\n        return opHandler.cast(this, dtype);\n    };\n    Object.defineProperty(Tensor.prototype, \"rank\", {\n        get: function () {\n            return this.shape.length;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Returns a promise of `tf.TensorBuffer` that holds the underlying data.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.buffer = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var vals;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.data()];\n                    case 1:\n                        vals = _a.sent();\n                        return [2 /*return*/, opHandler.buffer(this.shape, this.dtype, vals)];\n                }\n            });\n        });\n    };\n    /** Returns a `tf.TensorBuffer` that holds the underlying data. */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.bufferSync = function () {\n        return opHandler.buffer(this.shape, this.dtype, this.dataSync());\n    };\n    /**\n     * Returns the tensor data as a nested array. The transfer of data is done\n     * asynchronously.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.array = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var vals;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.data()];\n                    case 1:\n                        vals = _a.sent();\n                        return [2 /*return*/, util_1.toNestedArray(this.shape, vals)];\n                }\n            });\n        });\n    };\n    /**\n     * Returns the tensor data as a nested array. The transfer of data is done\n     * synchronously.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.arraySync = function () {\n        return util_1.toNestedArray(this.shape, this.dataSync());\n    };\n    /**\n     * Asynchronously downloads the values from the `tf.Tensor`. Returns a\n     * promise of `TypedArray` that resolves when the computation has finished.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.data = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var data, bytes;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        this.throwIfDisposed();\n                        data = trackerFn().read(this.dataId);\n                        if (!(this.dtype === 'string')) return [3 /*break*/, 2];\n                        return [4 /*yield*/, data];\n                    case 1:\n                        bytes = _a.sent();\n                        try {\n                            return [2 /*return*/, bytes.map(function (b) { return util.decodeString(b); })];\n                        }\n                        catch (_b) {\n                            throw new Error('Failed to decode the string bytes into utf-8. ' +\n                                'To get the original bytes, call tensor.bytes().');\n                        }\n                        _a.label = 2;\n                    case 2: return [2 /*return*/, data];\n                }\n            });\n        });\n    };\n    /**\n     * Synchronously downloads the values from the `tf.Tensor`. This blocks the\n     * UI thread until the values are ready, which can cause performance issues.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.dataSync = function () {\n        this.throwIfDisposed();\n        var data = trackerFn().readSync(this.dataId);\n        if (this.dtype === 'string') {\n            try {\n                return data.map(function (b) { return util.decodeString(b); });\n            }\n            catch (_a) {\n                throw new Error('Failed to decode the string bytes into utf-8. ' +\n                    'To get the original bytes, call tensor.bytes().');\n            }\n        }\n        return data;\n    };\n    /** Returns the underlying bytes of the tensor's data. */\n    Tensor.prototype.bytes = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var data;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        this.throwIfDisposed();\n                        return [4 /*yield*/, trackerFn().read(this.dataId)];\n                    case 1:\n                        data = _a.sent();\n                        if (this.dtype === 'string') {\n                            return [2 /*return*/, data];\n                        }\n                        else {\n                            return [2 /*return*/, new Uint8Array(data.buffer)];\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Disposes `tf.Tensor` from memory.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.dispose = function () {\n        if (this.isDisposed) {\n            return;\n        }\n        trackerFn().disposeTensor(this);\n        this.isDisposedInternal = true;\n    };\n    Object.defineProperty(Tensor.prototype, \"isDisposed\", {\n        get: function () {\n            return this.isDisposedInternal;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Tensor.prototype.throwIfDisposed = function () {\n        if (this.isDisposed) {\n            throw new Error(\"Tensor is disposed.\");\n        }\n    };\n    /** Casts the array to type `float32` */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.toFloat = function () {\n        return this.asType('float32');\n    };\n    /** Casts the array to type `int32` */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.toInt = function () {\n        return this.asType('int32');\n    };\n    /** Casts the array to type `bool` */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.toBool = function () {\n        return this.asType('bool');\n    };\n    /**\n     * Prints the `tf.Tensor`. See `tf.print` for details.\n     *\n     * @param verbose Whether to print verbose information about the tensor,\n     *    including dtype and size.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.print = function (verbose) {\n        if (verbose === void 0) { verbose = false; }\n        return opHandler.print(this, verbose);\n    };\n    /**\n     * Reshapes the tensor into the provided shape.\n     * See `tf.reshape` for more details.\n     *\n     * @param newShape An array of integers defining the output tensor shape.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.reshape = function (newShape) {\n        this.throwIfDisposed();\n        return opHandler.reshape(this, newShape);\n    };\n    /**\n     * Reshapes the tensor into the shape of the provided tensor.\n     *\n     * @param x The tensor of required shape.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.reshapeAs = function (x) {\n        this.throwIfDisposed();\n        return this.reshape(x.shape);\n    };\n    /**\n     * Returns a `tf.Tensor` that has expanded rank, by inserting a dimension\n     * into the tensor's shape. See `tf.expandDims` for details.\n     *\n     * @param axis The dimension index at which to insert shape of 1. Defaults to\n     *     0 (the first dimension).\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.expandDims = function (axis) {\n        if (axis === void 0) { axis = 0; }\n        return opHandler.expandDims(this, axis);\n    };\n    /**\n     * Returns the cumulative sum of the `tf.Tensor` along `axis`.\n     *\n     * @param axis The axis along which to sum. Optional. Defaults to 0.\n     * @param exclusive Whether to perform exclusive cumulative sum. Defaults to\n     *    false. If set to true then the sum of each tensor entry does not\n     * include its own value, but only the values previous to it along the\n     * specified axis.\n     * @param reverse Whether to sum in the opposite direction. Defaults to\n     *    false.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.cumsum = function (axis, exclusive, reverse) {\n        if (axis === void 0) { axis = 0; }\n        if (exclusive === void 0) { exclusive = false; }\n        if (reverse === void 0) { reverse = false; }\n        return opHandler.cumsum(this, axis, exclusive, reverse);\n    };\n    /**\n     * Returns a `tf.Tensor` with dimensions of size 1 removed from the shape.\n     * See `tf.squeeze` for more details.\n     *\n     * @param axis A list of numbers. If specified, only squeezes the\n     *    dimensions listed. The dimension index starts at 0. It is an error to\n     *    squeeze a dimension that is not 1.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.squeeze = function (axis) {\n        this.throwIfDisposed();\n        return opHandler.squeeze(this, axis);\n    };\n    /** Returns a copy of the tensor. See `tf.clone` for details. */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.clone = function () {\n        this.throwIfDisposed();\n        return opHandler.clone(this);\n    };\n    /**\n     * Returns a human-readable description of the tensor. Useful for logging.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Tensor.prototype.toString = function (verbose) {\n        if (verbose === void 0) { verbose = false; }\n        var vals = this.dataSync();\n        return tensor_format_1.tensorToString(vals, this.shape, this.dtype, verbose);\n    };\n    // Below is chain API that is not exposed to docs to avoid repetition. To\n    // expose a method, move it above this comment and add @doc and jsdoc.\n    Tensor.prototype.gather = function (indices, axis) {\n        if (axis === void 0) { axis = 0; }\n        this.throwIfDisposed();\n        return opHandler.gather(this, indices, axis);\n    };\n    Tensor.prototype.matMul = function (b, transposeA, transposeB) {\n        if (transposeA === void 0) { transposeA = false; }\n        if (transposeB === void 0) { transposeB = false; }\n        this.throwIfDisposed();\n        return opHandler.matMul(this, b, transposeA, transposeB);\n    };\n    Tensor.prototype.dot = function (b) {\n        this.throwIfDisposed();\n        return opHandler.dot(this, b);\n    };\n    Tensor.prototype.norm = function (ord, axis, keepDims) {\n        if (ord === void 0) { ord = 'euclidean'; }\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.norm(this, ord, axis, keepDims);\n    };\n    Tensor.prototype.slice = function (begin, size) {\n        this.throwIfDisposed();\n        return opHandler.slice(this, begin, size);\n    };\n    Tensor.prototype.reverse = function (axis) {\n        this.throwIfDisposed();\n        return opHandler.reverse(this, axis);\n    };\n    Tensor.prototype.concat = function (x, axis) {\n        if (axis === void 0) { axis = 0; }\n        this.throwIfDisposed();\n        if (x instanceof Tensor) {\n            x = [x];\n        }\n        return opHandler.concat([this].concat(x), axis);\n    };\n    Tensor.prototype.split = function (numOrSizeSplits, axis) {\n        if (axis === void 0) { axis = 0; }\n        this.throwIfDisposed();\n        return opHandler.split(this, numOrSizeSplits, axis);\n    };\n    Tensor.prototype.stack = function (x, axis) {\n        if (axis === void 0) { axis = 0; }\n        return opHandler.stack([this, x], axis);\n    };\n    Tensor.prototype.unstack = function (axis) {\n        if (axis === void 0) { axis = 0; }\n        return opHandler.unstack(this, axis);\n    };\n    /**\n     * @deprecated Use `tf.batchNorm` instead, and note the positional argument\n     *     change of scale, offset, and varianceEpsilon.\n     */\n    Tensor.prototype.batchNormalization = function (mean, variance, varianceEpsilon, scale, offset) {\n        if (varianceEpsilon === void 0) { varianceEpsilon = .001; }\n        deprecationWarningFn('tf.batchNormalization() is going away. ' +\n            'Use tf.batchNorm() instead, and note the positional argument change ' +\n            'of scale, offset, and varianceEpsilon');\n        return this.batchNorm(mean, variance, offset, scale, varianceEpsilon);\n    };\n    // Reduction ops.\n    Tensor.prototype.all = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.all(this, axis, keepDims);\n    };\n    Tensor.prototype.any = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.any(this, axis, keepDims);\n    };\n    Tensor.prototype.logSumExp = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.logSumExp(this, axis, keepDims);\n    };\n    Tensor.prototype.sum = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.sum(this, axis, keepDims);\n    };\n    Tensor.prototype.prod = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.prod(this, axis, keepDims);\n    };\n    Tensor.prototype.mean = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.mean(this, axis, keepDims);\n    };\n    Tensor.prototype.min = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.min(this, axis, keepDims);\n    };\n    Tensor.prototype.max = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.max(this, axis, keepDims);\n    };\n    Tensor.prototype.argMin = function (axis) {\n        if (axis === void 0) { axis = null; }\n        this.throwIfDisposed();\n        return opHandler.argMin(this, axis);\n    };\n    Tensor.prototype.argMax = function (axis) {\n        if (axis === void 0) { axis = null; }\n        this.throwIfDisposed();\n        return opHandler.argMax(this, axis);\n    };\n    // Transformations\n    Tensor.prototype.cast = function (dtype) {\n        this.throwIfDisposed();\n        return opHandler.cast(this, dtype);\n    };\n    // Binary ops.\n    Tensor.prototype.addStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.addStrict(this, x);\n    };\n    Tensor.prototype.atan2 = function (x) {\n        this.throwIfDisposed();\n        return opHandler.atan2(this, x);\n    };\n    Tensor.prototype.sub = function (x) {\n        this.throwIfDisposed();\n        return opHandler.sub(this, x);\n    };\n    Tensor.prototype.subStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.subStrict(this, x);\n    };\n    Tensor.prototype.pow = function (exp) {\n        this.throwIfDisposed();\n        return opHandler.pow(this, exp);\n    };\n    Tensor.prototype.powStrict = function (exp) {\n        this.throwIfDisposed();\n        return opHandler.powStrict(this, exp);\n    };\n    Tensor.prototype.mul = function (x) {\n        this.throwIfDisposed();\n        return opHandler.mul(this, x);\n    };\n    Tensor.prototype.mulStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.mulStrict(this, x);\n    };\n    Tensor.prototype.floorDiv = function (x) {\n        this.throwIfDisposed();\n        return opHandler.floorDiv(this, x);\n    };\n    Tensor.prototype.divStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.divStrict(this, x);\n    };\n    Tensor.prototype.minimum = function (x) {\n        this.throwIfDisposed();\n        return opHandler.minimum(this, x);\n    };\n    Tensor.prototype.minimumStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.minimumStrict(this, x);\n    };\n    Tensor.prototype.maximum = function (x) {\n        this.throwIfDisposed();\n        return opHandler.maximum(this, x);\n    };\n    Tensor.prototype.maximumStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.maximumStrict(this, x);\n    };\n    Tensor.prototype.mod = function (x) {\n        this.throwIfDisposed();\n        return opHandler.mod(this, x);\n    };\n    Tensor.prototype.modStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.modStrict(this, x);\n    };\n    Tensor.prototype.squaredDifferenceStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.squaredDifferenceStrict(this, x);\n    };\n    // Compare ops.\n    Tensor.prototype.notEqual = function (x) {\n        this.throwIfDisposed();\n        return opHandler.notEqual(this, x);\n    };\n    Tensor.prototype.notEqualStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.notEqualStrict(this, x);\n    };\n    Tensor.prototype.less = function (x) {\n        this.throwIfDisposed();\n        return opHandler.less(this, x);\n    };\n    Tensor.prototype.lessStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.lessStrict(this, x);\n    };\n    Tensor.prototype.equal = function (x) {\n        this.throwIfDisposed();\n        return opHandler.equal(this, x);\n    };\n    Tensor.prototype.equalStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.equalStrict(this, x);\n    };\n    Tensor.prototype.lessEqual = function (x) {\n        this.throwIfDisposed();\n        return opHandler.lessEqual(this, x);\n    };\n    Tensor.prototype.lessEqualStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.lessEqualStrict(this, x);\n    };\n    Tensor.prototype.greater = function (x) {\n        this.throwIfDisposed();\n        return opHandler.greater(this, x);\n    };\n    Tensor.prototype.greaterStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.greaterStrict(this, x);\n    };\n    Tensor.prototype.greaterEqual = function (x) {\n        this.throwIfDisposed();\n        return opHandler.greaterEqual(this, x);\n    };\n    Tensor.prototype.greaterEqualStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.greaterEqualStrict(this, x);\n    };\n    // Compare ops.\n    Tensor.prototype.logicalAnd = function (x) {\n        this.throwIfDisposed();\n        return opHandler.logicalAnd(this, x);\n    };\n    Tensor.prototype.logicalOr = function (x) {\n        this.throwIfDisposed();\n        return opHandler.logicalOr(this, x);\n    };\n    Tensor.prototype.logicalNot = function () {\n        this.throwIfDisposed();\n        return opHandler.logicalNot(this);\n    };\n    Tensor.prototype.logicalXor = function (x) {\n        this.throwIfDisposed();\n        return opHandler.logicalXor(this, x);\n    };\n    Tensor.prototype.where = function (condition, x) {\n        this.throwIfDisposed();\n        return opHandler.where(condition, this, x);\n    };\n    // Unary ops.\n    Tensor.prototype.neg = function () {\n        this.throwIfDisposed();\n        return opHandler.neg(this);\n    };\n    Tensor.prototype.ceil = function () {\n        this.throwIfDisposed();\n        return opHandler.ceil(this);\n    };\n    Tensor.prototype.floor = function () {\n        this.throwIfDisposed();\n        return opHandler.floor(this);\n    };\n    Tensor.prototype.sign = function () {\n        this.throwIfDisposed();\n        return opHandler.sign(this);\n    };\n    Tensor.prototype.isNaN = function () {\n        this.throwIfDisposed();\n        return opHandler.isNaN(this);\n    };\n    Tensor.prototype.isInf = function () {\n        this.throwIfDisposed();\n        return opHandler.isInf(this);\n    };\n    Tensor.prototype.isFinite = function () {\n        this.throwIfDisposed();\n        return opHandler.isFinite(this);\n    };\n    Tensor.prototype.exp = function () {\n        this.throwIfDisposed();\n        return opHandler.exp(this);\n    };\n    Tensor.prototype.expm1 = function () {\n        this.throwIfDisposed();\n        return opHandler.expm1(this);\n    };\n    Tensor.prototype.log = function () {\n        this.throwIfDisposed();\n        return opHandler.log(this);\n    };\n    Tensor.prototype.log1p = function () {\n        this.throwIfDisposed();\n        return opHandler.log1p(this);\n    };\n    Tensor.prototype.sqrt = function () {\n        this.throwIfDisposed();\n        return opHandler.sqrt(this);\n    };\n    Tensor.prototype.rsqrt = function () {\n        this.throwIfDisposed();\n        return opHandler.rsqrt(this);\n    };\n    Tensor.prototype.square = function () {\n        this.throwIfDisposed();\n        return opHandler.square(this);\n    };\n    Tensor.prototype.reciprocal = function () {\n        this.throwIfDisposed();\n        return opHandler.reciprocal(this);\n    };\n    Tensor.prototype.abs = function () {\n        this.throwIfDisposed();\n        return opHandler.abs(this);\n    };\n    Tensor.prototype.clipByValue = function (min, max) {\n        this.throwIfDisposed();\n        return opHandler.clipByValue(this, min, max);\n    };\n    Tensor.prototype.relu = function () {\n        this.throwIfDisposed();\n        return opHandler.relu(this);\n    };\n    Tensor.prototype.relu6 = function () {\n        this.throwIfDisposed();\n        return opHandler.relu6(this);\n    };\n    Tensor.prototype.elu = function () {\n        this.throwIfDisposed();\n        return opHandler.elu(this);\n    };\n    Tensor.prototype.selu = function () {\n        this.throwIfDisposed();\n        return opHandler.selu(this);\n    };\n    Tensor.prototype.leakyRelu = function (alpha) {\n        if (alpha === void 0) { alpha = 0.2; }\n        this.throwIfDisposed();\n        return opHandler.leakyRelu(this, alpha);\n    };\n    Tensor.prototype.prelu = function (alpha) {\n        this.throwIfDisposed();\n        return opHandler.prelu(this, alpha);\n    };\n    Tensor.prototype.sigmoid = function () {\n        this.throwIfDisposed();\n        return opHandler.sigmoid(this);\n    };\n    Tensor.prototype.logSigmoid = function () {\n        this.throwIfDisposed();\n        return opHandler.logSigmoid(this);\n    };\n    Tensor.prototype.softplus = function () {\n        this.throwIfDisposed();\n        return opHandler.softplus(this);\n    };\n    Tensor.prototype.zerosLike = function () {\n        this.throwIfDisposed();\n        return opHandler.zerosLike(this);\n    };\n    Tensor.prototype.onesLike = function () {\n        this.throwIfDisposed();\n        return opHandler.onesLike(this);\n    };\n    Tensor.prototype.sin = function () {\n        this.throwIfDisposed();\n        return opHandler.sin(this);\n    };\n    Tensor.prototype.cos = function () {\n        this.throwIfDisposed();\n        return opHandler.cos(this);\n    };\n    Tensor.prototype.tan = function () {\n        this.throwIfDisposed();\n        return opHandler.tan(this);\n    };\n    Tensor.prototype.asin = function () {\n        this.throwIfDisposed();\n        return opHandler.asin(this);\n    };\n    Tensor.prototype.acos = function () {\n        this.throwIfDisposed();\n        return opHandler.acos(this);\n    };\n    Tensor.prototype.atan = function () {\n        this.throwIfDisposed();\n        return opHandler.atan(this);\n    };\n    Tensor.prototype.sinh = function () {\n        this.throwIfDisposed();\n        return opHandler.sinh(this);\n    };\n    Tensor.prototype.cosh = function () {\n        this.throwIfDisposed();\n        return opHandler.cosh(this);\n    };\n    Tensor.prototype.tanh = function () {\n        this.throwIfDisposed();\n        return opHandler.tanh(this);\n    };\n    Tensor.prototype.asinh = function () {\n        this.throwIfDisposed();\n        return opHandler.asinh(this);\n    };\n    Tensor.prototype.acosh = function () {\n        this.throwIfDisposed();\n        return opHandler.acosh(this);\n    };\n    Tensor.prototype.atanh = function () {\n        this.throwIfDisposed();\n        return opHandler.atanh(this);\n    };\n    Tensor.prototype.erf = function () {\n        this.throwIfDisposed();\n        return opHandler.erf(this);\n    };\n    Tensor.prototype.round = function () {\n        this.throwIfDisposed();\n        return opHandler.round(this);\n    };\n    Tensor.prototype.step = function (alpha) {\n        if (alpha === void 0) { alpha = 0.0; }\n        this.throwIfDisposed();\n        return opHandler.step(this, alpha);\n    };\n    Tensor.prototype.softmax = function (dim) {\n        if (dim === void 0) { dim = -1; }\n        this.throwIfDisposed();\n        return opHandler.softmax(this, dim);\n    };\n    Tensor.prototype.logSoftmax = function (axis) {\n        if (axis === void 0) { axis = -1; }\n        this.throwIfDisposed();\n        return opHandler.logSoftmax(this, axis);\n    };\n    // Image ops.\n    Tensor.prototype.resizeBilinear = function (newShape2D, alignCorners) {\n        if (alignCorners === void 0) { alignCorners = false; }\n        this.throwIfDisposed();\n        return opHandler.image.resizeBilinear(this, newShape2D, alignCorners);\n    };\n    Tensor.prototype.resizeNearestNeighbor = function (newShape2D, alignCorners) {\n        if (alignCorners === void 0) { alignCorners = false; }\n        this.throwIfDisposed();\n        return opHandler.image.resizeNearestNeighbor(this, newShape2D, alignCorners);\n    };\n    // Convolutions.\n    Tensor.prototype.conv1d = function (filter, stride, pad, dataFormat, dilation, dimRoundingMode) {\n        if (dataFormat === void 0) { dataFormat = 'NWC'; }\n        if (dilation === void 0) { dilation = 1; }\n        this.throwIfDisposed();\n        return opHandler.conv1d(this, filter, stride, pad, dataFormat, dilation, dimRoundingMode);\n    };\n    Tensor.prototype.conv2d = function (filter, strides, pad, dataFormat, dilations, dimRoundingMode) {\n        if (dataFormat === void 0) { dataFormat = 'NHWC'; }\n        if (dilations === void 0) { dilations = [1, 1]; }\n        this.throwIfDisposed();\n        return opHandler.conv2d(this, filter, strides, pad, dataFormat, dilations, dimRoundingMode);\n    };\n    Tensor.prototype.conv2dTranspose = function (filter, outputShape, strides, pad, dimRoundingMode) {\n        this.throwIfDisposed();\n        return opHandler.conv2dTranspose(this, filter, outputShape, strides, pad, dimRoundingMode);\n    };\n    Tensor.prototype.depthwiseConv2D = function (filter, strides, pad, dataFormat, dilations, dimRoundingMode) {\n        if (dataFormat === void 0) { dataFormat = 'NHWC'; }\n        if (dilations === void 0) { dilations = [1, 1]; }\n        this.throwIfDisposed();\n        return opHandler.depthwiseConv2d(this, filter, strides, pad, dataFormat, dilations, dimRoundingMode);\n    };\n    Tensor.prototype.separableConv2d = function (depthwiseFilter, pointwiseFilter, strides, pad, dilation, dataFormat) {\n        if (dilation === void 0) { dilation = [1, 1]; }\n        if (dataFormat === void 0) { dataFormat = 'NHWC'; }\n        this.throwIfDisposed();\n        return opHandler.separableConv2d(this, depthwiseFilter, pointwiseFilter, strides, pad, dilation, dataFormat);\n    };\n    // Pooling.\n    Tensor.prototype.avgPool = function (filterSize, strides, pad, dimRoundingMode) {\n        this.throwIfDisposed();\n        return opHandler.avgPool(this, filterSize, strides, pad, dimRoundingMode);\n    };\n    Tensor.prototype.maxPool = function (filterSize, strides, pad, dimRoundingMode) {\n        this.throwIfDisposed();\n        return opHandler.maxPool(this, filterSize, strides, pad, dimRoundingMode);\n    };\n    Tensor.prototype.localResponseNormalization = function (radius, bias, alpha, beta) {\n        if (radius === void 0) { radius = 5; }\n        if (bias === void 0) { bias = 1; }\n        if (alpha === void 0) { alpha = 1; }\n        if (beta === void 0) { beta = 0.5; }\n        return opHandler.localResponseNormalization(this, radius, bias, alpha, beta);\n    };\n    Tensor.prototype.pool = function (windowShape, poolingType, padding, dilationRate, strides) {\n        this.throwIfDisposed();\n        return opHandler.pool(this, windowShape, poolingType, padding, dilationRate, strides);\n    };\n    Tensor.prototype.variable = function (trainable, name, dtype) {\n        if (trainable === void 0) { trainable = true; }\n        this.throwIfDisposed();\n        return trackerFn().makeVariable(this, trainable, name, dtype);\n    };\n    Tensor.prototype.unsortedSegmentSum = function (segmentIds, numSegments) {\n        this.throwIfDisposed();\n        return opHandler.unsortedSegmentSum(this, segmentIds, numSegments);\n    };\n    Tensor.prototype.batchToSpaceND = function (blockShape, crops) {\n        this.throwIfDisposed();\n        return opHandler.batchToSpaceND(this, blockShape, crops);\n    };\n    Tensor.prototype.spaceToBatchND = function (blockShape, paddings) {\n        this.throwIfDisposed();\n        return opHandler.spaceToBatchND(this, blockShape, paddings);\n    };\n    Tensor.prototype.topk = function (k, sorted) {\n        if (k === void 0) { k = 1; }\n        if (sorted === void 0) { sorted = true; }\n        this.throwIfDisposed();\n        return opHandler.topk(this, k, sorted);\n    };\n    Tensor.prototype.stridedSlice = function (begin, end, strides, beginMask, endMask, ellipsisMask, newAxisMask, shrinkAxisMask) {\n        if (beginMask === void 0) { beginMask = 0; }\n        if (endMask === void 0) { endMask = 0; }\n        if (ellipsisMask === void 0) { ellipsisMask = 0; }\n        if (newAxisMask === void 0) { newAxisMask = 0; }\n        if (shrinkAxisMask === void 0) { shrinkAxisMask = 0; }\n        this.throwIfDisposed();\n        return opHandler.stridedSlice(this, begin, end, strides, beginMask, endMask, ellipsisMask, newAxisMask, shrinkAxisMask);\n    };\n    Tensor.prototype.depthToSpace = function (blockSize, dataFormat) {\n        this.throwIfDisposed();\n        return opHandler.depthToSpace(this, blockSize, dataFormat);\n    };\n    Tensor.prototype.fft = function () {\n        this.throwIfDisposed();\n        return opHandler.spectral.fft(this);\n    };\n    Tensor.prototype.ifft = function () {\n        this.throwIfDisposed();\n        return opHandler.spectral.ifft(this);\n    };\n    Tensor.prototype.rfft = function () {\n        this.throwIfDisposed();\n        return opHandler.spectral.rfft(this);\n    };\n    Tensor.prototype.irfft = function () {\n        this.throwIfDisposed();\n        return opHandler.spectral.irfft(this);\n    };\n    return Tensor;\n}());\nexports.Tensor = Tensor;\nObject.defineProperty(Tensor, Symbol.hasInstance, {\n    value: function (instance) {\n        return !!instance && instance.dataId != null && instance.shape != null &&\n            instance.dtype != null;\n    }\n});\n/**\n * A mutable `tf.Tensor`, useful for persisting state, e.g. for training.\n */\n/** @doc {heading: 'Tensors', subheading: 'Classes'} */\nvar Variable = /** @class */ (function (_super) {\n    __extends(Variable, _super);\n    function Variable(initialValue, trainable, name, tensorId) {\n        var _this = _super.call(this, initialValue.shape, initialValue.dtype, initialValue.dataId, tensorId) || this;\n        _this.trainable = trainable;\n        _this.name = name;\n        return _this;\n    }\n    /**\n     * Assign a new `tf.Tensor` to this variable. The new `tf.Tensor` must have\n     * the same shape and dtype as the old `tf.Tensor`.\n     *\n     * @param newValue New tensor to be assigned to this variable.\n     */\n    /** @doc {heading: 'Tensors', subheading: 'Classes'} */\n    Variable.prototype.assign = function (newValue) {\n        if (newValue.dtype !== this.dtype) {\n            throw new Error(\"dtype of the new value (\" + newValue.dtype + \") and \" +\n                (\"previous value (\" + this.dtype + \") must match\"));\n        }\n        if (!util.arraysEqual(newValue.shape, this.shape)) {\n            throw new Error(\"shape of the new value (\" + newValue.shape + \") and \" +\n                (\"previous value (\" + this.shape + \") must match\"));\n        }\n        trackerFn().disposeTensor(this);\n        this.dataId = newValue.dataId;\n        trackerFn().incRef(this, null /* backend */);\n    };\n    Variable.prototype.dispose = function () {\n        trackerFn().disposeVariable(this);\n        this.isDisposedInternal = true;\n    };\n    return Variable;\n}(Tensor));\nexports.Variable = Variable;\nObject.defineProperty(Variable, Symbol.hasInstance, {\n    value: function (instance) {\n        return instance instanceof Tensor && instance.assign != null &&\n            instance.assign instanceof Function;\n    }\n});\n//# sourceMappingURL=tensor.js.map","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","function _getPrototypeOf(o) {\n  module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n  return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n  return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n  if (toString.call(val) !== '[object Object]') {\n    return false;\n  }\n\n  var prototype = Object.getPrototypeOf(val);\n  return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n  return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n  return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n  return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n                                           navigator.product === 'NativeScript' ||\n                                           navigator.product === 'NS')) {\n    return false;\n  }\n  return (\n    typeof window !== 'undefined' &&\n    typeof document !== 'undefined'\n  );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (isPlainObject(result[key]) && isPlainObject(val)) {\n      result[key] = merge(result[key], val);\n    } else if (isPlainObject(val)) {\n      result[key] = merge({}, val);\n    } else if (isArray(val)) {\n      result[key] = val.slice();\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isPlainObject: isPlainObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  extend: extend,\n  trim: trim,\n  stripBOM: stripBOM\n};\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n  var S = String(defined(string));\n  var p1 = '<' + tag;\n  if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n  var O = {};\n  O[NAME] = exec(createHTML);\n  $export($export.P + $export.F * fails(function () {\n    var test = ''[NAME]('\"');\n    return test !== test.toLowerCase() || test.split('\"').length > 3;\n  }), 'String', O);\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n  return interval(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n  return interval(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n","export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n  return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n","import { tickStep } from 'd3-array';\nimport { formatSpecifier, precisionFixed, precisionRound, precisionPrefix, formatLocale, format, formatPrefix } from 'd3-format';\nimport { SECONDS, MINUTES, HOURS, DATE, WEEK, MONTH, QUARTER, YEAR, MILLISECONDS, DAY, timeInterval, utcInterval } from 'vega-time';\nimport { isString, isObject, error, extend } from 'vega-util';\nimport { timeFormat, timeParse, utcFormat, utcParse, timeFormatLocale as timeFormatLocale$1 } from 'd3-time-format';\n\nfunction memoize (method) {\n  const cache = {};\n  return spec => cache[spec] || (cache[spec] = method(spec));\n}\n\nfunction trimZeroes(numberFormat, decimalChar) {\n  return x => {\n    const str = numberFormat(x),\n          dec = str.indexOf(decimalChar);\n    if (dec < 0) return str;\n    let idx = rightmostDigit(str, dec);\n    const end = idx < str.length ? str.slice(idx) : '';\n\n    while (--idx > dec) if (str[idx] !== '0') {\n      ++idx;\n      break;\n    }\n\n    return str.slice(0, idx) + end;\n  };\n}\n\nfunction rightmostDigit(str, dec) {\n  let i = str.lastIndexOf('e'),\n      c;\n  if (i > 0) return i;\n\n  for (i = str.length; --i > dec;) {\n    c = str.charCodeAt(i);\n    if (c >= 48 && c <= 57) return i + 1; // is digit\n  }\n}\n\nfunction numberLocale(locale) {\n  const format = memoize(locale.format),\n        formatPrefix = locale.formatPrefix;\n  return {\n    format,\n    formatPrefix,\n\n    formatFloat(spec) {\n      const s = formatSpecifier(spec || ',');\n\n      if (s.precision == null) {\n        s.precision = 12;\n\n        switch (s.type) {\n          case '%':\n            s.precision -= 2;\n            break;\n\n          case 'e':\n            s.precision -= 1;\n            break;\n        }\n\n        return trimZeroes(format(s), // number format\n        format('.1f')(1)[1] // decimal point character\n        );\n      } else {\n        return format(s);\n      }\n    },\n\n    formatSpan(start, stop, count, specifier) {\n      specifier = formatSpecifier(specifier == null ? ',f' : specifier);\n      const step = tickStep(start, stop, count),\n            value = Math.max(Math.abs(start), Math.abs(stop));\n      let precision;\n\n      if (specifier.precision == null) {\n        switch (specifier.type) {\n          case 's':\n            {\n              if (!isNaN(precision = precisionPrefix(step, value))) {\n                specifier.precision = precision;\n              }\n\n              return formatPrefix(specifier, value);\n            }\n\n          case '':\n          case 'e':\n          case 'g':\n          case 'p':\n          case 'r':\n            {\n              if (!isNaN(precision = precisionRound(step, value))) {\n                specifier.precision = precision - (specifier.type === 'e');\n              }\n\n              break;\n            }\n\n          case 'f':\n          case '%':\n            {\n              if (!isNaN(precision = precisionFixed(step))) {\n                specifier.precision = precision - (specifier.type === '%') * 2;\n              }\n\n              break;\n            }\n        }\n      }\n\n      return format(specifier);\n    }\n\n  };\n}\n\nlet defaultNumberLocale;\nresetNumberFormatDefaultLocale();\nfunction resetNumberFormatDefaultLocale() {\n  return defaultNumberLocale = numberLocale({\n    format: format,\n    formatPrefix: formatPrefix\n  });\n}\nfunction numberFormatLocale(definition) {\n  return numberLocale(formatLocale(definition));\n}\nfunction numberFormatDefaultLocale(definition) {\n  return arguments.length ? defaultNumberLocale = numberFormatLocale(definition) : defaultNumberLocale;\n}\n\nfunction timeMultiFormat(format, interval, spec) {\n  spec = spec || {};\n\n  if (!isObject(spec)) {\n    error(\"Invalid time multi-format specifier: \".concat(spec));\n  }\n\n  const second = interval(SECONDS),\n        minute = interval(MINUTES),\n        hour = interval(HOURS),\n        day = interval(DATE),\n        week = interval(WEEK),\n        month = interval(MONTH),\n        quarter = interval(QUARTER),\n        year = interval(YEAR),\n        L = format(spec[MILLISECONDS] || '.%L'),\n        S = format(spec[SECONDS] || ':%S'),\n        M = format(spec[MINUTES] || '%I:%M'),\n        H = format(spec[HOURS] || '%I %p'),\n        d = format(spec[DATE] || spec[DAY] || '%a %d'),\n        w = format(spec[WEEK] || '%b %d'),\n        m = format(spec[MONTH] || '%B'),\n        q = format(spec[QUARTER] || '%B'),\n        y = format(spec[YEAR] || '%Y');\n  return date => (second(date) < date ? L : minute(date) < date ? S : hour(date) < date ? M : day(date) < date ? H : month(date) < date ? week(date) < date ? d : w : year(date) < date ? quarter(date) < date ? m : q : y)(date);\n}\n\nfunction timeLocale(locale) {\n  const timeFormat = memoize(locale.format),\n        utcFormat = memoize(locale.utcFormat);\n  return {\n    timeFormat: spec => isString(spec) ? timeFormat(spec) : timeMultiFormat(timeFormat, timeInterval, spec),\n    utcFormat: spec => isString(spec) ? utcFormat(spec) : timeMultiFormat(utcFormat, utcInterval, spec),\n    timeParse: memoize(locale.parse),\n    utcParse: memoize(locale.utcParse)\n  };\n}\n\nlet defaultTimeLocale;\nresetTimeFormatDefaultLocale();\nfunction resetTimeFormatDefaultLocale() {\n  return defaultTimeLocale = timeLocale({\n    format: timeFormat,\n    parse: timeParse,\n    utcFormat: utcFormat,\n    utcParse: utcParse\n  });\n}\nfunction timeFormatLocale(definition) {\n  return timeLocale(timeFormatLocale$1(definition));\n}\nfunction timeFormatDefaultLocale(definition) {\n  return arguments.length ? defaultTimeLocale = timeFormatLocale(definition) : defaultTimeLocale;\n}\n\nconst createLocale = (number, time) => extend({}, number, time);\n\nfunction locale(numberSpec, timeSpec) {\n  const number = numberSpec ? numberFormatLocale(numberSpec) : numberFormatDefaultLocale();\n  const time = timeSpec ? timeFormatLocale(timeSpec) : timeFormatDefaultLocale();\n  return createLocale(number, time);\n}\nfunction defaultLocale(numberSpec, timeSpec) {\n  const args = arguments.length;\n\n  if (args && args !== 2) {\n    error('defaultLocale expects either zero or two arguments.');\n  }\n\n  return args ? createLocale(numberFormatDefaultLocale(numberSpec), timeFormatDefaultLocale(timeSpec)) : createLocale(numberFormatDefaultLocale(), timeFormatDefaultLocale());\n}\nfunction resetDefaultLocale() {\n  resetNumberFormatDefaultLocale();\n  resetTimeFormatDefaultLocale();\n  return defaultLocale();\n}\n\nexport { defaultLocale, locale, numberFormatDefaultLocale, numberFormatLocale, resetDefaultLocale, resetNumberFormatDefaultLocale, resetTimeFormatDefaultLocale, timeFormatDefaultLocale, timeFormatLocale };\n","var e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n    if (r0 * step < start) ++r0;\n    if (r1 * step > stop) --r1;\n    ticks = new Array(n = r1 - r0 + 1);\n    while (++i < n) ticks[i] = (r0 + i) * step;\n  } else {\n    step = -step;\n    let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n    if (r0 / step < start) ++r0;\n    if (r1 / step > stop) --r1;\n    ticks = new Array(n = r1 - r0 + 1);\n    while (++i < n) ticks[i] = (r0 + i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n","\"use strict\";\n/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst types_1 = require(\"../types\");\nconst visor_1 = require(\"../visor\");\nfunction getDrawArea(drawable) {\n    if (drawable instanceof HTMLElement) {\n        return drawable;\n    }\n    else if (types_1.isSurface(drawable)) {\n        return drawable.drawArea;\n    }\n    else if (types_1.isSurfaceInfo(drawable)) {\n        const surface = visor_1.visor().surface({ name: drawable.name, tab: drawable.tab, styles: drawable.styles });\n        return surface.drawArea;\n    }\n    else {\n        throw new Error('Not a drawable');\n    }\n}\nexports.getDrawArea = getDrawArea;\nfunction shallowEquals(\n// tslint:disable-next-line:no-any\na, b) {\n    const aProps = Object.getOwnPropertyNames(a);\n    const bProps = Object.getOwnPropertyNames(b);\n    if (aProps.length !== bProps.length) {\n        return false;\n    }\n    for (let i = 0; i < aProps.length; i++) {\n        const prop = aProps[i];\n        if (a[prop] !== b[prop]) {\n            return false;\n        }\n    }\n    return true;\n}\nexports.shallowEquals = shallowEquals;\nfunction nextFrame() {\n    return __awaiter(this, void 0, void 0, function* () {\n        yield new Promise(r => requestAnimationFrame(r));\n    });\n}\nexports.nextFrame = nextFrame;\n//# sourceMappingURL=render_utils.js.map","// hoisted class for cyclic dependency\nclass Range {\n  constructor (range, options) {\n    options = parseOptions(options)\n\n    if (range instanceof Range) {\n      if (\n        range.loose === !!options.loose &&\n        range.includePrerelease === !!options.includePrerelease\n      ) {\n        return range\n      } else {\n        return new Range(range.raw, options)\n      }\n    }\n\n    if (range instanceof Comparator) {\n      // just put it in the set and return\n      this.raw = range.value\n      this.set = [[range]]\n      this.format()\n      return this\n    }\n\n    this.options = options\n    this.loose = !!options.loose\n    this.includePrerelease = !!options.includePrerelease\n\n    // First, split based on boolean or ||\n    this.raw = range\n    this.set = range\n      .split(/\\s*\\|\\|\\s*/)\n      // map the range to a 2d array of comparators\n      .map(range => this.parseRange(range.trim()))\n      // throw out any comparator lists that are empty\n      // this generally means that it was not a valid range, which is allowed\n      // in loose mode, but will still throw if the WHOLE range is invalid.\n      .filter(c => c.length)\n\n    if (!this.set.length) {\n      throw new TypeError(`Invalid SemVer Range: ${range}`)\n    }\n\n    // if we have any that are not the null set, throw out null sets.\n    if (this.set.length > 1) {\n      // keep the first one, in case they're all null sets\n      const first = this.set[0]\n      this.set = this.set.filter(c => !isNullSet(c[0]))\n      if (this.set.length === 0)\n        this.set = [first]\n      else if (this.set.length > 1) {\n        // if we have any that are *, then the range is just *\n        for (const c of this.set) {\n          if (c.length === 1 && isAny(c[0])) {\n            this.set = [c]\n            break\n          }\n        }\n      }\n    }\n\n    this.format()\n  }\n\n  format () {\n    this.range = this.set\n      .map((comps) => {\n        return comps.join(' ').trim()\n      })\n      .join('||')\n      .trim()\n    return this.range\n  }\n\n  toString () {\n    return this.range\n  }\n\n  parseRange (range) {\n    range = range.trim()\n\n    // memoize range parsing for performance.\n    // this is a very hot path, and fully deterministic.\n    const memoOpts = Object.keys(this.options).join(',')\n    const memoKey = `parseRange:${memoOpts}:${range}`\n    const cached = cache.get(memoKey)\n    if (cached)\n      return cached\n\n    const loose = this.options.loose\n    // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n    const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n    range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n    debug('hyphen replace', range)\n    // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n    range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n    debug('comparator trim', range, re[t.COMPARATORTRIM])\n\n    // `~ 1.2.3` => `~1.2.3`\n    range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n    // `^ 1.2.3` => `^1.2.3`\n    range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n    // normalize spaces\n    range = range.split(/\\s+/).join(' ')\n\n    // At this point, the range is completely trimmed and\n    // ready to be split into comparators.\n\n    const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n    const rangeList = range\n      .split(' ')\n      .map(comp => parseComparator(comp, this.options))\n      .join(' ')\n      .split(/\\s+/)\n      // >=0.0.0 is equivalent to *\n      .map(comp => replaceGTE0(comp, this.options))\n      // in loose mode, throw out any that are not valid comparators\n      .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true)\n      .map(comp => new Comparator(comp, this.options))\n\n    // if any comparators are the null set, then replace with JUST null set\n    // if more than one comparator, remove any * comparators\n    // also, don't include the same comparator more than once\n    const l = rangeList.length\n    const rangeMap = new Map()\n    for (const comp of rangeList) {\n      if (isNullSet(comp))\n        return [comp]\n      rangeMap.set(comp.value, comp)\n    }\n    if (rangeMap.size > 1 && rangeMap.has(''))\n      rangeMap.delete('')\n\n    const result = [...rangeMap.values()]\n    cache.set(memoKey, result)\n    return result\n  }\n\n  intersects (range, options) {\n    if (!(range instanceof Range)) {\n      throw new TypeError('a Range is required')\n    }\n\n    return this.set.some((thisComparators) => {\n      return (\n        isSatisfiable(thisComparators, options) &&\n        range.set.some((rangeComparators) => {\n          return (\n            isSatisfiable(rangeComparators, options) &&\n            thisComparators.every((thisComparator) => {\n              return rangeComparators.every((rangeComparator) => {\n                return thisComparator.intersects(rangeComparator, options)\n              })\n            })\n          )\n        })\n      )\n    })\n  }\n\n  // if ANY of the sets match ALL of its comparators, then pass\n  test (version) {\n    if (!version) {\n      return false\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    for (let i = 0; i < this.set.length; i++) {\n      if (testSet(this.set[i], version, this.options)) {\n        return true\n      }\n    }\n    return false\n  }\n}\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n  re,\n  t,\n  comparatorTrimReplace,\n  tildeTrimReplace,\n  caretTrimReplace\n} = require('../internal/re')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n  let result = true\n  const remainingComparators = comparators.slice()\n  let testComparator = remainingComparators.pop()\n\n  while (result && remainingComparators.length) {\n    result = remainingComparators.every((otherComparator) => {\n      return testComparator.intersects(otherComparator, options)\n    })\n\n    testComparator = remainingComparators.pop()\n  }\n\n  return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n  debug('comp', comp, options)\n  comp = replaceCarets(comp, options)\n  debug('caret', comp)\n  comp = replaceTildes(comp, options)\n  debug('tildes', comp)\n  comp = replaceXRanges(comp, options)\n  debug('xrange', comp)\n  comp = replaceStars(comp, options)\n  debug('stars', comp)\n  return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\nconst replaceTildes = (comp, options) =>\n  comp.trim().split(/\\s+/).map((comp) => {\n    return replaceTilde(comp, options)\n  }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('tilde', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0-0\n      ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n    } else if (pr) {\n      debug('replaceTilde pr', pr)\n      ret = `>=${M}.${m}.${p}-${pr\n      } <${M}.${+m + 1}.0-0`\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0-0\n      ret = `>=${M}.${m}.${p\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('tilde return', ret)\n    return ret\n  })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\nconst replaceCarets = (comp, options) =>\n  comp.trim().split(/\\s+/).map((comp) => {\n    return replaceCaret(comp, options)\n  }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n  debug('caret', comp, options)\n  const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n  const z = options.includePrerelease ? '-0' : ''\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('caret', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n      } else {\n        ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n      }\n    } else if (pr) {\n      debug('replaceCaret pr', pr)\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p}-${pr\n        } <${+M + 1}.0.0-0`\n      }\n    } else {\n      debug('no pr')\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p\n        } <${+M + 1}.0.0-0`\n      }\n    }\n\n    debug('caret return', ret)\n    return ret\n  })\n}\n\nconst replaceXRanges = (comp, options) => {\n  debug('replaceXRanges', comp, options)\n  return comp.split(/\\s+/).map((comp) => {\n    return replaceXRange(comp, options)\n  }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n  comp = comp.trim()\n  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n    debug('xRange', comp, ret, gtlt, M, m, p, pr)\n    const xM = isX(M)\n    const xm = xM || isX(m)\n    const xp = xm || isX(p)\n    const anyX = xp\n\n    if (gtlt === '=' && anyX) {\n      gtlt = ''\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options.includePrerelease ? '-0' : ''\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0'\n      } else {\n        // nothing is forbidden\n        ret = '*'\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0\n      }\n      p = 0\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        gtlt = '>='\n        if (xm) {\n          M = +M + 1\n          m = 0\n          p = 0\n        } else {\n          m = +m + 1\n          p = 0\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<'\n        if (xm) {\n          M = +M + 1\n        } else {\n          m = +m + 1\n        }\n      }\n\n      if (gtlt === '<')\n        pr = '-0'\n\n      ret = `${gtlt + M}.${m}.${p}${pr}`\n    } else if (xm) {\n      ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n    } else if (xp) {\n      ret = `>=${M}.${m}.0${pr\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('xRange return', ret)\n\n    return ret\n  })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n  debug('replaceStars', comp, options)\n  // Looseness is ignored here.  star is always as loose as it gets!\n  return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n  debug('replaceGTE0', comp, options)\n  return comp.trim()\n    .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n  from, fM, fm, fp, fpr, fb,\n  to, tM, tm, tp, tpr, tb) => {\n  if (isX(fM)) {\n    from = ''\n  } else if (isX(fm)) {\n    from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n  } else if (isX(fp)) {\n    from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n  } else if (fpr) {\n    from = `>=${from}`\n  } else {\n    from = `>=${from}${incPr ? '-0' : ''}`\n  }\n\n  if (isX(tM)) {\n    to = ''\n  } else if (isX(tm)) {\n    to = `<${+tM + 1}.0.0-0`\n  } else if (isX(tp)) {\n    to = `<${tM}.${+tm + 1}.0-0`\n  } else if (tpr) {\n    to = `<=${tM}.${tm}.${tp}-${tpr}`\n  } else if (incPr) {\n    to = `<${tM}.${tm}.${+tp + 1}-0`\n  } else {\n    to = `<=${to}`\n  }\n\n  return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n  for (let i = 0; i < set.length; i++) {\n    if (!set[i].test(version)) {\n      return false\n    }\n  }\n\n  if (version.prerelease.length && !options.includePrerelease) {\n    // Find the set of versions that are allowed to have prereleases\n    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n    // That should allow `1.2.3-pr.2` to pass.\n    // However, `1.2.4-alpha.notready` should NOT be allowed,\n    // even though it's within the range set by the comparators.\n    for (let i = 0; i < set.length; i++) {\n      debug(set[i].semver)\n      if (set[i].semver === Comparator.ANY) {\n        continue\n      }\n\n      if (set[i].semver.prerelease.length > 0) {\n        const allowed = set[i].semver\n        if (allowed.major === version.major &&\n            allowed.minor === version.minor &&\n            allowed.patch === version.patch) {\n          return true\n        }\n      }\n    }\n\n    // Version has a -pre, but it's not one of the ones we like.\n    return false\n  }\n\n  return true\n}\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n  new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n  return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  this.fill = match[1] || \" \";\n  this.align = match[2] || \">\";\n  this.sign = match[3] || \"-\";\n  this.symbol = match[4] || \"\";\n  this.zero = !!match[5];\n  this.width = match[6] && +match[6];\n  this.comma = !!match[7];\n  this.precision = match[8] && +match[8].slice(1);\n  this.trim = !!match[9];\n  this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimal(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n  var d = formatDecimal(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n  \"%\": function(x, p) { return (x * 100).toFixed(p); },\n  \"b\": function(x) { return Math.round(x).toString(2); },\n  \"c\": function(x) { return x + \"\"; },\n  \"d\": function(x) { return Math.round(x).toString(10); },\n  \"e\": function(x, p) { return x.toExponential(p); },\n  \"f\": function(x, p) { return x.toFixed(p); },\n  \"g\": function(x, p) { return x.toPrecision(p); },\n  \"o\": function(x) { return Math.round(x).toString(8); },\n  \"p\": function(x, p) { return formatRounded(x * 100, p); },\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n  \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n  return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n      currency = locale.currency,\n      decimal = locale.decimal,\n      numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n      percent = locale.percent || \"%\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision == null ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Perform the initial formatting.\n        var valueNegative = value < 0;\n        value = formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero during formatting, treat as positive.\n        if (valueNegative && +value === 0) valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  decimal: \".\",\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","export {default as formatDefaultLocale, format, formatPrefix} from \"./defaultLocale\";\nexport {default as formatLocale} from \"./locale\";\nexport {default as formatSpecifier} from \"./formatSpecifier\";\nexport {default as precisionFixed} from \"./precisionFixed\";\nexport {default as precisionPrefix} from \"./precisionPrefix\";\nexport {default as precisionRound} from \"./precisionRound\";\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\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 NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  var create = $create || asc;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IObject(O);\n    var f = ctx(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var val, res;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      val = self[index];\n      res = f(val, index, O);\n      if (TYPE) {\n        if (IS_MAP) result[index] = res;   // map\n        else if (res) switch (TYPE) {\n          case 3: return true;             // some\n          case 5: return val;              // find\n          case 6: return index;            // findIndex\n          case 2: result.push(val);        // filter\n        } else if (IS_EVERY) return false; // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n  };\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _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\n  return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _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\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}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","'use strict';\nif (require('./_descriptors')) {\n  var LIBRARY = require('./_library');\n  var global = require('./_global');\n  var fails = require('./_fails');\n  var $export = require('./_export');\n  var $typed = require('./_typed');\n  var $buffer = require('./_typed-buffer');\n  var ctx = require('./_ctx');\n  var anInstance = require('./_an-instance');\n  var propertyDesc = require('./_property-desc');\n  var hide = require('./_hide');\n  var redefineAll = require('./_redefine-all');\n  var toInteger = require('./_to-integer');\n  var toLength = require('./_to-length');\n  var toIndex = require('./_to-index');\n  var toAbsoluteIndex = require('./_to-absolute-index');\n  var toPrimitive = require('./_to-primitive');\n  var has = require('./_has');\n  var classof = require('./_classof');\n  var isObject = require('./_is-object');\n  var toObject = require('./_to-object');\n  var isArrayIter = require('./_is-array-iter');\n  var create = require('./_object-create');\n  var getPrototypeOf = require('./_object-gpo');\n  var gOPN = require('./_object-gopn').f;\n  var getIterFn = require('./core.get-iterator-method');\n  var uid = require('./_uid');\n  var wks = require('./_wks');\n  var createArrayMethod = require('./_array-methods');\n  var createArrayIncludes = require('./_array-includes');\n  var speciesConstructor = require('./_species-constructor');\n  var ArrayIterators = require('./es6.array.iterator');\n  var Iterators = require('./_iterators');\n  var $iterDetect = require('./_iter-detect');\n  var setSpecies = require('./_set-species');\n  var arrayFill = require('./_array-fill');\n  var arrayCopyWithin = require('./_array-copy-within');\n  var $DP = require('./_object-dp');\n  var $GOPD = require('./_object-gopd');\n  var dP = $DP.f;\n  var gOPD = $GOPD.f;\n  var RangeError = global.RangeError;\n  var TypeError = global.TypeError;\n  var Uint8Array = global.Uint8Array;\n  var ARRAY_BUFFER = 'ArrayBuffer';\n  var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n  var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n  var PROTOTYPE = 'prototype';\n  var ArrayProto = Array[PROTOTYPE];\n  var $ArrayBuffer = $buffer.ArrayBuffer;\n  var $DataView = $buffer.DataView;\n  var arrayForEach = createArrayMethod(0);\n  var arrayFilter = createArrayMethod(2);\n  var arraySome = createArrayMethod(3);\n  var arrayEvery = createArrayMethod(4);\n  var arrayFind = createArrayMethod(5);\n  var arrayFindIndex = createArrayMethod(6);\n  var arrayIncludes = createArrayIncludes(true);\n  var arrayIndexOf = createArrayIncludes(false);\n  var arrayValues = ArrayIterators.values;\n  var arrayKeys = ArrayIterators.keys;\n  var arrayEntries = ArrayIterators.entries;\n  var arrayLastIndexOf = ArrayProto.lastIndexOf;\n  var arrayReduce = ArrayProto.reduce;\n  var arrayReduceRight = ArrayProto.reduceRight;\n  var arrayJoin = ArrayProto.join;\n  var arraySort = ArrayProto.sort;\n  var arraySlice = ArrayProto.slice;\n  var arrayToString = ArrayProto.toString;\n  var arrayToLocaleString = ArrayProto.toLocaleString;\n  var ITERATOR = wks('iterator');\n  var TAG = wks('toStringTag');\n  var TYPED_CONSTRUCTOR = uid('typed_constructor');\n  var DEF_CONSTRUCTOR = uid('def_constructor');\n  var ALL_CONSTRUCTORS = $typed.CONSTR;\n  var TYPED_ARRAY = $typed.TYPED;\n  var VIEW = $typed.VIEW;\n  var WRONG_LENGTH = 'Wrong length!';\n\n  var $map = createArrayMethod(1, function (O, length) {\n    return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n  });\n\n  var LITTLE_ENDIAN = fails(function () {\n    // eslint-disable-next-line no-undef\n    return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n  });\n\n  var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n    new Uint8Array(1).set({});\n  });\n\n  var toOffset = function (it, BYTES) {\n    var offset = toInteger(it);\n    if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n    return offset;\n  };\n\n  var validate = function (it) {\n    if (isObject(it) && TYPED_ARRAY in it) return it;\n    throw TypeError(it + ' is not a typed array!');\n  };\n\n  var allocate = function (C, length) {\n    if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n      throw TypeError('It is not a typed array constructor!');\n    } return new C(length);\n  };\n\n  var speciesFromList = function (O, list) {\n    return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n  };\n\n  var fromList = function (C, list) {\n    var index = 0;\n    var length = list.length;\n    var result = allocate(C, length);\n    while (length > index) result[index] = list[index++];\n    return result;\n  };\n\n  var addGetter = function (it, key, internal) {\n    dP(it, key, { get: function () { return this._d[internal]; } });\n  };\n\n  var $from = function from(source /* , mapfn, thisArg */) {\n    var O = toObject(source);\n    var aLen = arguments.length;\n    var mapfn = aLen > 1 ? arguments[1] : undefined;\n    var mapping = mapfn !== undefined;\n    var iterFn = getIterFn(O);\n    var i, length, values, result, step, iterator;\n    if (iterFn != undefined && !isArrayIter(iterFn)) {\n      for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n        values.push(step.value);\n      } O = values;\n    }\n    if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n    for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n      result[i] = mapping ? mapfn(O[i], i) : O[i];\n    }\n    return result;\n  };\n\n  var $of = function of(/* ...items */) {\n    var index = 0;\n    var length = arguments.length;\n    var result = allocate(this, length);\n    while (length > index) result[index] = arguments[index++];\n    return result;\n  };\n\n  // iOS Safari 6.x fails here\n  var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n  var $toLocaleString = function toLocaleString() {\n    return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n  };\n\n  var proto = {\n    copyWithin: function copyWithin(target, start /* , end */) {\n      return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    every: function every(callbackfn /* , thisArg */) {\n      return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n      return arrayFill.apply(validate(this), arguments);\n    },\n    filter: function filter(callbackfn /* , thisArg */) {\n      return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n        arguments.length > 1 ? arguments[1] : undefined));\n    },\n    find: function find(predicate /* , thisArg */) {\n      return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    findIndex: function findIndex(predicate /* , thisArg */) {\n      return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    forEach: function forEach(callbackfn /* , thisArg */) {\n      arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    indexOf: function indexOf(searchElement /* , fromIndex */) {\n      return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    includes: function includes(searchElement /* , fromIndex */) {\n      return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    join: function join(separator) { // eslint-disable-line no-unused-vars\n      return arrayJoin.apply(validate(this), arguments);\n    },\n    lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n      return arrayLastIndexOf.apply(validate(this), arguments);\n    },\n    map: function map(mapfn /* , thisArg */) {\n      return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n      return arrayReduce.apply(validate(this), arguments);\n    },\n    reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n      return arrayReduceRight.apply(validate(this), arguments);\n    },\n    reverse: function reverse() {\n      var that = this;\n      var length = validate(that).length;\n      var middle = Math.floor(length / 2);\n      var index = 0;\n      var value;\n      while (index < middle) {\n        value = that[index];\n        that[index++] = that[--length];\n        that[length] = value;\n      } return that;\n    },\n    some: function some(callbackfn /* , thisArg */) {\n      return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    sort: function sort(comparefn) {\n      return arraySort.call(validate(this), comparefn);\n    },\n    subarray: function subarray(begin, end) {\n      var O = validate(this);\n      var length = O.length;\n      var $begin = toAbsoluteIndex(begin, length);\n      return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n        O.buffer,\n        O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n        toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n      );\n    }\n  };\n\n  var $slice = function slice(start, end) {\n    return speciesFromList(this, arraySlice.call(validate(this), start, end));\n  };\n\n  var $set = function set(arrayLike /* , offset */) {\n    validate(this);\n    var offset = toOffset(arguments[1], 1);\n    var length = this.length;\n    var src = toObject(arrayLike);\n    var len = toLength(src.length);\n    var index = 0;\n    if (len + offset > length) throw RangeError(WRONG_LENGTH);\n    while (index < len) this[offset + index] = src[index++];\n  };\n\n  var $iterators = {\n    entries: function entries() {\n      return arrayEntries.call(validate(this));\n    },\n    keys: function keys() {\n      return arrayKeys.call(validate(this));\n    },\n    values: function values() {\n      return arrayValues.call(validate(this));\n    }\n  };\n\n  var isTAIndex = function (target, key) {\n    return isObject(target)\n      && target[TYPED_ARRAY]\n      && typeof key != 'symbol'\n      && key in target\n      && String(+key) == String(key);\n  };\n  var $getDesc = function getOwnPropertyDescriptor(target, key) {\n    return isTAIndex(target, key = toPrimitive(key, true))\n      ? propertyDesc(2, target[key])\n      : gOPD(target, key);\n  };\n  var $setDesc = function defineProperty(target, key, desc) {\n    if (isTAIndex(target, key = toPrimitive(key, true))\n      && isObject(desc)\n      && has(desc, 'value')\n      && !has(desc, 'get')\n      && !has(desc, 'set')\n      // TODO: add validation descriptor w/o calling accessors\n      && !desc.configurable\n      && (!has(desc, 'writable') || desc.writable)\n      && (!has(desc, 'enumerable') || desc.enumerable)\n    ) {\n      target[key] = desc.value;\n      return target;\n    } return dP(target, key, desc);\n  };\n\n  if (!ALL_CONSTRUCTORS) {\n    $GOPD.f = $getDesc;\n    $DP.f = $setDesc;\n  }\n\n  $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n    getOwnPropertyDescriptor: $getDesc,\n    defineProperty: $setDesc\n  });\n\n  if (fails(function () { arrayToString.call({}); })) {\n    arrayToString = arrayToLocaleString = function toString() {\n      return arrayJoin.call(this);\n    };\n  }\n\n  var $TypedArrayPrototype$ = redefineAll({}, proto);\n  redefineAll($TypedArrayPrototype$, $iterators);\n  hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n  redefineAll($TypedArrayPrototype$, {\n    slice: $slice,\n    set: $set,\n    constructor: function () { /* noop */ },\n    toString: arrayToString,\n    toLocaleString: $toLocaleString\n  });\n  addGetter($TypedArrayPrototype$, 'buffer', 'b');\n  addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n  addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n  addGetter($TypedArrayPrototype$, 'length', 'e');\n  dP($TypedArrayPrototype$, TAG, {\n    get: function () { return this[TYPED_ARRAY]; }\n  });\n\n  // eslint-disable-next-line max-statements\n  module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n    CLAMPED = !!CLAMPED;\n    var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n    var GETTER = 'get' + KEY;\n    var SETTER = 'set' + KEY;\n    var TypedArray = global[NAME];\n    var Base = TypedArray || {};\n    var TAC = TypedArray && getPrototypeOf(TypedArray);\n    var FORCED = !TypedArray || !$typed.ABV;\n    var O = {};\n    var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n    var getter = function (that, index) {\n      var data = that._d;\n      return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n    };\n    var setter = function (that, index, value) {\n      var data = that._d;\n      if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n      data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n    };\n    var addElement = function (that, index) {\n      dP(that, index, {\n        get: function () {\n          return getter(this, index);\n        },\n        set: function (value) {\n          return setter(this, index, value);\n        },\n        enumerable: true\n      });\n    };\n    if (FORCED) {\n      TypedArray = wrapper(function (that, data, $offset, $length) {\n        anInstance(that, TypedArray, NAME, '_d');\n        var index = 0;\n        var offset = 0;\n        var buffer, byteLength, length, klass;\n        if (!isObject(data)) {\n          length = toIndex(data);\n          byteLength = length * BYTES;\n          buffer = new $ArrayBuffer(byteLength);\n        } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n          buffer = data;\n          offset = toOffset($offset, BYTES);\n          var $len = data.byteLength;\n          if ($length === undefined) {\n            if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n            byteLength = $len - offset;\n            if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n          } else {\n            byteLength = toLength($length) * BYTES;\n            if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n          }\n          length = byteLength / BYTES;\n        } else if (TYPED_ARRAY in data) {\n          return fromList(TypedArray, data);\n        } else {\n          return $from.call(TypedArray, data);\n        }\n        hide(that, '_d', {\n          b: buffer,\n          o: offset,\n          l: byteLength,\n          e: length,\n          v: new $DataView(buffer)\n        });\n        while (index < length) addElement(that, index++);\n      });\n      TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n      hide(TypedArrayPrototype, 'constructor', TypedArray);\n    } else if (!fails(function () {\n      TypedArray(1);\n    }) || !fails(function () {\n      new TypedArray(-1); // eslint-disable-line no-new\n    }) || !$iterDetect(function (iter) {\n      new TypedArray(); // eslint-disable-line no-new\n      new TypedArray(null); // eslint-disable-line no-new\n      new TypedArray(1.5); // eslint-disable-line no-new\n      new TypedArray(iter); // eslint-disable-line no-new\n    }, true)) {\n      TypedArray = wrapper(function (that, data, $offset, $length) {\n        anInstance(that, TypedArray, NAME);\n        var klass;\n        // `ws` module bug, temporarily remove validation length for Uint8Array\n        // https://github.com/websockets/ws/pull/645\n        if (!isObject(data)) return new Base(toIndex(data));\n        if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n          return $length !== undefined\n            ? new Base(data, toOffset($offset, BYTES), $length)\n            : $offset !== undefined\n              ? new Base(data, toOffset($offset, BYTES))\n              : new Base(data);\n        }\n        if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n        return $from.call(TypedArray, data);\n      });\n      arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n        if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n      });\n      TypedArray[PROTOTYPE] = TypedArrayPrototype;\n      if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n    }\n    var $nativeIterator = TypedArrayPrototype[ITERATOR];\n    var CORRECT_ITER_NAME = !!$nativeIterator\n      && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n    var $iterator = $iterators.values;\n    hide(TypedArray, TYPED_CONSTRUCTOR, true);\n    hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n    hide(TypedArrayPrototype, VIEW, true);\n    hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n    if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n      dP(TypedArrayPrototype, TAG, {\n        get: function () { return NAME; }\n      });\n    }\n\n    O[NAME] = TypedArray;\n\n    $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n    $export($export.S, NAME, {\n      BYTES_PER_ELEMENT: BYTES\n    });\n\n    $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n      from: $from,\n      of: $of\n    });\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n    $export($export.P, NAME, proto);\n\n    setSpecies(NAME);\n\n    $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n    $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n    if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n    $export($export.P + $export.F * fails(function () {\n      new TypedArray(1).slice();\n    }), NAME, { slice: $slice });\n\n    $export($export.P + $export.F * (fails(function () {\n      return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n    }) || !fails(function () {\n      TypedArrayPrototype.toLocaleString.call([1, 2]);\n    })), NAME, { toLocaleString: $toLocaleString });\n\n    Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n    if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n  };\n} else module.exports = function () { /* empty */ };\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","import { extend, error, isFunction, stringValue, toBoolean, toNumber, toDate, toString, identity, field, isObject, isArray, isIterable, hasOwnProperty } from 'vega-util';\nimport { dsvFormat } from 'd3-dsv';\nimport { feature, mesh } from 'topojson-client';\nimport { timeFormatDefaultLocale } from 'vega-format';\n\n//   https://...    file://...    //...\n\nconst protocol_re = /^(data:|([A-Za-z]+:)?\\/\\/)/; // Matches allowed URIs. From https://github.com/cure53/DOMPurify/blob/master/src/regexp.js with added file://\n\nconst allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\n\nconst whitespace_re = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\n// Special treatment in node.js for the file: protocol\n\nconst fileProtocol = 'file://';\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n *   If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n *   If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n *   param {object} [options] - Optional default loading options to use.\n *   return {object} - A new loader instance.\n */\n\nfunction loaderFactory (fetch, fs) {\n  return options => ({\n    options: options || {},\n    sanitize: sanitize,\n    load: load,\n    fileAccess: !!fs,\n    file: fileLoader(fs),\n    http: httpLoader(fetch)\n  });\n}\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n *   override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\n\nasync function load(uri, options) {\n  const opt = await this.sanitize(uri, options),\n        url = opt.href;\n  return opt.localFile ? this.file(url) : this.http(url, options);\n}\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n *  sanitized uri data, or rejects it the input uri is deemed invalid.\n *  The properties of the resolved object are assumed to be\n *  valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n *  provided by the 'href' property of the returned object.\n */\n\n\nasync function sanitize(uri, options) {\n  options = extend({}, this.options, options);\n  const fileAccess = this.fileAccess,\n        result = {\n    href: null\n  };\n  let isFile, loadFile, base;\n  const isAllowed = allowed_re.test(uri.replace(whitespace_re, ''));\n\n  if (uri == null || typeof uri !== 'string' || !isAllowed) {\n    error('Sanitize failure, invalid URI: ' + stringValue(uri));\n  }\n\n  const hasProtocol = protocol_re.test(uri); // if relative url (no protocol/host), prepend baseURL\n\n  if ((base = options.baseURL) && !hasProtocol) {\n    // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n    if (!uri.startsWith('/') && !base.endsWith('/')) {\n      uri = '/' + uri;\n    }\n\n    uri = base + uri;\n  } // should we load from file system?\n\n\n  loadFile = (isFile = uri.startsWith(fileProtocol)) || options.mode === 'file' || options.mode !== 'http' && !hasProtocol && fileAccess;\n\n  if (isFile) {\n    // strip file protocol\n    uri = uri.slice(fileProtocol.length);\n  } else if (uri.startsWith('//')) {\n    if (options.defaultProtocol === 'file') {\n      // if is file, strip protocol and set loadFile flag\n      uri = uri.slice(2);\n      loadFile = true;\n    } else {\n      // if relative protocol (starts with '//'), prepend default protocol\n      uri = (options.defaultProtocol || 'http') + ':' + uri;\n    }\n  } // set non-enumerable mode flag to indicate local file load\n\n\n  Object.defineProperty(result, 'localFile', {\n    value: !!loadFile\n  }); // set uri\n\n  result.href = uri; // set default result target, if specified\n\n  if (options.target) {\n    result.target = options.target + '';\n  } // set default result rel, if specified (#1542)\n\n\n  if (options.rel) {\n    result.rel = options.rel + '';\n  } // provide control over cross-origin image handling (#2238)\n  // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n\n\n  if (options.context === 'image' && options.crossOrigin) {\n    result.crossOrigin = options.crossOrigin + '';\n  } // return\n\n\n  return result;\n}\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n *   param {string} filename - The file system path to load.\n *   param {string} filename - The file system path to load.\n *   return {Promise} A promise that resolves to the file contents.\n */\n\n\nfunction fileLoader(fs) {\n  return fs ? filename => new Promise((accept, reject) => {\n    fs.readFile(filename, (error, data) => {\n      if (error) reject(error);else accept(data);\n    });\n  }) : fileReject;\n}\n/**\n * Default file system loader that simply rejects.\n */\n\n\nasync function fileReject() {\n  error('No file system access.');\n}\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n *   param {string} url - The url to request.\n *   param {object} options - An options hash.\n *   return {Promise} - A promise that resolves to the file contents.\n */\n\n\nfunction httpLoader(fetch) {\n  return fetch ? async function (url, options) {\n    const opt = extend({}, this.options.http, options),\n          type = options && options.response,\n          response = await fetch(url, opt);\n    return !response.ok ? error(response.status + '' + response.statusText) : isFunction(response[type]) ? response[type]() : response.text();\n  } : httpReject;\n}\n/**\n * Default http request handler that simply rejects.\n */\n\n\nasync function httpReject() {\n  error('No HTTP fetch method available.');\n}\n\nconst isValid = _ => _ != null && _ === _;\n\nconst isBoolean = _ => _ === 'true' || _ === 'false' || _ === true || _ === false;\n\nconst isDate = _ => !Number.isNaN(Date.parse(_));\n\nconst isNumber = _ => !Number.isNaN(+_) && !(_ instanceof Date);\n\nconst isInteger = _ => isNumber(_) && Number.isInteger(+_);\n\nconst typeParsers = {\n  boolean: toBoolean,\n  integer: toNumber,\n  number: toNumber,\n  date: toDate,\n  string: toString,\n  unknown: identity\n};\nconst typeTests = [isBoolean, isInteger, isNumber, isDate];\nconst typeList = ['boolean', 'integer', 'number', 'date'];\nfunction inferType(values, field) {\n  if (!values || !values.length) return 'unknown';\n  const n = values.length,\n        m = typeTests.length,\n        a = typeTests.map((_, i) => i + 1);\n\n  for (let i = 0, t = 0, j, value; i < n; ++i) {\n    value = field ? values[i][field] : values[i];\n\n    for (j = 0; j < m; ++j) {\n      if (a[j] && isValid(value) && !typeTests[j](value)) {\n        a[j] = 0;\n        ++t;\n        if (t === typeTests.length) return 'string';\n      }\n    }\n  }\n\n  return typeList[a.reduce((u, v) => u === 0 ? v : u, 0) - 1];\n}\nfunction inferTypes(data, fields) {\n  return fields.reduce((types, field) => {\n    types[field] = inferType(data, field);\n    return types;\n  }, {});\n}\n\nfunction delimitedFormat(delimiter) {\n  const parse = function (data, format) {\n    const delim = {\n      delimiter: delimiter\n    };\n    return dsv(data, format ? extend(format, delim) : delim);\n  };\n\n  parse.responseType = 'text';\n  return parse;\n}\nfunction dsv(data, format) {\n  if (format.header) {\n    data = format.header.map(stringValue).join(format.delimiter) + '\\n' + data;\n  }\n\n  return dsvFormat(format.delimiter).parse(data + '');\n}\ndsv.responseType = 'text';\n\nfunction isBuffer(_) {\n  return typeof Buffer === 'function' && isFunction(Buffer.isBuffer) ? Buffer.isBuffer(_) : false;\n}\n\nfunction json(data, format) {\n  const prop = format && format.property ? field(format.property) : identity;\n  return isObject(data) && !isBuffer(data) ? parseJSON(prop(data), format) : prop(JSON.parse(data));\n}\njson.responseType = 'json';\n\nfunction parseJSON(data, format) {\n  if (!isArray(data) && isIterable(data)) {\n    data = [...data];\n  }\n\n  return format && format.copy ? JSON.parse(JSON.stringify(data)) : data;\n}\n\nconst filters = {\n  interior: (a, b) => a !== b,\n  exterior: (a, b) => a === b\n};\nfunction topojson(data, format) {\n  let method, object, property, filter;\n  data = json(data, format);\n\n  if (format && format.feature) {\n    method = feature;\n    property = format.feature;\n  } else if (format && format.mesh) {\n    method = mesh;\n    property = format.mesh;\n    filter = filters[format.filter];\n  } else {\n    error('Missing TopoJSON feature or mesh parameter.');\n  }\n\n  object = (object = data.objects[property]) ? method(data, object, filter) : error('Invalid TopoJSON object: ' + property);\n  return object && object.features || [object];\n}\ntopojson.responseType = 'json';\n\nconst format = {\n  dsv: dsv,\n  csv: delimitedFormat(','),\n  tsv: delimitedFormat('\\t'),\n  json: json,\n  topojson: topojson\n};\nfunction formats(name, reader) {\n  if (arguments.length > 1) {\n    format[name] = reader;\n    return this;\n  } else {\n    return hasOwnProperty(format, name) ? format[name] : null;\n  }\n}\nfunction responseType(type) {\n  const f = formats(type);\n  return f && f.responseType || 'text';\n}\n\nfunction read (data, schema, timeParser, utcParser) {\n  schema = schema || {};\n  const reader = formats(schema.type || 'json');\n  if (!reader) error('Unknown data format type: ' + schema.type);\n  data = reader(data, schema);\n  if (schema.parse) parse(data, schema.parse, timeParser, utcParser);\n  if (hasOwnProperty(data, 'columns')) delete data.columns;\n  return data;\n}\n\nfunction parse(data, types, timeParser, utcParser) {\n  if (!data.length) return; // early exit for empty data\n\n  const locale = timeFormatDefaultLocale();\n  timeParser = timeParser || locale.timeParse;\n  utcParser = utcParser || locale.utcParse;\n  let fields = data.columns || Object.keys(data[0]),\n      datum,\n      field,\n      i,\n      j,\n      n,\n      m;\n  if (types === 'auto') types = inferTypes(data, fields);\n  fields = Object.keys(types);\n  const parsers = fields.map(field => {\n    const type = types[field];\n    let parts, pattern;\n\n    if (type && (type.startsWith('date:') || type.startsWith('utc:'))) {\n      parts = type.split(/:(.+)?/, 2); // split on first :\n\n      pattern = parts[1];\n\n      if (pattern[0] === '\\'' && pattern[pattern.length - 1] === '\\'' || pattern[0] === '\"' && pattern[pattern.length - 1] === '\"') {\n        pattern = pattern.slice(1, -1);\n      }\n\n      const parse = parts[0] === 'utc' ? utcParser : timeParser;\n      return parse(pattern);\n    }\n\n    if (!typeParsers[type]) {\n      throw Error('Illegal format pattern: ' + field + ':' + type);\n    }\n\n    return typeParsers[type];\n  });\n\n  for (i = 0, n = data.length, m = fields.length; i < n; ++i) {\n    datum = data[i];\n\n    for (j = 0; j < m; ++j) {\n      field = fields[j];\n      datum[field] = parsers[j](datum[field]);\n    }\n  }\n}\n\nconst loader = loaderFactory(typeof fetch !== 'undefined' && fetch, // use built-in fetch API\nnull // no file system access\n);\n\nexport { format, formats, inferType, inferTypes, loader, read, responseType, typeParsers };\n","\"use strict\";\n/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst glamor_1 = require(\"glamor\");\nconst render_utils_1 = require(\"../render/render_utils\");\nconst DEFAULT_SUBSURFACE_OPTS = {\n    prepend: false,\n};\n/**\n * Utility function to create/retrieve divs within an HTMLElement|Surface\n */\nfunction subSurface(parent, name, opts = {}) {\n    const container = render_utils_1.getDrawArea(parent);\n    const style = glamor_1.css({\n        '& canvas': {\n            display: 'block',\n        },\n        marginTop: '.5rem',\n        marginBottom: '.5rem',\n    });\n    const titleStyle = glamor_1.css({\n        backgroundColor: 'white',\n        display: 'inline-block',\n        boxSizing: 'border-box',\n        borderBottom: '1px solid #357EDD',\n        lineHeight: '2em',\n        padding: '0 10px 0 10px',\n        marginBottom: '20px',\n        fontWeight: '600',\n        textAlign: 'left',\n    });\n    const options = Object.assign({}, DEFAULT_SUBSURFACE_OPTS, opts);\n    let sub = container.querySelector(`div[data-name=${name}]`);\n    if (!sub) {\n        sub = document.createElement('div');\n        sub.setAttribute('class', `${style}`);\n        sub.dataset.name = name;\n        if (options.title) {\n            const title = document.createElement('div');\n            title.setAttribute('class', `subsurface-title ${titleStyle}`);\n            title.innerText = options.title;\n            sub.appendChild(title);\n        }\n        if (options.prepend) {\n            container.insertBefore(sub, container.firstChild);\n        }\n        else {\n            container.appendChild(sub);\n        }\n    }\n    return sub;\n}\nexports.subSurface = subSurface;\nfunction getDefaultWidth(element) {\n    const DEFAULT_PADDING = 50;\n    let padding = 0;\n    let current = element;\n    while (current && current.clientWidth === 0) {\n        current = current.parentElement;\n        padding = DEFAULT_PADDING;\n    }\n    return (current.clientWidth - padding);\n}\nexports.getDefaultWidth = getDefaultWidth;\nfunction getDefaultHeight(element) {\n    if (element.clientHeight === 0) {\n        return 200;\n    }\n    else {\n        return element.clientHeight;\n    }\n}\nexports.getDefaultHeight = getDefaultHeight;\n//# sourceMappingURL=dom.js.map","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\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    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\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    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","\"use strict\";\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nrequire(\"@tensorflow/tfjs-core\");\n// tslint:disable-next-line: no-imports-from-dist\nrequire(\"@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops\");\nconst barchart_1 = require(\"./render/barchart\");\nconst confusion_matrix_1 = require(\"./render/confusion_matrix\");\nconst heatmap_1 = require(\"./render/heatmap\");\nconst histogram_1 = require(\"./render/histogram\");\nconst linechart_1 = require(\"./render/linechart\");\nconst scatterplot_1 = require(\"./render/scatterplot\");\nconst table_1 = require(\"./render/table\");\nconst history_1 = require(\"./show/history\");\nconst model_1 = require(\"./show/model\");\nconst quality_1 = require(\"./show/quality\");\nconst tensor_1 = require(\"./show/tensor\");\nconst math_1 = require(\"./util/math\");\nconst version_1 = require(\"./version\");\nexports.version_vis = version_1.version;\nconst render = {\n    barchart: barchart_1.barchart,\n    table: table_1.table,\n    histogram: histogram_1.histogram,\n    linechart: linechart_1.linechart,\n    scatterplot: scatterplot_1.scatterplot,\n    confusionMatrix: confusion_matrix_1.confusionMatrix,\n    heatmap: heatmap_1.heatmap,\n};\nexports.render = render;\nconst metrics = {\n    accuracy: math_1.accuracy,\n    perClassAccuracy: math_1.perClassAccuracy,\n    confusionMatrix: math_1.confusionMatrix,\n};\nexports.metrics = metrics;\nconst show = {\n    history: history_1.history,\n    fitCallbacks: history_1.fitCallbacks,\n    perClassAccuracy: quality_1.perClassAccuracy,\n    valuesDistribution: tensor_1.valuesDistribution,\n    layer: model_1.layer,\n    modelSummary: model_1.modelSummary,\n};\nexports.show = show;\nvar visor_1 = require(\"./visor\");\nexports.visor = visor_1.visor;\n__export(require(\"./types\"));\n//# sourceMappingURL=index.js.map","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n  return (end - start) / durationSecond;\n}, function(date) {\n  return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / durationDay;\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n  date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Add = 'Add';\nexports.AddN = 'AddN';\nexports.Div = 'Div';\nexports.FusedBatchNorm = 'FusedBatchNorm';\nexports.SquaredDifference = 'SquaredDifference';\nexports.Square = 'Square';\nexports.Transpose = 'Transpose';\nexports.NonMaxSuppressionV5 = 'NonMaxSuppressionV5';\nexports.BroadcastTo = 'BroadcastTo';\nexports.OneHot = 'OneHot';\nexports.Identity = 'Identity';\nexports.Tile = 'Tile';\nexports.PadV2 = 'PadV2';\n/**\n * TensorFlow.js-only kernels\n */\nexports.FromPixels = 'FromPixels';\nexports.MaxPoolWithArgmax = 'MaxPoolWithArgmax';\n//# sourceMappingURL=kernel_names.js.map","\"use strict\";\n/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tensor_1 = require(\"./tensor\");\nvar types_1 = require(\"./types\");\nvar util_1 = require(\"./util\");\nfunction makeTypesMatch(a, b) {\n    if (a.dtype === b.dtype) {\n        return [a, b];\n    }\n    var dtype = types_1.upcastType(a.dtype, b.dtype);\n    return [a.cast(dtype), b.cast(dtype)];\n}\nexports.makeTypesMatch = makeTypesMatch;\nfunction assertTypesMatch(a, b) {\n    util_1.assert(a.dtype === b.dtype, function () { return \"The dtypes of the first(\" + a.dtype + \") and\" +\n        (\" second(\" + b.dtype + \") input must match\"); });\n}\nexports.assertTypesMatch = assertTypesMatch;\nfunction isTensorInList(tensor, tensorList) {\n    return tensorList.some(function (x) { return x.id === tensor.id; });\n}\nexports.isTensorInList = isTensorInList;\n/**\n * Extracts any `Tensor`s found within the provided object.\n *\n * @param container an object that may be a `Tensor` or may directly contain\n *   `Tensor`s, such as a `Tensor[]` or `{key: Tensor, ...}`. In general it\n *   is safe to pass any object here, except that `Promise`s are not\n *   supported.\n * @returns An array of `Tensors` found within the passed object. If the\n *   argument is simply a `Tensor', a list containing that `Tensor` is\n *   returned. If the object is not a `Tensor` or does not\n *   contain `Tensors`, an empty list is returned.\n */\nfunction getTensorsInContainer(result) {\n    var list = [];\n    var seen = new Set();\n    walkTensorContainer(result, list, seen);\n    return list;\n}\nexports.getTensorsInContainer = getTensorsInContainer;\nfunction walkTensorContainer(container, list, seen) {\n    if (container == null) {\n        return;\n    }\n    if (container instanceof tensor_1.Tensor) {\n        list.push(container);\n        return;\n    }\n    if (!isIterable(container)) {\n        return;\n    }\n    // Iteration over keys works also for arrays.\n    var iterable = container;\n    for (var k in iterable) {\n        var val = iterable[k];\n        if (!seen.has(val)) {\n            seen.add(val);\n            walkTensorContainer(val, list, seen);\n        }\n    }\n}\n// tslint:disable-next-line:no-any\nfunction isIterable(obj) {\n    return Array.isArray(obj) || typeof obj === 'object';\n}\n//# sourceMappingURL=tensor_util.js.map","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n  return it;\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","module.exports = false;\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\n\nmodule.exports = function (data, opts) {\n    if (!opts) opts = {};\n    if (typeof opts === 'function') opts = { cmp: opts };\n    var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n    var cmp = opts.cmp && (function (f) {\n        return function (node) {\n            return function (a, b) {\n                var aobj = { key: a, value: node[a] };\n                var bobj = { key: b, value: node[b] };\n                return f(aobj, bobj);\n            };\n        };\n    })(opts.cmp);\n\n    var seen = [];\n    return (function stringify (node) {\n        if (node && node.toJSON && typeof node.toJSON === 'function') {\n            node = node.toJSON();\n        }\n\n        if (node === undefined) return;\n        if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n        if (typeof node !== 'object') return JSON.stringify(node);\n\n        var i, out;\n        if (Array.isArray(node)) {\n            out = '[';\n            for (i = 0; i < node.length; i++) {\n                if (i) out += ',';\n                out += stringify(node[i]) || 'null';\n            }\n            return out + ']';\n        }\n\n        if (node === null) return 'null';\n\n        if (seen.indexOf(node) !== -1) {\n            if (cycles) return JSON.stringify('__cycle__');\n            throw new TypeError('Converting circular structure to JSON');\n        }\n\n        var seenIndex = seen.push(node) - 1;\n        var keys = Object.keys(node).sort(cmp && cmp(node));\n        out = '';\n        for (i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            var value = stringify(node[key]);\n\n            if (!value) continue;\n            if (out) out += ',';\n            out += JSON.stringify(key) + ':' + value;\n        }\n        seen.splice(seenIndex, 1);\n        return '{' + out + '}';\n    })(data);\n};\n","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017 Joachim Wester\n * MIT license\n */\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProperty(obj, key) {\n    return _hasOwnProperty.call(obj, key);\n}\nexport function _objectKeys(obj) {\n    if (Array.isArray(obj)) {\n        var keys = new Array(obj.length);\n        for (var k = 0; k < keys.length; k++) {\n            keys[k] = \"\" + k;\n        }\n        return keys;\n    }\n    if (Object.keys) {\n        return Object.keys(obj);\n    }\n    var keys = [];\n    for (var i in obj) {\n        if (hasOwnProperty(obj, i)) {\n            keys.push(i);\n        }\n    }\n    return keys;\n}\n;\n/**\n* Deeply clone the object.\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n* @param  {any} obj value to clone\n* @return {any} cloned obj\n*/\nexport function _deepClone(obj) {\n    switch (typeof obj) {\n        case \"object\":\n            return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n        case \"undefined\":\n            return null; //this is how JSON.stringify behaves for array items\n        default:\n            return obj; //no need to clone primitives\n    }\n}\n//3x faster than cached /^\\d+$/.test(str)\nexport function isInteger(str) {\n    var i = 0;\n    var len = str.length;\n    var charCode;\n    while (i < len) {\n        charCode = str.charCodeAt(i);\n        if (charCode >= 48 && charCode <= 57) {\n            i++;\n            continue;\n        }\n        return false;\n    }\n    return true;\n}\n/**\n* Escapes a json pointer path\n* @param path The raw pointer\n* @return the Escaped path\n*/\nexport function escapePathComponent(path) {\n    if (path.indexOf('/') === -1 && path.indexOf('~') === -1)\n        return path;\n    return path.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nexport function unescapePathComponent(path) {\n    return path.replace(/~1/g, '/').replace(/~0/g, '~');\n}\nexport function _getPathRecursive(root, obj) {\n    var found;\n    for (var key in root) {\n        if (hasOwnProperty(root, key)) {\n            if (root[key] === obj) {\n                return escapePathComponent(key) + '/';\n            }\n            else if (typeof root[key] === 'object') {\n                found = _getPathRecursive(root[key], obj);\n                if (found != '') {\n                    return escapePathComponent(key) + '/' + found;\n                }\n            }\n        }\n    }\n    return '';\n}\nexport function getPath(root, obj) {\n    if (root === obj) {\n        return '/';\n    }\n    var path = _getPathRecursive(root, obj);\n    if (path === '') {\n        throw new Error(\"Object not found in root\");\n    }\n    return '/' + path;\n}\n/**\n* Recursively checks whether an object has any undefined values inside.\n*/\nexport function hasUndefined(obj) {\n    if (obj === undefined) {\n        return true;\n    }\n    if (obj) {\n        if (Array.isArray(obj)) {\n            for (var i = 0, len = obj.length; i < len; i++) {\n                if (hasUndefined(obj[i])) {\n                    return true;\n                }\n            }\n        }\n        else if (typeof obj === \"object\") {\n            var objKeys = _objectKeys(obj);\n            var objKeysLength = objKeys.length;\n            for (var i = 0; i < objKeysLength; i++) {\n                if (hasUndefined(obj[objKeys[i]])) {\n                    return true;\n                }\n            }\n        }\n    }\n    return false;\n}\nfunction patchErrorMessageFormatter(message, args) {\n    var messageParts = [message];\n    for (var key in args) {\n        var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\n        if (typeof value !== 'undefined') {\n            messageParts.push(key + \": \" + value);\n        }\n    }\n    return messageParts.join('\\n');\n}\nvar PatchError = /** @class */ (function (_super) {\n    __extends(PatchError, _super);\n    function PatchError(message, name, index, operation, tree) {\n        var _newTarget = this.constructor;\n        var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;\n        _this.name = name;\n        _this.index = index;\n        _this.operation = operation;\n        _this.tree = tree;\n        Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n        _this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });\n        return _this;\n    }\n    return PatchError;\n}(Error));\nexport { PatchError };\n","import { PatchError, _deepClone, isInteger, unescapePathComponent, hasUndefined } from './helpers.mjs';\nexport var JsonPatchError = PatchError;\nexport var deepClone = _deepClone;\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n    add: function (obj, key, document) {\n        obj[key] = this.value;\n        return { newDocument: document };\n    },\n    remove: function (obj, key, document) {\n        var removed = obj[key];\n        delete obj[key];\n        return { newDocument: document, removed: removed };\n    },\n    replace: function (obj, key, document) {\n        var removed = obj[key];\n        obj[key] = this.value;\n        return { newDocument: document, removed: removed };\n    },\n    move: function (obj, key, document) {\n        /* in case move target overwrites an existing value,\n        return the removed value, this can be taxing performance-wise,\n        and is potentially unneeded */\n        var removed = getValueByPointer(document, this.path);\n        if (removed) {\n            removed = _deepClone(removed);\n        }\n        var originalValue = applyOperation(document, { op: \"remove\", path: this.from }).removed;\n        applyOperation(document, { op: \"add\", path: this.path, value: originalValue });\n        return { newDocument: document, removed: removed };\n    },\n    copy: function (obj, key, document) {\n        var valueToCopy = getValueByPointer(document, this.from);\n        // enforce copy by value so further operations don't affect source (see issue #177)\n        applyOperation(document, { op: \"add\", path: this.path, value: _deepClone(valueToCopy) });\n        return { newDocument: document };\n    },\n    test: function (obj, key, document) {\n        return { newDocument: document, test: _areEquals(obj[key], this.value) };\n    },\n    _get: function (obj, key, document) {\n        this.value = obj[key];\n        return { newDocument: document };\n    }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n    add: function (arr, i, document) {\n        if (isInteger(i)) {\n            arr.splice(i, 0, this.value);\n        }\n        else { // array props\n            arr[i] = this.value;\n        }\n        // this may be needed when using '-' in an array\n        return { newDocument: document, index: i };\n    },\n    remove: function (arr, i, document) {\n        var removedList = arr.splice(i, 1);\n        return { newDocument: document, removed: removedList[0] };\n    },\n    replace: function (arr, i, document) {\n        var removed = arr[i];\n        arr[i] = this.value;\n        return { newDocument: document, removed: removed };\n    },\n    move: objOps.move,\n    copy: objOps.copy,\n    test: objOps.test,\n    _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nexport function getValueByPointer(document, pointer) {\n    if (pointer == '') {\n        return document;\n    }\n    var getOriginalDestination = { op: \"_get\", path: pointer };\n    applyOperation(document, getOriginalDestination);\n    return getOriginalDestination.value;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nexport function applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n    if (validateOperation === void 0) { validateOperation = false; }\n    if (mutateDocument === void 0) { mutateDocument = true; }\n    if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n    if (index === void 0) { index = 0; }\n    if (validateOperation) {\n        if (typeof validateOperation == 'function') {\n            validateOperation(operation, 0, document, operation.path);\n        }\n        else {\n            validator(operation, 0);\n        }\n    }\n    /* ROOT OPERATIONS */\n    if (operation.path === \"\") {\n        var returnValue = { newDocument: document };\n        if (operation.op === 'add') {\n            returnValue.newDocument = operation.value;\n            return returnValue;\n        }\n        else if (operation.op === 'replace') {\n            returnValue.newDocument = operation.value;\n            returnValue.removed = document; //document we removed\n            return returnValue;\n        }\n        else if (operation.op === 'move' || operation.op === 'copy') { // it's a move or copy to root\n            returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n            if (operation.op === 'move') { // report removed item\n                returnValue.removed = document;\n            }\n            return returnValue;\n        }\n        else if (operation.op === 'test') {\n            returnValue.test = _areEquals(document, operation.value);\n            if (returnValue.test === false) {\n                throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n            }\n            returnValue.newDocument = document;\n            return returnValue;\n        }\n        else if (operation.op === 'remove') { // a remove on root\n            returnValue.removed = document;\n            returnValue.newDocument = null;\n            return returnValue;\n        }\n        else if (operation.op === '_get') {\n            operation.value = document;\n            return returnValue;\n        }\n        else { /* bad operation */\n            if (validateOperation) {\n                throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n            }\n            else {\n                return returnValue;\n            }\n        }\n    } /* END ROOT OPERATIONS */\n    else {\n        if (!mutateDocument) {\n            document = _deepClone(document);\n        }\n        var path = operation.path || \"\";\n        var keys = path.split('/');\n        var obj = document;\n        var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n        var len = keys.length;\n        var existingPathFragment = undefined;\n        var key = void 0;\n        var validateFunction = void 0;\n        if (typeof validateOperation == 'function') {\n            validateFunction = validateOperation;\n        }\n        else {\n            validateFunction = validator;\n        }\n        while (true) {\n            key = keys[t];\n            if (key && key.indexOf('~') != -1) {\n                key = unescapePathComponent(key);\n            }\n            if (banPrototypeModifications && key == '__proto__') {\n                throw new TypeError('JSON-Patch: modifying `__proto__` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n            }\n            if (validateOperation) {\n                if (existingPathFragment === undefined) {\n                    if (obj[key] === undefined) {\n                        existingPathFragment = keys.slice(0, t).join('/');\n                    }\n                    else if (t == len - 1) {\n                        existingPathFragment = operation.path;\n                    }\n                    if (existingPathFragment !== undefined) {\n                        validateFunction(operation, 0, document, existingPathFragment);\n                    }\n                }\n            }\n            t++;\n            if (Array.isArray(obj)) {\n                if (key === '-') {\n                    key = obj.length;\n                }\n                else {\n                    if (validateOperation && !isInteger(key)) {\n                        throw new JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n                    } // only parse key when it's an integer for `arr.prop` to work\n                    else if (isInteger(key)) {\n                        key = ~~key;\n                    }\n                }\n                if (t >= len) {\n                    if (validateOperation && operation.op === \"add\" && key > obj.length) {\n                        throw new JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n                    }\n                    var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n                    if (returnValue.test === false) {\n                        throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n                    }\n                    return returnValue;\n                }\n            }\n            else {\n                if (t >= len) {\n                    var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n                    if (returnValue.test === false) {\n                        throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n                    }\n                    return returnValue;\n                }\n            }\n            obj = obj[key];\n            // If we have more keys in the path, but the next value isn't a non-null object,\n            // throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.\n            if (validateOperation && t < len && (!obj || typeof obj !== \"object\")) {\n                throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n            }\n        }\n    }\n}\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nexport function applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n    if (mutateDocument === void 0) { mutateDocument = true; }\n    if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n    if (validateOperation) {\n        if (!Array.isArray(patch)) {\n            throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n        }\n    }\n    if (!mutateDocument) {\n        document = _deepClone(document);\n    }\n    var results = new Array(patch.length);\n    for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n        // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n        results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n        document = results[i].newDocument; // in case root was replaced\n    }\n    results.newDocument = document;\n    return results;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nexport function applyReducer(document, operation, index) {\n    var operationResult = applyOperation(document, operation);\n    if (operationResult.test === false) { // failed test\n        throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n    }\n    return operationResult.newDocument;\n}\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nexport function validator(operation, index, document, existingPathFragment) {\n    if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n        throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n    }\n    else if (!objOps[operation.op]) {\n        throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n    }\n    else if (typeof operation.path !== 'string') {\n        throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n    }\n    else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n        // paths that aren't empty string should start with \"/\"\n        throw new JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n    }\n    else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n        throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n    }\n    else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n        throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n    }\n    else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {\n        throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n    }\n    else if (document) {\n        if (operation.op == \"add\") {\n            var pathLen = operation.path.split(\"/\").length;\n            var existingPathLen = existingPathFragment.split(\"/\").length;\n            if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n                throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n            }\n        }\n        else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n            if (operation.path !== existingPathFragment) {\n                throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n            }\n        }\n        else if (operation.op === 'move' || operation.op === 'copy') {\n            var existingValue = { op: \"_get\", path: operation.from, value: undefined };\n            var error = validate([existingValue], document);\n            if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n                throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n            }\n        }\n    }\n}\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nexport function validate(sequence, document, externalValidator) {\n    try {\n        if (!Array.isArray(sequence)) {\n            throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n        }\n        if (document) {\n            //clone document and sequence so that we can safely try applying operations\n            applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);\n        }\n        else {\n            externalValidator = externalValidator || validator;\n            for (var i = 0; i < sequence.length; i++) {\n                externalValidator(sequence[i], i, document, undefined);\n            }\n        }\n    }\n    catch (e) {\n        if (e instanceof JsonPatchError) {\n            return e;\n        }\n        else {\n            throw e;\n        }\n    }\n}\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nexport function _areEquals(a, b) {\n    if (a === b)\n        return true;\n    if (a && b && typeof a == 'object' && typeof b == 'object') {\n        var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;\n        if (arrA && arrB) {\n            length = a.length;\n            if (length != b.length)\n                return false;\n            for (i = length; i-- !== 0;)\n                if (!_areEquals(a[i], b[i]))\n                    return false;\n            return true;\n        }\n        if (arrA != arrB)\n            return false;\n        var keys = Object.keys(a);\n        length = keys.length;\n        if (length !== Object.keys(b).length)\n            return false;\n        for (i = length; i-- !== 0;)\n            if (!b.hasOwnProperty(keys[i]))\n                return false;\n        for (i = length; i-- !== 0;) {\n            key = keys[i];\n            if (!_areEquals(a[key], b[key]))\n                return false;\n        }\n        return true;\n    }\n    return a !== a && b !== b;\n}\n;\n","/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017 Joachim Wester\n * MIT license\n */\nimport { _deepClone, _objectKeys, escapePathComponent, hasOwnProperty } from './helpers.mjs';\nimport { applyPatch } from './core.mjs';\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */ (function () {\n    function Mirror(obj) {\n        this.observers = new Map();\n        this.obj = obj;\n    }\n    return Mirror;\n}());\nvar ObserverInfo = /** @class */ (function () {\n    function ObserverInfo(callback, observer) {\n        this.callback = callback;\n        this.observer = observer;\n    }\n    return ObserverInfo;\n}());\nfunction getMirror(obj) {\n    return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n    return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n    mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nexport function unobserve(root, observer) {\n    observer.unobserve();\n}\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nexport function observe(obj, callback) {\n    var patches = [];\n    var observer;\n    var mirror = getMirror(obj);\n    if (!mirror) {\n        mirror = new Mirror(obj);\n        beforeDict.set(obj, mirror);\n    }\n    else {\n        var observerInfo = getObserverFromMirror(mirror, callback);\n        observer = observerInfo && observerInfo.observer;\n    }\n    if (observer) {\n        return observer;\n    }\n    observer = {};\n    mirror.value = _deepClone(obj);\n    if (callback) {\n        observer.callback = callback;\n        observer.next = null;\n        var dirtyCheck = function () {\n            generate(observer);\n        };\n        var fastCheck = function () {\n            clearTimeout(observer.next);\n            observer.next = setTimeout(dirtyCheck);\n        };\n        if (typeof window !== 'undefined') { //not Node\n            window.addEventListener('mouseup', fastCheck);\n            window.addEventListener('keyup', fastCheck);\n            window.addEventListener('mousedown', fastCheck);\n            window.addEventListener('keydown', fastCheck);\n            window.addEventListener('change', fastCheck);\n        }\n    }\n    observer.patches = patches;\n    observer.object = obj;\n    observer.unobserve = function () {\n        generate(observer);\n        clearTimeout(observer.next);\n        removeObserverFromMirror(mirror, observer);\n        if (typeof window !== 'undefined') {\n            window.removeEventListener('mouseup', fastCheck);\n            window.removeEventListener('keyup', fastCheck);\n            window.removeEventListener('mousedown', fastCheck);\n            window.removeEventListener('keydown', fastCheck);\n            window.removeEventListener('change', fastCheck);\n        }\n    };\n    mirror.observers.set(callback, new ObserverInfo(callback, observer));\n    return observer;\n}\n/**\n * Generate an array of patches from an observer\n */\nexport function generate(observer, invertible) {\n    if (invertible === void 0) { invertible = false; }\n    var mirror = beforeDict.get(observer.object);\n    _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n    if (observer.patches.length) {\n        applyPatch(mirror.value, observer.patches);\n    }\n    var temp = observer.patches;\n    if (temp.length > 0) {\n        observer.patches = [];\n        if (observer.callback) {\n            observer.callback(temp);\n        }\n    }\n    return temp;\n}\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n    if (obj === mirror) {\n        return;\n    }\n    if (typeof obj.toJSON === \"function\") {\n        obj = obj.toJSON();\n    }\n    var newKeys = _objectKeys(obj);\n    var oldKeys = _objectKeys(mirror);\n    var changed = false;\n    var deleted = false;\n    //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n    for (var t = oldKeys.length - 1; t >= 0; t--) {\n        var key = oldKeys[t];\n        var oldVal = mirror[key];\n        if (hasOwnProperty(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n            var newVal = obj[key];\n            if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {\n                _generate(oldVal, newVal, patches, path + \"/\" + escapePathComponent(key), invertible);\n            }\n            else {\n                if (oldVal !== newVal) {\n                    changed = true;\n                    if (invertible) {\n                        patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n                    }\n                    patches.push({ op: \"replace\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(newVal) });\n                }\n            }\n        }\n        else if (Array.isArray(mirror) === Array.isArray(obj)) {\n            if (invertible) {\n                patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n            }\n            patches.push({ op: \"remove\", path: path + \"/\" + escapePathComponent(key) });\n            deleted = true; // property has been deleted\n        }\n        else {\n            if (invertible) {\n                patches.push({ op: \"test\", path: path, value: mirror });\n            }\n            patches.push({ op: \"replace\", path: path, value: obj });\n            changed = true;\n        }\n    }\n    if (!deleted && newKeys.length == oldKeys.length) {\n        return;\n    }\n    for (var t = 0; t < newKeys.length; t++) {\n        var key = newKeys[t];\n        if (!hasOwnProperty(mirror, key) && obj[key] !== undefined) {\n            patches.push({ op: \"add\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(obj[key]) });\n        }\n    }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nexport function compare(tree1, tree2, invertible) {\n    if (invertible === void 0) { invertible = false; }\n    var patches = [];\n    _generate(tree1, tree2, patches, '', invertible);\n    return patches;\n}\n","export * from './module/core.mjs';\nexport * from './module/duplex.mjs';\nexport {\n    PatchError as JsonPatchError,\n    _deepClone as deepClone,\n    escapePathComponent,\n    unescapePathComponent\n} from './module/helpers.mjs';\n\n\n/**\n * Default export for backwards compat\n */\n\nimport * as core from './module/core.mjs';\nimport * as duplex from './module/duplex.mjs';\nimport {\n    PatchError as JsonPatchError,\n    _deepClone as deepClone,\n    escapePathComponent,\n    unescapePathComponent\n} from './module/helpers.mjs';\n\nexport default Object.assign({}, core, duplex, {\n    JsonPatchError,\n    deepClone,\n    escapePathComponent,\n    unescapePathComponent\n});","import { identity, array, isFunction, constant, isArray, id, error, truthy, debounce, extend, visitArray, inherits, logger, Error, hasOwnProperty } from 'vega-util';\nimport { read, responseType, loader } from 'vega-loader';\nimport { defaultLocale } from 'vega-format';\n\nfunction UniqueList(idFunc) {\n  const $ = idFunc || identity,\n        list = [],\n        ids = {};\n\n  list.add = _ => {\n    const id = $(_);\n\n    if (!ids[id]) {\n      ids[id] = 1;\n      list.push(_);\n    }\n\n    return list;\n  };\n\n  list.remove = _ => {\n    const id = $(_);\n\n    if (ids[id]) {\n      ids[id] = 0;\n      const idx = list.indexOf(_);\n      if (idx >= 0) list.splice(idx, 1);\n    }\n\n    return list;\n  };\n\n  return list;\n}\n\n/**\n * Invoke and await a potentially async callback function. If\n * an error occurs, trap it and route to Dataflow.error.\n * @param {Dataflow} df - The dataflow instance\n * @param {function} callback - A callback function to invoke\n *   and then await. The dataflow will be passed as the single\n *   argument to the function.\n */\nasync function asyncCallback (df, callback) {\n  try {\n    await callback(df);\n  } catch (err) {\n    df.error(err);\n  }\n}\n\nconst TUPLE_ID_KEY = Symbol('vega_id');\nlet TUPLE_ID = 1;\n/**\n * Checks if an input value is a registered tuple.\n * @param {*} t - The value to check.\n * @return {boolean} True if the input is a tuple, false otherwise.\n */\n\nfunction isTuple(t) {\n  return !!(t && tupleid(t));\n}\n/**\n * Returns the id of a tuple.\n * @param {object} t - The input tuple.\n * @return {*} the tuple id.\n */\n\nfunction tupleid(t) {\n  return t[TUPLE_ID_KEY];\n}\n/**\n * Sets the id of a tuple.\n * @param {object} t - The input tuple.\n * @param {*} id - The id value to set.\n * @return {object} the input tuple.\n */\n\nfunction setid(t, id) {\n  t[TUPLE_ID_KEY] = id;\n  return t;\n}\n/**\n * Ingest an object or value as a data tuple.\n * If the input value is an object, an id field will be added to it. For\n * efficiency, the input object is modified directly. A copy is not made.\n * If the input value is a literal, it will be wrapped in a new object\n * instance, with the value accessible as the 'data' property.\n * @param datum - The value to ingest.\n * @return {object} The ingested data tuple.\n */\n\n\nfunction ingest$1(datum) {\n  const t = datum === Object(datum) ? datum : {\n    data: datum\n  };\n  return tupleid(t) ? t : setid(t, TUPLE_ID++);\n}\n/**\n * Given a source tuple, return a derived copy.\n * @param {object} t - The source tuple.\n * @return {object} The derived tuple.\n */\n\nfunction derive(t) {\n  return rederive(t, ingest$1({}));\n}\n/**\n * Rederive a derived tuple by copying values from the source tuple.\n * @param {object} t - The source tuple.\n * @param {object} d - The derived tuple.\n * @return {object} The derived tuple.\n */\n\nfunction rederive(t, d) {\n  for (const k in t) d[k] = t[k];\n\n  return d;\n}\n/**\n * Replace an existing tuple with a new tuple.\n * @param {object} t - The existing data tuple.\n * @param {object} d - The new tuple that replaces the old.\n * @return {object} The new tuple.\n */\n\nfunction replace(t, d) {\n  return setid(d, tupleid(t));\n}\n/**\n * Generate an augmented comparator function that provides stable\n * sorting by tuple id when the given comparator produces ties.\n * @param {function} cmp - The comparator to augment.\n * @param {function} [f] - Optional tuple accessor function.\n * @return {function} An augmented comparator function.\n */\n\nfunction stableCompare(cmp, f) {\n  return !cmp ? null : f ? (a, b) => cmp(a, b) || tupleid(f(a)) - tupleid(f(b)) : (a, b) => cmp(a, b) || tupleid(a) - tupleid(b);\n}\n\nfunction isChangeSet(v) {\n  return v && v.constructor === changeset;\n}\nfunction changeset() {\n  const add = [],\n        // insert tuples\n  rem = [],\n        // remove tuples\n  mod = [],\n        // modify tuples\n  remp = [],\n        // remove by predicate\n  modp = []; // modify by predicate\n\n  let clean = null,\n      reflow = false;\n  return {\n    constructor: changeset,\n\n    insert(t) {\n      const d = array(t),\n            n = d.length;\n\n      for (let i = 0; i < n; ++i) add.push(d[i]);\n\n      return this;\n    },\n\n    remove(t) {\n      const a = isFunction(t) ? remp : rem,\n            d = array(t),\n            n = d.length;\n\n      for (let i = 0; i < n; ++i) a.push(d[i]);\n\n      return this;\n    },\n\n    modify(t, field, value) {\n      const m = {\n        field: field,\n        value: constant(value)\n      };\n\n      if (isFunction(t)) {\n        m.filter = t;\n        modp.push(m);\n      } else {\n        m.tuple = t;\n        mod.push(m);\n      }\n\n      return this;\n    },\n\n    encode(t, set) {\n      if (isFunction(t)) modp.push({\n        filter: t,\n        field: set\n      });else mod.push({\n        tuple: t,\n        field: set\n      });\n      return this;\n    },\n\n    clean(value) {\n      clean = value;\n      return this;\n    },\n\n    reflow() {\n      reflow = true;\n      return this;\n    },\n\n    pulse(pulse, tuples) {\n      const cur = {},\n            out = {};\n      let i, n, m, f, t, id; // build lookup table of current tuples\n\n      for (i = 0, n = tuples.length; i < n; ++i) {\n        cur[tupleid(tuples[i])] = 1;\n      } // process individual tuples to remove\n\n\n      for (i = 0, n = rem.length; i < n; ++i) {\n        t = rem[i];\n        cur[tupleid(t)] = -1;\n      } // process predicate-based removals\n\n\n      for (i = 0, n = remp.length; i < n; ++i) {\n        f = remp[i];\n        tuples.forEach(t => {\n          if (f(t)) cur[tupleid(t)] = -1;\n        });\n      } // process all add tuples\n\n\n      for (i = 0, n = add.length; i < n; ++i) {\n        t = add[i];\n        id = tupleid(t);\n\n        if (cur[id]) {\n          // tuple already resides in dataset\n          // if flagged for both add and remove, cancel\n          cur[id] = 1;\n        } else {\n          // tuple does not reside in dataset, add\n          pulse.add.push(ingest$1(add[i]));\n        }\n      } // populate pulse rem list\n\n\n      for (i = 0, n = tuples.length; i < n; ++i) {\n        t = tuples[i];\n        if (cur[tupleid(t)] < 0) pulse.rem.push(t);\n      } // modify helper method\n\n\n      function modify(t, f, v) {\n        if (v) {\n          t[f] = v(t);\n        } else {\n          pulse.encode = f;\n        }\n\n        if (!reflow) out[tupleid(t)] = t;\n      } // process individual tuples to modify\n\n\n      for (i = 0, n = mod.length; i < n; ++i) {\n        m = mod[i];\n        t = m.tuple;\n        f = m.field;\n        id = cur[tupleid(t)];\n\n        if (id > 0) {\n          modify(t, f, m.value);\n          pulse.modifies(f);\n        }\n      } // process predicate-based modifications\n\n\n      for (i = 0, n = modp.length; i < n; ++i) {\n        m = modp[i];\n        f = m.filter;\n        tuples.forEach(t => {\n          if (f(t) && cur[tupleid(t)] > 0) {\n            modify(t, m.field, m.value);\n          }\n        });\n        pulse.modifies(m.field);\n      } // upon reflow request, populate mod with all non-removed tuples\n      // otherwise, populate mod with modified tuples only\n\n\n      if (reflow) {\n        pulse.mod = rem.length || remp.length ? tuples.filter(t => cur[tupleid(t)] > 0) : tuples.slice();\n      } else {\n        for (id in out) pulse.mod.push(out[id]);\n      } // set pulse garbage collection request\n\n\n      if (clean || clean == null && (rem.length || remp.length)) {\n        pulse.clean(true);\n      }\n\n      return pulse;\n    }\n\n  };\n}\n\nconst CACHE = '_:mod:_';\n/**\n * Hash that tracks modifications to assigned values.\n * Callers *must* use the set method to update values.\n */\n\nfunction Parameters() {\n  Object.defineProperty(this, CACHE, {\n    writable: true,\n    value: {}\n  });\n}\nParameters.prototype = {\n  /**\n   * Set a parameter value. If the parameter value changes, the parameter\n   * will be recorded as modified.\n   * @param {string} name - The parameter name.\n   * @param {number} index - The index into an array-value parameter. Ignored if\n   *   the argument is undefined, null or less than zero.\n   * @param {*} value - The parameter value to set.\n   * @param {boolean} [force=false] - If true, records the parameter as modified\n   *   even if the value is unchanged.\n   * @return {Parameters} - This parameter object.\n   */\n  set(name, index, value, force) {\n    const o = this,\n          v = o[name],\n          mod = o[CACHE];\n\n    if (index != null && index >= 0) {\n      if (v[index] !== value || force) {\n        v[index] = value;\n        mod[index + ':' + name] = -1;\n        mod[name] = -1;\n      }\n    } else if (v !== value || force) {\n      o[name] = value;\n      mod[name] = isArray(value) ? 1 + value.length : -1;\n    }\n\n    return o;\n  },\n\n  /**\n   * Tests if one or more parameters has been modified. If invoked with no\n   * arguments, returns true if any parameter value has changed. If the first\n   * argument is array, returns trues if any parameter name in the array has\n   * changed. Otherwise, tests if the given name and optional array index has\n   * changed.\n   * @param {string} name - The parameter name to test.\n   * @param {number} [index=undefined] - The parameter array index to test.\n   * @return {boolean} - Returns true if a queried parameter was modified.\n   */\n  modified(name, index) {\n    const mod = this[CACHE];\n\n    if (!arguments.length) {\n      for (const k in mod) {\n        if (mod[k]) return true;\n      }\n\n      return false;\n    } else if (isArray(name)) {\n      for (let k = 0; k < name.length; ++k) {\n        if (mod[name[k]]) return true;\n      }\n\n      return false;\n    }\n\n    return index != null && index >= 0 ? index + 1 < mod[name] || !!mod[index + ':' + name] : !!mod[name];\n  },\n\n  /**\n   * Clears the modification records. After calling this method,\n   * all parameters are considered unmodified.\n   */\n  clear() {\n    this[CACHE] = {};\n    return this;\n  }\n\n};\n\nlet OP_ID = 0;\nconst PULSE = 'pulse',\n      NO_PARAMS = new Parameters(); // Boolean Flags\n\nconst SKIP$1 = 1,\n      MODIFIED = 2;\n/**\n * An Operator is a processing node in a dataflow graph.\n * Each operator stores a value and an optional value update function.\n * Operators can accept a hash of named parameters. Parameter values can\n * either be direct (JavaScript literals, arrays, objects) or indirect\n * (other operators whose values will be pulled dynamically). Operators\n * included as parameters will have this operator added as a dependency.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {function(object, Pulse)} [update] - An update function. Upon\n *   evaluation of this operator, the update function will be invoked and the\n *   return value will be used as the new value of this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n *   listen for changes to upstream operators included as parameters.\n * @see parameters\n */\n\nfunction Operator(init, update, params, react) {\n  this.id = ++OP_ID;\n  this.value = init;\n  this.stamp = -1;\n  this.rank = -1;\n  this.qrank = -1;\n  this.flags = 0;\n\n  if (update) {\n    this._update = update;\n  }\n\n  if (params) this.parameters(params, react);\n}\n\nfunction flag(bit) {\n  return function (state) {\n    const f = this.flags;\n    if (arguments.length === 0) return !!(f & bit);\n    this.flags = state ? f | bit : f & ~bit;\n    return this;\n  };\n}\n\nOperator.prototype = {\n  /**\n   * Returns a list of target operators dependent on this operator.\n   * If this list does not exist, it is created and then returned.\n   * @return {UniqueList}\n   */\n  targets() {\n    return this._targets || (this._targets = UniqueList(id));\n  },\n\n  /**\n   * Sets the value of this operator.\n   * @param {*} value - the value to set.\n   * @return {Number} Returns 1 if the operator value has changed\n   *   according to strict equality, returns 0 otherwise.\n   */\n  set(value) {\n    if (this.value !== value) {\n      this.value = value;\n      return 1;\n    } else {\n      return 0;\n    }\n  },\n\n  /**\n   * Indicates that operator evaluation should be skipped on the next pulse.\n   * This operator will still propagate incoming pulses, but its update function\n   * will not be invoked. The skip flag is reset after every pulse, so calling\n   * this method will affect processing of the next pulse only.\n   */\n  skip: flag(SKIP$1),\n\n  /**\n   * Indicates that this operator's value has been modified on its most recent\n   * pulse. Normally modification is checked via strict equality; however, in\n   * some cases it is more efficient to update the internal state of an object.\n   * In those cases, the modified flag can be used to trigger propagation. Once\n   * set, the modification flag persists across pulses until unset. The flag can\n   * be used with the last timestamp to test if a modification is recent.\n   */\n  modified: flag(MODIFIED),\n\n  /**\n   * Sets the parameters for this operator. The parameter values are analyzed for\n   * operator instances. If found, this operator will be added as a dependency\n   * of the parameterizing operator. Operator values are dynamically marshalled\n   * from each operator parameter prior to evaluation. If a parameter value is\n   * an array, the array will also be searched for Operator instances. However,\n   * the search does not recurse into sub-arrays or object properties.\n   * @param {object} params - A hash of operator parameters.\n   * @param {boolean} [react=true] - A flag indicating if this operator should\n   *   automatically update (react) when parameter values change. In other words,\n   *   this flag determines if the operator registers itself as a listener on\n   *   any upstream operators included in the parameters.\n   * @param {boolean} [initonly=false] - A flag indicating if this operator\n   *   should calculate an update only upon its initiatal evaluation, then\n   *   deregister dependencies and suppress all future update invocations.\n   * @return {Operator[]} - An array of upstream dependencies.\n   */\n  parameters(params, react, initonly) {\n    react = react !== false;\n    const argval = this._argval = this._argval || new Parameters(),\n          argops = this._argops = this._argops || [],\n          deps = [];\n    let name, value, n, i;\n\n    const add = (name, index, value) => {\n      if (value instanceof Operator) {\n        if (value !== this) {\n          if (react) value.targets().add(this);\n          deps.push(value);\n        }\n\n        argops.push({\n          op: value,\n          name: name,\n          index: index\n        });\n      } else {\n        argval.set(name, index, value);\n      }\n    };\n\n    for (name in params) {\n      value = params[name];\n\n      if (name === PULSE) {\n        array(value).forEach(op => {\n          if (!(op instanceof Operator)) {\n            error('Pulse parameters must be operator instances.');\n          } else if (op !== this) {\n            op.targets().add(this);\n            deps.push(op);\n          }\n        });\n        this.source = value;\n      } else if (isArray(value)) {\n        argval.set(name, -1, Array(n = value.length));\n\n        for (i = 0; i < n; ++i) add(name, i, value[i]);\n      } else {\n        add(name, -1, value);\n      }\n    }\n\n    this.marshall().clear(); // initialize values\n\n    if (initonly) argops.initonly = true;\n    return deps;\n  },\n\n  /**\n   * Internal method for marshalling parameter values.\n   * Visits each operator dependency to pull the latest value.\n   * @return {Parameters} A Parameters object to pass to the update function.\n   */\n  marshall(stamp) {\n    const argval = this._argval || NO_PARAMS,\n          argops = this._argops;\n    let item, i, op, mod;\n\n    if (argops) {\n      const n = argops.length;\n\n      for (i = 0; i < n; ++i) {\n        item = argops[i];\n        op = item.op;\n        mod = op.modified() && op.stamp === stamp;\n        argval.set(item.name, item.index, op.value, mod);\n      }\n\n      if (argops.initonly) {\n        for (i = 0; i < n; ++i) {\n          item = argops[i];\n          item.op.targets().remove(this);\n        }\n\n        this._argops = null;\n        this._update = null;\n      }\n    }\n\n    return argval;\n  },\n\n  /**\n   * Detach this operator from the dataflow.\n   * Unregisters listeners on upstream dependencies.\n   */\n  detach() {\n    const argops = this._argops;\n    let i, n, item, op;\n\n    if (argops) {\n      for (i = 0, n = argops.length; i < n; ++i) {\n        item = argops[i];\n        op = item.op;\n\n        if (op._targets) {\n          op._targets.remove(this);\n        }\n      }\n    } // remove references to the source and pulse object,\n    // if present, to prevent memory leaks of old data.\n\n\n    this.pulse = null;\n    this.source = null;\n  },\n\n  /**\n   * Delegate method to perform operator processing.\n   * Subclasses can override this method to perform custom processing.\n   * By default, it marshalls parameters and calls the update function\n   * if that function is defined. If the update function does not\n   * change the operator value then StopPropagation is returned.\n   * If no update function is defined, this method does nothing.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return The output pulse or StopPropagation. A falsy return value\n   *   (including undefined) will let the input pulse pass through.\n   */\n  evaluate(pulse) {\n    const update = this._update;\n\n    if (update) {\n      const params = this.marshall(pulse.stamp),\n            v = update.call(this, params, pulse);\n      params.clear();\n\n      if (v !== this.value) {\n        this.value = v;\n      } else if (!this.modified()) {\n        return pulse.StopPropagation;\n      }\n    }\n  },\n\n  /**\n   * Run this operator for the current pulse. If this operator has already\n   * been run at (or after) the pulse timestamp, returns StopPropagation.\n   * Internally, this method calls {@link evaluate} to perform processing.\n   * If {@link evaluate} returns a falsy value, the input pulse is returned.\n   * This method should NOT be overridden, instead overrride {@link evaluate}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return the output pulse for this operator (or StopPropagation)\n   */\n  run(pulse) {\n    if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n    let rv;\n\n    if (this.skip()) {\n      this.skip(false);\n      rv = 0;\n    } else {\n      rv = this.evaluate(pulse);\n    }\n\n    return this.pulse = rv || pulse;\n  }\n\n};\n\n/**\n * Add an operator to the dataflow graph. This function accepts a\n * variety of input argument types. The basic signature supports an\n * initial value, update function and parameters. If the first parameter\n * is an Operator instance, it will be added directly. If it is a\n * constructor for an Operator subclass, a new instance will be instantiated.\n * Otherwise, if the first parameter is a function instance, it will be used\n * as the update function and a null initial value is assumed.\n * @param {*} init - One of: the operator to add, the initial value of\n *   the operator, an operator class to instantiate, or an update function.\n * @param {function} [update] - The operator update function.\n * @param {object} [params] - The operator parameters.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n *   listen for changes to upstream operators included as parameters.\n * @return {Operator} - The added operator.\n */\n\nfunction add (init, update, params, react) {\n  let shift = 1,\n      op;\n\n  if (init instanceof Operator) {\n    op = init;\n  } else if (init && init.prototype instanceof Operator) {\n    op = new init();\n  } else if (isFunction(init)) {\n    op = new Operator(null, init);\n  } else {\n    shift = 0;\n    op = new Operator(init, update);\n  }\n\n  this.rank(op);\n\n  if (shift) {\n    react = params;\n    params = update;\n  }\n\n  if (params) this.connect(op, op.parameters(params, react));\n  this.touch(op);\n  return op;\n}\n\n/**\n * Connect a target operator as a dependent of source operators.\n * If necessary, this method will rerank the target operator and its\n * dependents to ensure propagation proceeds in a topologically sorted order.\n * @param {Operator} target - The target operator.\n * @param {Array<Operator>} - The source operators that should propagate\n *   to the target operator.\n */\nfunction connect (target, sources) {\n  const targetRank = target.rank,\n        n = sources.length;\n\n  for (let i = 0; i < n; ++i) {\n    if (targetRank < sources[i].rank) {\n      this.rerank(target);\n      return;\n    }\n  }\n}\n\nlet STREAM_ID = 0;\n/**\n * Models an event stream.\n * @constructor\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n *   Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n *   new event values.\n * @param {function(Object)} [receive] - Event callback function to invoke\n *   upon receipt of a new event. Use to override standard event processing.\n */\n\nfunction EventStream(filter, apply, receive) {\n  this.id = ++STREAM_ID;\n  this.value = null;\n  if (receive) this.receive = receive;\n  if (filter) this._filter = filter;\n  if (apply) this._apply = apply;\n}\n/**\n * Creates a new event stream instance with the provided\n * (optional) filter, apply and receive functions.\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n *   Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n *   new event values.\n * @see EventStream\n */\n\nfunction stream(filter, apply, receive) {\n  return new EventStream(filter, apply, receive);\n}\nEventStream.prototype = {\n  _filter: truthy,\n  _apply: identity,\n\n  targets() {\n    return this._targets || (this._targets = UniqueList(id));\n  },\n\n  consume(_) {\n    if (!arguments.length) return !!this._consume;\n    this._consume = !!_;\n    return this;\n  },\n\n  receive(evt) {\n    if (this._filter(evt)) {\n      const val = this.value = this._apply(evt),\n            trg = this._targets,\n            n = trg ? trg.length : 0;\n\n      for (let i = 0; i < n; ++i) trg[i].receive(val);\n\n      if (this._consume) {\n        evt.preventDefault();\n        evt.stopPropagation();\n      }\n    }\n  },\n\n  filter(filter) {\n    const s = stream(filter);\n    this.targets().add(s);\n    return s;\n  },\n\n  apply(apply) {\n    const s = stream(null, apply);\n    this.targets().add(s);\n    return s;\n  },\n\n  merge() {\n    const s = stream();\n    this.targets().add(s);\n\n    for (let i = 0, n = arguments.length; i < n; ++i) {\n      arguments[i].targets().add(s);\n    }\n\n    return s;\n  },\n\n  throttle(pause) {\n    let t = -1;\n    return this.filter(() => {\n      const now = Date.now();\n\n      if (now - t > pause) {\n        t = now;\n        return 1;\n      } else {\n        return 0;\n      }\n    });\n  },\n\n  debounce(delay) {\n    const s = stream();\n    this.targets().add(stream(null, null, debounce(delay, e => {\n      const df = e.dataflow;\n      s.receive(e);\n      if (df && df.run) df.run();\n    })));\n    return s;\n  },\n\n  between(a, b) {\n    let active = false;\n    a.targets().add(stream(null, null, () => active = true));\n    b.targets().add(stream(null, null, () => active = false));\n    return this.filter(() => active);\n  },\n\n  detach() {\n    // ensures compatibility with operators (#2753)\n    // remove references to other streams and filter functions that may\n    // be bound to subcontexts that need to be garbage collected.\n    this._filter = truthy;\n    this._targets = null;\n  }\n\n};\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor. The input must\n *  support the addEventListener method.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @param {function(object): *} [apply] - Event application function.\n *   If provided, this function will be invoked and the result will be\n *   used as the downstream event value.\n * @return {EventStream}\n */\n\nfunction events (source, type, filter, apply) {\n  const df = this,\n        s = stream(filter, apply),\n        send = function (e) {\n    e.dataflow = df;\n\n    try {\n      s.receive(e);\n    } catch (error) {\n      df.error(error);\n    } finally {\n      df.run();\n    }\n  };\n\n  let sources;\n\n  if (typeof source === 'string' && typeof document !== 'undefined') {\n    sources = document.querySelectorAll(source);\n  } else {\n    sources = array(source);\n  }\n\n  const n = sources.length;\n\n  for (let i = 0; i < n; ++i) {\n    sources[i].addEventListener(type, send);\n  }\n\n  return s;\n}\n\nfunction parse(data, format) {\n  const locale = this.locale();\n  return read(data, format, locale.timeParse, locale.utcParse);\n}\n/**\n * Ingests new data into the dataflow. First parses the data using the\n * vega-loader read method, then pulses a changeset to the target operator.\n * @param {Operator} target - The Operator to target with ingested data,\n *   typically a Collect transform instance.\n * @param {*} data - The input data, prior to parsing. For JSON this may\n *   be a string or an object. For CSV, TSV, etc should be a string.\n * @param {object} format - The data format description for parsing\n *   loaded data. This object is passed to the vega-loader read method.\n * @returns {Dataflow}\n */\n\nfunction ingest(target, data, format) {\n  data = this.parse(data, format);\n  return this.pulse(target, this.changeset().insert(data));\n}\n/**\n * Request data from an external source, parse it, and return a Promise.\n * @param {string} url - The URL from which to load the data. This string\n *   is passed to the vega-loader load method.\n * @param {object} [format] - The data format description for parsing\n *   loaded data. This object is passed to the vega-loader read method.\n * @return {Promise} A Promise that resolves upon completion of the request.\n *   The resolved object contains the following properties:\n *   - data: an array of parsed data (or null upon error)\n *   - status: a code for success (0), load fail (-1), or parse fail (-2)\n */\n\nasync function request(url, format) {\n  const df = this;\n  let status = 0,\n      data;\n\n  try {\n    data = await df.loader().load(url, {\n      context: 'dataflow',\n      response: responseType(format && format.type)\n    });\n\n    try {\n      data = df.parse(data, format);\n    } catch (err) {\n      status = -2;\n      df.warn('Data ingestion failed', url, err);\n    }\n  } catch (err) {\n    status = -1;\n    df.warn('Loading failed', url, err);\n  }\n\n  return {\n    data,\n    status\n  };\n}\nasync function preload(target, url, format) {\n  const df = this,\n        pending = df._pending || loadPending(df);\n  pending.requests += 1;\n  const res = await df.request(url, format);\n  df.pulse(target, df.changeset().remove(truthy).insert(res.data || []));\n  pending.done();\n  return res;\n}\n\nfunction loadPending(df) {\n  let accept;\n  const pending = new Promise(a => accept = a);\n  pending.requests = 0;\n\n  pending.done = () => {\n    if (--pending.requests === 0) {\n      df._pending = null;\n      accept(df);\n    }\n  };\n\n  return df._pending = pending;\n}\n\nconst SKIP = {\n  skip: true\n};\n/**\n * Perform operator updates in response to events. Applies an\n * update function to compute a new operator value. If the update function\n * returns a {@link ChangeSet}, the operator will be pulsed with those tuple\n * changes. Otherwise, the operator value will be updated to the return value.\n * @param {EventStream|Operator} source - The event source to react to.\n *   This argument can be either an EventStream or an Operator.\n * @param {Operator|function(object):Operator} target - The operator to update.\n *   This argument can either be an Operator instance or (if the source\n *   argument is an EventStream), a function that accepts an event object as\n *   input and returns an Operator to target.\n * @param {function(Parameters,Event): *} [update] - Optional update function\n *   to compute the new operator value, or a literal value to set. Update\n *   functions expect to receive a parameter object and event as arguments.\n *   This function can either return a new operator value or (if the source\n *   argument is an EventStream) a {@link ChangeSet} instance to pulse\n *   the target operator with tuple changes.\n * @param {object} [params] - The update function parameters.\n * @param {object} [options] - Additional options hash. If not overridden,\n *   updated operators will be skipped by default.\n * @param {boolean} [options.skip] - If true, the operator will\n *  be skipped: it will not be evaluated, but its dependents will be.\n * @param {boolean} [options.force] - If true, the operator will\n *   be re-evaluated even if its value has not changed.\n * @return {Dataflow}\n */\n\nfunction on (source, target, update, params, options) {\n  const fn = source instanceof Operator ? onOperator : onStream;\n  fn(this, source, target, update, params, options);\n  return this;\n}\n\nfunction onStream(df, stream, target, update, params, options) {\n  const opt = extend({}, options, SKIP);\n  let func, op;\n  if (!isFunction(target)) target = constant(target);\n\n  if (update === undefined) {\n    func = e => df.touch(target(e));\n  } else if (isFunction(update)) {\n    op = new Operator(null, update, params, false);\n\n    func = e => {\n      op.evaluate(e);\n      const t = target(e),\n            v = op.value;\n      isChangeSet(v) ? df.pulse(t, v, options) : df.update(t, v, opt);\n    };\n  } else {\n    func = e => df.update(target(e), update, opt);\n  }\n\n  stream.apply(func);\n}\n\nfunction onOperator(df, source, target, update, params, options) {\n  if (update === undefined) {\n    source.targets().add(target);\n  } else {\n    const opt = options || {},\n          op = new Operator(null, updater(target, update), params, false);\n    op.modified(opt.force);\n    op.rank = source.rank; // immediately follow source\n\n    source.targets().add(op); // add dependency\n\n    if (target) {\n      op.skip(true); // skip first invocation\n\n      op.value = target.value; // initialize value\n\n      op.targets().add(target); // chain dependencies\n\n      df.connect(target, [op]); // rerank as needed, #1672\n    }\n  }\n}\n\nfunction updater(target, update) {\n  update = isFunction(update) ? update : constant(update);\n  return target ? function (_, pulse) {\n    const value = update(_, pulse);\n\n    if (!target.skip()) {\n      target.skip(value !== this.value).value = value;\n    }\n\n    return value;\n  } : update;\n}\n\n/**\n * Assigns a rank to an operator. Ranks are assigned in increasing order\n * by incrementing an internal rank counter.\n * @param {Operator} op - The operator to assign a rank.\n */\n\nfunction rank(op) {\n  op.rank = ++this._rank;\n}\n/**\n * Re-ranks an operator and all downstream target dependencies. This\n * is necessary when upstream dependencies of higher rank are added to\n * a target operator.\n * @param {Operator} op - The operator to re-rank.\n */\n\nfunction rerank(op) {\n  const queue = [op];\n  let cur, list, i;\n\n  while (queue.length) {\n    this.rank(cur = queue.pop());\n\n    if (list = cur._targets) {\n      for (i = list.length; --i >= 0;) {\n        queue.push(cur = list[i]);\n        if (cur === op) error('Cycle detected in dataflow graph.');\n      }\n    }\n  }\n}\n\n/**\n * Sentinel value indicating pulse propagation should stop.\n */\n\nconst StopPropagation = {}; // Pulse visit type flags\n\nconst ADD = 1 << 0,\n      REM = 1 << 1,\n      MOD = 1 << 2,\n      ADD_REM = ADD | REM,\n      ADD_MOD = ADD | MOD,\n      ALL = ADD | REM | MOD,\n      REFLOW = 1 << 3,\n      SOURCE = 1 << 4,\n      NO_SOURCE = 1 << 5,\n      NO_FIELDS = 1 << 6;\n/**\n * A Pulse enables inter-operator communication during a run of the\n * dataflow graph. In addition to the current timestamp, a pulse may also\n * contain a change-set of added, removed or modified data tuples, as well as\n * a pointer to a full backing data source. Tuple change sets may not\n * be fully materialized; for example, to prevent needless array creation\n * a change set may include larger arrays and corresponding filter functions.\n * The pulse provides a {@link visit} method to enable proper and efficient\n * iteration over requested data tuples.\n *\n * In addition, each pulse can track modification flags for data tuple fields.\n * Responsible transform operators should call the {@link modifies} method to\n * indicate changes to data fields. The {@link modified} method enables\n * querying of this modification state.\n *\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The current propagation timestamp.\n * @param {string} [encode] - An optional encoding set name, which is then\n *   accessible as Pulse.encode. Operators can respond to (or ignore) this\n *   setting as appropriate. This parameter can be used in conjunction with\n *   the Encode transform in the vega-encode module.\n */\n\nfunction Pulse(dataflow, stamp, encode) {\n  this.dataflow = dataflow;\n  this.stamp = stamp == null ? -1 : stamp;\n  this.add = [];\n  this.rem = [];\n  this.mod = [];\n  this.fields = null;\n  this.encode = encode || null;\n}\n\nfunction materialize(data, filter) {\n  const out = [];\n  visitArray(data, filter, _ => out.push(_));\n  return out;\n}\n\nfunction filter(pulse, flags) {\n  const map = {};\n  pulse.visit(flags, t => {\n    map[tupleid(t)] = 1;\n  });\n  return t => map[tupleid(t)] ? null : t;\n}\n\nfunction addFilter(a, b) {\n  return a ? (t, i) => a(t, i) && b(t, i) : b;\n}\n\nPulse.prototype = {\n  /**\n   * Sentinel value indicating pulse propagation should stop.\n   */\n  StopPropagation,\n\n  /**\n   * Boolean flag indicating ADD (added) tuples.\n   */\n  ADD,\n\n  /**\n   * Boolean flag indicating REM (removed) tuples.\n   */\n  REM,\n\n  /**\n   * Boolean flag indicating MOD (modified) tuples.\n   */\n  MOD,\n\n  /**\n   * Boolean flag indicating ADD (added) and REM (removed) tuples.\n   */\n  ADD_REM,\n\n  /**\n   * Boolean flag indicating ADD (added) and MOD (modified) tuples.\n   */\n  ADD_MOD,\n\n  /**\n   * Boolean flag indicating ADD, REM and MOD tuples.\n   */\n  ALL,\n\n  /**\n   * Boolean flag indicating all tuples in a data source\n   * except for the ADD, REM and MOD tuples.\n   */\n  REFLOW,\n\n  /**\n   * Boolean flag indicating a 'pass-through' to a\n   * backing data source, ignoring ADD, REM and MOD tuples.\n   */\n  SOURCE,\n\n  /**\n   * Boolean flag indicating that source data should be\n   * suppressed when creating a forked pulse.\n   */\n  NO_SOURCE,\n\n  /**\n   * Boolean flag indicating that field modifications should be\n   * suppressed when creating a forked pulse.\n   */\n  NO_FIELDS,\n\n  /**\n   * Creates a new pulse based on the values of this pulse.\n   * The dataflow, time stamp and field modification values are copied over.\n   * By default, new empty ADD, REM and MOD arrays are created.\n   * @param {number} flags - Integer of boolean flags indicating which (if any)\n   *   tuple arrays should be copied to the new pulse. The supported flag values\n   *   are ADD, REM and MOD. Array references are copied directly: new array\n   *   instances are not created.\n   * @return {Pulse} - The forked pulse instance.\n   * @see init\n   */\n  fork(flags) {\n    return new Pulse(this.dataflow).init(this, flags);\n  },\n\n  /**\n   * Creates a copy of this pulse with new materialized array\n   * instances for the ADD, REM, MOD, and SOURCE arrays.\n   * The dataflow, time stamp and field modification values are copied over.\n   * @return {Pulse} - The cloned pulse instance.\n   * @see init\n   */\n  clone() {\n    const p = this.fork(ALL);\n    p.add = p.add.slice();\n    p.rem = p.rem.slice();\n    p.mod = p.mod.slice();\n    if (p.source) p.source = p.source.slice();\n    return p.materialize(ALL | SOURCE);\n  },\n\n  /**\n   * Returns a pulse that adds all tuples from a backing source. This is\n   * useful for cases where operators are added to a dataflow after an\n   * upstream data pipeline has already been processed, ensuring that\n   * new operators can observe all tuples within a stream.\n   * @return {Pulse} - A pulse instance with all source tuples included\n   *   in the add array. If the current pulse already has all source\n   *   tuples in its add array, it is returned directly. If the current\n   *   pulse does not have a backing source, it is returned directly.\n   */\n  addAll() {\n    let p = this;\n    const reuse = !p.source || p.add === p.rem // special case for indexed set (e.g., crossfilter)\n    || !p.rem.length && p.source.length === p.add.length;\n\n    if (reuse) {\n      return p;\n    } else {\n      p = new Pulse(this.dataflow).init(this);\n      p.add = p.source;\n      p.rem = []; // new operators can ignore rem #2769\n\n      return p;\n    }\n  },\n\n  /**\n   * Initialize this pulse based on the values of another pulse. This method\n   * is used internally by {@link fork} to initialize a new forked tuple.\n   * The dataflow, time stamp and field modification values are copied over.\n   * By default, new empty ADD, REM and MOD arrays are created.\n   * @param {Pulse} src - The source pulse to copy from.\n   * @param {number} flags - Integer of boolean flags indicating which (if any)\n   *   tuple arrays should be copied to the new pulse. The supported flag values\n   *   are ADD, REM and MOD. Array references are copied directly: new array\n   *   instances are not created. By default, source data arrays are copied\n   *   to the new pulse. Use the NO_SOURCE flag to enforce a null source.\n   * @return {Pulse} - Returns this Pulse instance.\n   */\n  init(src, flags) {\n    const p = this;\n    p.stamp = src.stamp;\n    p.encode = src.encode;\n\n    if (src.fields && !(flags & NO_FIELDS)) {\n      p.fields = src.fields;\n    }\n\n    if (flags & ADD) {\n      p.addF = src.addF;\n      p.add = src.add;\n    } else {\n      p.addF = null;\n      p.add = [];\n    }\n\n    if (flags & REM) {\n      p.remF = src.remF;\n      p.rem = src.rem;\n    } else {\n      p.remF = null;\n      p.rem = [];\n    }\n\n    if (flags & MOD) {\n      p.modF = src.modF;\n      p.mod = src.mod;\n    } else {\n      p.modF = null;\n      p.mod = [];\n    }\n\n    if (flags & NO_SOURCE) {\n      p.srcF = null;\n      p.source = null;\n    } else {\n      p.srcF = src.srcF;\n      p.source = src.source;\n      if (src.cleans) p.cleans = src.cleans;\n    }\n\n    return p;\n  },\n\n  /**\n   * Schedules a function to run after pulse propagation completes.\n   * @param {function} func - The function to run.\n   */\n  runAfter(func) {\n    this.dataflow.runAfter(func);\n  },\n\n  /**\n   * Indicates if tuples have been added, removed or modified.\n   * @param {number} [flags] - The tuple types (ADD, REM or MOD) to query.\n   *   Defaults to ALL, returning true if any tuple type has changed.\n   * @return {boolean} - Returns true if one or more queried tuple types have\n   *   changed, false otherwise.\n   */\n  changed(flags) {\n    const f = flags || ALL;\n    return f & ADD && this.add.length || f & REM && this.rem.length || f & MOD && this.mod.length;\n  },\n\n  /**\n   * Forces a \"reflow\" of tuple values, such that all tuples in the backing\n   * source are added to the MOD set, unless already present in the ADD set.\n   * @param {boolean} [fork=false] - If true, returns a forked copy of this\n   *   pulse, and invokes reflow on that derived pulse.\n   * @return {Pulse} - The reflowed pulse instance.\n   */\n  reflow(fork) {\n    if (fork) return this.fork(ALL).reflow();\n    const len = this.add.length,\n          src = this.source && this.source.length;\n\n    if (src && src !== len) {\n      this.mod = this.source;\n      if (len) this.filter(MOD, filter(this, ADD));\n    }\n\n    return this;\n  },\n\n  /**\n   * Get/set metadata to pulse requesting garbage collection\n   * to reclaim currently unused resources.\n   */\n  clean(value) {\n    if (arguments.length) {\n      this.cleans = !!value;\n      return this;\n    } else {\n      return this.cleans;\n    }\n  },\n\n  /**\n   * Marks one or more data field names as modified to assist dependency\n   * tracking and incremental processing by transform operators.\n   * @param {string|Array<string>} _ - The field(s) to mark as modified.\n   * @return {Pulse} - This pulse instance.\n   */\n  modifies(_) {\n    const hash = this.fields || (this.fields = {});\n\n    if (isArray(_)) {\n      _.forEach(f => hash[f] = true);\n    } else {\n      hash[_] = true;\n    }\n\n    return this;\n  },\n\n  /**\n   * Checks if one or more data fields have been modified during this pulse\n   * propagation timestamp.\n   * @param {string|Array<string>} _ - The field(s) to check for modified.\n   * @param {boolean} nomod - If true, will check the modified flag even if\n   *   no mod tuples exist. If false (default), mod tuples must be present.\n   * @return {boolean} - Returns true if any of the provided fields has been\n   *   marked as modified, false otherwise.\n   */\n  modified(_, nomod) {\n    const fields = this.fields;\n    return !((nomod || this.mod.length) && fields) ? false : !arguments.length ? !!fields : isArray(_) ? _.some(f => fields[f]) : fields[_];\n  },\n\n  /**\n   * Adds a filter function to one more tuple sets. Filters are applied to\n   * backing tuple arrays, to determine the actual set of tuples considered\n   * added, removed or modified. They can be used to delay materialization of\n   * a tuple set in order to avoid expensive array copies. In addition, the\n   * filter functions can serve as value transformers: unlike standard predicate\n   * function (which return boolean values), Pulse filters should return the\n   * actual tuple value to process. If a tuple set is already filtered, the\n   * new filter function will be appended into a conjuntive ('and') query.\n   * @param {number} flags - Flags indicating the tuple set(s) to filter.\n   * @param {function(*):object} filter - Filter function that will be applied\n   *   to the tuple set array, and should return a data tuple if the value\n   *   should be included in the tuple set, and falsy (or null) otherwise.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  filter(flags, filter) {\n    const p = this;\n    if (flags & ADD) p.addF = addFilter(p.addF, filter);\n    if (flags & REM) p.remF = addFilter(p.remF, filter);\n    if (flags & MOD) p.modF = addFilter(p.modF, filter);\n    if (flags & SOURCE) p.srcF = addFilter(p.srcF, filter);\n    return p;\n  },\n\n  /**\n   * Materialize one or more tuple sets in this pulse. If the tuple set(s) have\n   * a registered filter function, it will be applied and the tuple set(s) will\n   * be replaced with materialized tuple arrays.\n   * @param {number} flags - Flags indicating the tuple set(s) to materialize.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  materialize(flags) {\n    flags = flags || ALL;\n    const p = this;\n\n    if (flags & ADD && p.addF) {\n      p.add = materialize(p.add, p.addF);\n      p.addF = null;\n    }\n\n    if (flags & REM && p.remF) {\n      p.rem = materialize(p.rem, p.remF);\n      p.remF = null;\n    }\n\n    if (flags & MOD && p.modF) {\n      p.mod = materialize(p.mod, p.modF);\n      p.modF = null;\n    }\n\n    if (flags & SOURCE && p.srcF) {\n      p.source = p.source.filter(p.srcF);\n      p.srcF = null;\n    }\n\n    return p;\n  },\n\n  /**\n   * Visit one or more tuple sets in this pulse.\n   * @param {number} flags - Flags indicating the tuple set(s) to visit.\n   *   Legal values are ADD, REM, MOD and SOURCE (if a backing data source\n   *   has been set).\n   * @param {function(object):*} - Visitor function invoked per-tuple.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  visit(flags, visitor) {\n    const p = this,\n          v = visitor;\n\n    if (flags & SOURCE) {\n      visitArray(p.source, p.srcF, v);\n      return p;\n    }\n\n    if (flags & ADD) visitArray(p.add, p.addF, v);\n    if (flags & REM) visitArray(p.rem, p.remF, v);\n    if (flags & MOD) visitArray(p.mod, p.modF, v);\n    const src = p.source;\n\n    if (flags & REFLOW && src) {\n      const sum = p.add.length + p.mod.length;\n\n      if (sum === src.length) ; else if (sum) {\n        visitArray(src, filter(p, ADD_MOD), v);\n      } else {\n        // if no add/rem/mod tuples, visit source\n        visitArray(src, p.srcF, v);\n      }\n    }\n\n    return p;\n  }\n\n};\n\n/**\n * Represents a set of multiple pulses. Used as input for operators\n * that accept multiple pulses at a time. Contained pulses are\n * accessible via the public \"pulses\" array property. This pulse doe\n * not carry added, removed or modified tuples directly. However,\n * the visit method can be used to traverse all such tuples contained\n * in sub-pulses with a timestamp matching this parent multi-pulse.\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The timestamp.\n * @param {Array<Pulse>} pulses - The sub-pulses for this multi-pulse.\n */\n\nfunction MultiPulse(dataflow, stamp, pulses, encode) {\n  const p = this,\n        n = pulses.length;\n  let c = 0;\n  this.dataflow = dataflow;\n  this.stamp = stamp;\n  this.fields = null;\n  this.encode = encode || null;\n  this.pulses = pulses;\n\n  for (let i = 0; i < n; ++i) {\n    const pulse = pulses[i];\n    if (pulse.stamp !== stamp) continue;\n\n    if (pulse.fields) {\n      const hash = p.fields || (p.fields = {});\n\n      for (const f in pulse.fields) {\n        hash[f] = 1;\n      }\n    }\n\n    if (pulse.changed(p.ADD)) c |= p.ADD;\n    if (pulse.changed(p.REM)) c |= p.REM;\n    if (pulse.changed(p.MOD)) c |= p.MOD;\n  }\n\n  this.changes = c;\n}\ninherits(MultiPulse, Pulse, {\n  /**\n   * Creates a new pulse based on the values of this pulse.\n   * The dataflow, time stamp and field modification values are copied over.\n   * @return {Pulse}\n   */\n  fork(flags) {\n    const p = new Pulse(this.dataflow).init(this, flags & this.NO_FIELDS);\n\n    if (flags !== undefined) {\n      if (flags & p.ADD) this.visit(p.ADD, t => p.add.push(t));\n      if (flags & p.REM) this.visit(p.REM, t => p.rem.push(t));\n      if (flags & p.MOD) this.visit(p.MOD, t => p.mod.push(t));\n    }\n\n    return p;\n  },\n\n  changed(flags) {\n    return this.changes & flags;\n  },\n\n  modified(_) {\n    const p = this,\n          fields = p.fields;\n    return !(fields && p.changes & p.MOD) ? 0 : isArray(_) ? _.some(f => fields[f]) : fields[_];\n  },\n\n  filter() {\n    error('MultiPulse does not support filtering.');\n  },\n\n  materialize() {\n    error('MultiPulse does not support materialization.');\n  },\n\n  visit(flags, visitor) {\n    const p = this,\n          pulses = p.pulses,\n          n = pulses.length;\n    let i = 0;\n\n    if (flags & p.SOURCE) {\n      for (; i < n; ++i) {\n        pulses[i].visit(flags, visitor);\n      }\n    } else {\n      for (; i < n; ++i) {\n        if (pulses[i].stamp === p.stamp) {\n          pulses[i].visit(flags, visitor);\n        }\n      }\n    }\n\n    return p;\n  }\n\n});\n\n/* eslint-disable require-atomic-updates */\n/**\n * Evaluates the dataflow and returns a Promise that resolves when pulse\n * propagation completes. This method will increment the current timestamp\n * and process all updated, pulsed and touched operators. When invoked for\n * the first time, all registered operators will be processed. This method\n * should not be invoked by third-party clients, use {@link runAsync} or\n * {@link run} instead.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n *   evaluation completes.\n */\n\nasync function evaluate(encode, prerun, postrun) {\n  const df = this,\n        async = []; // if the pulse value is set, this is a re-entrant call\n\n  if (df._pulse) return reentrant(df); // wait for pending datasets to load\n\n  if (df._pending) await df._pending; // invoke prerun function, if provided\n\n  if (prerun) await asyncCallback(df, prerun); // exit early if there are no updates\n\n  if (!df._touched.length) {\n    df.debug('Dataflow invoked, but nothing to do.');\n    return df;\n  } // increment timestamp clock\n\n\n  const stamp = ++df._clock; // set the current pulse\n\n  df._pulse = new Pulse(df, stamp, encode); // initialize priority queue, reset touched operators\n\n  df._touched.forEach(op => df._enqueue(op, true));\n\n  df._touched = UniqueList(id);\n  let count = 0,\n      op,\n      next,\n      error;\n\n  try {\n    while (df._heap.size() > 0) {\n      // dequeue operator with highest priority\n      op = df._heap.pop(); // re-queue if rank changed\n\n      if (op.rank !== op.qrank) {\n        df._enqueue(op, true);\n\n        continue;\n      } // otherwise, evaluate the operator\n\n\n      next = op.run(df._getPulse(op, encode));\n\n      if (next.then) {\n        // await if operator returns a promise directly\n        next = await next;\n      } else if (next.async) {\n        // queue parallel asynchronous execution\n        async.push(next.async);\n        next = StopPropagation;\n      } // propagate evaluation, enqueue dependent operators\n\n\n      if (next !== StopPropagation) {\n        if (op._targets) op._targets.forEach(op => df._enqueue(op));\n      } // increment visit counter\n\n\n      ++count;\n    }\n  } catch (err) {\n    df._heap.clear();\n\n    error = err;\n  } // reset pulse map\n\n\n  df._input = {};\n  df._pulse = null;\n  df.debug(`Pulse ${stamp}: ${count} operators`);\n\n  if (error) {\n    df._postrun = [];\n    df.error(error);\n  } // invoke callbacks queued via runAfter\n\n\n  if (df._postrun.length) {\n    const pr = df._postrun.sort((a, b) => b.priority - a.priority);\n\n    df._postrun = [];\n\n    for (let i = 0; i < pr.length; ++i) {\n      await asyncCallback(df, pr[i].callback);\n    }\n  } // invoke postrun function, if provided\n\n\n  if (postrun) await asyncCallback(df, postrun); // handle non-blocking asynchronous callbacks\n\n  if (async.length) {\n    Promise.all(async).then(cb => df.runAsync(null, () => {\n      cb.forEach(f => {\n        try {\n          f(df);\n        } catch (err) {\n          df.error(err);\n        }\n      });\n    }));\n  }\n\n  return df;\n}\n/**\n * Queues dataflow evaluation to run once any other queued evaluations have\n * completed and returns a Promise that resolves when the queued pulse\n * propagation completes. If provided, a callback function will be invoked\n * immediately before evaluation commences. This method will ensure a\n * separate evaluation is invoked for each time it is called.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n *   evaluation completes.\n */\n\nasync function runAsync(encode, prerun, postrun) {\n  // await previously queued functions\n  while (this._running) await this._running; // run dataflow, manage running promise\n\n\n  const clear = () => this._running = null;\n\n  (this._running = this.evaluate(encode, prerun, postrun)).then(clear, clear);\n  return this._running;\n}\n/**\n * Requests dataflow evaluation and the immediately returns this dataflow\n * instance. If there are pending data loading or other asynchronous\n * operations, the dataflow will evaluate asynchronously after this method\n * has been invoked. To track when dataflow evaluation completes, use the\n * {@link runAsync} method instead. This method will raise an error if\n * invoked while the dataflow is already in the midst of evaluation.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode module.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Dataflow} - This dataflow instance.\n */\n\nfunction run(encode, prerun, postrun) {\n  return this._pulse ? reentrant(this) : (this.evaluate(encode, prerun, postrun), this);\n}\n/**\n * Schedules a callback function to be invoked after the current pulse\n * propagation completes. If no propagation is currently occurring,\n * the function is invoked immediately. Callbacks scheduled via runAfter\n * are invoked immediately upon completion of the current cycle, before\n * any request queued via runAsync. This method is primarily intended for\n * internal use. Third-party callers using runAfter to schedule a callback\n * that invokes {@link run} or {@link runAsync} should not use this method,\n * but instead use {@link runAsync} with prerun or postrun arguments.\n * @param {function(Dataflow)} callback - The callback function to run.\n *   The callback will be invoked with this Dataflow instance as its\n *   sole argument.\n * @param {boolean} enqueue - A boolean flag indicating that the\n *   callback should be queued up to run after the next propagation\n *   cycle, suppressing immediate invocation when propagation is not\n *   currently occurring.\n * @param {number} [priority] - A priority value used to sort registered\n *   callbacks to determine execution order. This argument is intended\n *   for internal Vega use only.\n */\n\nfunction runAfter(callback, enqueue, priority) {\n  if (this._pulse || enqueue) {\n    // pulse propagation is currently running, queue to run after\n    this._postrun.push({\n      priority: priority || 0,\n      callback: callback\n    });\n  } else {\n    // pulse propagation already complete, invoke immediately\n    try {\n      callback(this);\n    } catch (err) {\n      this.error(err);\n    }\n  }\n}\n/**\n * Raise an error for re-entrant dataflow evaluation.\n */\n\nfunction reentrant(df) {\n  df.error('Dataflow already running. Use runAsync() to chain invocations.');\n  return df;\n}\n/**\n * Enqueue an operator into the priority queue for evaluation. The operator\n * will be enqueued if it has no registered pulse for the current cycle, or if\n * the force argument is true. Upon enqueue, this method also sets the\n * operator's qrank to the current rank value.\n * @param {Operator} op - The operator to enqueue.\n * @param {boolean} [force] - A flag indicating if the operator should be\n *   forceably added to the queue, even if it has already been previously\n *   enqueued during the current pulse propagation. This is useful when the\n *   dataflow graph is dynamically modified and the operator rank changes.\n */\n\n\nfunction enqueue(op, force) {\n  const q = op.stamp < this._clock;\n  if (q) op.stamp = this._clock;\n\n  if (q || force) {\n    op.qrank = op.rank;\n\n    this._heap.push(op);\n  }\n}\n/**\n * Provide a correct pulse for evaluating an operator. If the operator has an\n * explicit source operator, we will try to pull the pulse(s) from it.\n * If there is an array of source operators, we build a multi-pulse.\n * Otherwise, we return a current pulse with correct source data.\n * If the pulse is the pulse map has an explicit target set, we use that.\n * Else if the pulse on the upstream source operator is current, we use that.\n * Else we use the pulse from the pulse map, but copy the source tuple array.\n * @param {Operator} op - The operator for which to get an input pulse.\n * @param {string} [encode] - An (optional) encoding set name with which to\n *   annotate the returned pulse. See {@link run} for more information.\n */\n\nfunction getPulse(op, encode) {\n  const s = op.source,\n        stamp = this._clock;\n  return s && isArray(s) ? new MultiPulse(this, stamp, s.map(_ => _.pulse), encode) : this._input[op.id] || singlePulse(this._pulse, s && s.pulse);\n}\n\nfunction singlePulse(p, s) {\n  if (s && s.stamp === p.stamp) {\n    return s;\n  }\n\n  p = p.fork();\n\n  if (s && s !== StopPropagation) {\n    p.source = s.source;\n  }\n\n  return p;\n}\n\nconst NO_OPT = {\n  skip: false,\n  force: false\n};\n/**\n * Touches an operator, scheduling it to be evaluated. If invoked outside of\n * a pulse propagation, the operator will be evaluated the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the operator\n * will be queued for evaluation if and only if the operator has not yet been\n * evaluated on the current propagation timestamp.\n * @param {Operator} op - The operator to touch.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction touch(op, options) {\n  const opt = options || NO_OPT;\n\n  if (this._pulse) {\n    // if in midst of propagation, add to priority queue\n    this._enqueue(op);\n  } else {\n    // otherwise, queue for next propagation\n    this._touched.add(op);\n  }\n\n  if (opt.skip) op.skip(true);\n  return this;\n}\n/**\n * Updates the value of the given operator.\n * @param {Operator} op - The operator to update.\n * @param {*} value - The value to set.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.force] - If true, the operator will\n *   be re-evaluated even if its value has not changed.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction update(op, value, options) {\n  const opt = options || NO_OPT;\n\n  if (op.set(value) || opt.force) {\n    this.touch(op, opt);\n  }\n\n  return this;\n}\n/**\n * Pulses an operator with a changeset of tuples. If invoked outside of\n * a pulse propagation, the pulse will be applied the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the pulse\n * will be added to the set of active pulses and will be applied if and\n * only if the target operator has not yet been evaluated on the current\n * propagation timestamp.\n * @param {Operator} op - The operator to pulse.\n * @param {ChangeSet} value - The tuple changeset to apply.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction pulse(op, changeset, options) {\n  this.touch(op, options || NO_OPT);\n  const p = new Pulse(this, this._clock + (this._pulse ? 0 : 1)),\n        t = op.pulse && op.pulse.source || [];\n  p.target = op;\n  this._input[op.id] = changeset.pulse(p, t);\n  return this;\n}\n\nfunction Heap(cmp) {\n  let nodes = [];\n  return {\n    clear: () => nodes = [],\n    size: () => nodes.length,\n    peek: () => nodes[0],\n    push: x => {\n      nodes.push(x);\n      return siftdown(nodes, 0, nodes.length - 1, cmp);\n    },\n    pop: () => {\n      const last = nodes.pop();\n      let item;\n\n      if (nodes.length) {\n        item = nodes[0];\n        nodes[0] = last;\n        siftup(nodes, 0, cmp);\n      } else {\n        item = last;\n      }\n\n      return item;\n    }\n  };\n}\n\nfunction siftdown(array, start, idx, cmp) {\n  let parent, pidx;\n  const item = array[idx];\n\n  while (idx > start) {\n    pidx = idx - 1 >> 1;\n    parent = array[pidx];\n\n    if (cmp(item, parent) < 0) {\n      array[idx] = parent;\n      idx = pidx;\n      continue;\n    }\n\n    break;\n  }\n\n  return array[idx] = item;\n}\n\nfunction siftup(array, idx, cmp) {\n  const start = idx,\n        end = array.length,\n        item = array[idx];\n  let cidx = (idx << 1) + 1,\n      ridx;\n\n  while (cidx < end) {\n    ridx = cidx + 1;\n\n    if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n      cidx = ridx;\n    }\n\n    array[idx] = array[cidx];\n    idx = cidx;\n    cidx = (idx << 1) + 1;\n  }\n\n  array[idx] = item;\n  return siftdown(array, start, idx, cmp);\n}\n\n/**\n * A dataflow graph for reactive processing of data streams.\n * @constructor\n */\n\nfunction Dataflow() {\n  this.logger(logger());\n  this.logLevel(Error);\n  this._clock = 0;\n  this._rank = 0;\n  this._locale = defaultLocale();\n\n  try {\n    this._loader = loader();\n  } catch (e) {// do nothing if loader module is unavailable\n  }\n\n  this._touched = UniqueList(id);\n  this._input = {};\n  this._pulse = null;\n  this._heap = Heap((a, b) => a.qrank - b.qrank);\n  this._postrun = [];\n}\n\nfunction logMethod(method) {\n  return function () {\n    return this._log[method].apply(this, arguments);\n  };\n}\n\nDataflow.prototype = {\n  /**\n   * The current timestamp of this dataflow. This value reflects the\n   * timestamp of the previous dataflow run. The dataflow is initialized\n   * with a stamp value of 0. The initial run of the dataflow will have\n   * a timestap of 1, and so on. This value will match the\n   * {@link Pulse.stamp} property.\n   * @return {number} - The current timestamp value.\n   */\n  stamp() {\n    return this._clock;\n  },\n\n  /**\n   * Gets or sets the loader instance to use for data file loading. A\n   * loader object must provide a \"load\" method for loading files and a\n   * \"sanitize\" method for checking URL/filename validity. Both methods\n   * should accept a URI and options hash as arguments, and return a Promise\n   * that resolves to the loaded file contents (load) or a hash containing\n   * sanitized URI data with the sanitized url assigned to the \"href\" property\n   * (sanitize).\n   * @param {object} _ - The loader instance to use.\n   * @return {object|Dataflow} - If no arguments are provided, returns\n   *   the current loader instance. Otherwise returns this Dataflow instance.\n   */\n  loader(_) {\n    if (arguments.length) {\n      this._loader = _;\n      return this;\n    } else {\n      return this._loader;\n    }\n  },\n\n  /**\n   * Gets or sets the locale instance to use for formatting and parsing\n   * string values. The locale object should be provided by the\n   * vega-format library, and include methods such as format, timeFormat,\n   * utcFormat, timeParse, and utcParse.\n   * @param {object} _ - The locale instance to use.\n   * @return {object|Dataflow} - If no arguments are provided, returns\n   *   the current locale instance. Otherwise returns this Dataflow instance.\n   */\n  locale(_) {\n    if (arguments.length) {\n      this._locale = _;\n      return this;\n    } else {\n      return this._locale;\n    }\n  },\n\n  /**\n   * Get or set the logger instance used to log messages. If no arguments are\n   * provided, returns the current logger instance. Otherwise, sets the logger\n   * and return this Dataflow instance. Provided loggers must support the full\n   * API of logger objects generated by the vega-util logger method. Note that\n   * by default the log level of the new logger will be used; use the logLevel\n   * method to adjust the log level as needed.\n   */\n  logger(logger) {\n    if (arguments.length) {\n      this._log = logger;\n      return this;\n    } else {\n      return this._log;\n    }\n  },\n\n  /**\n   * Logs an error message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit error messages.\n   */\n  error: logMethod('error'),\n\n  /**\n   * Logs a warning message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit warning messages.\n   */\n  warn: logMethod('warn'),\n\n  /**\n   * Logs a information message. By default, logged messages are written to\n   * console output. The message will only be logged if the current log level is\n   * high enough to permit information messages.\n   */\n  info: logMethod('info'),\n\n  /**\n   * Logs a debug message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit debug messages.\n   */\n  debug: logMethod('debug'),\n\n  /**\n   * Get or set the current log level. If an argument is provided, it\n   * will be used as the new log level.\n   * @param {number} [level] - Should be one of None, Warn, Info\n   * @return {number} - The current log level.\n   */\n  logLevel: logMethod('level'),\n\n  /**\n   * Empty entry threshold for garbage cleaning. Map data structures will\n   * perform cleaning once the number of empty entries exceeds this value.\n   */\n  cleanThreshold: 1e4,\n  // OPERATOR REGISTRATION\n  add,\n  connect,\n  rank,\n  rerank,\n  // OPERATOR UPDATES\n  pulse,\n  touch,\n  update,\n  changeset,\n  // DATA LOADING\n  ingest,\n  parse,\n  preload,\n  request,\n  // EVENT HANDLING\n  events,\n  on,\n  // PULSE PROPAGATION\n  evaluate,\n  run,\n  runAsync,\n  runAfter,\n  _enqueue: enqueue,\n  _getPulse: getPulse\n};\n\n/**\n * Abstract class for operators that process data tuples.\n * Subclasses must provide a {@link transform} method for operator processing.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {Operator} [source] - The operator from which to receive pulses.\n */\n\nfunction Transform(init, params) {\n  Operator.call(this, init, null, params);\n}\ninherits(Transform, Operator, {\n  /**\n   * Overrides {@link Operator.evaluate} for transform operators.\n   * Internally, this method calls {@link evaluate} to perform processing.\n   * If {@link evaluate} returns a falsy value, the input pulse is returned.\n   * This method should NOT be overridden, instead overrride {@link evaluate}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return the output pulse for this operator (or StopPropagation)\n   */\n  run(pulse) {\n    if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n    let rv;\n\n    if (this.skip()) {\n      this.skip(false);\n    } else {\n      rv = this.evaluate(pulse);\n    }\n\n    rv = rv || pulse;\n\n    if (rv.then) {\n      rv = rv.then(_ => this.pulse = _);\n    } else if (rv !== pulse.StopPropagation) {\n      this.pulse = rv;\n    }\n\n    return rv;\n  },\n\n  /**\n   * Overrides {@link Operator.evaluate} for transform operators.\n   * Marshalls parameter values and then invokes {@link transform}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n       value (including undefined) will let the input pulse pass through.\n  */\n  evaluate(pulse) {\n    const params = this.marshall(pulse.stamp),\n          out = this.transform(params, pulse);\n    params.clear();\n    return out;\n  },\n\n  /**\n   * Process incoming pulses.\n   * Subclasses should override this method to implement transforms.\n   * @param {Parameters} _ - The operator parameter values.\n   * @param {Pulse} pulse - The current dataflow pulse.\n   * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n   *   value (including undefined) will let the input pulse pass through.\n   */\n  transform() {}\n\n});\n\nconst transforms = {};\nfunction definition(type) {\n  const t = transform(type);\n  return t && t.Definition || null;\n}\nfunction transform(type) {\n  type = type && type.toLowerCase();\n  return hasOwnProperty(transforms, type) ? transforms[type] : null;\n}\n\nexport { Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, UniqueList, asyncCallback, changeset, definition, derive, ingest$1 as ingest, isChangeSet, isTuple, rederive, replace, stableCompare, transform, transforms, tupleid };\n","export default function max(values, valueof) {\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  }\n  return max;\n}\n","export default function min(values, valueof) {\n  let min;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  }\n  return min;\n}\n","import ascending from \"./ascending.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = array.length - 1, compare = ascending) {\n  while (right > left) {\n    if (right - left > 600) {\n      const n = right - left + 1;\n      const m = k - left + 1;\n      const z = Math.log(n);\n      const s = 0.5 * Math.exp(2 * z / 3);\n      const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n      const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n      const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n      quickselect(array, k, newLeft, newRight, compare);\n    }\n\n    const t = array[k];\n    let i = left;\n    let j = right;\n\n    swap(array, left, k);\n    if (compare(array[right], t) > 0) swap(array, left, right);\n\n    while (i < j) {\n      swap(array, i, j), ++i, --j;\n      while (compare(array[i], t) < 0) ++i;\n      while (compare(array[j], t) > 0) --j;\n    }\n\n    if (compare(array[left], t) === 0) swap(array, left, j);\n    else ++j, swap(array, j, right);\n\n    if (j <= k) left = j + 1;\n    if (k <= j) right = j - 1;\n  }\n  return array;\n}\n\nfunction swap(array, i, j) {\n  const t = array[i];\n  array[i] = array[j];\n  array[j] = t;\n}\n","export default function(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n","import max from \"./max.js\";\nimport min from \"./min.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\n\nexport default function quantile(values, p, valueof) {\n  values = Float64Array.from(numbers(values, valueof));\n  if (!(n = values.length)) return;\n  if ((p = +p) <= 0 || n < 2) return min(values);\n  if (p >= 1) return max(values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n      value1 = min(values.subarray(i0 + 1));\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n  if (!(n = values.length)) return;\n  if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n","export default function variance(values, valueof) {\n  let count = 0;\n  let delta;\n  let mean = 0;\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        delta = value - mean;\n        mean += delta / ++count;\n        sum += delta * (value - mean);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        delta = value - mean;\n        mean += delta / ++count;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n  if (count > 1) return sum / (count - 1);\n}\n","import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n  const v = variance(values, valueof);\n  return v ? Math.sqrt(v) : v;\n}\n","import quantile from \"./quantile.js\";\n\nexport default function(values, valueof) {\n  return quantile(values, 0.5, valueof);\n}\n","import { ascending, quantileSorted, deviation, quantile, median } from 'd3-array';\n\nfunction* numbers (values, valueof) {\n  if (valueof == null) {\n    for (let value of values) {\n      if (value != null && value !== '' && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n\n    for (let value of values) {\n      value = valueof(value, ++index, values);\n\n      if (value != null && value !== '' && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n\nfunction quantiles (array, p, f) {\n  const values = Float64Array.from(numbers(array, f)); // don't depend on return value from typed array sort call\n  // protects against undefined sort results in Safari (vega/vega-lite#4964)\n\n  values.sort(ascending);\n  return p.map(_ => quantileSorted(values, _));\n}\n\nfunction quartiles (array, f) {\n  return quantiles(array, [0.25, 0.50, 0.75], f);\n}\n\n// Theory, Practice, and Visualization. Wiley.\n\nfunction estimateBandwidth (array, f) {\n  const n = array.length,\n        d = deviation(array, f),\n        q = quartiles(array, f),\n        h = (q[2] - q[0]) / 1.34,\n        v = Math.min(d, h) || d || Math.abs(q[0]) || 1;\n  return 1.06 * v * Math.pow(n, -0.2);\n}\n\nfunction bin (_) {\n  // determine range\n  const maxb = _.maxbins || 20,\n        base = _.base || 10,\n        logb = Math.log(base),\n        div = _.divide || [5, 2];\n  let min = _.extent[0],\n      max = _.extent[1],\n      step,\n      level,\n      minstep,\n      v,\n      i,\n      n;\n  const span = _.span || max - min || Math.abs(min) || 1;\n\n  if (_.step) {\n    // if step size is explicitly given, use that\n    step = _.step;\n  } else if (_.steps) {\n    // if provided, limit choice to acceptable step sizes\n    v = span / maxb;\n\n    for (i = 0, n = _.steps.length; i < n && _.steps[i] < v; ++i);\n\n    step = _.steps[Math.max(0, i - 1)];\n  } else {\n    // else use span to determine step size\n    level = Math.ceil(Math.log(maxb) / logb);\n    minstep = _.minstep || 0;\n    step = Math.max(minstep, Math.pow(base, Math.round(Math.log(span) / logb) - level)); // increase step size if too many bins\n\n    while (Math.ceil(span / step) > maxb) {\n      step *= base;\n    } // decrease step size if allowed\n\n\n    for (i = 0, n = div.length; i < n; ++i) {\n      v = step / div[i];\n      if (v >= minstep && span / v <= maxb) step = v;\n    }\n  } // update precision, min and max\n\n\n  v = Math.log(step);\n  const precision = v >= 0 ? 0 : ~~(-v / logb) + 1,\n        eps = Math.pow(base, -precision - 1);\n\n  if (_.nice || _.nice === undefined) {\n    v = Math.floor(min / step + eps) * step;\n    min = min < v ? v - step : v;\n    max = Math.ceil(max / step) * step;\n  }\n\n  return {\n    start: min,\n    stop: max === min ? min + step : max,\n    step: step\n  };\n}\n\nvar random = Math.random;\nfunction setRandom(r) {\n  random = r;\n}\n\nfunction bootstrapCI (array, samples, alpha, f) {\n  if (!array.length) return [undefined, undefined];\n  const values = Float64Array.from(numbers(array, f)),\n        n = values.length,\n        m = samples;\n  let a, i, j, mu;\n\n  for (j = 0, mu = Array(m); j < m; ++j) {\n    for (a = 0, i = 0; i < n; ++i) {\n      a += values[~~(random() * n)];\n    }\n\n    mu[j] = a / n;\n  }\n\n  mu.sort(ascending);\n  return [quantile(mu, alpha / 2), quantile(mu, 1 - alpha / 2)];\n}\n\n// Dot density binning for dot plot construction.\n// Based on Leland Wilkinson, Dot Plots, The American Statistician, 1999.\n// https://www.cs.uic.edu/~wilkinson/Publications/dotplots.pdf\nfunction dotbin (array, step, smooth, f) {\n  f = f || (_ => _);\n\n  const n = array.length,\n        v = new Float64Array(n);\n  let i = 0,\n      j = 1,\n      a = f(array[0]),\n      b = a,\n      w = a + step,\n      x;\n\n  for (; j < n; ++j) {\n    x = f(array[j]);\n\n    if (x >= w) {\n      b = (a + b) / 2;\n\n      for (; i < j; ++i) v[i] = b;\n\n      w = x + step;\n      a = x;\n    }\n\n    b = x;\n  }\n\n  b = (a + b) / 2;\n\n  for (; i < j; ++i) v[i] = b;\n\n  return smooth ? smoothing(v, step + step / 4) : v;\n} // perform smoothing to reduce variance\n// swap points between \"adjacent\" stacks\n// Wilkinson defines adjacent as within step/4 units\n\nfunction smoothing(v, thresh) {\n  const n = v.length;\n  let a = 0,\n      b = 1,\n      c,\n      d; // get left stack\n\n  while (v[a] === v[b]) ++b;\n\n  while (b < n) {\n    // get right stack\n    c = b + 1;\n\n    while (v[b] === v[c]) ++c; // are stacks adjacent?\n    // if so, compare sizes and swap as needed\n\n\n    if (v[b] - v[b - 1] < thresh) {\n      d = b + (a + c - b - b >> 1);\n\n      while (d < b) v[d++] = v[b];\n\n      while (d > b) v[d--] = v[a];\n    } // update left stack indices\n\n\n    a = b;\n    b = c;\n  }\n\n  return v;\n}\n\nfunction lcg (seed) {\n  // Random numbers using a Linear Congruential Generator with seed value\n  // Uses glibc values from https://en.wikipedia.org/wiki/Linear_congruential_generator\n  return function () {\n    seed = (1103515245 * seed + 12345) % 2147483647;\n    return seed / 2147483647;\n  };\n}\n\nfunction integer (min, max) {\n  if (max == null) {\n    max = min;\n    min = 0;\n  }\n\n  let a, b, d;\n  const dist = {\n    min(_) {\n      if (arguments.length) {\n        a = _ || 0;\n        d = b - a;\n        return dist;\n      } else {\n        return a;\n      }\n    },\n\n    max(_) {\n      if (arguments.length) {\n        b = _ || 0;\n        d = b - a;\n        return dist;\n      } else {\n        return b;\n      }\n    },\n\n    sample() {\n      return a + Math.floor(d * random());\n    },\n\n    pdf(x) {\n      return x === Math.floor(x) && x >= a && x < b ? 1 / d : 0;\n    },\n\n    cdf(x) {\n      const v = Math.floor(x);\n      return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n    },\n\n    icdf(p) {\n      return p >= 0 && p <= 1 ? a - 1 + Math.floor(p * d) : NaN;\n    }\n\n  };\n  return dist.min(min).max(max);\n}\n\nconst SQRT2PI = Math.sqrt(2 * Math.PI);\nconst SQRT2 = Math.SQRT2;\n\nlet nextSample = NaN;\nfunction sampleNormal(mean, stdev) {\n  mean = mean || 0;\n  stdev = stdev == null ? 1 : stdev;\n  let x = 0,\n      y = 0,\n      rds,\n      c;\n\n  if (nextSample === nextSample) {\n    x = nextSample;\n    nextSample = NaN;\n  } else {\n    do {\n      x = random() * 2 - 1;\n      y = random() * 2 - 1;\n      rds = x * x + y * y;\n    } while (rds === 0 || rds > 1);\n\n    c = Math.sqrt(-2 * Math.log(rds) / rds); // Box-Muller transform\n\n    x *= c;\n    nextSample = y * c;\n  }\n\n  return mean + x * stdev;\n}\nfunction densityNormal(value, mean, stdev) {\n  stdev = stdev == null ? 1 : stdev;\n  const z = (value - (mean || 0)) / stdev;\n  return Math.exp(-0.5 * z * z) / (stdev * SQRT2PI);\n} // Approximation from West (2009)\n// Better Approximations to Cumulative Normal Functions\n\nfunction cumulativeNormal(value, mean, stdev) {\n  mean = mean || 0;\n  stdev = stdev == null ? 1 : stdev;\n  const z = (value - mean) / stdev,\n        Z = Math.abs(z);\n  let cd;\n\n  if (Z > 37) {\n    cd = 0;\n  } else {\n    const exp = Math.exp(-Z * Z / 2);\n    let sum;\n\n    if (Z < 7.07106781186547) {\n      sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n      sum = sum * Z + 6.37396220353165;\n      sum = sum * Z + 33.912866078383;\n      sum = sum * Z + 112.079291497871;\n      sum = sum * Z + 221.213596169931;\n      sum = sum * Z + 220.206867912376;\n      cd = exp * sum;\n      sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n      sum = sum * Z + 16.064177579207;\n      sum = sum * Z + 86.7807322029461;\n      sum = sum * Z + 296.564248779674;\n      sum = sum * Z + 637.333633378831;\n      sum = sum * Z + 793.826512519948;\n      sum = sum * Z + 440.413735824752;\n      cd = cd / sum;\n    } else {\n      sum = Z + 0.65;\n      sum = Z + 4 / sum;\n      sum = Z + 3 / sum;\n      sum = Z + 2 / sum;\n      sum = Z + 1 / sum;\n      cd = exp / sum / 2.506628274631;\n    }\n  }\n\n  return z > 0 ? 1 - cd : cd;\n} // Approximation of Probit function using inverse error function.\n\nfunction quantileNormal(p, mean, stdev) {\n  if (p < 0 || p > 1) return NaN;\n  return (mean || 0) + (stdev == null ? 1 : stdev) * SQRT2 * erfinv(2 * p - 1);\n} // Approximate inverse error function. Implementation from \"Approximating\n// the erfinv function\" by Mike Giles, GPU Computing Gems, volume 2, 2010.\n// Ported from Apache Commons Math, http://www.apache.org/licenses/LICENSE-2.0\n\nfunction erfinv(x) {\n  // beware that the logarithm argument must be\n  // commputed as (1.0 - x) * (1.0 + x),\n  // it must NOT be simplified as 1.0 - x * x as this\n  // would induce rounding errors near the boundaries +/-1\n  let w = -Math.log((1 - x) * (1 + x)),\n      p;\n\n  if (w < 6.25) {\n    w -= 3.125;\n    p = -3.6444120640178196996e-21;\n    p = -1.685059138182016589e-19 + p * w;\n    p = 1.2858480715256400167e-18 + p * w;\n    p = 1.115787767802518096e-17 + p * w;\n    p = -1.333171662854620906e-16 + p * w;\n    p = 2.0972767875968561637e-17 + p * w;\n    p = 6.6376381343583238325e-15 + p * w;\n    p = -4.0545662729752068639e-14 + p * w;\n    p = -8.1519341976054721522e-14 + p * w;\n    p = 2.6335093153082322977e-12 + p * w;\n    p = -1.2975133253453532498e-11 + p * w;\n    p = -5.4154120542946279317e-11 + p * w;\n    p = 1.051212273321532285e-09 + p * w;\n    p = -4.1126339803469836976e-09 + p * w;\n    p = -2.9070369957882005086e-08 + p * w;\n    p = 4.2347877827932403518e-07 + p * w;\n    p = -1.3654692000834678645e-06 + p * w;\n    p = -1.3882523362786468719e-05 + p * w;\n    p = 0.0001867342080340571352 + p * w;\n    p = -0.00074070253416626697512 + p * w;\n    p = -0.0060336708714301490533 + p * w;\n    p = 0.24015818242558961693 + p * w;\n    p = 1.6536545626831027356 + p * w;\n  } else if (w < 16.0) {\n    w = Math.sqrt(w) - 3.25;\n    p = 2.2137376921775787049e-09;\n    p = 9.0756561938885390979e-08 + p * w;\n    p = -2.7517406297064545428e-07 + p * w;\n    p = 1.8239629214389227755e-08 + p * w;\n    p = 1.5027403968909827627e-06 + p * w;\n    p = -4.013867526981545969e-06 + p * w;\n    p = 2.9234449089955446044e-06 + p * w;\n    p = 1.2475304481671778723e-05 + p * w;\n    p = -4.7318229009055733981e-05 + p * w;\n    p = 6.8284851459573175448e-05 + p * w;\n    p = 2.4031110387097893999e-05 + p * w;\n    p = -0.0003550375203628474796 + p * w;\n    p = 0.00095328937973738049703 + p * w;\n    p = -0.0016882755560235047313 + p * w;\n    p = 0.0024914420961078508066 + p * w;\n    p = -0.0037512085075692412107 + p * w;\n    p = 0.005370914553590063617 + p * w;\n    p = 1.0052589676941592334 + p * w;\n    p = 3.0838856104922207635 + p * w;\n  } else if (Number.isFinite(w)) {\n    w = Math.sqrt(w) - 5.0;\n    p = -2.7109920616438573243e-11;\n    p = -2.5556418169965252055e-10 + p * w;\n    p = 1.5076572693500548083e-09 + p * w;\n    p = -3.7894654401267369937e-09 + p * w;\n    p = 7.6157012080783393804e-09 + p * w;\n    p = -1.4960026627149240478e-08 + p * w;\n    p = 2.9147953450901080826e-08 + p * w;\n    p = -6.7711997758452339498e-08 + p * w;\n    p = 2.2900482228026654717e-07 + p * w;\n    p = -9.9298272942317002539e-07 + p * w;\n    p = 4.5260625972231537039e-06 + p * w;\n    p = -1.9681778105531670567e-05 + p * w;\n    p = 7.5995277030017761139e-05 + p * w;\n    p = -0.00021503011930044477347 + p * w;\n    p = -0.00013871931833623122026 + p * w;\n    p = 1.0103004648645343977 + p * w;\n    p = 4.8499064014085844221 + p * w;\n  } else {\n    p = Infinity;\n  }\n\n  return p * x;\n}\n\nfunction gaussian (mean, stdev) {\n  let mu, sigma;\n  const dist = {\n    mean(_) {\n      if (arguments.length) {\n        mu = _ || 0;\n        return dist;\n      } else {\n        return mu;\n      }\n    },\n\n    stdev(_) {\n      if (arguments.length) {\n        sigma = _ == null ? 1 : _;\n        return dist;\n      } else {\n        return sigma;\n      }\n    },\n\n    sample: () => sampleNormal(mu, sigma),\n    pdf: value => densityNormal(value, mu, sigma),\n    cdf: value => cumulativeNormal(value, mu, sigma),\n    icdf: p => quantileNormal(p, mu, sigma)\n  };\n  return dist.mean(mean).stdev(stdev);\n}\n\nfunction kde (support, bandwidth) {\n  const kernel = gaussian();\n  let n = 0;\n  const dist = {\n    data(_) {\n      if (arguments.length) {\n        support = _;\n        n = _ ? _.length : 0;\n        return dist.bandwidth(bandwidth);\n      } else {\n        return support;\n      }\n    },\n\n    bandwidth(_) {\n      if (!arguments.length) return bandwidth;\n      bandwidth = _;\n      if (!bandwidth && support) bandwidth = estimateBandwidth(support);\n      return dist;\n    },\n\n    sample() {\n      return support[~~(random() * n)] + bandwidth * kernel.sample();\n    },\n\n    pdf(x) {\n      let y = 0,\n          i = 0;\n\n      for (; i < n; ++i) {\n        y += kernel.pdf((x - support[i]) / bandwidth);\n      }\n\n      return y / bandwidth / n;\n    },\n\n    cdf(x) {\n      let y = 0,\n          i = 0;\n\n      for (; i < n; ++i) {\n        y += kernel.cdf((x - support[i]) / bandwidth);\n      }\n\n      return y / n;\n    },\n\n    icdf() {\n      throw Error('KDE icdf not supported.');\n    }\n\n  };\n  return dist.data(support);\n}\n\nfunction sampleLogNormal(mean, stdev) {\n  mean = mean || 0;\n  stdev = stdev == null ? 1 : stdev;\n  return Math.exp(mean + sampleNormal() * stdev);\n}\nfunction densityLogNormal(value, mean, stdev) {\n  if (value <= 0) return 0;\n  mean = mean || 0;\n  stdev = stdev == null ? 1 : stdev;\n  const z = (Math.log(value) - mean) / stdev;\n  return Math.exp(-0.5 * z * z) / (stdev * SQRT2PI * value);\n}\nfunction cumulativeLogNormal(value, mean, stdev) {\n  return cumulativeNormal(Math.log(value), mean, stdev);\n}\nfunction quantileLogNormal(p, mean, stdev) {\n  return Math.exp(quantileNormal(p, mean, stdev));\n}\nfunction lognormal (mean, stdev) {\n  let mu, sigma;\n  const dist = {\n    mean(_) {\n      if (arguments.length) {\n        mu = _ || 0;\n        return dist;\n      } else {\n        return mu;\n      }\n    },\n\n    stdev(_) {\n      if (arguments.length) {\n        sigma = _ == null ? 1 : _;\n        return dist;\n      } else {\n        return sigma;\n      }\n    },\n\n    sample: () => sampleLogNormal(mu, sigma),\n    pdf: value => densityLogNormal(value, mu, sigma),\n    cdf: value => cumulativeLogNormal(value, mu, sigma),\n    icdf: p => quantileLogNormal(p, mu, sigma)\n  };\n  return dist.mean(mean).stdev(stdev);\n}\n\nfunction mixture (dists, weights) {\n  let m = 0,\n      w;\n\n  function normalize(x) {\n    const w = [];\n    let sum = 0,\n        i;\n\n    for (i = 0; i < m; ++i) {\n      sum += w[i] = x[i] == null ? 1 : +x[i];\n    }\n\n    for (i = 0; i < m; ++i) {\n      w[i] /= sum;\n    }\n\n    return w;\n  }\n\n  const dist = {\n    weights(_) {\n      if (arguments.length) {\n        w = normalize(weights = _ || []);\n        return dist;\n      }\n\n      return weights;\n    },\n\n    distributions(_) {\n      if (arguments.length) {\n        if (_) {\n          m = _.length;\n          dists = _;\n        } else {\n          m = 0;\n          dists = [];\n        }\n\n        return dist.weights(weights);\n      }\n\n      return dists;\n    },\n\n    sample() {\n      const r = random();\n      let d = dists[m - 1],\n          v = w[0],\n          i = 0; // first select distribution\n\n      for (; i < m - 1; v += w[++i]) {\n        if (r < v) {\n          d = dists[i];\n          break;\n        }\n      } // then sample from it\n\n\n      return d.sample();\n    },\n\n    pdf(x) {\n      let p = 0,\n          i = 0;\n\n      for (; i < m; ++i) {\n        p += w[i] * dists[i].pdf(x);\n      }\n\n      return p;\n    },\n\n    cdf(x) {\n      let p = 0,\n          i = 0;\n\n      for (; i < m; ++i) {\n        p += w[i] * dists[i].cdf(x);\n      }\n\n      return p;\n    },\n\n    icdf() {\n      throw Error('Mixture icdf not supported.');\n    }\n\n  };\n  return dist.distributions(dists).weights(weights);\n}\n\nfunction sampleUniform(min, max) {\n  if (max == null) {\n    max = min == null ? 1 : min;\n    min = 0;\n  }\n\n  return min + (max - min) * random();\n}\nfunction densityUniform(value, min, max) {\n  if (max == null) {\n    max = min == null ? 1 : min;\n    min = 0;\n  }\n\n  return value >= min && value <= max ? 1 / (max - min) : 0;\n}\nfunction cumulativeUniform(value, min, max) {\n  if (max == null) {\n    max = min == null ? 1 : min;\n    min = 0;\n  }\n\n  return value < min ? 0 : value > max ? 1 : (value - min) / (max - min);\n}\nfunction quantileUniform(p, min, max) {\n  if (max == null) {\n    max = min == null ? 1 : min;\n    min = 0;\n  }\n\n  return p >= 0 && p <= 1 ? min + p * (max - min) : NaN;\n}\nfunction uniform (min, max) {\n  let a, b;\n  const dist = {\n    min(_) {\n      if (arguments.length) {\n        a = _ || 0;\n        return dist;\n      } else {\n        return a;\n      }\n    },\n\n    max(_) {\n      if (arguments.length) {\n        b = _ == null ? 1 : _;\n        return dist;\n      } else {\n        return b;\n      }\n    },\n\n    sample: () => sampleUniform(a, b),\n    pdf: value => densityUniform(value, a, b),\n    cdf: value => cumulativeUniform(value, a, b),\n    icdf: p => quantileUniform(p, a, b)\n  };\n\n  if (max == null) {\n    max = min == null ? 1 : min;\n    min = 0;\n  }\n\n  return dist.min(min).max(max);\n}\n\n// Ordinary Least Squares\nfunction ols (uX, uY, uXY, uX2) {\n  const delta = uX2 - uX * uX,\n        slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta,\n        intercept = uY - slope * uX;\n  return [intercept, slope];\n}\n\nfunction points(data, x, y, sort) {\n  data = data.filter(d => {\n    let u = x(d),\n        v = y(d);\n    return u != null && (u = +u) >= u && v != null && (v = +v) >= v;\n  });\n\n  if (sort) {\n    data.sort((a, b) => x(a) - x(b));\n  }\n\n  const n = data.length,\n        X = new Float64Array(n),\n        Y = new Float64Array(n); // extract values, calculate means\n\n  let i = 0,\n      ux = 0,\n      uy = 0,\n      xv,\n      yv,\n      d;\n\n  for (d of data) {\n    X[i] = xv = +x(d);\n    Y[i] = yv = +y(d);\n    ++i;\n    ux += (xv - ux) / i;\n    uy += (yv - uy) / i;\n  } // mean center the data\n\n\n  for (i = 0; i < n; ++i) {\n    X[i] -= ux;\n    Y[i] -= uy;\n  }\n\n  return [X, Y, ux, uy];\n}\nfunction visitPoints(data, x, y, callback) {\n  let i = -1,\n      u,\n      v;\n\n  for (const d of data) {\n    u = x(d);\n    v = y(d);\n\n    if (u != null && (u = +u) >= u && v != null && (v = +v) >= v) {\n      callback(u, v, ++i);\n    }\n  }\n}\n\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n\nfunction rSquared (data, x, y, uY, predict) {\n  let SSE = 0,\n      SST = 0;\n  visitPoints(data, x, y, (dx, dy) => {\n    const sse = dy - predict(dx),\n          sst = dy - uY;\n    SSE += sse * sse;\n    SST += sst * sst;\n  });\n  return 1 - SSE / SST;\n}\n\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n\nfunction linear (data, x, y) {\n  let X = 0,\n      Y = 0,\n      XY = 0,\n      X2 = 0,\n      n = 0;\n  visitPoints(data, x, y, (dx, dy) => {\n    ++n;\n    X += (dx - X) / n;\n    Y += (dy - Y) / n;\n    XY += (dx * dy - XY) / n;\n    X2 += (dx * dx - X2) / n;\n  });\n\n  const coef = ols(X, Y, XY, X2),\n        predict = x => coef[0] + coef[1] * x;\n\n  return {\n    coef: coef,\n    predict: predict,\n    rSquared: rSquared(data, x, y, Y, predict)\n  };\n}\n\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n\nfunction log (data, x, y) {\n  let X = 0,\n      Y = 0,\n      XY = 0,\n      X2 = 0,\n      n = 0;\n  visitPoints(data, x, y, (dx, dy) => {\n    ++n;\n    dx = Math.log(dx);\n    X += (dx - X) / n;\n    Y += (dy - Y) / n;\n    XY += (dx * dy - XY) / n;\n    X2 += (dx * dx - X2) / n;\n  });\n\n  const coef = ols(X, Y, XY, X2),\n        predict = x => coef[0] + coef[1] * Math.log(x);\n\n  return {\n    coef: coef,\n    predict: predict,\n    rSquared: rSquared(data, x, y, Y, predict)\n  };\n}\n\nfunction exp (data, x, y) {\n  // eslint-disable-next-line no-unused-vars\n  const [xv, yv, ux, uy] = points(data, x, y);\n  let YL = 0,\n      XY = 0,\n      XYL = 0,\n      X2Y = 0,\n      n = 0,\n      dx,\n      ly,\n      xy;\n  visitPoints(data, x, y, (_, dy) => {\n    dx = xv[n++];\n    ly = Math.log(dy);\n    xy = dx * dy;\n    YL += (dy * ly - YL) / n;\n    XY += (xy - XY) / n;\n    XYL += (xy * ly - XYL) / n;\n    X2Y += (dx * xy - X2Y) / n;\n  });\n\n  const [c0, c1] = ols(XY / uy, YL / uy, XYL / uy, X2Y / uy),\n        predict = x => Math.exp(c0 + c1 * (x - ux));\n\n  return {\n    coef: [Math.exp(c0 - c1 * ux), c1],\n    predict: predict,\n    rSquared: rSquared(data, x, y, uy, predict)\n  };\n}\n\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n\nfunction pow (data, x, y) {\n  let X = 0,\n      Y = 0,\n      XY = 0,\n      X2 = 0,\n      YS = 0,\n      n = 0;\n  visitPoints(data, x, y, (dx, dy) => {\n    const lx = Math.log(dx),\n          ly = Math.log(dy);\n    ++n;\n    X += (lx - X) / n;\n    Y += (ly - Y) / n;\n    XY += (lx * ly - XY) / n;\n    X2 += (lx * lx - X2) / n;\n    YS += (dy - YS) / n;\n  });\n\n  const coef = ols(X, Y, XY, X2),\n        predict = x => coef[0] * Math.pow(x, coef[1]);\n\n  coef[0] = Math.exp(coef[0]);\n  return {\n    coef: coef,\n    predict: predict,\n    rSquared: rSquared(data, x, y, YS, predict)\n  };\n}\n\nfunction quad (data, x, y) {\n  const [xv, yv, ux, uy] = points(data, x, y),\n        n = xv.length;\n  let X2 = 0,\n      X3 = 0,\n      X4 = 0,\n      XY = 0,\n      X2Y = 0,\n      i,\n      dx,\n      dy,\n      x2;\n\n  for (i = 0; i < n;) {\n    dx = xv[i];\n    dy = yv[i++];\n    x2 = dx * dx;\n    X2 += (x2 - X2) / i;\n    X3 += (x2 * dx - X3) / i;\n    X4 += (x2 * x2 - X4) / i;\n    XY += (dx * dy - XY) / i;\n    X2Y += (x2 * dy - X2Y) / i;\n  }\n\n  const X2X2 = X4 - X2 * X2,\n        d = X2 * X2X2 - X3 * X3,\n        a = (X2Y * X2 - XY * X3) / d,\n        b = (XY * X2X2 - X2Y * X3) / d,\n        c = -a * X2,\n        predict = x => {\n    x = x - ux;\n    return a * x * x + b * x + c + uy;\n  }; // transform coefficients back from mean-centered space\n\n\n  return {\n    coef: [c - b * ux + a * ux * ux + uy, b - 2 * a * ux, a],\n    predict: predict,\n    rSquared: rSquared(data, x, y, uy, predict)\n  };\n}\n\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n// ... which was adapted from regression-js by Tom Alexander\n// Source: https://github.com/Tom-Alexander/regression-js/blob/master/src/regression.js#L246\n// License: https://github.com/Tom-Alexander/regression-js/blob/master/LICENSE\n\nfunction poly (data, x, y, order) {\n  // use more efficient methods for lower orders\n  if (order === 1) return linear(data, x, y);\n  if (order === 2) return quad(data, x, y);\n  const [xv, yv, ux, uy] = points(data, x, y),\n        n = xv.length,\n        lhs = [],\n        rhs = [],\n        k = order + 1;\n  let i, j, l, v, c;\n\n  for (i = 0; i < k; ++i) {\n    for (l = 0, v = 0; l < n; ++l) {\n      v += Math.pow(xv[l], i) * yv[l];\n    }\n\n    lhs.push(v);\n    c = new Float64Array(k);\n\n    for (j = 0; j < k; ++j) {\n      for (l = 0, v = 0; l < n; ++l) {\n        v += Math.pow(xv[l], i + j);\n      }\n\n      c[j] = v;\n    }\n\n    rhs.push(c);\n  }\n\n  rhs.push(lhs);\n\n  const coef = gaussianElimination(rhs),\n        predict = x => {\n    x -= ux;\n    let y = uy + coef[0] + coef[1] * x + coef[2] * x * x;\n\n    for (i = 3; i < k; ++i) y += coef[i] * Math.pow(x, i);\n\n    return y;\n  };\n\n  return {\n    coef: uncenter(k, coef, -ux, uy),\n    predict: predict,\n    rSquared: rSquared(data, x, y, uy, predict)\n  };\n}\n\nfunction uncenter(k, a, x, y) {\n  const z = Array(k);\n  let i, j, v, c; // initialize to zero\n\n  for (i = 0; i < k; ++i) z[i] = 0; // polynomial expansion\n\n\n  for (i = k - 1; i >= 0; --i) {\n    v = a[i];\n    c = 1;\n    z[i] += v;\n\n    for (j = 1; j <= i; ++j) {\n      c *= (i + 1 - j) / j; // binomial coefficent\n\n      z[i - j] += v * Math.pow(x, j) * c;\n    }\n  } // bias term\n\n\n  z[0] += y;\n  return z;\n} // Given an array for a two-dimensional matrix and the polynomial order,\n// solve A * x = b using Gaussian elimination.\n\n\nfunction gaussianElimination(matrix) {\n  const n = matrix.length - 1,\n        coef = [];\n  let i, j, k, r, t;\n\n  for (i = 0; i < n; ++i) {\n    r = i; // max row\n\n    for (j = i + 1; j < n; ++j) {\n      if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][r])) {\n        r = j;\n      }\n    }\n\n    for (k = i; k < n + 1; ++k) {\n      t = matrix[k][i];\n      matrix[k][i] = matrix[k][r];\n      matrix[k][r] = t;\n    }\n\n    for (j = i + 1; j < n; ++j) {\n      for (k = n; k >= i; k--) {\n        matrix[k][j] -= matrix[k][i] * matrix[i][j] / matrix[i][i];\n      }\n    }\n  }\n\n  for (j = n - 1; j >= 0; --j) {\n    t = 0;\n\n    for (k = j + 1; k < n; ++k) {\n      t += matrix[k][j] * coef[k];\n    }\n\n    coef[j] = (matrix[n][j] - t) / matrix[j][j];\n  }\n\n  return coef;\n}\n\nconst maxiters = 2,\n      epsilon = 1e-12; // Adapted from science.js by Jason Davies\n// Source: https://github.com/jasondavies/science.js/blob/master/src/stats/loess.js\n// License: https://github.com/jasondavies/science.js/blob/master/LICENSE\n\nfunction loess (data, x, y, bandwidth) {\n  const [xv, yv, ux, uy] = points(data, x, y, true),\n        n = xv.length,\n        bw = Math.max(2, ~~(bandwidth * n)),\n        // # nearest neighbors\n  yhat = new Float64Array(n),\n        residuals = new Float64Array(n),\n        robustWeights = new Float64Array(n).fill(1);\n\n  for (let iter = -1; ++iter <= maxiters;) {\n    const interval = [0, bw - 1];\n\n    for (let i = 0; i < n; ++i) {\n      const dx = xv[i],\n            i0 = interval[0],\n            i1 = interval[1],\n            edge = dx - xv[i0] > xv[i1] - dx ? i0 : i1;\n      let W = 0,\n          X = 0,\n          Y = 0,\n          XY = 0,\n          X2 = 0;\n      const denom = 1 / Math.abs(xv[edge] - dx || 1); // avoid singularity!\n\n      for (let k = i0; k <= i1; ++k) {\n        const xk = xv[k],\n              yk = yv[k],\n              w = tricube(Math.abs(dx - xk) * denom) * robustWeights[k],\n              xkw = xk * w;\n        W += w;\n        X += xkw;\n        Y += yk * w;\n        XY += yk * xkw;\n        X2 += xk * xkw;\n      } // linear regression fit\n\n\n      const [a, b] = ols(X / W, Y / W, XY / W, X2 / W);\n      yhat[i] = a + b * dx;\n      residuals[i] = Math.abs(yv[i] - yhat[i]);\n      updateInterval(xv, i + 1, interval);\n    }\n\n    if (iter === maxiters) {\n      break;\n    }\n\n    const medianResidual = median(residuals);\n    if (Math.abs(medianResidual) < epsilon) break;\n\n    for (let i = 0, arg, w; i < n; ++i) {\n      arg = residuals[i] / (6 * medianResidual); // default to epsilon (rather than zero) for large deviations\n      // keeping weights tiny but non-zero prevents singularites\n\n      robustWeights[i] = arg >= 1 ? epsilon : (w = 1 - arg * arg) * w;\n    }\n  }\n\n  return output(xv, yhat, ux, uy);\n} // weighting kernel for local regression\n\nfunction tricube(x) {\n  return (x = 1 - x * x * x) * x * x;\n} // advance sliding window interval of nearest neighbors\n\n\nfunction updateInterval(xv, i, interval) {\n  const val = xv[i];\n  let left = interval[0],\n      right = interval[1] + 1;\n  if (right >= xv.length) return; // step right if distance to new right edge is <= distance to old left edge\n  // step when distance is equal to ensure movement over duplicate x values\n\n  while (i > left && xv[right] - val <= val - xv[left]) {\n    interval[0] = ++left;\n    interval[1] = right;\n    ++right;\n  }\n} // generate smoothed output points\n// average points with repeated x values\n\n\nfunction output(xv, yhat, ux, uy) {\n  const n = xv.length,\n        out = [];\n  let i = 0,\n      cnt = 0,\n      prev = [],\n      v;\n\n  for (; i < n; ++i) {\n    v = xv[i] + ux;\n\n    if (prev[0] === v) {\n      // average output values via online update\n      prev[1] += (yhat[i] - prev[1]) / ++cnt;\n    } else {\n      // add new output point\n      cnt = 0;\n      prev[1] += uy;\n      prev = [v, yhat[i]];\n      out.push(prev);\n    }\n  }\n\n  prev[1] += uy;\n  return out;\n}\n\n// subdivide up to accuracy of 0.5 degrees\nconst MIN_RADIANS = 0.5 * Math.PI / 180; // Adaptively sample an interpolated function over a domain extent\n\nfunction sampleCurve (f, extent, minSteps, maxSteps) {\n  minSteps = minSteps || 25;\n  maxSteps = Math.max(minSteps, maxSteps || 200);\n\n  const point = x => [x, f(x)],\n        minX = extent[0],\n        maxX = extent[1],\n        span = maxX - minX,\n        stop = span / maxSteps,\n        prev = [point(minX)],\n        next = [];\n\n  if (minSteps === maxSteps) {\n    // no adaptation, sample uniform grid directly and return\n    for (let i = 1; i < maxSteps; ++i) {\n      prev.push(point(minX + i / minSteps * span));\n    }\n\n    prev.push(point(maxX));\n    return prev;\n  } else {\n    // sample minimum points on uniform grid\n    // then move on to perform adaptive refinement\n    next.push(point(maxX));\n\n    for (let i = minSteps; --i > 0;) {\n      next.push(point(minX + i / minSteps * span));\n    }\n  }\n\n  let p0 = prev[0];\n  let p1 = next[next.length - 1];\n  const sx = 1 / span;\n  const sy = scaleY(p0[1], next);\n\n  while (p1) {\n    // midpoint for potential curve subdivision\n    const pm = point((p0[0] + p1[0]) / 2);\n    const dx = pm[0] - p0[0] >= stop;\n\n    if (dx && angleDelta(p0, pm, p1, sx, sy) > MIN_RADIANS) {\n      // maximum resolution has not yet been met, and\n      // subdivision midpoint is sufficiently different from endpoint\n      // save subdivision, push midpoint onto the visitation stack\n      next.push(pm);\n    } else {\n      // subdivision midpoint sufficiently similar to endpoint\n      // skip subdivision, store endpoint, move to next point on the stack\n      p0 = p1;\n      prev.push(p1);\n      next.pop();\n    }\n\n    p1 = next[next.length - 1];\n  }\n\n  return prev;\n}\n\nfunction scaleY(init, points) {\n  let ymin = init;\n  let ymax = init;\n  const n = points.length;\n\n  for (let i = 0; i < n; ++i) {\n    const y = points[i][1];\n    if (y < ymin) ymin = y;\n    if (y > ymax) ymax = y;\n  }\n\n  return 1 / (ymax - ymin);\n}\n\nfunction angleDelta(p, q, r, sx, sy) {\n  const a0 = Math.atan2(sy * (r[1] - p[1]), sx * (r[0] - p[0])),\n        a1 = Math.atan2(sy * (q[1] - p[1]), sx * (q[0] - p[0]));\n  return Math.abs(a0 - a1);\n}\n\nexport { estimateBandwidth as bandwidthNRD, bin, bootstrapCI, cumulativeLogNormal, cumulativeNormal, cumulativeUniform, densityLogNormal, densityNormal, densityUniform, dotbin, quantileLogNormal, quantileNormal, quantileUniform, quantiles, quartiles, random, integer as randomInteger, kde as randomKDE, lcg as randomLCG, lognormal as randomLogNormal, mixture as randomMixture, gaussian as randomNormal, uniform as randomUniform, exp as regressionExp, linear as regressionLinear, loess as regressionLoess, log as regressionLog, poly as regressionPoly, pow as regressionPow, quad as regressionQuad, sampleCurve, sampleLogNormal, sampleNormal, sampleUniform, setRandom };\n","export default function mean(values, valueof) {\n  let count = 0;\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        ++count, sum += value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        ++count, sum += value;\n      }\n    }\n  }\n  if (count) return sum / count;\n}\n","export default function(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n","import { extend, identity, field, hasOwnProperty, extentIndex, inherits, array, accessorName, error, accessorFields, accessor, toNumber, merge, compare, truthy, extent, span, fastmap, isArray, key, ascending, peek, zero, constant } from 'vega-util';\nimport { tupleid, Transform, replace, ingest, stableCompare, Operator, derive, rederive } from 'vega-dataflow';\nimport { quartiles, bootstrapCI, bin, randomKDE, randomMixture, randomNormal, randomLogNormal, randomUniform, sampleCurve, dotbin, quantiles, random } from 'vega-statistics';\nimport { median, mean, min, max, range, bisector } from 'd3-array';\nimport { TIME_UNITS, utcInterval, timeInterval, timeBin, timeUnits, utcFloor, timeFloor } from 'vega-time';\n\nfunction multikey(f) {\n  return x => {\n    const n = f.length;\n    let i = 1,\n        k = String(f[0](x));\n\n    for (; i < n; ++i) {\n      k += '|' + f[i](x);\n    }\n\n    return k;\n  };\n}\nfunction groupkey(fields) {\n  return !fields || !fields.length ? function () {\n    return '';\n  } : fields.length === 1 ? fields[0] : multikey(fields);\n}\n\nfunction measureName(op, field, as) {\n  return as || op + (!field ? '' : '_' + field);\n}\n\nconst noop = () => {};\n\nconst base_op = {\n  init: noop,\n  add: noop,\n  rem: noop,\n  idx: 0\n};\nconst AggregateOps = {\n  values: {\n    init: m => m.cell.store = true,\n    value: m => m.cell.data.values(),\n    idx: -1\n  },\n  count: {\n    value: m => m.cell.num\n  },\n  __count__: {\n    value: m => m.missing + m.valid\n  },\n  missing: {\n    value: m => m.missing\n  },\n  valid: {\n    value: m => m.valid\n  },\n  sum: {\n    init: m => m.sum = 0,\n    value: m => m.sum,\n    add: (m, v) => m.sum += +v,\n    rem: (m, v) => m.sum -= v\n  },\n  product: {\n    init: m => m.product = 1,\n    value: m => m.valid ? m.product : undefined,\n    add: (m, v) => m.product *= v,\n    rem: (m, v) => m.product /= v\n  },\n  mean: {\n    init: m => m.mean = 0,\n    value: m => m.valid ? m.mean : undefined,\n    add: (m, v) => (m.mean_d = v - m.mean, m.mean += m.mean_d / m.valid),\n    rem: (m, v) => (m.mean_d = v - m.mean, m.mean -= m.valid ? m.mean_d / m.valid : m.mean)\n  },\n  average: {\n    value: m => m.valid ? m.mean : undefined,\n    req: ['mean'],\n    idx: 1\n  },\n  variance: {\n    init: m => m.dev = 0,\n    value: m => m.valid > 1 ? m.dev / (m.valid - 1) : undefined,\n    add: (m, v) => m.dev += m.mean_d * (v - m.mean),\n    rem: (m, v) => m.dev -= m.mean_d * (v - m.mean),\n    req: ['mean'],\n    idx: 1\n  },\n  variancep: {\n    value: m => m.valid > 1 ? m.dev / m.valid : undefined,\n    req: ['variance'],\n    idx: 2\n  },\n  stdev: {\n    value: m => m.valid > 1 ? Math.sqrt(m.dev / (m.valid - 1)) : undefined,\n    req: ['variance'],\n    idx: 2\n  },\n  stdevp: {\n    value: m => m.valid > 1 ? Math.sqrt(m.dev / m.valid) : undefined,\n    req: ['variance'],\n    idx: 2\n  },\n  stderr: {\n    value: m => m.valid > 1 ? Math.sqrt(m.dev / (m.valid * (m.valid - 1))) : undefined,\n    req: ['variance'],\n    idx: 2\n  },\n  distinct: {\n    value: m => m.cell.data.distinct(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  ci0: {\n    value: m => m.cell.data.ci0(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  ci1: {\n    value: m => m.cell.data.ci1(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  median: {\n    value: m => m.cell.data.q2(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  q1: {\n    value: m => m.cell.data.q1(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  q3: {\n    value: m => m.cell.data.q3(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  min: {\n    init: m => m.min = undefined,\n    value: m => m.min = Number.isNaN(m.min) ? m.cell.data.min(m.get) : m.min,\n    add: (m, v) => {\n      if (v < m.min || m.min === undefined) m.min = v;\n    },\n    rem: (m, v) => {\n      if (v <= m.min) m.min = NaN;\n    },\n    req: ['values'],\n    idx: 4\n  },\n  max: {\n    init: m => m.max = undefined,\n    value: m => m.max = Number.isNaN(m.max) ? m.cell.data.max(m.get) : m.max,\n    add: (m, v) => {\n      if (v > m.max || m.max === undefined) m.max = v;\n    },\n    rem: (m, v) => {\n      if (v >= m.max) m.max = NaN;\n    },\n    req: ['values'],\n    idx: 4\n  },\n  argmin: {\n    init: m => m.argmin = undefined,\n    value: m => m.argmin || m.cell.data.argmin(m.get),\n    add: (m, v, t) => {\n      if (v < m.min) m.argmin = t;\n    },\n    rem: (m, v) => {\n      if (v <= m.min) m.argmin = undefined;\n    },\n    req: ['min', 'values'],\n    idx: 3\n  },\n  argmax: {\n    init: m => m.argmax = undefined,\n    value: m => m.argmax || m.cell.data.argmax(m.get),\n    add: (m, v, t) => {\n      if (v > m.max) m.argmax = t;\n    },\n    rem: (m, v) => {\n      if (v >= m.max) m.argmax = undefined;\n    },\n    req: ['max', 'values'],\n    idx: 3\n  }\n};\nconst ValidAggregateOps = Object.keys(AggregateOps);\n\nfunction measure(key, value) {\n  return out => extend({\n    name: key,\n    out: out || key\n  }, base_op, value);\n}\n\nValidAggregateOps.forEach(key => {\n  AggregateOps[key] = measure(key, AggregateOps[key]);\n});\nfunction createMeasure(op, name) {\n  return AggregateOps[op](name);\n}\n\nfunction compareIndex(a, b) {\n  return a.idx - b.idx;\n}\n\nfunction resolve(agg) {\n  const map = {};\n  agg.forEach(a => map[a.name] = a);\n\n  const getreqs = a => {\n    if (!a.req) return;\n    a.req.forEach(key => {\n      if (!map[key]) getreqs(map[key] = AggregateOps[key]());\n    });\n  };\n\n  agg.forEach(getreqs);\n  return Object.values(map).sort(compareIndex);\n}\n\nfunction init() {\n  this.valid = 0;\n  this.missing = 0;\n\n  this._ops.forEach(op => op.init(this));\n}\n\nfunction add(v, t) {\n  if (v == null || v === '') {\n    ++this.missing;\n    return;\n  }\n\n  if (v !== v) return;\n  ++this.valid;\n\n  this._ops.forEach(op => op.add(this, v, t));\n}\n\nfunction rem(v, t) {\n  if (v == null || v === '') {\n    --this.missing;\n    return;\n  }\n\n  if (v !== v) return;\n  --this.valid;\n\n  this._ops.forEach(op => op.rem(this, v, t));\n}\n\nfunction set(t) {\n  this._out.forEach(op => t[op.out] = op.value(this));\n\n  return t;\n}\n\nfunction compileMeasures(agg, field) {\n  const get = field || identity,\n        ops = resolve(agg),\n        out = agg.slice().sort(compareIndex);\n\n  function ctr(cell) {\n    this._ops = ops;\n    this._out = out;\n    this.cell = cell;\n    this.init();\n  }\n\n  ctr.prototype.init = init;\n  ctr.prototype.add = add;\n  ctr.prototype.rem = rem;\n  ctr.prototype.set = set;\n  ctr.prototype.get = get;\n  ctr.fields = agg.map(op => op.out);\n  return ctr;\n}\n\nfunction TupleStore(key) {\n  this._key = key ? field(key) : tupleid;\n  this.reset();\n}\nconst prototype$1 = TupleStore.prototype;\n\nprototype$1.reset = function () {\n  this._add = [];\n  this._rem = [];\n  this._ext = null;\n  this._get = null;\n  this._q = null;\n};\n\nprototype$1.add = function (v) {\n  this._add.push(v);\n};\n\nprototype$1.rem = function (v) {\n  this._rem.push(v);\n};\n\nprototype$1.values = function () {\n  this._get = null;\n  if (this._rem.length === 0) return this._add;\n  const a = this._add,\n        r = this._rem,\n        k = this._key,\n        n = a.length,\n        m = r.length,\n        x = Array(n - m),\n        map = {};\n  let i, j, v; // use unique key field to clear removed values\n\n  for (i = 0; i < m; ++i) {\n    map[k(r[i])] = 1;\n  }\n\n  for (i = 0, j = 0; i < n; ++i) {\n    if (map[k(v = a[i])]) {\n      map[k(v)] = 0;\n    } else {\n      x[j++] = v;\n    }\n  }\n\n  this._rem = [];\n  return this._add = x;\n}; // memoizing statistics methods\n\n\nprototype$1.distinct = function (get) {\n  const v = this.values(),\n        map = {};\n  let n = v.length,\n      count = 0,\n      s;\n\n  while (--n >= 0) {\n    s = get(v[n]) + '';\n\n    if (!hasOwnProperty(map, s)) {\n      map[s] = 1;\n      ++count;\n    }\n  }\n\n  return count;\n};\n\nprototype$1.extent = function (get) {\n  if (this._get !== get || !this._ext) {\n    const v = this.values(),\n          i = extentIndex(v, get);\n    this._ext = [v[i[0]], v[i[1]]];\n    this._get = get;\n  }\n\n  return this._ext;\n};\n\nprototype$1.argmin = function (get) {\n  return this.extent(get)[0] || {};\n};\n\nprototype$1.argmax = function (get) {\n  return this.extent(get)[1] || {};\n};\n\nprototype$1.min = function (get) {\n  const m = this.extent(get)[0];\n  return m != null ? get(m) : undefined;\n};\n\nprototype$1.max = function (get) {\n  const m = this.extent(get)[1];\n  return m != null ? get(m) : undefined;\n};\n\nprototype$1.quartile = function (get) {\n  if (this._get !== get || !this._q) {\n    this._q = quartiles(this.values(), get);\n    this._get = get;\n  }\n\n  return this._q;\n};\n\nprototype$1.q1 = function (get) {\n  return this.quartile(get)[0];\n};\n\nprototype$1.q2 = function (get) {\n  return this.quartile(get)[1];\n};\n\nprototype$1.q3 = function (get) {\n  return this.quartile(get)[2];\n};\n\nprototype$1.ci = function (get) {\n  if (this._get !== get || !this._ci) {\n    this._ci = bootstrapCI(this.values(), 1000, 0.05, get);\n    this._get = get;\n  }\n\n  return this._ci;\n};\n\nprototype$1.ci0 = function (get) {\n  return this.ci(get)[0];\n};\n\nprototype$1.ci1 = function (get) {\n  return this.ci(get)[1];\n};\n\n/**\n * Group-by aggregation operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {Array<function(object): *>} [params.fields] - An array of accessors to aggregate.\n * @param {Array<string>} [params.ops] - An array of strings indicating aggregation operations.\n * @param {Array<string>} [params.as] - An array of output field names for aggregated values.\n * @param {boolean} [params.cross=false] - A flag indicating that the full\n *   cross-product of groupby values should be generated, including empty cells.\n *   If true, the drop parameter is ignored and empty cells are retained.\n * @param {boolean} [params.drop=true] - A flag indicating if empty cells should be removed.\n */\n\nfunction Aggregate(params) {\n  Transform.call(this, null, params);\n  this._adds = []; // array of added output tuples\n\n  this._mods = []; // array of modified output tuples\n\n  this._alen = 0; // number of active added tuples\n\n  this._mlen = 0; // number of active modified tuples\n\n  this._drop = true; // should empty aggregation cells be removed\n\n  this._cross = false; // produce full cross-product of group-by values\n\n  this._dims = []; // group-by dimension accessors\n\n  this._dnames = []; // group-by dimension names\n\n  this._measures = []; // collection of aggregation monoids\n\n  this._countOnly = false; // flag indicating only count aggregation\n\n  this._counts = null; // collection of count fields\n\n  this._prev = null; // previous aggregation cells\n\n  this._inputs = null; // array of dependent input tuple field names\n\n  this._outputs = null; // array of output tuple field names\n}\nAggregate.Definition = {\n  'type': 'Aggregate',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'ops',\n    'type': 'enum',\n    'array': true,\n    'values': ValidAggregateOps\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'drop',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'cross',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'key',\n    'type': 'field'\n  }]\n};\ninherits(Aggregate, Transform, {\n  transform(_, pulse) {\n    const aggr = this,\n          out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n          mod = _.modified();\n\n    aggr.stamp = out.stamp;\n\n    if (aggr.value && (mod || pulse.modified(aggr._inputs, true))) {\n      aggr._prev = aggr.value;\n      aggr.value = mod ? aggr.init(_) : {};\n      pulse.visit(pulse.SOURCE, t => aggr.add(t));\n    } else {\n      aggr.value = aggr.value || aggr.init(_);\n      pulse.visit(pulse.REM, t => aggr.rem(t));\n      pulse.visit(pulse.ADD, t => aggr.add(t));\n    } // Indicate output fields and return aggregate tuples.\n\n\n    out.modifies(aggr._outputs); // Should empty cells be dropped?\n\n    aggr._drop = _.drop !== false; // If domain cross-product requested, generate empty cells as needed\n    // and ensure that empty cells are not dropped\n\n    if (_.cross && aggr._dims.length > 1) {\n      aggr._drop = false;\n      aggr.cross();\n    }\n\n    if (pulse.clean() && aggr._drop) {\n      out.clean(true).runAfter(() => this.clean());\n    }\n\n    return aggr.changes(out);\n  },\n\n  cross() {\n    const aggr = this,\n          curr = aggr.value,\n          dims = aggr._dnames,\n          vals = dims.map(() => ({})),\n          n = dims.length; // collect all group-by domain values\n\n    function collect(cells) {\n      let key, i, t, v;\n\n      for (key in cells) {\n        t = cells[key].tuple;\n\n        for (i = 0; i < n; ++i) {\n          vals[i][v = t[dims[i]]] = v;\n        }\n      }\n    }\n\n    collect(aggr._prev);\n    collect(curr); // iterate over key cross-product, create cells as needed\n\n    function generate(base, tuple, index) {\n      const name = dims[index],\n            v = vals[index++];\n\n      for (const k in v) {\n        const key = base ? base + '|' + k : k;\n        tuple[name] = v[k];\n        if (index < n) generate(key, tuple, index);else if (!curr[key]) aggr.cell(key, tuple);\n      }\n    }\n\n    generate('', {}, 0);\n  },\n\n  init(_) {\n    // initialize input and output fields\n    const inputs = this._inputs = [],\n          outputs = this._outputs = [],\n          inputMap = {};\n\n    function inputVisit(get) {\n      const fields = array(accessorFields(get)),\n            n = fields.length;\n      let i = 0,\n          f;\n\n      for (; i < n; ++i) {\n        if (!inputMap[f = fields[i]]) {\n          inputMap[f] = 1;\n          inputs.push(f);\n        }\n      }\n    } // initialize group-by dimensions\n\n\n    this._dims = array(_.groupby);\n    this._dnames = this._dims.map(d => {\n      const dname = accessorName(d);\n      inputVisit(d);\n      outputs.push(dname);\n      return dname;\n    });\n    this.cellkey = _.key ? _.key : groupkey(this._dims); // initialize aggregate measures\n\n    this._countOnly = true;\n    this._counts = [];\n    this._measures = [];\n    const fields = _.fields || [null],\n          ops = _.ops || ['count'],\n          as = _.as || [],\n          n = fields.length,\n          map = {};\n    let field, op, m, mname, outname, i;\n\n    if (n !== ops.length) {\n      error('Unmatched number of fields and aggregate ops.');\n    }\n\n    for (i = 0; i < n; ++i) {\n      field = fields[i];\n      op = ops[i];\n\n      if (field == null && op !== 'count') {\n        error('Null aggregate field specified.');\n      }\n\n      mname = accessorName(field);\n      outname = measureName(op, mname, as[i]);\n      outputs.push(outname);\n\n      if (op === 'count') {\n        this._counts.push(outname);\n\n        continue;\n      }\n\n      m = map[mname];\n\n      if (!m) {\n        inputVisit(field);\n        m = map[mname] = [];\n        m.field = field;\n\n        this._measures.push(m);\n      }\n\n      if (op !== 'count') this._countOnly = false;\n      m.push(createMeasure(op, outname));\n    }\n\n    this._measures = this._measures.map(m => compileMeasures(m, m.field));\n    return {}; // aggregation cells (this.value)\n  },\n\n  // -- Cell Management -----\n  cellkey: groupkey(),\n\n  cell(key, t) {\n    let cell = this.value[key];\n\n    if (!cell) {\n      cell = this.value[key] = this.newcell(key, t);\n      this._adds[this._alen++] = cell;\n    } else if (cell.num === 0 && this._drop && cell.stamp < this.stamp) {\n      cell.stamp = this.stamp;\n      this._adds[this._alen++] = cell;\n    } else if (cell.stamp < this.stamp) {\n      cell.stamp = this.stamp;\n      this._mods[this._mlen++] = cell;\n    }\n\n    return cell;\n  },\n\n  newcell(key, t) {\n    const cell = {\n      key: key,\n      num: 0,\n      agg: null,\n      tuple: this.newtuple(t, this._prev && this._prev[key]),\n      stamp: this.stamp,\n      store: false\n    };\n\n    if (!this._countOnly) {\n      const measures = this._measures,\n            n = measures.length;\n      cell.agg = Array(n);\n\n      for (let i = 0; i < n; ++i) {\n        cell.agg[i] = new measures[i](cell);\n      }\n    }\n\n    if (cell.store) {\n      cell.data = new TupleStore();\n    }\n\n    return cell;\n  },\n\n  newtuple(t, p) {\n    const names = this._dnames,\n          dims = this._dims,\n          n = dims.length,\n          x = {};\n\n    for (let i = 0; i < n; ++i) {\n      x[names[i]] = dims[i](t);\n    }\n\n    return p ? replace(p.tuple, x) : ingest(x);\n  },\n\n  clean() {\n    const cells = this.value;\n\n    for (const key in cells) {\n      if (cells[key].num === 0) {\n        delete cells[key];\n      }\n    }\n  },\n\n  // -- Process Tuples -----\n  add(t) {\n    const key = this.cellkey(t),\n          cell = this.cell(key, t);\n    cell.num += 1;\n    if (this._countOnly) return;\n    if (cell.store) cell.data.add(t);\n    const agg = cell.agg;\n\n    for (let i = 0, n = agg.length; i < n; ++i) {\n      agg[i].add(agg[i].get(t), t);\n    }\n  },\n\n  rem(t) {\n    const key = this.cellkey(t),\n          cell = this.cell(key, t);\n    cell.num -= 1;\n    if (this._countOnly) return;\n    if (cell.store) cell.data.rem(t);\n    const agg = cell.agg;\n\n    for (let i = 0, n = agg.length; i < n; ++i) {\n      agg[i].rem(agg[i].get(t), t);\n    }\n  },\n\n  celltuple(cell) {\n    const tuple = cell.tuple,\n          counts = this._counts; // consolidate stored values\n\n    if (cell.store) {\n      cell.data.values();\n    } // update tuple properties\n\n\n    for (let i = 0, n = counts.length; i < n; ++i) {\n      tuple[counts[i]] = cell.num;\n    }\n\n    if (!this._countOnly) {\n      const agg = cell.agg;\n\n      for (let i = 0, n = agg.length; i < n; ++i) {\n        agg[i].set(tuple);\n      }\n    }\n\n    return tuple;\n  },\n\n  changes(out) {\n    const adds = this._adds,\n          mods = this._mods,\n          prev = this._prev,\n          drop = this._drop,\n          add = out.add,\n          rem = out.rem,\n          mod = out.mod;\n    let cell, key, i, n;\n    if (prev) for (key in prev) {\n      cell = prev[key];\n      if (!drop || cell.num) rem.push(cell.tuple);\n    }\n\n    for (i = 0, n = this._alen; i < n; ++i) {\n      add.push(this.celltuple(adds[i]));\n      adds[i] = null; // for garbage collection\n    }\n\n    for (i = 0, n = this._mlen; i < n; ++i) {\n      cell = mods[i];\n      (cell.num === 0 && drop ? rem : mod).push(this.celltuple(cell));\n      mods[i] = null; // for garbage collection\n    }\n\n    this._alen = this._mlen = 0; // reset list of active cells\n\n    this._prev = null;\n    return out;\n  }\n\n});\n\nconst EPSILON$1 = 1e-14;\n/**\n * Generates a binning function for discretizing data.\n * @constructor\n * @param {object} params - The parameters for this operator. The\n *   provided values should be valid options for the {@link bin} function.\n * @param {function(object): *} params.field - The data field to bin.\n */\n\nfunction Bin(params) {\n  Transform.call(this, null, params);\n}\nBin.Definition = {\n  'type': 'Bin',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'interval',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'anchor',\n    'type': 'number'\n  }, {\n    'name': 'maxbins',\n    'type': 'number',\n    'default': 20\n  }, {\n    'name': 'base',\n    'type': 'number',\n    'default': 10\n  }, {\n    'name': 'divide',\n    'type': 'number',\n    'array': true,\n    'default': [5, 2]\n  }, {\n    'name': 'extent',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'required': true\n  }, {\n    'name': 'span',\n    'type': 'number'\n  }, {\n    'name': 'step',\n    'type': 'number'\n  }, {\n    'name': 'steps',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'minstep',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'nice',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'name',\n    'type': 'string'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['bin0', 'bin1']\n  }]\n};\ninherits(Bin, Transform, {\n  transform(_, pulse) {\n    const band = _.interval !== false,\n          bins = this._bins(_),\n          start = bins.start,\n          step = bins.step,\n          as = _.as || ['bin0', 'bin1'],\n          b0 = as[0],\n          b1 = as[1];\n\n    let flag;\n\n    if (_.modified()) {\n      pulse = pulse.reflow(true);\n      flag = pulse.SOURCE;\n    } else {\n      flag = pulse.modified(accessorFields(_.field)) ? pulse.ADD_MOD : pulse.ADD;\n    }\n\n    pulse.visit(flag, band ? t => {\n      const v = bins(t); // minimum bin value (inclusive)\n\n      t[b0] = v; // maximum bin value (exclusive)\n      // use convoluted math for better floating point agreement\n      // see https://github.com/vega/vega/issues/830\n      // infinite values propagate through this formula! #2227\n\n      t[b1] = v == null ? null : start + step * (1 + (v - start) / step);\n    } : t => t[b0] = bins(t));\n    return pulse.modifies(band ? as : b0);\n  },\n\n  _bins(_) {\n    if (this.value && !_.modified()) {\n      return this.value;\n    }\n\n    const field = _.field,\n          bins = bin(_),\n          step = bins.step;\n    let start = bins.start,\n        stop = start + Math.ceil((bins.stop - start) / step) * step,\n        a,\n        d;\n\n    if ((a = _.anchor) != null) {\n      d = a - (start + step * Math.floor((a - start) / step));\n      start += d;\n      stop += d;\n    }\n\n    const f = function (t) {\n      let v = toNumber(field(t));\n      return v == null ? null : v < start ? -Infinity : v > stop ? +Infinity : (v = Math.max(start, Math.min(v, stop - step)), start + step * Math.floor(EPSILON$1 + (v - start) / step));\n    };\n\n    f.start = start;\n    f.stop = bins.stop;\n    f.step = step;\n    return this.value = accessor(f, accessorFields(field), _.name || 'bin_' + accessorName(field));\n  }\n\n});\n\nfunction SortedList (idFunc, source, input) {\n  const $ = idFunc;\n  let data = source || [],\n      add = input || [],\n      rem = {},\n      cnt = 0;\n  return {\n    add: t => add.push(t),\n    remove: t => rem[$(t)] = ++cnt,\n    size: () => data.length,\n    data: (compare, resort) => {\n      if (cnt) {\n        data = data.filter(t => !rem[$(t)]);\n        rem = {};\n        cnt = 0;\n      }\n\n      if (resort && compare) {\n        data.sort(compare);\n      }\n\n      if (add.length) {\n        data = compare ? merge(compare, data, add.sort(compare)) : data.concat(add);\n        add = [];\n      }\n\n      return data;\n    }\n  };\n}\n\n/**\n * Collects all data tuples that pass through this operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - An optional\n *   comparator function for additionally sorting the collected tuples.\n */\n\nfunction Collect(params) {\n  Transform.call(this, [], params);\n}\nCollect.Definition = {\n  'type': 'Collect',\n  'metadata': {\n    'source': true\n  },\n  'params': [{\n    'name': 'sort',\n    'type': 'compare'\n  }]\n};\ninherits(Collect, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.ALL),\n          list = SortedList(tupleid, this.value, out.materialize(out.ADD).add),\n          sort = _.sort,\n          mod = pulse.changed() || sort && (_.modified('sort') || pulse.modified(sort.fields));\n    out.visit(out.REM, list.remove);\n    this.modified(mod);\n    this.value = out.source = list.data(stableCompare(sort), mod); // propagate tree root if defined\n\n    if (pulse.source && pulse.source.root) {\n      this.value.root = pulse.source.root;\n    }\n\n    return out;\n  }\n\n});\n\n/**\n * Generates a comparator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<string|function>} params.fields - The fields to compare.\n * @param {Array<string>} [params.orders] - The sort orders.\n *   Each entry should be one of \"ascending\" (default) or \"descending\".\n */\n\nfunction Compare(params) {\n  Operator.call(this, null, update$5, params);\n}\ninherits(Compare, Operator);\n\nfunction update$5(_) {\n  return this.value && !_.modified() ? this.value : compare(_.fields, _.orders);\n}\n\n/**\n * Count regexp-defined pattern occurrences in a text field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the text field.\n * @param {string} [params.pattern] - RegExp string defining the text pattern.\n * @param {string} [params.case] - One of 'lower', 'upper' or null (mixed) case.\n * @param {string} [params.stopwords] - RegExp string of words to ignore.\n */\n\nfunction CountPattern(params) {\n  Transform.call(this, null, params);\n}\nCountPattern.Definition = {\n  'type': 'CountPattern',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'case',\n    'type': 'enum',\n    'values': ['upper', 'lower', 'mixed'],\n    'default': 'mixed'\n  }, {\n    'name': 'pattern',\n    'type': 'string',\n    'default': '[\\\\w\"]+'\n  }, {\n    'name': 'stopwords',\n    'type': 'string',\n    'default': ''\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['text', 'count']\n  }]\n};\n\nfunction tokenize(text, tcase, match) {\n  switch (tcase) {\n    case 'upper':\n      text = text.toUpperCase();\n      break;\n\n    case 'lower':\n      text = text.toLowerCase();\n      break;\n  }\n\n  return text.match(match);\n}\n\ninherits(CountPattern, Transform, {\n  transform(_, pulse) {\n    const process = update => tuple => {\n      var tokens = tokenize(get(tuple), _.case, match) || [],\n          t;\n\n      for (var i = 0, n = tokens.length; i < n; ++i) {\n        if (!stop.test(t = tokens[i])) update(t);\n      }\n    };\n\n    const init = this._parameterCheck(_, pulse),\n          counts = this._counts,\n          match = this._match,\n          stop = this._stop,\n          get = _.field,\n          as = _.as || ['text', 'count'],\n          add = process(t => counts[t] = 1 + (counts[t] || 0)),\n          rem = process(t => counts[t] -= 1);\n\n    if (init) {\n      pulse.visit(pulse.SOURCE, add);\n    } else {\n      pulse.visit(pulse.ADD, add);\n      pulse.visit(pulse.REM, rem);\n    }\n\n    return this._finish(pulse, as); // generate output tuples\n  },\n\n  _parameterCheck(_, pulse) {\n    let init = false;\n\n    if (_.modified('stopwords') || !this._stop) {\n      this._stop = new RegExp('^' + (_.stopwords || '') + '$', 'i');\n      init = true;\n    }\n\n    if (_.modified('pattern') || !this._match) {\n      this._match = new RegExp(_.pattern || '[\\\\w\\']+', 'g');\n      init = true;\n    }\n\n    if (_.modified('field') || pulse.modified(_.field.fields)) {\n      init = true;\n    }\n\n    if (init) this._counts = {};\n    return init;\n  },\n\n  _finish(pulse, as) {\n    const counts = this._counts,\n          tuples = this._tuples || (this._tuples = {}),\n          text = as[0],\n          count = as[1],\n          out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n    let w, t, c;\n\n    for (w in counts) {\n      t = tuples[w];\n      c = counts[w] || 0;\n\n      if (!t && c) {\n        tuples[w] = t = ingest({});\n        t[text] = w;\n        t[count] = c;\n        out.add.push(t);\n      } else if (c === 0) {\n        if (t) out.rem.push(t);\n        counts[w] = null;\n        tuples[w] = null;\n      } else if (t[count] !== c) {\n        t[count] = c;\n        out.mod.push(t);\n      }\n    }\n\n    return out.modifies(as);\n  }\n\n});\n\n/**\n * Perform a cross-product of a tuple stream with itself.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object):boolean} [params.filter] - An optional filter\n *   function for selectively including tuples in the cross product.\n * @param {Array<string>} [params.as] - The names of the output fields.\n */\n\nfunction Cross(params) {\n  Transform.call(this, null, params);\n}\nCross.Definition = {\n  'type': 'Cross',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'filter',\n    'type': 'expr'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['a', 'b']\n  }]\n};\ninherits(Cross, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n          as = _.as || ['a', 'b'],\n          a = as[0],\n          b = as[1],\n          reset = !this.value || pulse.changed(pulse.ADD_REM) || _.modified('as') || _.modified('filter');\n\n    let data = this.value;\n\n    if (reset) {\n      if (data) out.rem = data;\n      data = pulse.materialize(pulse.SOURCE).source;\n      out.add = this.value = cross(data, a, b, _.filter || truthy);\n    } else {\n      out.mod = data;\n    }\n\n    out.source = this.value;\n    return out.modifies(as);\n  }\n\n});\n\nfunction cross(input, a, b, filter) {\n  var data = [],\n      t = {},\n      n = input.length,\n      i = 0,\n      j,\n      left;\n\n  for (; i < n; ++i) {\n    t[a] = left = input[i];\n\n    for (j = 0; j < n; ++j) {\n      t[b] = input[j];\n\n      if (filter(t)) {\n        data.push(ingest(t));\n        t = {};\n        t[a] = left;\n      }\n    }\n  }\n\n  return data;\n}\n\nconst Distributions = {\n  kde: randomKDE,\n  mixture: randomMixture,\n  normal: randomNormal,\n  lognormal: randomLogNormal,\n  uniform: randomUniform\n};\nconst DISTRIBUTIONS = 'distributions',\n      FUNCTION = 'function',\n      FIELD = 'field';\n/**\n * Parse a parameter object for a probability distribution.\n * @param {object} def - The distribution parameter object.\n * @param {function():Array<object>} - A method for requesting\n *   source data. Used for distributions (such as KDE) that\n *   require sample data points. This method will only be\n *   invoked if the 'from' parameter for a target data source\n *   is not provided. Typically this method returns backing\n *   source data for a Pulse object.\n * @return {object} - The output distribution object.\n */\n\nfunction parse(def, data) {\n  const func = def[FUNCTION];\n\n  if (!hasOwnProperty(Distributions, func)) {\n    error('Unknown distribution function: ' + func);\n  }\n\n  const d = Distributions[func]();\n\n  for (const name in def) {\n    // if data field, extract values\n    if (name === FIELD) {\n      d.data((def.from || data()).map(def[name]));\n    } // if distribution mixture, recurse to parse each definition\n    else if (name === DISTRIBUTIONS) {\n        d[name](def[name].map(_ => parse(_, data)));\n      } // otherwise, simply set the parameter\n      else if (typeof d[name] === FUNCTION) {\n          d[name](def[name]);\n        }\n  }\n\n  return d;\n}\n\n/**\n * Grid sample points for a probability density. Given a distribution and\n * a sampling extent, will generate points suitable for plotting either\n * PDF (probability density function) or CDF (cumulative distribution\n * function) curves.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.distribution - The probability distribution. This\n *   is an object parameter dependent on the distribution type.\n * @param {string} [params.method='pdf'] - The distribution method to sample.\n *   One of 'pdf' or 'cdf'.\n * @param {Array<number>} [params.extent] - The [min, max] extent over which\n *   to sample the distribution. This argument is required in most cases, but\n *   can be omitted if the distribution (e.g., 'kde') supports a 'data' method\n *   that returns numerical sample points from which the extent can be deduced.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n *   for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n *   for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n *   plotting the density. If specified, overrides both minsteps and maxsteps\n *   to set an exact number of uniform samples. Useful in conjunction with\n *   a fixed extent to ensure consistent sample points for stacked densities.\n */\n\nfunction Density(params) {\n  Transform.call(this, null, params);\n}\nconst distributions = [{\n  'key': {\n    'function': 'normal'\n  },\n  'params': [{\n    'name': 'mean',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'stdev',\n    'type': 'number',\n    'default': 1\n  }]\n}, {\n  'key': {\n    'function': 'lognormal'\n  },\n  'params': [{\n    'name': 'mean',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'stdev',\n    'type': 'number',\n    'default': 1\n  }]\n}, {\n  'key': {\n    'function': 'uniform'\n  },\n  'params': [{\n    'name': 'min',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'max',\n    'type': 'number',\n    'default': 1\n  }]\n}, {\n  'key': {\n    'function': 'kde'\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'from',\n    'type': 'data'\n  }, {\n    'name': 'bandwidth',\n    'type': 'number',\n    'default': 0\n  }]\n}];\nconst mixture = {\n  'key': {\n    'function': 'mixture'\n  },\n  'params': [{\n    'name': 'distributions',\n    'type': 'param',\n    'array': true,\n    'params': distributions\n  }, {\n    'name': 'weights',\n    'type': 'number',\n    'array': true\n  }]\n};\nDensity.Definition = {\n  'type': 'Density',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'extent',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'steps',\n    'type': 'number'\n  }, {\n    'name': 'minsteps',\n    'type': 'number',\n    'default': 25\n  }, {\n    'name': 'maxsteps',\n    'type': 'number',\n    'default': 200\n  }, {\n    'name': 'method',\n    'type': 'string',\n    'default': 'pdf',\n    'values': ['pdf', 'cdf']\n  }, {\n    'name': 'distribution',\n    'type': 'param',\n    'params': distributions.concat(mixture)\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'default': ['value', 'density']\n  }]\n};\ninherits(Density, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n    if (!this.value || pulse.changed() || _.modified()) {\n      const dist = parse(_.distribution, source(pulse)),\n            minsteps = _.steps || _.minsteps || 25,\n            maxsteps = _.steps || _.maxsteps || 200;\n      let method = _.method || 'pdf';\n\n      if (method !== 'pdf' && method !== 'cdf') {\n        error('Invalid density method: ' + method);\n      }\n\n      if (!_.extent && !dist.data) {\n        error('Missing density extent parameter.');\n      }\n\n      method = dist[method];\n      const as = _.as || ['value', 'density'],\n            domain = _.extent || extent(dist.data()),\n            values = sampleCurve(method, domain, minsteps, maxsteps).map(v => {\n        const tuple = {};\n        tuple[as[0]] = v[0];\n        tuple[as[1]] = v[1];\n        return ingest(tuple);\n      });\n      if (this.value) out.rem = this.value;\n      this.value = out.add = out.source = values;\n    }\n\n    return out;\n  }\n\n});\n\nfunction source(pulse) {\n  return () => pulse.materialize(pulse.SOURCE).source;\n}\n\nfunction fieldNames(fields, as) {\n  if (!fields) return null;\n  return fields.map((f, i) => as[i] || accessorName(f));\n}\nfunction partition$1(data, groupby, field) {\n  const groups = [],\n        get = f => f(t);\n\n  let map, i, n, t, k, g; // partition data points into groups\n\n  if (groupby == null) {\n    groups.push(data.map(field));\n  } else {\n    for (map = {}, i = 0, n = data.length; i < n; ++i) {\n      t = data[i];\n      k = groupby.map(get);\n      g = map[k];\n\n      if (!g) {\n        map[k] = g = [];\n        g.dims = k;\n        groups.push(g);\n      }\n\n      g.push(field(t));\n    }\n  }\n\n  return groups;\n}\n\nconst Output = 'bin';\n/**\n * Dot density binning for dot plot construction.\n * Based on Leland Wilkinson, Dot Plots, The American Statistician, 1999.\n * https://www.cs.uic.edu/~wilkinson/Publications/dotplots.pdf\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to bin.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.step] - The step size (bin width) within which dots should be\n *   stacked. Defaults to 1/30 of the extent of the data *field*.\n * @param {boolean} [params.smooth=false] - A boolean flag indicating if dot density\n *   stacks should be smoothed to reduce variance.\n */\n\nfunction DotBin(params) {\n  Transform.call(this, null, params);\n}\nDotBin.Definition = {\n  'type': 'DotBin',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'step',\n    'type': 'number'\n  }, {\n    'name': 'smooth',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': Output\n  }]\n};\n\nconst autostep = (data, field) => span(extent(data, field)) / 30;\n\ninherits(DotBin, Transform, {\n  transform(_, pulse) {\n    if (this.value && !(_.modified() || pulse.changed())) {\n      return pulse; // early exit\n    }\n\n    const source = pulse.materialize(pulse.SOURCE).source,\n          groups = partition$1(pulse.source, _.groupby, identity),\n          smooth = _.smooth || false,\n          field = _.field,\n          step = _.step || autostep(source, field),\n          sort = stableCompare((a, b) => field(a) - field(b)),\n          as = _.as || Output,\n          n = groups.length; // compute dotplot bins per group\n\n    let min = Infinity,\n        max = -Infinity,\n        i = 0,\n        j;\n\n    for (; i < n; ++i) {\n      const g = groups[i].sort(sort);\n      j = -1;\n\n      for (const v of dotbin(g, step, smooth, field)) {\n        if (v < min) min = v;\n        if (v > max) max = v;\n        g[++j][as] = v;\n      }\n    }\n\n    this.value = {\n      start: min,\n      stop: max,\n      step: step\n    };\n    return pulse.reflow(true).modifies(as);\n  }\n\n});\n\n/**\n * Wraps an expression function with access to external parameters.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function} params.expr - The expression function. The\n *  function should accept both a datum and a parameter object.\n *  This operator's value will be a new function that wraps the\n *  expression function with access to this operator's parameters.\n */\n\nfunction Expression(params) {\n  Operator.call(this, null, update$4, params);\n  this.modified(true);\n}\ninherits(Expression, Operator);\n\nfunction update$4(_) {\n  const expr = _.expr;\n  return this.value && !_.modified('expr') ? this.value : accessor(datum => expr(datum, _), accessorFields(expr), accessorName(expr));\n}\n\n/**\n * Computes extents (min/max) for a data field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field over which to compute extends.\n */\n\nfunction Extent(params) {\n  Transform.call(this, [undefined, undefined], params);\n}\nExtent.Definition = {\n  'type': 'Extent',\n  'metadata': {},\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }]\n};\ninherits(Extent, Transform, {\n  transform(_, pulse) {\n    const extent = this.value,\n          field = _.field,\n          mod = pulse.changed() || pulse.modified(field.fields) || _.modified('field');\n\n    let min = extent[0],\n        max = extent[1];\n\n    if (mod || min == null) {\n      min = +Infinity;\n      max = -Infinity;\n    }\n\n    pulse.visit(mod ? pulse.SOURCE : pulse.ADD, t => {\n      const v = toNumber(field(t));\n\n      if (v != null) {\n        // NaNs will fail all comparisons!\n        if (v < min) min = v;\n        if (v > max) max = v;\n      }\n    });\n\n    if (!Number.isFinite(min) || !Number.isFinite(max)) {\n      let name = accessorName(field);\n      if (name) name = ` for field \"${name}\"`;\n      pulse.dataflow.warn(`Infinite extent${name}: [${min}, ${max}]`);\n      min = max = undefined;\n    }\n\n    this.value = [min, max];\n  }\n\n});\n\n/**\n * Provides a bridge between a parent transform and a target subflow that\n * consumes only a subset of the tuples that pass through the parent.\n * @constructor\n * @param {Pulse} pulse - A pulse to use as the value of this operator.\n * @param {Transform} parent - The parent transform (typically a Facet instance).\n */\n\nfunction Subflow(pulse, parent) {\n  Operator.call(this, pulse);\n  this.parent = parent;\n  this.count = 0;\n}\ninherits(Subflow, Operator, {\n  /**\n   * Routes pulses from this subflow to a target transform.\n   * @param {Transform} target - A transform that receives the subflow of tuples.\n   */\n  connect(target) {\n    this.detachSubflow = target.detachSubflow;\n    this.targets().add(target);\n    return target.source = this;\n  },\n\n  /**\n   * Add an 'add' tuple to the subflow pulse.\n   * @param {Tuple} t - The tuple being added.\n   */\n  add(t) {\n    this.count += 1;\n    this.value.add.push(t);\n  },\n\n  /**\n   * Add a 'rem' tuple to the subflow pulse.\n   * @param {Tuple} t - The tuple being removed.\n   */\n  rem(t) {\n    this.count -= 1;\n    this.value.rem.push(t);\n  },\n\n  /**\n   * Add a 'mod' tuple to the subflow pulse.\n   * @param {Tuple} t - The tuple being modified.\n   */\n  mod(t) {\n    this.value.mod.push(t);\n  },\n\n  /**\n   * Re-initialize this operator's pulse value.\n   * @param {Pulse} pulse - The pulse to copy from.\n   * @see Pulse.init\n   */\n  init(pulse) {\n    this.value.init(pulse, pulse.NO_SOURCE);\n  },\n\n  /**\n   * Evaluate this operator. This method overrides the\n   * default behavior to simply return the contained pulse value.\n   * @return {Pulse}\n   */\n  evaluate() {\n    // assert: this.value.stamp === pulse.stamp\n    return this.value;\n  }\n\n});\n\n/**\n * Facets a dataflow into a set of subflows based on a key.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n *   that generates a subflow of operators and returns its root operator.\n * @param {function(object): *} params.key - The key field to facet by.\n */\n\nfunction Facet(params) {\n  Transform.call(this, {}, params);\n  this._keys = fastmap(); // cache previously calculated key values\n  // keep track of active subflows, use as targets array for listeners\n  // this allows us to limit propagation to only updated subflows\n\n  const a = this._targets = [];\n  a.active = 0;\n\n  a.forEach = f => {\n    for (let i = 0, n = a.active; i < n; ++i) {\n      f(a[i], i, a);\n    }\n  };\n}\ninherits(Facet, Transform, {\n  activate(flow) {\n    this._targets[this._targets.active++] = flow;\n  },\n\n  // parent argument provided by PreFacet subclass\n  subflow(key, flow, pulse, parent) {\n    const flows = this.value;\n    let sf = hasOwnProperty(flows, key) && flows[key],\n        df,\n        p;\n\n    if (!sf) {\n      p = parent || (p = this._group[key]) && p.tuple;\n      df = pulse.dataflow;\n      sf = new Subflow(pulse.fork(pulse.NO_SOURCE), this);\n      df.add(sf).connect(flow(df, key, p));\n      flows[key] = sf;\n      this.activate(sf);\n    } else if (sf.value.stamp < pulse.stamp) {\n      sf.init(pulse);\n      this.activate(sf);\n    }\n\n    return sf;\n  },\n\n  clean() {\n    const flows = this.value;\n    let detached = 0;\n\n    for (const key in flows) {\n      if (flows[key].count === 0) {\n        const detach = flows[key].detachSubflow;\n        if (detach) detach();\n        delete flows[key];\n        ++detached;\n      }\n    } // remove inactive targets from the active targets array\n\n\n    if (detached) {\n      const active = this._targets.filter(sf => sf && sf.count > 0);\n\n      this.initTargets(active);\n    }\n  },\n\n  initTargets(act) {\n    const a = this._targets,\n          n = a.length,\n          m = act ? act.length : 0;\n    let i = 0;\n\n    for (; i < m; ++i) {\n      a[i] = act[i];\n    }\n\n    for (; i < n && a[i] != null; ++i) {\n      a[i] = null; // ensure old flows can be garbage collected\n    }\n\n    a.active = m;\n  },\n\n  transform(_, pulse) {\n    const df = pulse.dataflow,\n          key = _.key,\n          flow = _.subflow,\n          cache = this._keys,\n          rekey = _.modified('key'),\n          subflow = key => this.subflow(key, flow, pulse);\n\n    this._group = _.group || {};\n    this.initTargets(); // reset list of active subflows\n\n    pulse.visit(pulse.REM, t => {\n      const id = tupleid(t),\n            k = cache.get(id);\n\n      if (k !== undefined) {\n        cache.delete(id);\n        subflow(k).rem(t);\n      }\n    });\n    pulse.visit(pulse.ADD, t => {\n      const k = key(t);\n      cache.set(tupleid(t), k);\n      subflow(k).add(t);\n    });\n\n    if (rekey || pulse.modified(key.fields)) {\n      pulse.visit(pulse.MOD, t => {\n        const id = tupleid(t),\n              k0 = cache.get(id),\n              k1 = key(t);\n\n        if (k0 === k1) {\n          subflow(k1).mod(t);\n        } else {\n          cache.set(id, k1);\n          subflow(k0).rem(t);\n          subflow(k1).add(t);\n        }\n      });\n    } else if (pulse.changed(pulse.MOD)) {\n      pulse.visit(pulse.MOD, t => {\n        subflow(cache.get(tupleid(t))).mod(t);\n      });\n    }\n\n    if (rekey) {\n      pulse.visit(pulse.REFLOW, t => {\n        const id = tupleid(t),\n              k0 = cache.get(id),\n              k1 = key(t);\n\n        if (k0 !== k1) {\n          cache.set(id, k1);\n          subflow(k0).rem(t);\n          subflow(k1).add(t);\n        }\n      });\n    }\n\n    if (pulse.clean()) {\n      df.runAfter(() => {\n        this.clean();\n        cache.clean();\n      });\n    } else if (cache.empty > df.cleanThreshold) {\n      df.runAfter(cache.clean);\n    }\n\n    return pulse;\n  }\n\n});\n\n/**\n * Generates one or more field accessor functions.\n * If the 'name' parameter is an array, an array of field accessors\n * will be created and the 'as' parameter will be ignored.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.name - The field name(s) to access.\n * @param {string} params.as - The accessor function name.\n */\n\nfunction Field(params) {\n  Operator.call(this, null, update$3, params);\n}\ninherits(Field, Operator);\n\nfunction update$3(_) {\n  return this.value && !_.modified() ? this.value : isArray(_.name) ? array(_.name).map(f => field(f)) : field(_.name, _.as);\n}\n\n/**\n * Filters data tuples according to a predicate function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The predicate expression function\n *   that determines a tuple's filter status. Truthy values pass the filter.\n */\n\nfunction Filter(params) {\n  Transform.call(this, fastmap(), params);\n}\nFilter.Definition = {\n  'type': 'Filter',\n  'metadata': {\n    'changes': true\n  },\n  'params': [{\n    'name': 'expr',\n    'type': 'expr',\n    'required': true\n  }]\n};\ninherits(Filter, Transform, {\n  transform(_, pulse) {\n    const df = pulse.dataflow,\n          cache = this.value,\n          // cache ids of filtered tuples\n    output = pulse.fork(),\n          add = output.add,\n          rem = output.rem,\n          mod = output.mod,\n          test = _.expr;\n    let isMod = true;\n    pulse.visit(pulse.REM, t => {\n      const id = tupleid(t);\n      if (!cache.has(id)) rem.push(t);else cache.delete(id);\n    });\n    pulse.visit(pulse.ADD, t => {\n      if (test(t, _)) add.push(t);else cache.set(tupleid(t), 1);\n    });\n\n    function revisit(t) {\n      const id = tupleid(t),\n            b = test(t, _),\n            s = cache.get(id);\n\n      if (b && s) {\n        cache.delete(id);\n        add.push(t);\n      } else if (!b && !s) {\n        cache.set(id, 1);\n        rem.push(t);\n      } else if (isMod && b && !s) {\n        mod.push(t);\n      }\n    }\n\n    pulse.visit(pulse.MOD, revisit);\n\n    if (_.modified()) {\n      isMod = false;\n      pulse.visit(pulse.REFLOW, revisit);\n    }\n\n    if (cache.empty > df.cleanThreshold) df.runAfter(cache.clean);\n    return output;\n  }\n\n});\n\n/**\n * Flattens array-typed field values into new data objects.\n * If multiple fields are specified, they are treated as parallel arrays,\n * with output values included for each matching index (or null if missing).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.fields - An array of field\n *   accessors for the tuple fields that should be flattened.\n * @param {string} [params.index] - Optional output field name for index\n *   value. If unspecified, no index field is included in the output.\n * @param {Array<string>} [params.as] - Output field names for flattened\n *   array fields. Any unspecified fields will use the field name provided\n *   by the fields accessors.\n */\n\nfunction Flatten(params) {\n  Transform.call(this, [], params);\n}\nFlatten.Definition = {\n  'type': 'Flatten',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true\n  }, {\n    'name': 'index',\n    'type': 'string'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true\n  }]\n};\ninherits(Flatten, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n          fields = _.fields,\n          as = fieldNames(fields, _.as || []),\n          index = _.index || null,\n          m = as.length; // remove any previous results\n\n    out.rem = this.value; // generate flattened tuples\n\n    pulse.visit(pulse.SOURCE, t => {\n      const arrays = fields.map(f => f(t)),\n            maxlen = arrays.reduce((l, a) => Math.max(l, a.length), 0);\n      let i = 0,\n          j,\n          d,\n          v;\n\n      for (; i < maxlen; ++i) {\n        d = derive(t);\n\n        for (j = 0; j < m; ++j) {\n          d[as[j]] = (v = arrays[j][i]) == null ? null : v;\n        }\n\n        if (index) {\n          d[index] = i;\n        }\n\n        out.add.push(d);\n      }\n    });\n    this.value = out.source = out.add;\n    if (index) out.modifies(index);\n    return out.modifies(as);\n  }\n\n});\n\n/**\n * Folds one more tuple fields into multiple tuples in which the field\n * name and values are available under new 'key' and 'value' fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.fields - An array of field accessors\n *   for the tuple fields that should be folded.\n * @param {Array<string>} [params.as] - Output field names for folded key\n *   and value fields, defaults to ['key', 'value'].\n */\n\nfunction Fold(params) {\n  Transform.call(this, [], params);\n}\nFold.Definition = {\n  'type': 'Fold',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['key', 'value']\n  }]\n};\ninherits(Fold, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n          fields = _.fields,\n          fnames = fields.map(accessorName),\n          as = _.as || ['key', 'value'],\n          k = as[0],\n          v = as[1],\n          n = fields.length;\n    out.rem = this.value;\n    pulse.visit(pulse.SOURCE, t => {\n      for (let i = 0, d; i < n; ++i) {\n        d = derive(t);\n        d[k] = fnames[i];\n        d[v] = fields[i](t);\n        out.add.push(d);\n      }\n    });\n    this.value = out.source = out.add;\n    return out.modifies(as);\n  }\n\n});\n\n/**\n * Invokes a function for each data tuple and saves the results as a new field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The formula function to invoke for each tuple.\n * @param {string} params.as - The field name under which to save the result.\n * @param {boolean} [params.initonly=false] - If true, the formula is applied to\n *   added tuples only, and does not update in response to modifications.\n */\n\nfunction Formula(params) {\n  Transform.call(this, null, params);\n}\nFormula.Definition = {\n  'type': 'Formula',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'expr',\n    'type': 'expr',\n    'required': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'required': true\n  }, {\n    'name': 'initonly',\n    'type': 'boolean'\n  }]\n};\ninherits(Formula, Transform, {\n  transform(_, pulse) {\n    const func = _.expr,\n          as = _.as,\n          mod = _.modified(),\n          flag = _.initonly ? pulse.ADD : mod ? pulse.SOURCE : pulse.modified(func.fields) || pulse.modified(as) ? pulse.ADD_MOD : pulse.ADD;\n\n    if (mod) {\n      // parameters updated, need to reflow\n      pulse = pulse.materialize().reflow(true);\n    }\n\n    if (!_.initonly) {\n      pulse.modifies(as);\n    }\n\n    return pulse.visit(flag, t => t[as] = func(t, _));\n  }\n\n});\n\n/**\n * Generates data tuples using a provided generator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Parameters): object} params.generator - A tuple generator\n *   function. This function is given the operator parameters as input.\n *   Changes to any additional parameters will not trigger re-calculation\n *   of previously generated tuples. Only future tuples are affected.\n * @param {number} params.size - The number of tuples to produce.\n */\n\nfunction Generate(params) {\n  Transform.call(this, [], params);\n}\ninherits(Generate, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.ALL),\n          gen = _.generator;\n    let data = this.value,\n        num = _.size - data.length,\n        add,\n        rem,\n        t;\n\n    if (num > 0) {\n      // need more tuples, generate and add\n      for (add = []; --num >= 0;) {\n        add.push(t = ingest(gen(_)));\n        data.push(t);\n      }\n\n      out.add = out.add.length ? out.materialize(out.ADD).add.concat(add) : add;\n    } else {\n      // need fewer tuples, remove\n      rem = data.slice(0, -num);\n      out.rem = out.rem.length ? out.materialize(out.REM).rem.concat(rem) : rem;\n      data = data.slice(-num);\n    }\n\n    out.source = this.value = data;\n    return out;\n  }\n\n});\n\nconst Methods = {\n  value: 'value',\n  median: median,\n  mean: mean,\n  min: min,\n  max: max\n};\nconst Empty = [];\n/**\n * Impute missing values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to impute.\n * @param {Array<function(object): *>} [params.groupby] - An array of\n *   accessors to determine series within which to perform imputation.\n * @param {function(object): *} params.key - An accessor for a key value.\n *   Each key value should be unique within a group. New tuples will be\n *   imputed for any key values that are not found within a group.\n * @param {Array<*>} [params.keyvals] - Optional array of required key\n *   values. New tuples will be imputed for any key values that are not\n *   found within a group. In addition, these values will be automatically\n *   augmented with the key values observed in the input data.\n * @param {string} [method='value'] - The imputation method to use. One of\n *   'value', 'mean', 'median', 'max', 'min'.\n * @param {*} [value=0] - The constant value to use for imputation\n *   when using method 'value'.\n */\n\nfunction Impute(params) {\n  Transform.call(this, [], params);\n}\nImpute.Definition = {\n  'type': 'Impute',\n  'metadata': {\n    'changes': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'key',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'keyvals',\n    'array': true\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'method',\n    'type': 'enum',\n    'default': 'value',\n    'values': ['value', 'mean', 'median', 'max', 'min']\n  }, {\n    'name': 'value',\n    'default': 0\n  }]\n};\n\nfunction getValue(_) {\n  var m = _.method || Methods.value,\n      v;\n\n  if (Methods[m] == null) {\n    error('Unrecognized imputation method: ' + m);\n  } else if (m === Methods.value) {\n    v = _.value !== undefined ? _.value : 0;\n    return () => v;\n  } else {\n    return Methods[m];\n  }\n}\n\nfunction getField(_) {\n  const f = _.field;\n  return t => t ? f(t) : NaN;\n}\n\ninherits(Impute, Transform, {\n  transform(_, pulse) {\n    var out = pulse.fork(pulse.ALL),\n        impute = getValue(_),\n        field = getField(_),\n        fName = accessorName(_.field),\n        kName = accessorName(_.key),\n        gNames = (_.groupby || []).map(accessorName),\n        groups = partition(pulse.source, _.groupby, _.key, _.keyvals),\n        curr = [],\n        prev = this.value,\n        m = groups.domain.length,\n        group,\n        value,\n        gVals,\n        kVal,\n        g,\n        i,\n        j,\n        l,\n        n,\n        t;\n\n    for (g = 0, l = groups.length; g < l; ++g) {\n      group = groups[g];\n      gVals = group.values;\n      value = NaN; // add tuples for missing values\n\n      for (j = 0; j < m; ++j) {\n        if (group[j] != null) continue;\n        kVal = groups.domain[j];\n        t = {\n          _impute: true\n        };\n\n        for (i = 0, n = gVals.length; i < n; ++i) t[gNames[i]] = gVals[i];\n\n        t[kName] = kVal;\n        t[fName] = Number.isNaN(value) ? value = impute(group, field) : value;\n        curr.push(ingest(t));\n      }\n    } // update pulse with imputed tuples\n\n\n    if (curr.length) out.add = out.materialize(out.ADD).add.concat(curr);\n    if (prev.length) out.rem = out.materialize(out.REM).rem.concat(prev);\n    this.value = curr;\n    return out;\n  }\n\n});\n\nfunction partition(data, groupby, key, keyvals) {\n  var get = f => f(t),\n      groups = [],\n      domain = keyvals ? keyvals.slice() : [],\n      kMap = {},\n      gMap = {},\n      gVals,\n      gKey,\n      group,\n      i,\n      j,\n      k,\n      n,\n      t;\n\n  domain.forEach((k, i) => kMap[k] = i + 1);\n\n  for (i = 0, n = data.length; i < n; ++i) {\n    t = data[i];\n    k = key(t);\n    j = kMap[k] || (kMap[k] = domain.push(k));\n    gKey = (gVals = groupby ? groupby.map(get) : Empty) + '';\n\n    if (!(group = gMap[gKey])) {\n      group = gMap[gKey] = [];\n      groups.push(group);\n      group.values = gVals;\n    }\n\n    group[j - 1] = t;\n  }\n\n  groups.domain = domain;\n  return groups;\n}\n\n/**\n * Extend input tuples with aggregate values.\n * Calcuates aggregate values and joins them with the input stream.\n * @constructor\n */\n\nfunction JoinAggregate(params) {\n  Aggregate.call(this, params);\n}\nJoinAggregate.Definition = {\n  'type': 'JoinAggregate',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'ops',\n    'type': 'enum',\n    'array': true,\n    'values': ValidAggregateOps\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'key',\n    'type': 'field'\n  }]\n};\ninherits(JoinAggregate, Aggregate, {\n  transform(_, pulse) {\n    const aggr = this,\n          mod = _.modified();\n\n    let cells; // process all input tuples to calculate aggregates\n\n    if (aggr.value && (mod || pulse.modified(aggr._inputs, true))) {\n      cells = aggr.value = mod ? aggr.init(_) : {};\n      pulse.visit(pulse.SOURCE, t => aggr.add(t));\n    } else {\n      cells = aggr.value = aggr.value || this.init(_);\n      pulse.visit(pulse.REM, t => aggr.rem(t));\n      pulse.visit(pulse.ADD, t => aggr.add(t));\n    } // update aggregation cells\n\n\n    aggr.changes(); // write aggregate values to input tuples\n\n    pulse.visit(pulse.SOURCE, t => {\n      extend(t, cells[aggr.cellkey(t)].tuple);\n    });\n    return pulse.reflow(mod).modifies(this._outputs);\n  },\n\n  changes() {\n    const adds = this._adds,\n          mods = this._mods;\n    let i, n;\n\n    for (i = 0, n = this._alen; i < n; ++i) {\n      this.celltuple(adds[i]);\n      adds[i] = null; // for garbage collection\n    }\n\n    for (i = 0, n = this._mlen; i < n; ++i) {\n      this.celltuple(mods[i]);\n      mods[i] = null; // for garbage collection\n    }\n\n    this._alen = this._mlen = 0; // reset list of active cells\n  }\n\n});\n\n/**\n * Compute kernel density estimates (KDE) for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n *   to groupby.\n * @param {function(object): *} params.field - An accessor for the data field\n *   to estimate.\n * @param {number} [params.bandwidth=0] - The KDE kernel bandwidth.\n *   If zero or unspecified, the bandwidth is automatically determined.\n * @param {boolean} [params.counts=false] - A boolean flag indicating if the\n *   output values should be probability estimates (false, default) or\n *   smoothed counts (true).\n * @param {string} [params.cumulative=false] - A boolean flag indicating if a\n *   density (false) or cumulative distribution (true) should be generated.\n * @param {Array<number>} [params.extent] - The domain extent over which to\n *   plot the density. If unspecified, the [min, max] data extent is used.\n * @param {string} [params.resolve='independent'] - Indicates how parameters for\n *   multiple densities should be resolved. If \"independent\" (the default), each\n *   density may have its own domain extent and dynamic number of curve sample\n *   steps. If \"shared\", the KDE transform will ensure that all densities are\n *   defined over a shared domain and curve steps, enabling stacking.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n *   for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n *   for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n *   plotting the density. If specified, overrides both minsteps and maxsteps\n *   to set an exact number of uniform samples. Useful in conjunction with\n *   a fixed extent to ensure consistent sample points for stacked densities.\n */\n\nfunction KDE(params) {\n  Transform.call(this, null, params);\n}\nKDE.Definition = {\n  'type': 'KDE',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'cumulative',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'counts',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'bandwidth',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'extent',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'resolve',\n    'type': 'enum',\n    'values': ['shared', 'independent'],\n    'default': 'independent'\n  }, {\n    'name': 'steps',\n    'type': 'number'\n  }, {\n    'name': 'minsteps',\n    'type': 'number',\n    'default': 25\n  }, {\n    'name': 'maxsteps',\n    'type': 'number',\n    'default': 200\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'default': ['value', 'density']\n  }]\n};\ninherits(KDE, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n    if (!this.value || pulse.changed() || _.modified()) {\n      const source = pulse.materialize(pulse.SOURCE).source,\n            groups = partition$1(source, _.groupby, _.field),\n            names = (_.groupby || []).map(accessorName),\n            bandwidth = _.bandwidth,\n            method = _.cumulative ? 'cdf' : 'pdf',\n            as = _.as || ['value', 'density'],\n            values = [];\n      let domain = _.extent,\n          minsteps = _.steps || _.minsteps || 25,\n          maxsteps = _.steps || _.maxsteps || 200;\n\n      if (method !== 'pdf' && method !== 'cdf') {\n        error('Invalid density method: ' + method);\n      }\n\n      if (_.resolve === 'shared') {\n        if (!domain) domain = extent(source, _.field);\n        minsteps = maxsteps = _.steps || maxsteps;\n      }\n\n      groups.forEach(g => {\n        const density = randomKDE(g, bandwidth)[method],\n              scale = _.counts ? g.length : 1,\n              local = domain || extent(g);\n        sampleCurve(density, local, minsteps, maxsteps).forEach(v => {\n          const t = {};\n\n          for (let i = 0; i < names.length; ++i) {\n            t[names[i]] = g.dims[i];\n          }\n\n          t[as[0]] = v[0];\n          t[as[1]] = v[1] * scale;\n          values.push(ingest(t));\n        });\n      });\n      if (this.value) out.rem = this.value;\n      this.value = out.add = out.source = values;\n    }\n\n    return out;\n  }\n\n});\n\n/**\n * Generates a key function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<string>} params.fields - The field name(s) for the key function.\n * @param {boolean} params.flat - A boolean flag indicating if the field names\n *  should be treated as flat property names, side-stepping nested field\n *  lookups normally indicated by dot or bracket notation.\n */\n\nfunction Key(params) {\n  Operator.call(this, null, update$2, params);\n}\ninherits(Key, Operator);\n\nfunction update$2(_) {\n  return this.value && !_.modified() ? this.value : key(_.fields, _.flat);\n}\n\n/**\n * Load and parse data from an external source. Marshalls parameter\n * values and then invokes the Dataflow request method.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.url - The URL to load from.\n * @param {object} params.format - The data format options.\n */\n\nfunction Load(params) {\n  Transform.call(this, [], params);\n  this._pending = null;\n}\ninherits(Load, Transform, {\n  transform(_, pulse) {\n    const df = pulse.dataflow;\n\n    if (this._pending) {\n      // update state and return pulse\n      return output(this, pulse, this._pending);\n    }\n\n    if (stop(_)) return pulse.StopPropagation;\n\n    if (_.values) {\n      // parse and ingest values, return output pulse\n      return output(this, pulse, df.parse(_.values, _.format));\n    } else if (_.async) {\n      // return promise for non-blocking async loading\n      const p = df.request(_.url, _.format).then(res => {\n        this._pending = array(res.data);\n        return df => df.touch(this);\n      });\n      return {\n        async: p\n      };\n    } else {\n      // return promise for synchronous loading\n      return df.request(_.url, _.format).then(res => output(this, pulse, array(res.data)));\n    }\n  }\n\n});\n\nfunction stop(_) {\n  return _.modified('async') && !(_.modified('values') || _.modified('url') || _.modified('format'));\n}\n\nfunction output(op, pulse, data) {\n  data.forEach(ingest);\n  const out = pulse.fork(pulse.NO_FIELDS & pulse.NO_SOURCE);\n  out.rem = op.value;\n  op.value = out.source = out.add = data;\n  op._pending = null;\n  if (out.rem.length) out.clean(true);\n  return out;\n}\n\n/**\n * Extend tuples by joining them with values from a lookup table.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Map} params.index - The lookup table map.\n * @param {Array<function(object): *} params.fields - The fields to lookup.\n * @param {Array<string>} params.as - Output field names for each lookup value.\n * @param {*} [params.default] - A default value to use if lookup fails.\n */\n\nfunction Lookup(params) {\n  Transform.call(this, {}, params);\n}\nLookup.Definition = {\n  'type': 'Lookup',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'index',\n    'type': 'index',\n    'params': [{\n      'name': 'from',\n      'type': 'data',\n      'required': true\n    }, {\n      'name': 'key',\n      'type': 'field',\n      'required': true\n    }]\n  }, {\n    'name': 'values',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true\n  }, {\n    'name': 'default',\n    'default': null\n  }]\n};\ninherits(Lookup, Transform, {\n  transform(_, pulse) {\n    const keys = _.fields,\n          index = _.index,\n          values = _.values,\n          defaultValue = _.default == null ? null : _.default,\n          reset = _.modified(),\n          n = keys.length;\n\n    let flag = reset ? pulse.SOURCE : pulse.ADD,\n        out = pulse,\n        as = _.as,\n        set,\n        m,\n        mods;\n\n    if (values) {\n      m = values.length;\n\n      if (n > 1 && !as) {\n        error('Multi-field lookup requires explicit \"as\" parameter.');\n      }\n\n      if (as && as.length !== n * m) {\n        error('The \"as\" parameter has too few output field names.');\n      }\n\n      as = as || values.map(accessorName);\n\n      set = function (t) {\n        for (var i = 0, k = 0, j, v; i < n; ++i) {\n          v = index.get(keys[i](t));\n          if (v == null) for (j = 0; j < m; ++j, ++k) t[as[k]] = defaultValue;else for (j = 0; j < m; ++j, ++k) t[as[k]] = values[j](v);\n        }\n      };\n    } else {\n      if (!as) {\n        error('Missing output field names.');\n      }\n\n      set = function (t) {\n        for (var i = 0, v; i < n; ++i) {\n          v = index.get(keys[i](t));\n          t[as[i]] = v == null ? defaultValue : v;\n        }\n      };\n    }\n\n    if (reset) {\n      out = pulse.reflow(true);\n    } else {\n      mods = keys.some(k => pulse.modified(k.fields));\n      flag |= mods ? pulse.MOD : 0;\n    }\n\n    pulse.visit(flag, set);\n    return out.modifies(as);\n  }\n\n});\n\n/**\n * Computes global min/max extents over a collection of extents.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<Array<number>>} params.extents - The input extents.\n */\n\nfunction MultiExtent(params) {\n  Operator.call(this, null, update$1, params);\n}\ninherits(MultiExtent, Operator);\n\nfunction update$1(_) {\n  if (this.value && !_.modified()) {\n    return this.value;\n  }\n\n  const ext = _.extents,\n        n = ext.length;\n  let min = +Infinity,\n      max = -Infinity,\n      i,\n      e;\n\n  for (i = 0; i < n; ++i) {\n    e = ext[i];\n    if (e[0] < min) min = e[0];\n    if (e[1] > max) max = e[1];\n  }\n\n  return [min, max];\n}\n\n/**\n * Merge a collection of value arrays.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<Array<*>>} params.values - The input value arrrays.\n */\n\nfunction MultiValues(params) {\n  Operator.call(this, null, update, params);\n}\ninherits(MultiValues, Operator);\n\nfunction update(_) {\n  return this.value && !_.modified() ? this.value : _.values.reduce((data, _) => data.concat(_), []);\n}\n\n/**\n * Operator whose value is simply its parameter hash. This operator is\n * useful for enabling reactive updates to values of nested objects.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\n\nfunction Params(params) {\n  Transform.call(this, null, params);\n}\ninherits(Params, Transform, {\n  transform(_, pulse) {\n    this.modified(_.modified());\n    this.value = _;\n    return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS); // do not pass tuples\n  }\n\n});\n\n/**\n * Aggregate and pivot selected field values to become new fields.\n * This operator is useful to construction cross-tabulations.\n * @constructor\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n *  to groupby. These fields act just like groupby fields of an Aggregate transform.\n * @param {function(object): *} params.field - The field to pivot on. The unique\n *  values of this field become new field names in the output stream.\n * @param {function(object): *} params.value - The field to populate pivoted fields.\n *  The aggregate values of this field become the values of the new pivoted fields.\n * @param {string} [params.op] - The aggregation operation for the value field,\n *  applied per cell in the output stream. The default is \"sum\".\n * @param {number} [params.limit] - An optional parameter indicating the maximum\n *  number of pivoted fields to generate. The pivoted field names are sorted in\n *  ascending order prior to enforcing the limit.\n */\n\nfunction Pivot(params) {\n  Aggregate.call(this, params);\n}\nPivot.Definition = {\n  'type': 'Pivot',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'value',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'op',\n    'type': 'enum',\n    'values': ValidAggregateOps,\n    'default': 'sum'\n  }, {\n    'name': 'limit',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'key',\n    'type': 'field'\n  }]\n};\ninherits(Pivot, Aggregate, {\n  _transform: Aggregate.prototype.transform,\n\n  transform(_, pulse) {\n    return this._transform(aggregateParams(_, pulse), pulse);\n  }\n\n}); // Shoehorn a pivot transform into an aggregate transform!\n// First collect all unique pivot field values.\n// Then generate aggregate fields for each output pivot field.\n\nfunction aggregateParams(_, pulse) {\n  const key = _.field,\n        value = _.value,\n        op = (_.op === 'count' ? '__count__' : _.op) || 'sum',\n        fields = accessorFields(key).concat(accessorFields(value)),\n        keys = pivotKeys(key, _.limit || 0, pulse); // if data stream content changes, pivot fields may change\n  // flag parameter modification to ensure re-initialization\n\n  if (pulse.changed()) _.set('__pivot__', null, null, true);\n  return {\n    key: _.key,\n    groupby: _.groupby,\n    ops: keys.map(() => op),\n    fields: keys.map(k => get(k, key, value, fields)),\n    as: keys.map(k => k + ''),\n    modified: _.modified.bind(_)\n  };\n} // Generate aggregate field accessor.\n// Output NaN for non-existent values; aggregator will ignore!\n\n\nfunction get(k, key, value, fields) {\n  return accessor(d => key(d) === k ? value(d) : NaN, fields, k + '');\n} // Collect (and optionally limit) all unique pivot values.\n\n\nfunction pivotKeys(key, limit, pulse) {\n  const map = {},\n        list = [];\n  pulse.visit(pulse.SOURCE, t => {\n    const k = key(t);\n\n    if (!map[k]) {\n      map[k] = 1;\n      list.push(k);\n    }\n  });\n  list.sort(ascending);\n  return limit ? list.slice(0, limit) : list;\n}\n\n/**\n * Partitions pre-faceted data into tuple subflows.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n *   that generates a subflow of operators and returns its root operator.\n * @param {function(object): Array<object>} params.field - The field\n *   accessor for an array of subflow tuple objects.\n */\n\nfunction PreFacet(params) {\n  Facet.call(this, params);\n}\ninherits(PreFacet, Facet, {\n  transform(_, pulse) {\n    const flow = _.subflow,\n          field = _.field,\n          subflow = t => this.subflow(tupleid(t), flow, pulse, t);\n\n    if (_.modified('field') || field && pulse.modified(accessorFields(field))) {\n      error('PreFacet does not support field modification.');\n    }\n\n    this.initTargets(); // reset list of active subflows\n\n    if (field) {\n      pulse.visit(pulse.MOD, t => {\n        const sf = subflow(t);\n        field(t).forEach(_ => sf.mod(_));\n      });\n      pulse.visit(pulse.ADD, t => {\n        const sf = subflow(t);\n        field(t).forEach(_ => sf.add(ingest(_)));\n      });\n      pulse.visit(pulse.REM, t => {\n        const sf = subflow(t);\n        field(t).forEach(_ => sf.rem(_));\n      });\n    } else {\n      pulse.visit(pulse.MOD, t => subflow(t).mod(t));\n      pulse.visit(pulse.ADD, t => subflow(t).add(t));\n      pulse.visit(pulse.REM, t => subflow(t).rem(t));\n    }\n\n    if (pulse.clean()) {\n      pulse.runAfter(() => this.clean());\n    }\n\n    return pulse;\n  }\n\n});\n\n/**\n * Performs a relational projection, copying selected fields from source\n * tuples to a new set of derived tuples.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *} params.fields - The fields to project,\n *   as an array of field accessors. If unspecified, all fields will be\n *   copied with names unchanged.\n * @param {Array<string>} [params.as] - Output field names for each projected\n *   field. Any unspecified fields will use the field name provided by\n *   the field accessor.\n */\n\nfunction Project(params) {\n  Transform.call(this, null, params);\n}\nProject.Definition = {\n  'type': 'Project',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'array': true\n  }]\n};\ninherits(Project, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n          fields = _.fields,\n          as = fieldNames(_.fields, _.as || []),\n          derive = fields ? (s, t) => project(s, t, fields, as) : rederive;\n    let lut;\n\n    if (this.value) {\n      lut = this.value;\n    } else {\n      pulse = pulse.addAll();\n      lut = this.value = {};\n    }\n\n    pulse.visit(pulse.REM, t => {\n      const id = tupleid(t);\n      out.rem.push(lut[id]);\n      lut[id] = null;\n    });\n    pulse.visit(pulse.ADD, t => {\n      const dt = derive(t, ingest({}));\n      lut[tupleid(t)] = dt;\n      out.add.push(dt);\n    });\n    pulse.visit(pulse.MOD, t => {\n      out.mod.push(derive(t, lut[tupleid(t)]));\n    });\n    return out;\n  }\n\n});\n\nfunction project(s, t, fields, as) {\n  for (let i = 0, n = fields.length; i < n; ++i) {\n    t[as[i]] = fields[i](s);\n  }\n\n  return t;\n}\n\n/**\n * Proxy the value of another operator as a pure signal value.\n * Ensures no tuples are propagated.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {*} params.value - The value to proxy, becomes the value of this operator.\n */\n\nfunction Proxy(params) {\n  Transform.call(this, null, params);\n}\ninherits(Proxy, Transform, {\n  transform(_, pulse) {\n    this.value = _.value;\n    return _.modified('value') ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS) : pulse.StopPropagation;\n  }\n\n});\n\n/**\n * Generates sample quantile values from an input data stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the data field\n *   over which to calculate quantile values.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n *   to groupby.\n * @param {Array<number>} [params.probs] - An array of probabilities in\n *   the range (0, 1) for which to compute quantile values. If not specified,\n *   the *step* parameter will be used.\n * @param {Array<number>} [params.step=0.01] - A probability step size for\n *   sampling quantile values. All values from one-half the step size up to\n *   1 (exclusive) will be sampled. This parameter is only used if the\n *   *quantiles* parameter is not provided.\n */\n\nfunction Quantile(params) {\n  Transform.call(this, null, params);\n}\nQuantile.Definition = {\n  'type': 'Quantile',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'probs',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'step',\n    'type': 'number',\n    'default': 0.01\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'default': ['prob', 'value']\n  }]\n};\nconst EPSILON = 1e-14;\ninherits(Quantile, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n          as = _.as || ['prob', 'value'];\n\n    if (this.value && !_.modified() && !pulse.changed()) {\n      out.source = this.value;\n      return out;\n    }\n\n    const source = pulse.materialize(pulse.SOURCE).source,\n          groups = partition$1(source, _.groupby, _.field),\n          names = (_.groupby || []).map(accessorName),\n          values = [],\n          step = _.step || 0.01,\n          p = _.probs || range(step / 2, 1 - EPSILON, step),\n          n = p.length;\n    groups.forEach(g => {\n      const q = quantiles(g, p);\n\n      for (let i = 0; i < n; ++i) {\n        const t = {};\n\n        for (let i = 0; i < names.length; ++i) {\n          t[names[i]] = g.dims[i];\n        }\n\n        t[as[0]] = p[i];\n        t[as[1]] = q[i];\n        values.push(ingest(t));\n      }\n    });\n    if (this.value) out.rem = this.value;\n    this.value = out.add = out.source = values;\n    return out;\n  }\n\n});\n\n/**\n * Relays a data stream between data processing pipelines.\n * If the derive parameter is set, this transform will create derived\n * copies of observed tuples. This provides derived data streams in which\n * modifications to the tuples do not pollute an upstream data source.\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.derive=false] - Boolean flag indicating if\n *   the transform should make derived copies of incoming tuples.\n * @constructor\n */\n\nfunction Relay(params) {\n  Transform.call(this, null, params);\n}\ninherits(Relay, Transform, {\n  transform(_, pulse) {\n    let out, lut;\n\n    if (this.value) {\n      lut = this.value;\n    } else {\n      out = pulse = pulse.addAll();\n      lut = this.value = {};\n    }\n\n    if (_.derive) {\n      out = pulse.fork(pulse.NO_SOURCE);\n      pulse.visit(pulse.REM, t => {\n        const id = tupleid(t);\n        out.rem.push(lut[id]);\n        lut[id] = null;\n      });\n      pulse.visit(pulse.ADD, t => {\n        const dt = derive(t);\n        lut[tupleid(t)] = dt;\n        out.add.push(dt);\n      });\n      pulse.visit(pulse.MOD, t => {\n        const dt = lut[tupleid(t)];\n\n        for (const k in t) {\n          dt[k] = t[k]; // down stream writes may overwrite re-derived tuples\n          // conservatively mark all source fields as modified\n\n          out.modifies(k);\n        }\n\n        out.mod.push(dt);\n      });\n    }\n\n    return out;\n  }\n\n});\n\n/**\n * Samples tuples passing through this operator.\n * Uses reservoir sampling to maintain a representative sample.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.size=1000] - The maximum number of samples.\n */\n\nfunction Sample(params) {\n  Transform.call(this, [], params);\n  this.count = 0;\n}\nSample.Definition = {\n  'type': 'Sample',\n  'metadata': {},\n  'params': [{\n    'name': 'size',\n    'type': 'number',\n    'default': 1000\n  }]\n};\ninherits(Sample, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n          mod = _.modified('size'),\n          num = _.size,\n          map = this.value.reduce((m, t) => (m[tupleid(t)] = 1, m), {});\n\n    let res = this.value,\n        cnt = this.count,\n        cap = 0; // sample reservoir update function\n\n    function update(t) {\n      let p, idx;\n\n      if (res.length < num) {\n        res.push(t);\n      } else {\n        idx = ~~((cnt + 1) * random());\n\n        if (idx < res.length && idx >= cap) {\n          p = res[idx];\n          if (map[tupleid(p)]) out.rem.push(p); // eviction\n\n          res[idx] = t;\n        }\n      }\n\n      ++cnt;\n    }\n\n    if (pulse.rem.length) {\n      // find all tuples that should be removed, add to output\n      pulse.visit(pulse.REM, t => {\n        const id = tupleid(t);\n\n        if (map[id]) {\n          map[id] = -1;\n          out.rem.push(t);\n        }\n\n        --cnt;\n      }); // filter removed tuples out of the sample reservoir\n\n      res = res.filter(t => map[tupleid(t)] !== -1);\n    }\n\n    if ((pulse.rem.length || mod) && res.length < num && pulse.source) {\n      // replenish sample if backing data source is available\n      cap = cnt = res.length;\n      pulse.visit(pulse.SOURCE, t => {\n        // update, but skip previously sampled tuples\n        if (!map[tupleid(t)]) update(t);\n      });\n      cap = -1;\n    }\n\n    if (mod && res.length > num) {\n      const n = res.length - num;\n\n      for (let i = 0; i < n; ++i) {\n        map[tupleid(res[i])] = -1;\n        out.rem.push(res[i]);\n      }\n\n      res = res.slice(n);\n    }\n\n    if (pulse.mod.length) {\n      // propagate modified tuples in the sample reservoir\n      pulse.visit(pulse.MOD, t => {\n        if (map[tupleid(t)]) out.mod.push(t);\n      });\n    }\n\n    if (pulse.add.length) {\n      // update sample reservoir\n      pulse.visit(pulse.ADD, update);\n    }\n\n    if (pulse.add.length || cap < 0) {\n      // output newly added tuples\n      out.add = res.filter(t => !map[tupleid(t)]);\n    }\n\n    this.count = cnt;\n    this.value = out.source = res;\n    return out;\n  }\n\n});\n\n/**\n * Generates data tuples for a specified sequence range of numbers.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} params.start - The first number in the sequence.\n * @param {number} params.stop - The last number (exclusive) in the sequence.\n * @param {number} [params.step=1] - The step size between numbers in the sequence.\n */\n\nfunction Sequence(params) {\n  Transform.call(this, null, params);\n}\nSequence.Definition = {\n  'type': 'Sequence',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'start',\n    'type': 'number',\n    'required': true\n  }, {\n    'name': 'stop',\n    'type': 'number',\n    'required': true\n  }, {\n    'name': 'step',\n    'type': 'number',\n    'default': 1\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'data'\n  }]\n};\ninherits(Sequence, Transform, {\n  transform(_, pulse) {\n    if (this.value && !_.modified()) return;\n    const out = pulse.materialize().fork(pulse.MOD),\n          as = _.as || 'data';\n    out.rem = this.value ? pulse.rem.concat(this.value) : pulse.rem;\n    this.value = range(_.start, _.stop, _.step || 1).map(v => {\n      const t = {};\n      t[as] = v;\n      return ingest(t);\n    });\n    out.add = pulse.add.concat(this.value);\n    return out;\n  }\n\n});\n\n/**\n * Propagates a new pulse without any tuples so long as the input\n * pulse contains some added, removed or modified tuples.\n * @param {object} params - The parameters for this operator.\n * @constructor\n */\n\nfunction Sieve(params) {\n  Transform.call(this, null, params);\n  this.modified(true); // always treat as modified\n}\ninherits(Sieve, Transform, {\n  transform(_, pulse) {\n    this.value = pulse.source;\n    return pulse.changed() ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS) : pulse.StopPropagation;\n  }\n\n});\n\n/**\n * Discretize dates to specific time units.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The data field containing date/time values.\n */\n\nfunction TimeUnit(params) {\n  Transform.call(this, null, params);\n}\nconst OUTPUT = ['unit0', 'unit1'];\nTimeUnit.Definition = {\n  'type': 'TimeUnit',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'interval',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'units',\n    'type': 'enum',\n    'values': TIME_UNITS,\n    'array': true\n  }, {\n    'name': 'step',\n    'type': 'number',\n    'default': 1\n  }, {\n    'name': 'maxbins',\n    'type': 'number',\n    'default': 40\n  }, {\n    'name': 'extent',\n    'type': 'date',\n    'array': true\n  }, {\n    'name': 'timezone',\n    'type': 'enum',\n    'default': 'local',\n    'values': ['local', 'utc']\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': OUTPUT\n  }]\n};\ninherits(TimeUnit, Transform, {\n  transform(_, pulse) {\n    const field = _.field,\n          band = _.interval !== false,\n          utc = _.timezone === 'utc',\n          floor = this._floor(_, pulse),\n          offset = (utc ? utcInterval : timeInterval)(floor.unit).offset,\n          as = _.as || OUTPUT,\n          u0 = as[0],\n          u1 = as[1],\n          step = floor.step;\n\n    let min = floor.start || Infinity,\n        max = floor.stop || -Infinity,\n        flag = pulse.ADD;\n\n    if (_.modified() || pulse.modified(accessorFields(field))) {\n      pulse = pulse.reflow(true);\n      flag = pulse.SOURCE;\n      min = Infinity;\n      max = -Infinity;\n    }\n\n    pulse.visit(flag, t => {\n      const v = field(t);\n      let a, b;\n\n      if (v == null) {\n        t[u0] = null;\n        if (band) t[u1] = null;\n      } else {\n        t[u0] = a = b = floor(v);\n        if (band) t[u1] = b = offset(a, step);\n        if (a < min) min = a;\n        if (b > max) max = b;\n      }\n    });\n    floor.start = min;\n    floor.stop = max;\n    return pulse.modifies(band ? as : u0);\n  },\n\n  _floor(_, pulse) {\n    const utc = _.timezone === 'utc'; // get parameters\n\n    const {\n      units,\n      step\n    } = _.units ? {\n      units: _.units,\n      step: _.step || 1\n    } : timeBin({\n      extent: _.extent || extent(pulse.materialize(pulse.SOURCE).source, _.field),\n      maxbins: _.maxbins\n    }); // check / standardize time units\n\n    const tunits = timeUnits(units),\n          prev = this.value || {},\n          floor = (utc ? utcFloor : timeFloor)(tunits, step);\n    floor.unit = peek(tunits);\n    floor.units = tunits;\n    floor.step = step;\n    floor.start = prev.start;\n    floor.stop = prev.stop;\n    return this.value = floor;\n  }\n\n});\n\n/**\n * An index that maps from unique, string-coerced, field values to tuples.\n * Assumes that the field serves as a unique key with no duplicate values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field accessor to index.\n */\n\nfunction TupleIndex(params) {\n  Transform.call(this, fastmap(), params);\n}\ninherits(TupleIndex, Transform, {\n  transform(_, pulse) {\n    const df = pulse.dataflow,\n          field = _.field,\n          index = this.value,\n          set = t => index.set(field(t), t);\n\n    let mod = true;\n\n    if (_.modified('field') || pulse.modified(field.fields)) {\n      index.clear();\n      pulse.visit(pulse.SOURCE, set);\n    } else if (pulse.changed()) {\n      pulse.visit(pulse.REM, t => index.delete(field(t)));\n      pulse.visit(pulse.ADD, set);\n    } else {\n      mod = false;\n    }\n\n    this.modified(mod);\n    if (index.empty > df.cleanThreshold) df.runAfter(index.clean);\n    return pulse.fork();\n  }\n\n});\n\n/**\n * Extracts an array of values. Assumes the source data has already been\n * reduced as needed (e.g., by an upstream Aggregate transform).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The domain field to extract.\n * @param {function(*,*): number} [params.sort] - An optional\n *   comparator function for sorting the values. The comparator will be\n *   applied to backing tuples prior to value extraction.\n */\n\nfunction Values(params) {\n  Transform.call(this, null, params);\n}\ninherits(Values, Transform, {\n  transform(_, pulse) {\n    const run = !this.value || _.modified('field') || _.modified('sort') || pulse.changed() || _.sort && pulse.modified(_.sort.fields);\n\n    if (run) {\n      this.value = (_.sort ? pulse.source.slice().sort(stableCompare(_.sort)) : pulse.source).map(_.field);\n    }\n  }\n\n});\n\nfunction WindowOp(op, field, param, as) {\n  const fn = WindowOps[op](field, param);\n  return {\n    init: fn.init || zero,\n    update: function (w, t) {\n      t[as] = fn.next(w);\n    }\n  };\n}\nconst WindowOps = {\n  row_number: function () {\n    return {\n      next: w => w.index + 1\n    };\n  },\n  rank: function () {\n    let rank;\n    return {\n      init: () => rank = 1,\n      next: w => {\n        const i = w.index,\n              data = w.data;\n        return i && w.compare(data[i - 1], data[i]) ? rank = i + 1 : rank;\n      }\n    };\n  },\n  dense_rank: function () {\n    let drank;\n    return {\n      init: () => drank = 1,\n      next: w => {\n        const i = w.index,\n              d = w.data;\n        return i && w.compare(d[i - 1], d[i]) ? ++drank : drank;\n      }\n    };\n  },\n  percent_rank: function () {\n    const rank = WindowOps.rank(),\n          next = rank.next;\n    return {\n      init: rank.init,\n      next: w => (next(w) - 1) / (w.data.length - 1)\n    };\n  },\n  cume_dist: function () {\n    let cume;\n    return {\n      init: () => cume = 0,\n      next: w => {\n        const d = w.data,\n              c = w.compare;\n        let i = w.index;\n\n        if (cume < i) {\n          while (i + 1 < d.length && !c(d[i], d[i + 1])) ++i;\n\n          cume = i;\n        }\n\n        return (1 + cume) / d.length;\n      }\n    };\n  },\n  ntile: function (field, num) {\n    num = +num;\n    if (!(num > 0)) error('ntile num must be greater than zero.');\n    const cume = WindowOps.cume_dist(),\n          next = cume.next;\n    return {\n      init: cume.init,\n      next: w => Math.ceil(num * next(w))\n    };\n  },\n  lag: function (field, offset) {\n    offset = +offset || 1;\n    return {\n      next: w => {\n        const i = w.index - offset;\n        return i >= 0 ? field(w.data[i]) : null;\n      }\n    };\n  },\n  lead: function (field, offset) {\n    offset = +offset || 1;\n    return {\n      next: w => {\n        const i = w.index + offset,\n              d = w.data;\n        return i < d.length ? field(d[i]) : null;\n      }\n    };\n  },\n  first_value: function (field) {\n    return {\n      next: w => field(w.data[w.i0])\n    };\n  },\n  last_value: function (field) {\n    return {\n      next: w => field(w.data[w.i1 - 1])\n    };\n  },\n  nth_value: function (field, nth) {\n    nth = +nth;\n    if (!(nth > 0)) error('nth_value nth must be greater than zero.');\n    return {\n      next: w => {\n        const i = w.i0 + (nth - 1);\n        return i < w.i1 ? field(w.data[i]) : null;\n      }\n    };\n  },\n  prev_value: function (field) {\n    let prev;\n    return {\n      init: () => prev = null,\n      next: w => {\n        const v = field(w.data[w.index]);\n        return v != null ? prev = v : prev;\n      }\n    };\n  },\n  next_value: function (field) {\n    let v, i;\n    return {\n      init: () => (v = null, i = -1),\n      next: w => {\n        const d = w.data;\n        return w.index <= i ? v : (i = find(field, d, w.index)) < 0 ? (i = d.length, v = null) : v = field(d[i]);\n      }\n    };\n  }\n};\n\nfunction find(field, data, index) {\n  for (let n = data.length; index < n; ++index) {\n    const v = field(data[index]);\n    if (v != null) return index;\n  }\n\n  return -1;\n}\n\nconst ValidWindowOps = Object.keys(WindowOps);\n\nfunction WindowState(_) {\n  const ops = array(_.ops),\n        fields = array(_.fields),\n        params = array(_.params),\n        as = array(_.as),\n        outputs = this.outputs = [],\n        windows = this.windows = [],\n        inputs = {},\n        map = {},\n        counts = [],\n        measures = [];\n  let countOnly = true;\n\n  function visitInputs(f) {\n    array(accessorFields(f)).forEach(_ => inputs[_] = 1);\n  }\n\n  visitInputs(_.sort);\n  ops.forEach((op, i) => {\n    const field = fields[i],\n          mname = accessorName(field),\n          name = measureName(op, mname, as[i]);\n    visitInputs(field);\n    outputs.push(name); // Window operation\n\n    if (hasOwnProperty(WindowOps, op)) {\n      windows.push(WindowOp(op, fields[i], params[i], name));\n    } // Aggregate operation\n    else {\n        if (field == null && op !== 'count') {\n          error('Null aggregate field specified.');\n        }\n\n        if (op === 'count') {\n          counts.push(name);\n          return;\n        }\n\n        countOnly = false;\n        let m = map[mname];\n\n        if (!m) {\n          m = map[mname] = [];\n          m.field = field;\n          measures.push(m);\n        }\n\n        m.push(createMeasure(op, name));\n      }\n  });\n\n  if (counts.length || measures.length) {\n    this.cell = cell(measures, counts, countOnly);\n  }\n\n  this.inputs = Object.keys(inputs);\n}\nconst prototype = WindowState.prototype;\n\nprototype.init = function () {\n  this.windows.forEach(_ => _.init());\n  if (this.cell) this.cell.init();\n};\n\nprototype.update = function (w, t) {\n  const cell = this.cell,\n        wind = this.windows,\n        data = w.data,\n        m = wind && wind.length;\n  let j;\n\n  if (cell) {\n    for (j = w.p0; j < w.i0; ++j) cell.rem(data[j]);\n\n    for (j = w.p1; j < w.i1; ++j) cell.add(data[j]);\n\n    cell.set(t);\n  }\n\n  for (j = 0; j < m; ++j) wind[j].update(w, t);\n};\n\nfunction cell(measures, counts, countOnly) {\n  measures = measures.map(m => compileMeasures(m, m.field));\n  const cell = {\n    num: 0,\n    agg: null,\n    store: false,\n    count: counts\n  };\n\n  if (!countOnly) {\n    var n = measures.length,\n        a = cell.agg = Array(n),\n        i = 0;\n\n    for (; i < n; ++i) a[i] = new measures[i](cell);\n  }\n\n  if (cell.store) {\n    var store = cell.data = new TupleStore();\n  }\n\n  cell.add = function (t) {\n    cell.num += 1;\n    if (countOnly) return;\n    if (store) store.add(t);\n\n    for (let i = 0; i < n; ++i) {\n      a[i].add(a[i].get(t), t);\n    }\n  };\n\n  cell.rem = function (t) {\n    cell.num -= 1;\n    if (countOnly) return;\n    if (store) store.rem(t);\n\n    for (let i = 0; i < n; ++i) {\n      a[i].rem(a[i].get(t), t);\n    }\n  };\n\n  cell.set = function (t) {\n    let i, n; // consolidate stored values\n\n    if (store) store.values(); // update tuple properties\n\n    for (i = 0, n = counts.length; i < n; ++i) t[counts[i]] = cell.num;\n\n    if (!countOnly) for (i = 0, n = a.length; i < n; ++i) a[i].set(t);\n  };\n\n  cell.init = function () {\n    cell.num = 0;\n    if (store) store.reset();\n\n    for (let i = 0; i < n; ++i) a[i].init();\n  };\n\n  return cell;\n}\n\n/**\n * Perform window calculations and write results to the input stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator function for sorting tuples within a window.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors by which to partition tuples into separate windows.\n * @param {Array<string>} params.ops - An array of strings indicating window operations to perform.\n * @param {Array<function(object): *>} [params.fields] - An array of accessors\n *   for data fields to use as inputs to window operations.\n * @param {Array<*>} [params.params] - An array of parameter values for window operations.\n * @param {Array<string>} [params.as] - An array of output field names for window operations.\n * @param {Array<number>} [params.frame] - Window frame definition as two-element array.\n * @param {boolean} [params.ignorePeers=false] - If true, base window frame boundaries on row\n *   number alone, ignoring peers with identical sort values. If false (default),\n *   the window boundaries will be adjusted to include peer values.\n */\n\nfunction Window(params) {\n  Transform.call(this, {}, params);\n  this._mlen = 0;\n  this._mods = [];\n}\nWindow.Definition = {\n  'type': 'Window',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'ops',\n    'type': 'enum',\n    'array': true,\n    'values': ValidWindowOps.concat(ValidAggregateOps)\n  }, {\n    'name': 'params',\n    'type': 'number',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'frame',\n    'type': 'number',\n    'null': true,\n    'array': true,\n    'length': 2,\n    'default': [null, 0]\n  }, {\n    'name': 'ignorePeers',\n    'type': 'boolean',\n    'default': false\n  }]\n};\ninherits(Window, Transform, {\n  transform(_, pulse) {\n    this.stamp = pulse.stamp;\n\n    const mod = _.modified(),\n          cmp = stableCompare(_.sort),\n          key = groupkey(_.groupby),\n          group = t => this.group(key(t)); // initialize window state\n\n\n    let state = this.state;\n\n    if (!state || mod) {\n      state = this.state = new WindowState(_);\n    } // partition input tuples\n\n\n    if (mod || pulse.modified(state.inputs)) {\n      this.value = {};\n      pulse.visit(pulse.SOURCE, t => group(t).add(t));\n    } else {\n      pulse.visit(pulse.REM, t => group(t).remove(t));\n      pulse.visit(pulse.ADD, t => group(t).add(t));\n    } // perform window calculations for each modified partition\n\n\n    for (let i = 0, n = this._mlen; i < n; ++i) {\n      processPartition(this._mods[i], state, cmp, _);\n    }\n\n    this._mlen = 0;\n    this._mods = []; // TODO don't reflow everything?\n\n    return pulse.reflow(mod).modifies(state.outputs);\n  },\n\n  group(key) {\n    let group = this.value[key];\n\n    if (!group) {\n      group = this.value[key] = SortedList(tupleid);\n      group.stamp = -1;\n    }\n\n    if (group.stamp < this.stamp) {\n      group.stamp = this.stamp;\n      this._mods[this._mlen++] = group;\n    }\n\n    return group;\n  }\n\n});\n\nfunction processPartition(list, state, cmp, _) {\n  const sort = _.sort,\n        range = sort && !_.ignorePeers,\n        frame = _.frame || [null, 0],\n        data = list.data(cmp),\n        // use cmp for stable sort\n  n = data.length,\n        b = range ? bisector(sort) : null,\n        w = {\n    i0: 0,\n    i1: 0,\n    p0: 0,\n    p1: 0,\n    index: 0,\n    data: data,\n    compare: sort || constant(-1)\n  };\n  state.init();\n\n  for (let i = 0; i < n; ++i) {\n    setWindow(w, frame, i, n);\n    if (range) adjustRange(w, b);\n    state.update(w, data[i]);\n  }\n}\n\nfunction setWindow(w, f, i, n) {\n  w.p0 = w.i0;\n  w.p1 = w.i1;\n  w.i0 = f[0] == null ? 0 : Math.max(0, i - Math.abs(f[0]));\n  w.i1 = f[1] == null ? n : Math.min(n, i + Math.abs(f[1]) + 1);\n  w.index = i;\n} // if frame type is 'range', adjust window for peer values\n\n\nfunction adjustRange(w, bisect) {\n  const r0 = w.i0,\n        r1 = w.i1 - 1,\n        c = w.compare,\n        d = w.data,\n        n = d.length - 1;\n  if (r0 > 0 && !c(d[r0], d[r0 - 1])) w.i0 = bisect.left(d, d[r0]);\n  if (r1 < n && !c(d[r1], d[r1 + 1])) w.i1 = bisect.right(d, d[r1]);\n}\n\nexport { Aggregate as aggregate, Bin as bin, Collect as collect, Compare as compare, CountPattern as countpattern, Cross as cross, Density as density, DotBin as dotbin, Expression as expression, Extent as extent, Facet as facet, Field as field, Filter as filter, Flatten as flatten, Fold as fold, Formula as formula, Generate as generate, Impute as impute, JoinAggregate as joinaggregate, KDE as kde, Key as key, Load as load, Lookup as lookup, MultiExtent as multiextent, MultiValues as multivalues, Params as params, Pivot as pivot, PreFacet as prefacet, Project as project, Proxy as proxy, Quantile as quantile, Relay as relay, Sample as sample, Sequence as sequence, Sieve as sieve, Subflow as subflow, TimeUnit as timeunit, TupleIndex as tupleindex, Values as values, Window as window };\n","export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    (2 * that._x0 + that._x1) / 3,\n    (2 * that._y0 + that._y1) / 3,\n    (that._x0 + 2 * that._x1) / 3,\n    (that._y0 + 2 * that._y1) / 3,\n    (that._x0 + 4 * that._x1 + x) / 6,\n    (that._y0 + 4 * that._y1 + y) / 6\n  );\n}\n\nexport function Basis(context) {\n  this._context = context;\n}\n\nBasis.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 3: point(this, this._x1, this._y1); // proceed\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new Basis(context);\n}\n","export default function() {}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n  this._context = context;\n}\n\nBasisClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x2, this._y2);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n        this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x2, this._y2);\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n      case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n      case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n  this._context = context;\n}\n\nBasisOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n      case 3: this._point = 4; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n  this._basis = new Basis(context);\n  this._beta = beta;\n}\n\nBundle.prototype = {\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n    this._basis.lineStart();\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        j = x.length - 1;\n\n    if (j > 0) {\n      var x0 = x[0],\n          y0 = y[0],\n          dx = x[j] - x0,\n          dy = y[j] - y0,\n          i = -1,\n          t;\n\n      while (++i <= j) {\n        t = i / j;\n        this._basis.point(\n          this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n          this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n        );\n      }\n    }\n\n    this._x = this._y = null;\n    this._basis.lineEnd();\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\nexport default (function custom(beta) {\n\n  function bundle(context) {\n    return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n  }\n\n  bundle.beta = function(beta) {\n    return custom(+beta);\n  };\n\n  return bundle;\n})(0.85);\n","export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    that._x1 + that._k * (that._x2 - that._x0),\n    that._y1 + that._k * (that._y2 - that._y0),\n    that._x2 + that._k * (that._x1 - x),\n    that._y2 + that._k * (that._y1 - y),\n    that._x2,\n    that._y2\n  );\n}\n\nexport function Cardinal(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: point(this, this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n      case 2: this._point = 3; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new Cardinal(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalOpen(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalClosed(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n  var x1 = that._x1,\n      y1 = that._y1,\n      x2 = that._x2,\n      y2 = that._y2;\n\n  if (that._l01_a > epsilon) {\n    var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n        n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n    x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n    y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n  }\n\n  if (that._l23_a > epsilon) {\n    var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n        m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n    x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n    y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n  }\n\n  that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: this.point(this._x2, this._y2); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; // proceed\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","function Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\nexport default function(context) {\n  return new Linear(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n  this._context = context;\n}\n\nLinearClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._point) this._context.closePath();\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    if (this._point) this._context.lineTo(x, y);\n    else this._point = 1, this._context.moveTo(x, y);\n  }\n};\n\nexport default function(context) {\n  return new LinearClosed(context);\n}\n","function sign(x) {\n  return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n  var h0 = that._x1 - that._x0,\n      h1 = x2 - that._x1,\n      s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n      s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n      p = (s0 * h1 + s1 * h0) / (h0 + h1);\n  return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n  var h = that._x1 - that._x0;\n  return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n  var x0 = that._x0,\n      y0 = that._y0,\n      x1 = that._x1,\n      y1 = that._y1,\n      dx = (x1 - x0) / 3;\n  that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n  this._context = context;\n}\n\nMonotoneX.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 =\n    this._t0 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n      case 3: point(this, this._t0, slope2(this, this._t0)); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    var t1 = NaN;\n\n    x = +x, y = +y;\n    if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n      default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n    }\n\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n    this._t0 = t1;\n  }\n}\n\nfunction MonotoneY(context) {\n  this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n  MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n  this._context = context;\n}\n\nReflectContext.prototype = {\n  moveTo: function(x, y) { this._context.moveTo(y, x); },\n  closePath: function() { this._context.closePath(); },\n  lineTo: function(x, y) { this._context.lineTo(y, x); },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n  return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n  return new MonotoneY(context);\n}\n","function Natural(context) {\n  this._context = context;\n}\n\nNatural.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        n = x.length;\n\n    if (n) {\n      this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n      if (n === 2) {\n        this._context.lineTo(x[1], y[1]);\n      } else {\n        var px = controlPoints(x),\n            py = controlPoints(y);\n        for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n          this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n        }\n      }\n    }\n\n    if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n    this._x = this._y = null;\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n  var i,\n      n = x.length - 1,\n      m,\n      a = new Array(n),\n      b = new Array(n),\n      r = new Array(n);\n  a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n  for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n  a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n  for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n  a[n - 1] = r[n - 1] / b[n - 1];\n  for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n  b[n - 1] = (x[n] + a[n - 1]) / 2;\n  for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n  return [a, b];\n}\n\nexport default function(context) {\n  return new Natural(context);\n}\n","function Step(context, t) {\n  this._context = context;\n  this._t = t;\n}\n\nStep.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = this._y = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: {\n        if (this._t <= 0) {\n          this._context.lineTo(this._x, y);\n          this._context.lineTo(x, y);\n        } else {\n          var x1 = this._x * (1 - this._t) + x * this._t;\n          this._context.lineTo(x1, this._y);\n          this._context.lineTo(x1, y);\n        }\n        break;\n      }\n    }\n    this._x = x, this._y = y;\n  }\n};\n\nexport default function(context) {\n  return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n  return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n  return new Step(context, 1);\n}\n","const pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\nexport default path;\n","export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n  return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n  return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n  return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n  var x10 = x1 - x0, y10 = y1 - y0,\n      x32 = x3 - x2, y32 = y3 - y2,\n      t = y32 * x10 - x32 * y10;\n  if (t * t < epsilon) return;\n  t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n  return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n  var x01 = x0 - x1,\n      y01 = y0 - y1,\n      lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n      ox = lo * y01,\n      oy = -lo * x01,\n      x11 = x0 + ox,\n      y11 = y0 + oy,\n      x10 = x1 + ox,\n      y10 = y1 + oy,\n      x00 = (x11 + x10) / 2,\n      y00 = (y11 + y10) / 2,\n      dx = x10 - x11,\n      dy = y10 - y11,\n      d2 = dx * dx + dy * dy,\n      r = r1 - rc,\n      D = x11 * y10 - x10 * y11,\n      d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n      cx0 = (D * dy - dx * d) / d2,\n      cy0 = (-D * dx - dy * d) / d2,\n      cx1 = (D * dy + dx * d) / d2,\n      cy1 = (-D * dx + dy * d) / d2,\n      dx0 = cx0 - x00,\n      dy0 = cy0 - y00,\n      dx1 = cx1 - x00,\n      dy1 = cy1 - y00;\n\n  // Pick the closer of the two intersection points.\n  // TODO Is there a faster way to determine which intersection to use?\n  if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n  return {\n    cx: cx0,\n    cy: cy0,\n    x01: -ox,\n    y01: -oy,\n    x11: cx0 * (r1 / r - 1),\n    y11: cy0 * (r1 / r - 1)\n  };\n}\n\nexport default function() {\n  var innerRadius = arcInnerRadius,\n      outerRadius = arcOuterRadius,\n      cornerRadius = constant(0),\n      padRadius = null,\n      startAngle = arcStartAngle,\n      endAngle = arcEndAngle,\n      padAngle = arcPadAngle,\n      context = null;\n\n  function arc() {\n    var buffer,\n        r,\n        r0 = +innerRadius.apply(this, arguments),\n        r1 = +outerRadius.apply(this, arguments),\n        a0 = startAngle.apply(this, arguments) - halfPi,\n        a1 = endAngle.apply(this, arguments) - halfPi,\n        da = abs(a1 - a0),\n        cw = a1 > a0;\n\n    if (!context) context = buffer = path();\n\n    // Ensure that the outer radius is always larger than the inner radius.\n    if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n    // Is it a point?\n    if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n    // Or is it a circle or annulus?\n    else if (da > tau - epsilon) {\n      context.moveTo(r1 * cos(a0), r1 * sin(a0));\n      context.arc(0, 0, r1, a0, a1, !cw);\n      if (r0 > epsilon) {\n        context.moveTo(r0 * cos(a1), r0 * sin(a1));\n        context.arc(0, 0, r0, a1, a0, cw);\n      }\n    }\n\n    // Or is it a circular or annular sector?\n    else {\n      var a01 = a0,\n          a11 = a1,\n          a00 = a0,\n          a10 = a1,\n          da0 = da,\n          da1 = da,\n          ap = padAngle.apply(this, arguments) / 2,\n          rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n          rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n          rc0 = rc,\n          rc1 = rc,\n          t0,\n          t1;\n\n      // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n      if (rp > epsilon) {\n        var p0 = asin(rp / r0 * sin(ap)),\n            p1 = asin(rp / r1 * sin(ap));\n        if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n        else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n        if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n        else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n      }\n\n      var x01 = r1 * cos(a01),\n          y01 = r1 * sin(a01),\n          x10 = r0 * cos(a10),\n          y10 = r0 * sin(a10);\n\n      // Apply rounded corners?\n      if (rc > epsilon) {\n        var x11 = r1 * cos(a11),\n            y11 = r1 * sin(a11),\n            x00 = r0 * cos(a00),\n            y00 = r0 * sin(a00),\n            oc;\n\n        // Restrict the corner radius according to the sector angle.\n        if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n          var ax = x01 - oc[0],\n              ay = y01 - oc[1],\n              bx = x11 - oc[0],\n              by = y11 - oc[1],\n              kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n              lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = min(rc, (r0 - lc) / (kc - 1));\n          rc1 = min(rc, (r1 - lc) / (kc + 1));\n        }\n      }\n\n      // Is the sector collapsed to a line?\n      if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n      // Does the sector’s outer ring have rounded corners?\n      else if (rc1 > epsilon) {\n        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n          context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the outer ring just a circular arc?\n      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n      // Is there no inner ring, and it’s a circular sector?\n      // Or perhaps it’s an annular sector collapsed due to padding?\n      if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n      // Does the sector’s inner ring (or point) have rounded corners?\n      else if (rc0 > epsilon) {\n        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n          context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the inner ring just a circular arc?\n      else context.arc(0, 0, r0, a10, a00, cw);\n    }\n\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  arc.centroid = function() {\n    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n    return [cos(a) * r, sin(a) * r];\n  };\n\n  arc.innerRadius = function(_) {\n    return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n  };\n\n  arc.outerRadius = function(_) {\n    return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n  };\n\n  arc.cornerRadius = function(_) {\n    return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n  };\n\n  arc.padRadius = function(_) {\n    return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n  };\n\n  arc.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n  };\n\n  arc.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n  };\n\n  arc.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n  };\n\n  arc.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n  };\n\n  return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export function x(p) {\n  return p[0];\n}\n\nexport function y(p) {\n  return p[1];\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n  var defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null;\n\n  x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n  y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n  function line(data) {\n    var i,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n  var x1 = null,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null;\n\n  x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n  y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n  y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) {\n          j = i;\n          output.areaStart();\n          output.lineStart();\n        } else {\n          output.lineEnd();\n          output.lineStart();\n          for (k = i - 1; k >= j; --k) {\n            output.point(x0z[k], y0z[k]);\n          }\n          output.lineEnd();\n          output.areaEnd();\n        }\n      }\n      if (defined0) {\n        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n      }\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  function arealine() {\n    return line().defined(defined).curve(curve).context(context);\n  }\n\n  area.x = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n  };\n\n  area.x0 = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n  };\n\n  area.x1 = function(_) {\n    return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n  };\n\n  area.y = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n  };\n\n  area.y0 = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n  };\n\n  area.y1 = function(_) {\n    return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n  };\n\n  area.lineX0 =\n  area.lineY0 = function() {\n    return arealine().x(x0).y(y0);\n  };\n\n  area.lineY1 = function() {\n    return arealine().x(x0).y(y1);\n  };\n\n  area.lineX1 = function() {\n    return arealine().x(x1).y(y0);\n  };\n\n  area.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n  };\n\n  area.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n  };\n\n  area.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n  };\n\n  return area;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / pi);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, tau);\n  }\n};\n","export default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / 5) / 2;\n    context.moveTo(-3 * r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, -3 * r);\n    context.lineTo(r, -3 * r);\n    context.lineTo(r, -r);\n    context.lineTo(3 * r, -r);\n    context.lineTo(3 * r, r);\n    context.lineTo(r, r);\n    context.lineTo(r, 3 * r);\n    context.lineTo(-r, 3 * r);\n    context.lineTo(-r, r);\n    context.lineTo(-3 * r, r);\n    context.closePath();\n  }\n};\n","var tan30 = Math.sqrt(1 / 3),\n    tan30_2 = tan30 * 2;\n\nexport default {\n  draw: function(context, size) {\n    var y = Math.sqrt(size / tan30_2),\n        x = y * tan30;\n    context.moveTo(0, -y);\n    context.lineTo(x, 0);\n    context.lineTo(0, y);\n    context.lineTo(-x, 0);\n    context.closePath();\n  }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n    kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n    kx = Math.sin(tau / 10) * kr,\n    ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size * ka),\n        x = kx * r,\n        y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (var i = 1; i < 5; ++i) {\n      var a = tau * i / 5,\n          c = Math.cos(a),\n          s = Math.sin(a);\n      context.lineTo(s * r, -c * r);\n      context.lineTo(c * x - s * y, s * x + c * y);\n    }\n    context.closePath();\n  }\n};\n","export default {\n  draw: function(context, size) {\n    var w = Math.sqrt(size),\n        x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n  draw: function(context, size) {\n    var y = -Math.sqrt(size / (sqrt3 * 3));\n    context.moveTo(0, y * 2);\n    context.lineTo(-sqrt3 * y, -y);\n    context.lineTo(sqrt3 * y, -y);\n    context.closePath();\n  }\n};\n","var c = -0.5,\n    s = Math.sqrt(3) / 2,\n    k = 1 / Math.sqrt(12),\n    a = (k / 2 + 1) * 3;\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / a),\n        x0 = r / 2,\n        y0 = r * k,\n        x1 = x0,\n        y1 = r * k + r,\n        x2 = -x1,\n        y2 = y1;\n    context.moveTo(x0, y0);\n    context.lineTo(x1, y1);\n    context.lineTo(x2, y2);\n    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n    context.closePath();\n  }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n  circle,\n  cross,\n  diamond,\n  square,\n  star,\n  triangle,\n  wye\n];\n\nexport default function(type, size) {\n  var context = null;\n  type = typeof type === \"function\" ? type : constant(type || circle);\n  size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n  function symbol() {\n    var buffer;\n    if (!context) context = buffer = path();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n}\n","export function domCanvas(w, h) {\n  if (typeof document !== 'undefined' && document.createElement) {\n    const c = document.createElement('canvas');\n    if (c && c.getContext) {\n      c.width = w;\n      c.height = h;\n      return c;\n    }\n  }\n  return null;\n}\n\nexport const domImage = () =>\n  typeof Image !== 'undefined' ? Image : null;\n","export {\n  domCanvas as domCanvas,\n  domCanvas as canvas,\n  domImage as image\n} from './src/domCanvas';\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export function initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n","import {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n  var index = new Map(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    var key = d + \"\", i = index.get(key);\n    if (!i) {\n      if (unknown !== implicit) return unknown;\n      index.set(key, i = domain.push(d));\n    }\n    return range[(i - 1) % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new Map();\n    for (const value of _) {\n      const key = value + \"\";\n      if (index.has(key)) continue;\n      index.set(key, domain.push(value));\n    }\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal(domain, range).unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n    reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n    reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n    reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n    reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n    reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy: function(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable: function() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb: function() {\n    return this;\n  },\n  displayable: function() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n  var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n  return (a === 1 ? \"rgb(\" : \"rgba(\")\n      + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n      + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n  value = Math.max(0, Math.min(255, Math.round(value) || 0));\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  displayable: function() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl: function() {\n    var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n    return (a === 1 ? \"hsl(\" : \"hsla(\")\n        + (this.h || 0) + \", \"\n        + (this.s || 0) * 100 + \"%, \"\n        + (this.l || 0) * 100 + \"%\"\n        + (a === 1 ? \")\" : \", \" + a + \")\");\n  }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n","export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n","export default function constants(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function number(x) {\n  return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous() {\n  return transformer()(identity, identity);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = tickIncrement(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous();\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n  var unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return identity(domain).unknown(unknown);\n  };\n\n  domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n  return linearish(scale);\n}\n","export default function nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n  return function(x) {\n    return -f(-x);\n  };\n}\n\nexport function loggish(transform) {\n  var scale = transform(transformLog, transformExp),\n      domain = scale.domain,\n      base = 10,\n      logs,\n      pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = function(count) {\n    var d = domain(),\n        u = d[0],\n        v = d[d.length - 1],\n        r;\n\n    if (r = v < u) i = u, u = v, v = i;\n\n    var i = logs(u),\n        j = logs(v),\n        p,\n        k,\n        t,\n        n = count == null ? 10 : +count,\n        z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.floor(i), j = Math.ceil(j);\n      if (u > 0) for (; i <= j; ++i) {\n        for (k = 1, p = pows(i); k < base; ++k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i <= j; ++i) {\n        for (k = base - 1, p = pows(i); k >= 1; --k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n      if (z.length * 2 < n) z = ticks(u, v, n);\n    } else {\n      z = ticks(i, j, Math.min(j - i, n)).map(pows);\n    }\n\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n    if (typeof specifier !== \"function\") specifier = format(specifier);\n    if (count === Infinity) return specifier;\n    if (count == null) count = 10;\n    var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return function(d) {\n      var i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = function() {\n    return domain(nice(domain(), {\n      floor: function(x) { return pows(Math.floor(logs(x))); },\n      ceil: function(x) { return pows(Math.ceil(logs(x))); }\n    }));\n  };\n\n  return scale;\n}\n\nexport default function log() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, log()).base(scale.base());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n  var scale = transform(identity, identity),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(identity, identity)\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return linearish(scale);\n}\n\nexport default function pow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, pow()).exponent(scale.exponent());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n\nexport function sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n  return function(x) {\n    return Math.sign(x) * Math.log1p(Math.abs(x / c));\n  };\n}\n\nfunction transformSymexp(c) {\n  return function(x) {\n    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n  };\n}\n\nexport function symlogish(transform) {\n  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n  scale.constant = function(_) {\n    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n  };\n\n  return linearish(scale);\n}\n\nexport default function symlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, symlog()).constant(scale.constant());\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = bisector(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n    if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n  var scale = continuous(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(nice(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nexport default function time() {\n  return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n  return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = identity,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1;\n      return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport default function sequential() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n  if (values === undefined) values = interpolate, interpolate = value;\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n  while (i < n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 0.5,\n      x2 = 1,\n      s = 1,\n      t0,\n      t1,\n      t2,\n      k10,\n      k21,\n      interpolator = identity,\n      transform,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1, r2;\n      return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n    return scale;\n  };\n}\n\nexport default function diverging() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, diverging());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n  var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, divergingLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n  return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n  var domain = [],\n      range = [],\n      thresholds = [],\n      unknown;\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN] : [\n      i > 0 ? thresholds[i - 1] : domain[0],\n      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","export {\n  default as scaleBand,\n  point as scalePoint\n} from \"./band.js\";\n\nexport {\n  default as scaleIdentity\n} from \"./identity.js\";\n\nexport {\n  default as scaleLinear\n} from \"./linear.js\";\n\nexport {\n  default as scaleLog\n} from \"./log.js\";\n\nexport {\n  default as scaleSymlog\n} from \"./symlog.js\";\n\nexport {\n  default as scaleOrdinal,\n  implicit as scaleImplicit\n} from \"./ordinal.js\";\n\nexport {\n  default as scalePow,\n  sqrt as scaleSqrt\n} from \"./pow.js\";\n\nexport {\n  default as scaleRadial\n} from \"./radial.js\";\n\nexport {\n  default as scaleQuantile\n} from \"./quantile.js\";\n\nexport {\n  default as scaleQuantize\n} from \"./quantize.js\";\n\nexport {\n  default as scaleThreshold\n} from \"./threshold.js\";\n\nexport {\n  default as scaleTime\n} from \"./time.js\";\n\nexport {\n  default as scaleUtc\n} from \"./utcTime.js\";\n\nexport {\n  default as scaleSequential,\n  sequentialLog as scaleSequentialLog,\n  sequentialPow as scaleSequentialPow,\n  sequentialSqrt as scaleSequentialSqrt,\n  sequentialSymlog as scaleSequentialSymlog\n} from \"./sequential.js\";\n\nexport {\n  default as scaleSequentialQuantile\n} from \"./sequentialQuantile.js\";\n\nexport {\n  default as scaleDiverging,\n  divergingLog as scaleDivergingLog,\n  divergingPow as scaleDivergingPow,\n  divergingSqrt as scaleDivergingSqrt,\n  divergingSymlog as scaleDivergingSymlog\n} from \"./diverging.js\";\n\nexport {\n  default as tickFormat\n} from \"./tickFormat.js\";\n","export default function(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n  var i = hue(+a, +b);\n  return function(t) {\n    var x = i(t);\n    return x - 360 * Math.floor(x / 360);\n  };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n  // p0 = [ux0, uy0, w0]\n  // p1 = [ux1, uy1, w1]\n  function zoom(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n        ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n        dx = ux1 - ux0,\n        dy = uy1 - uy0,\n        d2 = dx * dx + dy * dy,\n        i,\n        S;\n\n    // Special case for u0 ≅ u1.\n    if (d2 < epsilon2) {\n      S = Math.log(w1 / w0) / rho;\n      i = function(t) {\n        return [\n          ux0 + t * dx,\n          uy0 + t * dy,\n          w0 * Math.exp(rho * t * S)\n        ];\n      }\n    }\n\n    // General case.\n    else {\n      var d1 = Math.sqrt(d2),\n          b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n          b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n          r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n          r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / rho;\n      i = function(t) {\n        var s = t * S,\n            coshr0 = cosh(r0),\n            u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n        return [\n          ux0 + u * dx,\n          uy0 + u * dy,\n          w0 * coshr0 / cosh(rho * s + r0)\n        ];\n      }\n    }\n\n    i.duration = S * 1000 * rho / Math.SQRT2;\n\n    return i;\n  }\n\n  zoom.rho = function(_) {\n    var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n    return zoomRho(_1, _2, _4);\n  };\n\n  return zoom;\n})(Math.SQRT2, 2, 4);\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n        s = color(start.s, end.s),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.s = s(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n    Xn = 0.96422,\n    Yn = 1,\n    Zn = 0.82521,\n    t0 = 4 / 29,\n    t1 = 6 / 29,\n    t2 = 3 * t1 * t1,\n    t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n  if (o instanceof Hcl) return hcl2lab(o);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = rgb2lrgb(o.r),\n      g = rgb2lrgb(o.g),\n      b = rgb2lrgb(o.b),\n      y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n  if (r === g && g === b) x = z = y; else {\n    x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n    z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n  }\n  return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n  return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n  return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n  this.l = +l;\n  this.a = +a;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n  brighter: function(k) {\n    return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  darker: function(k) {\n    return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  rgb: function() {\n    var y = (this.l + 16) / 116,\n        x = isNaN(this.a) ? y : y + this.a / 500,\n        z = isNaN(this.b) ? y : y - this.b / 200;\n    x = Xn * lab2xyz(x);\n    y = Yn * lab2xyz(y);\n    z = Zn * lab2xyz(z);\n    return new Rgb(\n      lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n      lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n      lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n      this.opacity\n    );\n  }\n}));\n\nfunction xyz2lab(t) {\n  return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n  return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n  return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n  return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n  if (!(o instanceof Lab)) o = labConvert(o);\n  if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n  var h = Math.atan2(o.b, o.a) * degrees;\n  return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n  return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n  return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n  this.h = +h;\n  this.c = +c;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n  if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n  var h = o.h * radians;\n  return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n  brighter: function(k) {\n    return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n  },\n  darker: function(k) {\n    return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n  },\n  rgb: function() {\n    return hcl2lab(this).rgb();\n  }\n}));\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n  var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n      a = color(start.a, end.a),\n      b = color(start.b, end.b),\n      opacity = color(start.opacity, end.opacity);\n  return function(t) {\n    start.l = l(t);\n    start.a = a(t);\n    start.b = b(t);\n    start.opacity = opacity(t);\n    return start + \"\";\n  };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n        c = color(start.c, end.c),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.c = c(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n    B = +1.78277,\n    C = -0.29227,\n    D = -0.90649,\n    E = +1.97294,\n    ED = E * D,\n    EB = E * B,\n    BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n  if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n      bl = b - l,\n      k = (E * (g - l) - C * bl) / D,\n      s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n      h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n  return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n  return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n        l = +this.l,\n        a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n        cosh = Math.cos(h),\n        sinh = Math.sin(h);\n    return new Rgb(\n      255 * (l + a * (A * cosh + B * sinh)),\n      255 * (l + a * (C * cosh + D * sinh)),\n      255 * (l + a * (E * cosh)),\n      this.opacity\n    );\n  }\n}));\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n  return (function cubehelixGamma(y) {\n    y = +y;\n\n    function cubehelix(start, end) {\n      var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n          s = color(start.s, end.s),\n          l = color(start.l, end.l),\n          opacity = color(start.opacity, end.opacity);\n      return function(t) {\n        start.h = h(t);\n        start.s = s(t);\n        start.l = l(Math.pow(t, y));\n        start.opacity = opacity(t);\n        return start + \"\";\n      };\n    }\n\n    cubehelix.gamma = cubehelixGamma;\n\n    return cubehelix;\n  })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function(interpolator, n) {\n  var samples = new Array(n);\n  for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n  return samples;\n}\n","export {default as interpolate} from \"./value.js\";\nexport {default as interpolateArray} from \"./array.js\";\nexport {default as interpolateBasis} from \"./basis.js\";\nexport {default as interpolateBasisClosed} from \"./basisClosed.js\";\nexport {default as interpolateDate} from \"./date.js\";\nexport {default as interpolateDiscrete} from \"./discrete.js\";\nexport {default as interpolateHue} from \"./hue.js\";\nexport {default as interpolateNumber} from \"./number.js\";\nexport {default as interpolateNumberArray} from \"./numberArray.js\";\nexport {default as interpolateObject} from \"./object.js\";\nexport {default as interpolateRound} from \"./round.js\";\nexport {default as interpolateString} from \"./string.js\";\nexport {interpolateTransformCss, interpolateTransformSvg} from \"./transform/index.js\";\nexport {default as interpolateZoom} from \"./zoom.js\";\nexport {default as interpolateRgb, rgbBasis as interpolateRgbBasis, rgbBasisClosed as interpolateRgbBasisClosed} from \"./rgb.js\";\nexport {default as interpolateHsl, hslLong as interpolateHslLong} from \"./hsl.js\";\nexport {default as interpolateLab} from \"./lab.js\";\nexport {default as interpolateHcl, hclLong as interpolateHclLong} from \"./hcl.js\";\nexport {default as interpolateCubehelix, cubehelixLong as interpolateCubehelixLong} from \"./cubehelix.js\";\nexport {default as piecewise} from \"./piecewise.js\";\nexport {default as quantize} from \"./quantize.js\";\n","import { toNumber, peek, hasOwnProperty, toSet, array, constant, isNumber, span, isObject, isString, error, isArray } from 'vega-util';\nimport { bisectRight, range, bisect } from 'd3-array';\nimport { scaleOrdinal, tickFormat as tickFormat$1, scaleIdentity, scaleLinear, scaleLog, scalePow, scaleSqrt, scaleSymlog, scaleTime, scaleUtc, scaleSequential, scaleSequentialLog, scaleSequentialPow, scaleSequentialSqrt, scaleSequentialSymlog, scaleDiverging, scaleDivergingLog, scaleDivergingPow, scaleDivergingSqrt, scaleDivergingSymlog, scaleQuantile, scaleQuantize, scaleThreshold } from 'd3-scale';\nexport { scaleImplicit } from 'd3-scale';\nimport * as $ from 'd3-interpolate';\nimport { piecewise } from 'd3-interpolate';\nimport { timeInterval, utcInterval } from 'vega-time';\n\nfunction bandSpace (count, paddingInner, paddingOuter) {\n  const space = count - paddingInner + paddingOuter * 2;\n  return count ? space > 0 ? space : 1 : 0;\n}\n\nconst Identity = 'identity';\nconst Linear = 'linear';\nconst Log = 'log';\nconst Pow = 'pow';\nconst Sqrt = 'sqrt';\nconst Symlog = 'symlog';\nconst Time = 'time';\nconst UTC = 'utc';\nconst Sequential = 'sequential';\nconst Diverging = 'diverging';\nconst Quantile = 'quantile';\nconst Quantize = 'quantize';\nconst Threshold = 'threshold';\nconst Ordinal = 'ordinal';\nconst Point = 'point';\nconst Band = 'band';\nconst BinOrdinal = 'bin-ordinal'; // categories\n\nconst Continuous = 'continuous';\nconst Discrete = 'discrete';\nconst Discretizing = 'discretizing';\nconst Interpolating = 'interpolating';\nconst Temporal = 'temporal';\n\nfunction invertRange (scale) {\n  return function (_) {\n    let lo = _[0],\n        hi = _[1],\n        t;\n\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n\n    return [scale.invert(lo), scale.invert(hi)];\n  };\n}\n\nfunction invertRangeExtent (scale) {\n  return function (_) {\n    const range = scale.range();\n    let lo = _[0],\n        hi = _[1],\n        min = -1,\n        max,\n        t,\n        i,\n        n;\n\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n\n    for (i = 0, n = range.length; i < n; ++i) {\n      if (range[i] >= lo && range[i] <= hi) {\n        if (min < 0) min = i;\n        max = i;\n      }\n    }\n\n    if (min < 0) return undefined;\n    lo = scale.invertExtent(range[min]);\n    hi = scale.invertExtent(range[max]);\n    return [lo[0] === undefined ? lo[1] : lo[0], hi[1] === undefined ? hi[0] : hi[1]];\n  };\n}\n\nfunction band() {\n  const scale = scaleOrdinal().unknown(undefined),\n        domain = scale.domain,\n        ordinalRange = scale.range;\n  let range$1 = [0, 1],\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n  delete scale.unknown;\n\n  function rescale() {\n    const n = domain().length,\n          reverse = range$1[1] < range$1[0],\n          stop = range$1[1 - reverse],\n          space = bandSpace(n, paddingInner, paddingOuter);\n    let start = range$1[reverse - 0];\n    step = (stop - start) / (space || 1);\n\n    if (round) {\n      step = Math.floor(step);\n    }\n\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n\n    if (round) {\n      start = Math.round(start);\n      bandwidth = Math.round(bandwidth);\n    }\n\n    const values = range(n).map(i => start + step * i);\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function (_) {\n    if (arguments.length) {\n      domain(_);\n      return rescale();\n    } else {\n      return domain();\n    }\n  };\n\n  scale.range = function (_) {\n    if (arguments.length) {\n      range$1 = [+_[0], +_[1]];\n      return rescale();\n    } else {\n      return range$1.slice();\n    }\n  };\n\n  scale.rangeRound = function (_) {\n    range$1 = [+_[0], +_[1]];\n    round = true;\n    return rescale();\n  };\n\n  scale.bandwidth = function () {\n    return bandwidth;\n  };\n\n  scale.step = function () {\n    return step;\n  };\n\n  scale.round = function (_) {\n    if (arguments.length) {\n      round = !!_;\n      return rescale();\n    } else {\n      return round;\n    }\n  };\n\n  scale.padding = function (_) {\n    if (arguments.length) {\n      paddingOuter = Math.max(0, Math.min(1, _));\n      paddingInner = paddingOuter;\n      return rescale();\n    } else {\n      return paddingInner;\n    }\n  };\n\n  scale.paddingInner = function (_) {\n    if (arguments.length) {\n      paddingInner = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return paddingInner;\n    }\n  };\n\n  scale.paddingOuter = function (_) {\n    if (arguments.length) {\n      paddingOuter = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return paddingOuter;\n    }\n  };\n\n  scale.align = function (_) {\n    if (arguments.length) {\n      align = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return align;\n    }\n  };\n\n  scale.invertRange = function (_) {\n    // bail if range has null or undefined values\n    if (_[0] == null || _[1] == null) return;\n    const reverse = range$1[1] < range$1[0],\n          values = reverse ? ordinalRange().reverse() : ordinalRange(),\n          n = values.length - 1;\n    let lo = +_[0],\n        hi = +_[1],\n        a,\n        b,\n        t; // bail if either range endpoint is invalid\n\n    if (lo !== lo || hi !== hi) return; // order range inputs, bail if outside of scale range\n\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n\n    if (hi < values[0] || lo > range$1[1 - reverse]) return; // binary search to index into scale range\n\n    a = Math.max(0, bisectRight(values, lo) - 1);\n    b = lo === hi ? a : bisectRight(values, hi) - 1; // increment index a if lo is within padding gap\n\n    if (lo - values[a] > bandwidth + 1e-10) ++a;\n\n    if (reverse) {\n      // map + swap\n      t = a;\n      a = n - b;\n      b = n - t;\n    }\n\n    return a > b ? undefined : domain().slice(a, b + 1);\n  };\n\n  scale.invert = function (_) {\n    const value = scale.invertRange([_, _]);\n    return value ? value[0] : value;\n  };\n\n  scale.copy = function () {\n    return band().domain(domain()).range(range$1).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);\n  };\n\n  return rescale();\n}\n\nfunction pointish(scale) {\n  const copy = scale.copy;\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n\n  scale.copy = function () {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nfunction point() {\n  return pointish(band().paddingInner(1));\n}\n\nvar map = Array.prototype.map;\nfunction numbers(_) {\n  return map.call(_, toNumber);\n}\n\nconst slice = Array.prototype.slice;\n\nfunction scaleBinOrdinal() {\n  let domain = [],\n      range = [];\n\n  function scale(x) {\n    return x == null || x !== x ? undefined : range[(bisect(domain, x) - 1) % range.length];\n  }\n\n  scale.domain = function (_) {\n    if (arguments.length) {\n      domain = numbers(_);\n      return scale;\n    } else {\n      return domain.slice();\n    }\n  };\n\n  scale.range = function (_) {\n    if (arguments.length) {\n      range = slice.call(_);\n      return scale;\n    } else {\n      return range.slice();\n    }\n  };\n\n  scale.tickFormat = function (count, specifier) {\n    return tickFormat$1(domain[0], peek(domain), count == null ? 10 : count, specifier);\n  };\n\n  scale.copy = function () {\n    return scaleBinOrdinal().domain(scale.domain()).range(scale.range());\n  };\n\n  return scale;\n}\n\nconst scales = {};\n/**\n * Augment scales with their type and needed inverse methods.\n */\n\nfunction create(type, constructor, metadata) {\n  const ctr = function scale() {\n    const s = constructor();\n\n    if (!s.invertRange) {\n      s.invertRange = s.invert ? invertRange(s) : s.invertExtent ? invertRangeExtent(s) : undefined;\n    }\n\n    s.type = type;\n    return s;\n  };\n\n  ctr.metadata = toSet(array(metadata));\n  return ctr;\n}\n\nfunction scale(type, scale, metadata) {\n  if (arguments.length > 1) {\n    scales[type] = create(type, scale, metadata);\n    return this;\n  } else {\n    return isValidScaleType(type) ? scales[type] : undefined;\n  }\n} // identity scale\n\nscale(Identity, scaleIdentity); // continuous scales\n\nscale(Linear, scaleLinear, Continuous);\nscale(Log, scaleLog, [Continuous, Log]);\nscale(Pow, scalePow, Continuous);\nscale(Sqrt, scaleSqrt, Continuous);\nscale(Symlog, scaleSymlog, Continuous);\nscale(Time, scaleTime, [Continuous, Temporal]);\nscale(UTC, scaleUtc, [Continuous, Temporal]); // sequential scales\n\nscale(Sequential, scaleSequential, [Continuous, Interpolating]); // backwards compat\n\nscale(\"\".concat(Sequential, \"-\").concat(Linear), scaleSequential, [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Log), scaleSequentialLog, [Continuous, Interpolating, Log]);\nscale(\"\".concat(Sequential, \"-\").concat(Pow), scaleSequentialPow, [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Sqrt), scaleSequentialSqrt, [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Symlog), scaleSequentialSymlog, [Continuous, Interpolating]); // diverging scales\n\nscale(\"\".concat(Diverging, \"-\").concat(Linear), scaleDiverging, [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Log), scaleDivergingLog, [Continuous, Interpolating, Log]);\nscale(\"\".concat(Diverging, \"-\").concat(Pow), scaleDivergingPow, [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Sqrt), scaleDivergingSqrt, [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Symlog), scaleDivergingSymlog, [Continuous, Interpolating]); // discretizing scales\n\nscale(Quantile, scaleQuantile, [Discretizing, Quantile]);\nscale(Quantize, scaleQuantize, Discretizing);\nscale(Threshold, scaleThreshold, Discretizing); // discrete scales\n\nscale(BinOrdinal, scaleBinOrdinal, [Discrete, Discretizing]);\nscale(Ordinal, scaleOrdinal, Discrete);\nscale(Band, band, Discrete);\nscale(Point, point, Discrete);\nfunction isValidScaleType(type) {\n  return hasOwnProperty(scales, type);\n}\n\nfunction hasType(key, type) {\n  const s = scales[key];\n  return s && s.metadata[type];\n}\n\nfunction isContinuous(key) {\n  return hasType(key, Continuous);\n}\nfunction isDiscrete(key) {\n  return hasType(key, Discrete);\n}\nfunction isDiscretizing(key) {\n  return hasType(key, Discretizing);\n}\nfunction isLogarithmic(key) {\n  return hasType(key, Log);\n}\nfunction isTemporal(key) {\n  return hasType(key, Temporal);\n}\nfunction isInterpolating(key) {\n  return hasType(key, Interpolating);\n}\nfunction isQuantile(key) {\n  return hasType(key, Quantile);\n}\n\nconst scaleProps = ['clamp', 'base', 'constant', 'exponent'];\nfunction interpolateRange(interpolator, range) {\n  const start = range[0],\n        span = peek(range) - start;\n  return function (i) {\n    return interpolator(start + i * span);\n  };\n}\nfunction interpolateColors(colors, type, gamma) {\n  return piecewise(interpolate(type || 'rgb', gamma), colors);\n}\nfunction quantizeInterpolator(interpolator, count) {\n  const samples = new Array(count),\n        n = count + 1;\n\n  for (let i = 0; i < count;) samples[i] = interpolator(++i / n);\n\n  return samples;\n}\nfunction scaleCopy(scale) {\n  const t = scale.type,\n        s = scale.copy();\n  s.type = t;\n  return s;\n}\nfunction scaleFraction(scale$1, min, max) {\n  const delta = max - min;\n  let i, t, s;\n\n  if (!delta || !Number.isFinite(delta)) {\n    return constant(0.5);\n  } else {\n    i = (t = scale$1.type).indexOf('-');\n    t = i < 0 ? t : t.slice(i + 1);\n    s = scale(t)().domain([min, max]).range([0, 1]);\n    scaleProps.forEach(m => scale$1[m] ? s[m](scale$1[m]()) : 0);\n    return s;\n  }\n}\nfunction interpolate(type, gamma) {\n  const interp = $[method(type)];\n  return gamma != null && interp && interp.gamma ? interp.gamma(gamma) : interp;\n}\n\nfunction method(type) {\n  return 'interpolate' + type.toLowerCase().split('-').map(s => s[0].toUpperCase() + s.slice(1)).join('');\n}\n\nconst continuous = {\n  blues: 'cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90',\n  greens: 'd3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429',\n  greys: 'e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e',\n  oranges: 'fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303',\n  purples: 'e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c',\n  reds: 'fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13',\n  blueGreen: 'd5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429',\n  bluePurple: 'ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71',\n  greenBlue: 'd3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1',\n  orangeRed: 'fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403',\n  purpleBlue: 'dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281',\n  purpleBlueGreen: 'dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353',\n  purpleRed: 'dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a',\n  redPurple: 'fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174',\n  yellowGreen: 'e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034',\n  yellowOrangeBrown: 'feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204',\n  yellowOrangeRed: 'fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225',\n  blueOrange: '134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07',\n  brownBlueGreen: '704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147',\n  purpleGreen: '5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29',\n  purpleOrange: '4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07',\n  redBlue: '8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85',\n  redGrey: '8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434',\n  yellowGreenBlue: 'eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185',\n  redYellowBlue: 'a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695',\n  redYellowGreen: 'a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837',\n  pinkYellowGreen: '8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419',\n  spectral: '9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2',\n  viridis: '440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725',\n  magma: '0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf',\n  inferno: '0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4',\n  plasma: '0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921',\n  cividis: '00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647',\n  rainbow: '6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa',\n  sinebow: 'ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040',\n  turbo: '23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00',\n  browns: 'eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632',\n  tealBlues: 'bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985',\n  teals: 'bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667',\n  warmGreys: 'dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e',\n  goldGreen: 'f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36',\n  goldOrange: 'f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26',\n  goldRed: 'f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e',\n  lightGreyRed: 'efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b',\n  lightGreyTeal: 'e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc',\n  lightMulti: 'e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c',\n  lightOrange: 'f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b',\n  lightTealBlue: 'e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988',\n  darkBlue: '3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff',\n  darkGold: '3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff',\n  darkGreen: '3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa',\n  darkMulti: '3737371f5287197d8c29a86995ce3fffe800ffffff',\n  darkRed: '3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c'\n};\nconst discrete = {\n  category10: '1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf',\n  category20: '1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5',\n  category20b: '393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6',\n  category20c: '3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9',\n  tableau10: '4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac',\n  tableau20: '4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5',\n  accent: '7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666',\n  dark2: '1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666',\n  paired: 'a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928',\n  pastel1: 'fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2',\n  pastel2: 'b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc',\n  set1: 'e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999',\n  set2: '66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3',\n  set3: '8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f'\n};\n\nfunction colors(palette) {\n  const n = palette.length / 6 | 0,\n        c = new Array(n);\n\n  for (let i = 0; i < n;) {\n    c[i] = '#' + palette.slice(i * 6, ++i * 6);\n  }\n\n  return c;\n}\n\nfunction apply(_, f) {\n  for (const k in _) scheme(k, f(_[k]));\n}\n\nconst schemes = {};\napply(discrete, colors);\napply(continuous, _ => interpolateColors(colors(_)));\nfunction scheme(name, scheme) {\n  name = name && name.toLowerCase();\n\n  if (arguments.length > 1) {\n    schemes[name] = scheme;\n    return this;\n  } else {\n    return schemes[name];\n  }\n}\n\nconst SymbolLegend = 'symbol';\nconst DiscreteLegend = 'discrete';\nconst GradientLegend = 'gradient';\n\nconst defaultFormatter = value => isArray(value) ? value.map(v => String(v)) : String(value);\n\nconst ascending = (a, b) => a[1] - b[1];\n\nconst descending = (a, b) => b[1] - a[1];\n/**\n * Determine the tick count or interval function.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} count - The desired tick count or interval specifier.\n * @param {number} minStep - The desired minimum step between tick values.\n * @return {*} - The tick count or interval function.\n */\n\n\nfunction tickCount(scale, count, minStep) {\n  let step;\n\n  if (isNumber(count)) {\n    if (scale.bins) {\n      count = Math.max(count, scale.bins.length);\n    }\n\n    if (minStep != null) {\n      count = Math.min(count, Math.floor(span(scale.domain()) / minStep || 1));\n    }\n  }\n\n  if (isObject(count)) {\n    step = count.step;\n    count = count.interval;\n  }\n\n  if (isString(count)) {\n    count = scale.type === Time ? timeInterval(count) : scale.type == UTC ? utcInterval(count) : error('Only time and utc scales accept interval strings.');\n    if (step) count = count.every(step);\n  }\n\n  return count;\n}\n/**\n * Filter a set of candidate tick values, ensuring that only tick values\n * that lie within the scale range are included.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {Array<*>} ticks - The candidate tick values.\n * @param {*} count - The tick count or interval function.\n * @return {Array<*>} - The filtered tick values.\n */\n\nfunction validTicks(scale, ticks, count) {\n  let range = scale.range(),\n      lo = range[0],\n      hi = peek(range),\n      cmp = ascending;\n\n  if (lo > hi) {\n    range = hi;\n    hi = lo;\n    lo = range;\n    cmp = descending;\n  }\n\n  lo = Math.floor(lo);\n  hi = Math.ceil(hi); // filter ticks to valid values within the range\n  // additionally sort ticks in range order (#2579)\n\n  ticks = ticks.map(v => [v, scale(v)]).filter(_ => lo <= _[1] && _[1] <= hi).sort(cmp).map(_ => _[0]);\n\n  if (count > 0 && ticks.length > 1) {\n    const endpoints = [ticks[0], peek(ticks)];\n\n    while (ticks.length > count && ticks.length >= 3) {\n      ticks = ticks.filter((_, i) => !(i % 2));\n    }\n\n    if (ticks.length < 3) {\n      ticks = endpoints;\n    }\n  }\n\n  return ticks;\n}\n/**\n * Generate tick values for the given scale and approximate tick count or\n * interval value. If the scale has a 'ticks' method, it will be used to\n * generate the ticks, with the count argument passed as a parameter. If the\n * scale lacks a 'ticks' method, the full scale domain will be returned.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} [count] - The approximate number of desired ticks.\n * @return {Array<*>} - The generated tick values.\n */\n\nfunction tickValues(scale, count) {\n  return scale.bins ? validTicks(scale, scale.bins) : scale.ticks ? scale.ticks(count) : scale.domain();\n}\n/**\n * Generate a label format function for a scale. If the scale has a\n * 'tickFormat' method, it will be used to generate the formatter, with the\n * count and specifier arguments passed as parameters. If the scale lacks a\n * 'tickFormat' method, the returned formatter performs simple string coercion.\n * If the input scale is a logarithmic scale and the format specifier does not\n * indicate a desired decimal precision, a special variable precision formatter\n * that automatically trims trailing zeroes will be generated.\n * @param {Scale} scale - The scale for which to generate the label formatter.\n * @param {*} [count] - The approximate number of desired ticks.\n * @param {string} [specifier] - The format specifier. Must be a legal d3\n *   specifier string (see https://github.com/d3/d3-format#formatSpecifier) or\n *   time multi-format specifier object.\n * @return {function(*):string} - The generated label formatter.\n */\n\nfunction tickFormat(locale, scale, count, specifier, formatType, noSkip) {\n  const type = scale.type;\n  let format = defaultFormatter;\n\n  if (type === Time || formatType === Time) {\n    format = locale.timeFormat(specifier);\n  } else if (type === UTC || formatType === UTC) {\n    format = locale.utcFormat(specifier);\n  } else if (isLogarithmic(type)) {\n    const varfmt = locale.formatFloat(specifier);\n\n    if (noSkip || scale.bins) {\n      format = varfmt;\n    } else {\n      const test = tickLog(scale, count, false);\n\n      format = _ => test(_) ? varfmt(_) : '';\n    }\n  } else if (scale.tickFormat) {\n    // if d3 scale has tickFormat, it must be continuous\n    const d = scale.domain();\n    format = locale.formatSpan(d[0], d[d.length - 1], count, specifier);\n  } else if (specifier) {\n    format = locale.format(specifier);\n  }\n\n  return format;\n}\nfunction tickLog(scale, count, values) {\n  const ticks = tickValues(scale, count),\n        base = scale.base(),\n        logb = Math.log(base),\n        k = Math.max(1, base * count / ticks.length); // apply d3-scale's log format filter criteria\n\n  const test = d => {\n    let i = d / Math.pow(base, Math.round(Math.log(d) / logb));\n    if (i * base < base - 0.5) i *= base;\n    return i <= k;\n  };\n\n  return values ? ticks.filter(test) : test;\n}\n\nconst symbols = {\n  [Quantile]: 'quantiles',\n  [Quantize]: 'thresholds',\n  [Threshold]: 'domain'\n};\nconst formats = {\n  [Quantile]: 'quantiles',\n  [Quantize]: 'domain'\n};\nfunction labelValues(scale, count) {\n  return scale.bins ? binValues(scale.bins) : scale.type === Log ? tickLog(scale, count, true) : symbols[scale.type] ? thresholdValues(scale[symbols[scale.type]]()) : tickValues(scale, count);\n}\nfunction thresholdFormat(locale, scale, specifier) {\n  const _ = scale[formats[scale.type]](),\n        n = _.length;\n\n  let d = n > 1 ? _[1] - _[0] : _[0],\n      i;\n\n  for (i = 1; i < n; ++i) {\n    d = Math.min(d, _[i] - _[i - 1]);\n  } // tickCount = 3 ticks times 10 for increased resolution\n\n\n  return locale.formatSpan(0, d, 3 * 10, specifier);\n}\n\nfunction thresholdValues(thresholds) {\n  const values = [-Infinity].concat(thresholds);\n  values.max = +Infinity;\n  return values;\n}\n\nfunction binValues(bins) {\n  const values = bins.slice(0, -1);\n  values.max = peek(bins);\n  return values;\n}\n\nconst isDiscreteRange = scale => symbols[scale.type] || scale.bins;\n\nfunction labelFormat(locale, scale, count, type, specifier, formatType, noSkip) {\n  const format = formats[scale.type] && formatType !== Time && formatType !== UTC ? thresholdFormat(locale, scale, specifier) : tickFormat(locale, scale, count, specifier, formatType, noSkip);\n  return type === SymbolLegend && isDiscreteRange(scale) ? formatRange(format) : type === DiscreteLegend ? formatDiscrete(format) : formatPoint(format);\n}\n\nconst formatRange = format => (value, index, array) => {\n  const limit = get(array[index + 1], get(array.max, +Infinity)),\n        lo = formatValue(value, format),\n        hi = formatValue(limit, format);\n  return lo && hi ? lo + ' \\u2013 ' + hi : hi ? '< ' + hi : '\\u2265 ' + lo;\n};\n\nconst get = (value, dflt) => value != null ? value : dflt;\n\nconst formatDiscrete = format => (value, index) => index ? format(value) : null;\n\nconst formatPoint = format => value => format(value);\n\nconst formatValue = (value, format) => Number.isFinite(value) ? format(value) : null;\n\nfunction labelFraction(scale) {\n  const domain = scale.domain(),\n        count = domain.length - 1;\n  let lo = +domain[0],\n      hi = +peek(domain),\n      span = hi - lo;\n\n  if (scale.type === Threshold) {\n    const adjust = count ? span / count : 0.1;\n    lo -= adjust;\n    hi += adjust;\n    span = hi - lo;\n  }\n\n  return value => (value - lo) / span;\n}\n\nfunction format(locale, scale, specifier, formatType) {\n  const type = formatType || scale.type; // replace abbreviated time specifiers to improve screen reader experience\n\n  if (isString(specifier) && isTemporal(type)) {\n    specifier = specifier.replace(/%a/g, '%A').replace(/%b/g, '%B');\n  }\n\n  return !specifier && type === Time ? locale.timeFormat('%A, %d %B %Y, %X') : !specifier && type === UTC ? locale.utcFormat('%A, %d %B %Y, %X UTC') : labelFormat(locale, scale, 5, null, specifier, formatType, true);\n}\n\nfunction domainCaption(locale, scale, opt) {\n  opt = opt || {};\n  const max = Math.max(3, opt.maxlen || 7),\n        fmt = format(locale, scale, opt.format, opt.formatType); // if scale breaks domain into bins, describe boundaries\n\n  if (isDiscretizing(scale.type)) {\n    const v = labelValues(scale).slice(1).map(fmt),\n          n = v.length;\n    return \"\".concat(n, \" boundar\").concat(n === 1 ? 'y' : 'ies', \": \").concat(v.join(', '));\n  } // if scale domain is discrete, list values\n  else if (isDiscrete(scale.type)) {\n      const d = scale.domain(),\n            n = d.length,\n            v = n > max ? d.slice(0, max - 2).map(fmt).join(', ') + ', ending with ' + d.slice(-1).map(fmt) : d.map(fmt).join(', ');\n      return \"\".concat(n, \" value\").concat(n === 1 ? '' : 's', \": \").concat(v);\n    } // if scale domain is continuous, describe value range\n    else {\n        const d = scale.domain();\n        return \"values from \".concat(fmt(d[0]), \" to \").concat(fmt(peek(d)));\n      }\n}\n\nexport { Band, BinOrdinal, DiscreteLegend, Diverging, GradientLegend, Identity, Linear, Log, Ordinal, Point, Pow, Quantile, Quantize, Sequential, Sqrt, SymbolLegend, Symlog, Threshold, Time, UTC, bandSpace, domainCaption, interpolate, interpolateColors, interpolateRange, isContinuous, isDiscrete, isDiscretizing, isInterpolating, isLogarithmic, isQuantile, isTemporal, isValidScaleType, labelFormat, labelFraction, labelValues, quantizeInterpolator, scale, scaleCopy, scaleFraction, scheme, tickCount, tickFormat, tickValues, validTicks };\n","import { hasOwnProperty, isFunction, inherits, truthy, lruCache, isArray, error, toSet, array, peek, extend, isNumber, isObject } from 'vega-util';\nimport { curveBasis, curveBasisClosed, curveBasisOpen, curveBundle, curveCardinal, curveCardinalOpen, curveCardinalClosed, curveCatmullRom, curveCatmullRomClosed, curveCatmullRomOpen, curveLinear, curveLinearClosed, curveMonotoneY, curveMonotoneX, curveNatural, curveStep, curveStepAfter, curveStepBefore, arc as arc$2, area as area$2, line as line$2, symbol as symbol$2 } from 'd3-shape';\nimport { path as path$3 } from 'd3-path';\nimport { image as image$1, canvas } from 'vega-canvas';\nimport { loader } from 'vega-loader';\nimport { isDiscrete, domainCaption } from 'vega-scale';\n\nlet gradient_id = 0;\nfunction resetSVGGradientId() {\n  gradient_id = 0;\n}\nconst patternPrefix = 'p_';\nfunction isGradient(value) {\n  return value && value.gradient;\n}\nfunction gradientRef(g, defs, base) {\n  const type = g.gradient;\n  let id = g.id,\n      prefix = type === 'radial' ? patternPrefix : ''; // check id, assign default values as needed\n\n  if (!id) {\n    id = g.id = 'gradient_' + gradient_id++;\n\n    if (type === 'radial') {\n      g.x1 = get(g.x1, 0.5);\n      g.y1 = get(g.y1, 0.5);\n      g.r1 = get(g.r1, 0);\n      g.x2 = get(g.x2, 0.5);\n      g.y2 = get(g.y2, 0.5);\n      g.r2 = get(g.r2, 0.5);\n      prefix = patternPrefix;\n    } else {\n      g.x1 = get(g.x1, 0);\n      g.y1 = get(g.y1, 0);\n      g.x2 = get(g.x2, 1);\n      g.y2 = get(g.y2, 0);\n    }\n  } // register definition\n\n\n  defs[id] = g; // return url reference\n\n  return 'url(' + (base || '') + '#' + prefix + id + ')';\n}\n\nfunction get(val, def) {\n  return val != null ? val : def;\n}\n\nfunction Gradient (p0, p1) {\n  var stops = [],\n      gradient;\n  return gradient = {\n    gradient: 'linear',\n    x1: p0 ? p0[0] : 0,\n    y1: p0 ? p0[1] : 0,\n    x2: p1 ? p1[0] : 1,\n    y2: p1 ? p1[1] : 0,\n    stops: stops,\n    stop: function (offset, color) {\n      stops.push({\n        offset: offset,\n        color: color\n      });\n      return gradient;\n    }\n  };\n}\n\nconst lookup = {\n  'basis': {\n    curve: curveBasis\n  },\n  'basis-closed': {\n    curve: curveBasisClosed\n  },\n  'basis-open': {\n    curve: curveBasisOpen\n  },\n  'bundle': {\n    curve: curveBundle,\n    tension: 'beta',\n    value: 0.85\n  },\n  'cardinal': {\n    curve: curveCardinal,\n    tension: 'tension',\n    value: 0\n  },\n  'cardinal-open': {\n    curve: curveCardinalOpen,\n    tension: 'tension',\n    value: 0\n  },\n  'cardinal-closed': {\n    curve: curveCardinalClosed,\n    tension: 'tension',\n    value: 0\n  },\n  'catmull-rom': {\n    curve: curveCatmullRom,\n    tension: 'alpha',\n    value: 0.5\n  },\n  'catmull-rom-closed': {\n    curve: curveCatmullRomClosed,\n    tension: 'alpha',\n    value: 0.5\n  },\n  'catmull-rom-open': {\n    curve: curveCatmullRomOpen,\n    tension: 'alpha',\n    value: 0.5\n  },\n  'linear': {\n    curve: curveLinear\n  },\n  'linear-closed': {\n    curve: curveLinearClosed\n  },\n  'monotone': {\n    horizontal: curveMonotoneY,\n    vertical: curveMonotoneX\n  },\n  'natural': {\n    curve: curveNatural\n  },\n  'step': {\n    curve: curveStep\n  },\n  'step-after': {\n    curve: curveStepAfter\n  },\n  'step-before': {\n    curve: curveStepBefore\n  }\n};\nfunction curves(type, orientation, tension) {\n  var entry = hasOwnProperty(lookup, type) && lookup[type],\n      curve = null;\n\n  if (entry) {\n    curve = entry.curve || entry[orientation || 'vertical'];\n\n    if (entry.tension && tension != null) {\n      curve = curve[entry.tension](tension);\n    }\n  }\n\n  return curve;\n}\n\n// Path parsing and rendering code adapted from fabric.js -- Thanks!\nconst cmdlen = {\n  m: 2,\n  l: 2,\n  h: 1,\n  v: 1,\n  c: 6,\n  s: 4,\n  q: 4,\n  t: 2,\n  a: 7\n},\n      regexp = [/([MLHVCSQTAZmlhvcsqtaz])/g, /###/, /(\\.\\d+)(\\.\\d)/g, /(\\d)([-+])/g, /\\s|,|###/];\nfunction pathParse (pathstr) {\n  const result = [];\n  let curr, chunks, parsed, param, cmd, len, i, j, n, m; // First, break path into command sequence\n\n  const path = pathstr.slice().replace(regexp[0], '###$1').split(regexp[1]).slice(1); // Next, parse each command in turn\n\n  for (i = 0, n = path.length; i < n; ++i) {\n    curr = path[i];\n    chunks = curr.slice(1).trim().replace(regexp[2], '$1###$2').replace(regexp[3], '$1###$2').split(regexp[4]);\n    cmd = curr.charAt(0);\n    parsed = [cmd];\n\n    for (j = 0, m = chunks.length; j < m; ++j) {\n      if ((param = +chunks[j]) === param) {\n        // not NaN\n        parsed.push(param);\n      }\n    }\n\n    len = cmdlen[cmd.toLowerCase()];\n\n    if (parsed.length - 1 > len) {\n      const m = parsed.length;\n      j = 1;\n      result.push([cmd].concat(parsed.slice(j, j += len))); // handle implicit lineTo (#2803)\n\n      cmd = cmd === 'M' ? 'L' : cmd === 'm' ? 'l' : cmd;\n\n      for (; j < m; j += len) {\n        result.push([cmd].concat(parsed.slice(j, j + len)));\n      }\n    } else {\n      result.push(parsed);\n    }\n  }\n\n  return result;\n}\n\nconst DegToRad = Math.PI / 180;\nconst Epsilon = 1e-14;\nconst HalfPi = Math.PI / 2;\nconst Tau = Math.PI * 2;\nconst HalfSqrt3 = Math.sqrt(3) / 2;\n\nvar segmentCache = {};\nvar bezierCache = {};\nvar join = [].join; // Copied from Inkscape svgtopdf, thanks!\n\nfunction segments(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n  const key = join.call(arguments);\n\n  if (segmentCache[key]) {\n    return segmentCache[key];\n  }\n\n  const th = rotateX * DegToRad;\n  const sin_th = Math.sin(th);\n  const cos_th = Math.cos(th);\n  rx = Math.abs(rx);\n  ry = Math.abs(ry);\n  const px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n  const py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n  let pl = px * px / (rx * rx) + py * py / (ry * ry);\n\n  if (pl > 1) {\n    pl = Math.sqrt(pl);\n    rx *= pl;\n    ry *= pl;\n  }\n\n  const a00 = cos_th / rx;\n  const a01 = sin_th / rx;\n  const a10 = -sin_th / ry;\n  const a11 = cos_th / ry;\n  const x0 = a00 * ox + a01 * oy;\n  const y0 = a10 * ox + a11 * oy;\n  const x1 = a00 * x + a01 * y;\n  const y1 = a10 * x + a11 * y;\n  const d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n  let sfactor_sq = 1 / d - 0.25;\n  if (sfactor_sq < 0) sfactor_sq = 0;\n  let sfactor = Math.sqrt(sfactor_sq);\n  if (sweep == large) sfactor = -sfactor;\n  const xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n  const yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n  const th0 = Math.atan2(y0 - yc, x0 - xc);\n  const th1 = Math.atan2(y1 - yc, x1 - xc);\n  let th_arc = th1 - th0;\n\n  if (th_arc < 0 && sweep === 1) {\n    th_arc += Tau;\n  } else if (th_arc > 0 && sweep === 0) {\n    th_arc -= Tau;\n  }\n\n  const segs = Math.ceil(Math.abs(th_arc / (HalfPi + 0.001)));\n  const result = [];\n\n  for (let i = 0; i < segs; ++i) {\n    const th2 = th0 + i * th_arc / segs;\n    const th3 = th0 + (i + 1) * th_arc / segs;\n    result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n  }\n\n  return segmentCache[key] = result;\n}\nfunction bezier(params) {\n  const key = join.call(params);\n\n  if (bezierCache[key]) {\n    return bezierCache[key];\n  }\n\n  var cx = params[0],\n      cy = params[1],\n      th0 = params[2],\n      th1 = params[3],\n      rx = params[4],\n      ry = params[5],\n      sin_th = params[6],\n      cos_th = params[7];\n  const a00 = cos_th * rx;\n  const a01 = -sin_th * ry;\n  const a10 = sin_th * rx;\n  const a11 = cos_th * ry;\n  const cos_th0 = Math.cos(th0);\n  const sin_th0 = Math.sin(th0);\n  const cos_th1 = Math.cos(th1);\n  const sin_th1 = Math.sin(th1);\n  const th_half = 0.5 * (th1 - th0);\n  const sin_th_h2 = Math.sin(th_half * 0.5);\n  const t = 8 / 3 * sin_th_h2 * sin_th_h2 / Math.sin(th_half);\n  const x1 = cx + cos_th0 - t * sin_th0;\n  const y1 = cy + sin_th0 + t * cos_th0;\n  const x3 = cx + cos_th1;\n  const y3 = cy + sin_th1;\n  const x2 = x3 + t * sin_th1;\n  const y2 = y3 - t * cos_th1;\n  return bezierCache[key] = [a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3];\n}\n\nconst temp = ['l', 0, 0, 0, 0, 0, 0, 0];\n\nfunction scale$1(current, sX, sY) {\n  const c = temp[0] = current[0];\n\n  if (c === 'a' || c === 'A') {\n    temp[1] = sX * current[1];\n    temp[2] = sY * current[2];\n    temp[3] = current[3];\n    temp[4] = current[4];\n    temp[5] = current[5];\n    temp[6] = sX * current[6];\n    temp[7] = sY * current[7];\n  } else if (c === 'h' || c === 'H') {\n    temp[1] = sX * current[1];\n  } else if (c === 'v' || c === 'V') {\n    temp[1] = sY * current[1];\n  } else {\n    for (var i = 1, n = current.length; i < n; ++i) {\n      temp[i] = (i % 2 == 1 ? sX : sY) * current[i];\n    }\n  }\n\n  return temp;\n}\n\nfunction pathRender (context, path, l, t, sX, sY) {\n  var current,\n      // current instruction\n  previous = null,\n      x = 0,\n      // current x\n  y = 0,\n      // current y\n  controlX = 0,\n      // current control point x\n  controlY = 0,\n      // current control point y\n  tempX,\n      tempY,\n      tempControlX,\n      tempControlY;\n  if (l == null) l = 0;\n  if (t == null) t = 0;\n  if (sX == null) sX = 1;\n  if (sY == null) sY = sX;\n  if (context.beginPath) context.beginPath();\n\n  for (var i = 0, len = path.length; i < len; ++i) {\n    current = path[i];\n\n    if (sX !== 1 || sY !== 1) {\n      current = scale$1(current, sX, sY);\n    }\n\n    switch (current[0]) {\n      // first letter\n      case 'l':\n        // lineto, relative\n        x += current[1];\n        y += current[2];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'L':\n        // lineto, absolute\n        x = current[1];\n        y = current[2];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'h':\n        // horizontal lineto, relative\n        x += current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'H':\n        // horizontal lineto, absolute\n        x = current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'v':\n        // vertical lineto, relative\n        y += current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'V':\n        // verical lineto, absolute\n        y = current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'm':\n        // moveTo, relative\n        x += current[1];\n        y += current[2];\n        context.moveTo(x + l, y + t);\n        break;\n\n      case 'M':\n        // moveTo, absolute\n        x = current[1];\n        y = current[2];\n        context.moveTo(x + l, y + t);\n        break;\n\n      case 'c':\n        // bezierCurveTo, relative\n        tempX = x + current[5];\n        tempY = y + current[6];\n        controlX = x + current[3];\n        controlY = y + current[4];\n        context.bezierCurveTo(x + current[1] + l, // x1\n        y + current[2] + t, // y1\n        controlX + l, // x2\n        controlY + t, // y2\n        tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'C':\n        // bezierCurveTo, absolute\n        x = current[5];\n        y = current[6];\n        controlX = current[3];\n        controlY = current[4];\n        context.bezierCurveTo(current[1] + l, current[2] + t, controlX + l, controlY + t, x + l, y + t);\n        break;\n\n      case 's':\n        // shorthand cubic bezierCurveTo, relative\n        // transform to absolute x,y\n        tempX = x + current[3];\n        tempY = y + current[4]; // calculate reflection of previous control points\n\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.bezierCurveTo(controlX + l, controlY + t, x + current[1] + l, y + current[2] + t, tempX + l, tempY + t); // set control point to 2nd one of this command\n        // the first control point is assumed to be the reflection of\n        // the second control point on the previous command relative\n        // to the current point.\n\n        controlX = x + current[1];\n        controlY = y + current[2];\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'S':\n        // shorthand cubic bezierCurveTo, absolute\n        tempX = current[3];\n        tempY = current[4]; // calculate reflection of previous control points\n\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.bezierCurveTo(controlX + l, controlY + t, current[1] + l, current[2] + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY; // set control point to 2nd one of this command\n        // the first control point is assumed to be the reflection of\n        // the second control point on the previous command relative\n        // to the current point.\n\n        controlX = current[1];\n        controlY = current[2];\n        break;\n\n      case 'q':\n        // quadraticCurveTo, relative\n        // transform to absolute x,y\n        tempX = x + current[3];\n        tempY = y + current[4];\n        controlX = x + current[1];\n        controlY = y + current[2];\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'Q':\n        // quadraticCurveTo, absolute\n        tempX = current[3];\n        tempY = current[4];\n        context.quadraticCurveTo(current[1] + l, current[2] + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        controlX = current[1];\n        controlY = current[2];\n        break;\n\n      case 't':\n        // shorthand quadraticCurveTo, relative\n        // transform to absolute x,y\n        tempX = x + current[1];\n        tempY = y + current[2];\n\n        if (previous[0].match(/[QqTt]/) === null) {\n          // If there is no previous command or if the previous command was not a Q, q, T or t,\n          // assume the control point is coincident with the current point\n          controlX = x;\n          controlY = y;\n        } else if (previous[0] === 't') {\n          // calculate reflection of previous control points for t\n          controlX = 2 * x - tempControlX;\n          controlY = 2 * y - tempControlY;\n        } else if (previous[0] === 'q') {\n          // calculate reflection of previous control points for q\n          controlX = 2 * x - controlX;\n          controlY = 2 * y - controlY;\n        }\n\n        tempControlX = controlX;\n        tempControlY = controlY;\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        controlX = x + current[1];\n        controlY = y + current[2];\n        break;\n\n      case 'T':\n        tempX = current[1];\n        tempY = current[2]; // calculate reflection of previous control points\n\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'a':\n        drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + x + l, current[7] + y + t]);\n        x += current[6];\n        y += current[7];\n        break;\n\n      case 'A':\n        drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + l, current[7] + t]);\n        x = current[6];\n        y = current[7];\n        break;\n\n      case 'z':\n      case 'Z':\n        context.closePath();\n        break;\n    }\n\n    previous = current;\n  }\n}\n\nfunction drawArc(context, x, y, coords) {\n  const seg = segments(coords[5], // end x\n  coords[6], // end y\n  coords[0], // radius x\n  coords[1], // radius y\n  coords[3], // large flag\n  coords[4], // sweep flag\n  coords[2], // rotation\n  x, y);\n\n  for (let i = 0; i < seg.length; ++i) {\n    const bez = bezier(seg[i]);\n    context.bezierCurveTo(bez[0], bez[1], bez[2], bez[3], bez[4], bez[5]);\n  }\n}\n\nconst Tan30 = 0.5773502691896257;\nconst builtins = {\n  'circle': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(r, 0);\n      context.arc(0, 0, r, 0, Tau);\n    }\n  },\n  'cross': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          s = r / 2.5;\n      context.moveTo(-r, -s);\n      context.lineTo(-r, s);\n      context.lineTo(-s, s);\n      context.lineTo(-s, r);\n      context.lineTo(s, r);\n      context.lineTo(s, s);\n      context.lineTo(r, s);\n      context.lineTo(r, -s);\n      context.lineTo(s, -s);\n      context.lineTo(s, -r);\n      context.lineTo(-s, -r);\n      context.lineTo(-s, -s);\n      context.closePath();\n    }\n  },\n  'diamond': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(-r, 0);\n      context.lineTo(0, -r);\n      context.lineTo(r, 0);\n      context.lineTo(0, r);\n      context.closePath();\n    }\n  },\n  'square': {\n    draw: function (context, size) {\n      var w = Math.sqrt(size),\n          x = -w / 2;\n      context.rect(x, x, w, w);\n    }\n  },\n  'arrow': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          s = r / 7,\n          t = r / 2.5,\n          v = r / 8;\n      context.moveTo(-s, r);\n      context.lineTo(s, r);\n      context.lineTo(s, -v);\n      context.lineTo(t, -v);\n      context.lineTo(0, -r);\n      context.lineTo(-t, -v);\n      context.lineTo(-s, -v);\n      context.closePath();\n    }\n  },\n  'wedge': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r,\n          o = h - r * Tan30,\n          b = r / 4;\n      context.moveTo(0, -h - o);\n      context.lineTo(-b, h - o);\n      context.lineTo(b, h - o);\n      context.closePath();\n    }\n  },\n  'triangle': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r,\n          o = h - r * Tan30;\n      context.moveTo(0, -h - o);\n      context.lineTo(-r, h - o);\n      context.lineTo(r, h - o);\n      context.closePath();\n    }\n  },\n  'triangle-up': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(0, -h);\n      context.lineTo(-r, h);\n      context.lineTo(r, h);\n      context.closePath();\n    }\n  },\n  'triangle-down': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(0, h);\n      context.lineTo(-r, -h);\n      context.lineTo(r, -h);\n      context.closePath();\n    }\n  },\n  'triangle-right': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(h, 0);\n      context.lineTo(-h, -r);\n      context.lineTo(-h, r);\n      context.closePath();\n    }\n  },\n  'triangle-left': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(-h, 0);\n      context.lineTo(h, -r);\n      context.lineTo(h, r);\n      context.closePath();\n    }\n  },\n  'stroke': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(-r, 0);\n      context.lineTo(r, 0);\n    }\n  }\n};\nfunction symbols(_) {\n  return hasOwnProperty(builtins, _) ? builtins[_] : customSymbol(_);\n}\nvar custom = {};\n\nfunction customSymbol(path) {\n  if (!hasOwnProperty(custom, path)) {\n    const parsed = pathParse(path);\n    custom[path] = {\n      draw: function (context, size) {\n        pathRender(context, parsed, 0, 0, Math.sqrt(size) / 2);\n      }\n    };\n  }\n\n  return custom[path];\n}\n\nconst C = 0.448084975506; // C = 1 - c\n\nfunction rectangleX(d) {\n  return d.x;\n}\n\nfunction rectangleY(d) {\n  return d.y;\n}\n\nfunction rectangleWidth(d) {\n  return d.width;\n}\n\nfunction rectangleHeight(d) {\n  return d.height;\n}\n\nfunction number(_) {\n  return typeof _ === 'function' ? _ : () => +_;\n}\n\nfunction clamp(value, min, max) {\n  return Math.max(min, Math.min(value, max));\n}\n\nfunction vg_rect () {\n  var x = rectangleX,\n      y = rectangleY,\n      width = rectangleWidth,\n      height = rectangleHeight,\n      crTL = number(0),\n      crTR = crTL,\n      crBL = crTL,\n      crBR = crTL,\n      context = null;\n\n  function rectangle(_, x0, y0) {\n    var buffer,\n        x1 = x0 != null ? x0 : +x.call(this, _),\n        y1 = y0 != null ? y0 : +y.call(this, _),\n        w = +width.call(this, _),\n        h = +height.call(this, _),\n        s = Math.min(w, h) / 2,\n        tl = clamp(+crTL.call(this, _), 0, s),\n        tr = clamp(+crTR.call(this, _), 0, s),\n        bl = clamp(+crBL.call(this, _), 0, s),\n        br = clamp(+crBR.call(this, _), 0, s);\n    if (!context) context = buffer = path$3();\n\n    if (tl <= 0 && tr <= 0 && bl <= 0 && br <= 0) {\n      context.rect(x1, y1, w, h);\n    } else {\n      var x2 = x1 + w,\n          y2 = y1 + h;\n      context.moveTo(x1 + tl, y1);\n      context.lineTo(x2 - tr, y1);\n      context.bezierCurveTo(x2 - C * tr, y1, x2, y1 + C * tr, x2, y1 + tr);\n      context.lineTo(x2, y2 - br);\n      context.bezierCurveTo(x2, y2 - C * br, x2 - C * br, y2, x2 - br, y2);\n      context.lineTo(x1 + bl, y2);\n      context.bezierCurveTo(x1 + C * bl, y2, x1, y2 - C * bl, x1, y2 - bl);\n      context.lineTo(x1, y1 + tl);\n      context.bezierCurveTo(x1, y1 + C * tl, x1 + C * tl, y1, x1 + tl, y1);\n      context.closePath();\n    }\n\n    if (buffer) {\n      context = null;\n      return buffer + '' || null;\n    }\n  }\n\n  rectangle.x = function (_) {\n    if (arguments.length) {\n      x = number(_);\n      return rectangle;\n    } else {\n      return x;\n    }\n  };\n\n  rectangle.y = function (_) {\n    if (arguments.length) {\n      y = number(_);\n      return rectangle;\n    } else {\n      return y;\n    }\n  };\n\n  rectangle.width = function (_) {\n    if (arguments.length) {\n      width = number(_);\n      return rectangle;\n    } else {\n      return width;\n    }\n  };\n\n  rectangle.height = function (_) {\n    if (arguments.length) {\n      height = number(_);\n      return rectangle;\n    } else {\n      return height;\n    }\n  };\n\n  rectangle.cornerRadius = function (tl, tr, br, bl) {\n    if (arguments.length) {\n      crTL = number(tl);\n      crTR = tr != null ? number(tr) : crTL;\n      crBR = br != null ? number(br) : crTL;\n      crBL = bl != null ? number(bl) : crTR;\n      return rectangle;\n    } else {\n      return crTL;\n    }\n  };\n\n  rectangle.context = function (_) {\n    if (arguments.length) {\n      context = _ == null ? null : _;\n      return rectangle;\n    } else {\n      return context;\n    }\n  };\n\n  return rectangle;\n}\n\nfunction vg_trail () {\n  var x,\n      y,\n      size,\n      defined,\n      context = null,\n      ready,\n      x1,\n      y1,\n      r1;\n\n  function point(x2, y2, w2) {\n    const r2 = w2 / 2;\n\n    if (ready) {\n      var ux = y1 - y2,\n          uy = x2 - x1;\n\n      if (ux || uy) {\n        // get normal vector\n        var ud = Math.sqrt(ux * ux + uy * uy),\n            rx = (ux /= ud) * r1,\n            ry = (uy /= ud) * r1,\n            t = Math.atan2(uy, ux); // draw segment\n\n        context.moveTo(x1 - rx, y1 - ry);\n        context.lineTo(x2 - ux * r2, y2 - uy * r2);\n        context.arc(x2, y2, r2, t - Math.PI, t);\n        context.lineTo(x1 + rx, y1 + ry);\n        context.arc(x1, y1, r1, t, t + Math.PI);\n      } else {\n        context.arc(x2, y2, r2, 0, Tau);\n      }\n\n      context.closePath();\n    } else {\n      ready = 1;\n    }\n\n    x1 = x2;\n    y1 = y2;\n    r1 = r2;\n  }\n\n  function trail(data) {\n    var i,\n        n = data.length,\n        d,\n        defined0 = false,\n        buffer;\n    if (context == null) context = buffer = path$3();\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) ready = 0;\n      }\n\n      if (defined0) point(+x(d, i, data), +y(d, i, data), +size(d, i, data));\n    }\n\n    if (buffer) {\n      context = null;\n      return buffer + '' || null;\n    }\n  }\n\n  trail.x = function (_) {\n    if (arguments.length) {\n      x = _;\n      return trail;\n    } else {\n      return x;\n    }\n  };\n\n  trail.y = function (_) {\n    if (arguments.length) {\n      y = _;\n      return trail;\n    } else {\n      return y;\n    }\n  };\n\n  trail.size = function (_) {\n    if (arguments.length) {\n      size = _;\n      return trail;\n    } else {\n      return size;\n    }\n  };\n\n  trail.defined = function (_) {\n    if (arguments.length) {\n      defined = _;\n      return trail;\n    } else {\n      return defined;\n    }\n  };\n\n  trail.context = function (_) {\n    if (arguments.length) {\n      if (_ == null) {\n        context = null;\n      } else {\n        context = _;\n      }\n\n      return trail;\n    } else {\n      return context;\n    }\n  };\n\n  return trail;\n}\n\nfunction value$1(a, b) {\n  return a != null ? a : b;\n}\n\nconst x = item => item.x || 0,\n      y = item => item.y || 0,\n      w = item => item.width || 0,\n      h = item => item.height || 0,\n      xw = item => (item.x || 0) + (item.width || 0),\n      yh = item => (item.y || 0) + (item.height || 0),\n      sa = item => item.startAngle || 0,\n      ea = item => item.endAngle || 0,\n      pa = item => item.padAngle || 0,\n      ir = item => item.innerRadius || 0,\n      or = item => item.outerRadius || 0,\n      cr = item => item.cornerRadius || 0,\n      tl = item => value$1(item.cornerRadiusTopLeft, item.cornerRadius) || 0,\n      tr = item => value$1(item.cornerRadiusTopRight, item.cornerRadius) || 0,\n      br = item => value$1(item.cornerRadiusBottomRight, item.cornerRadius) || 0,\n      bl = item => value$1(item.cornerRadiusBottomLeft, item.cornerRadius) || 0,\n      sz = item => value$1(item.size, 64),\n      ts = item => item.size || 1,\n      def = item => !(item.defined === false),\n      type = item => symbols(item.shape || 'circle');\n\nconst arcShape = arc$2().startAngle(sa).endAngle(ea).padAngle(pa).innerRadius(ir).outerRadius(or).cornerRadius(cr),\n      areavShape = area$2().x(x).y1(y).y0(yh).defined(def),\n      areahShape = area$2().y(y).x1(x).x0(xw).defined(def),\n      lineShape = line$2().x(x).y(y).defined(def),\n      rectShape = vg_rect().x(x).y(y).width(w).height(h).cornerRadius(tl, tr, br, bl),\n      symbolShape = symbol$2().type(type).size(sz),\n      trailShape = vg_trail().x(x).y(y).defined(def).size(ts);\nfunction hasCornerRadius(item) {\n  return item.cornerRadius || item.cornerRadiusTopLeft || item.cornerRadiusTopRight || item.cornerRadiusBottomRight || item.cornerRadiusBottomLeft;\n}\nfunction arc$1(context, item) {\n  return arcShape.context(context)(item);\n}\nfunction area$1(context, items) {\n  const item = items[0],\n        interp = item.interpolate || 'linear';\n  return (item.orient === 'horizontal' ? areahShape : areavShape).curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction line$1(context, items) {\n  const item = items[0],\n        interp = item.interpolate || 'linear';\n  return lineShape.curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction rectangle(context, item, x, y) {\n  return rectShape.context(context)(item, x, y);\n}\nfunction shape$1(context, item) {\n  return (item.mark.shape || item.shape).context(context)(item);\n}\nfunction symbol$1(context, item) {\n  return symbolShape.context(context)(item);\n}\nfunction trail$1(context, items) {\n  return trailShape.context(context)(items);\n}\n\nvar clip_id = 1;\nfunction resetSVGClipId() {\n  clip_id = 1;\n}\nfunction clip$1 (renderer, item, size) {\n  var clip = item.clip,\n      defs = renderer._defs,\n      id = item.clip_id || (item.clip_id = 'clip' + clip_id++),\n      c = defs.clipping[id] || (defs.clipping[id] = {\n    id: id\n  });\n\n  if (isFunction(clip)) {\n    c.path = clip(null);\n  } else if (hasCornerRadius(size)) {\n    c.path = rectangle(null, size, 0, 0);\n  } else {\n    c.width = size.width || 0;\n    c.height = size.height || 0;\n  }\n\n  return 'url(#' + id + ')';\n}\n\nfunction Bounds(b) {\n  this.clear();\n  if (b) this.union(b);\n}\nBounds.prototype = {\n  clone() {\n    return new Bounds(this);\n  },\n\n  clear() {\n    this.x1 = +Number.MAX_VALUE;\n    this.y1 = +Number.MAX_VALUE;\n    this.x2 = -Number.MAX_VALUE;\n    this.y2 = -Number.MAX_VALUE;\n    return this;\n  },\n\n  empty() {\n    return this.x1 === +Number.MAX_VALUE && this.y1 === +Number.MAX_VALUE && this.x2 === -Number.MAX_VALUE && this.y2 === -Number.MAX_VALUE;\n  },\n\n  equals(b) {\n    return this.x1 === b.x1 && this.y1 === b.y1 && this.x2 === b.x2 && this.y2 === b.y2;\n  },\n\n  set(x1, y1, x2, y2) {\n    if (x2 < x1) {\n      this.x2 = x1;\n      this.x1 = x2;\n    } else {\n      this.x1 = x1;\n      this.x2 = x2;\n    }\n\n    if (y2 < y1) {\n      this.y2 = y1;\n      this.y1 = y2;\n    } else {\n      this.y1 = y1;\n      this.y2 = y2;\n    }\n\n    return this;\n  },\n\n  add(x, y) {\n    if (x < this.x1) this.x1 = x;\n    if (y < this.y1) this.y1 = y;\n    if (x > this.x2) this.x2 = x;\n    if (y > this.y2) this.y2 = y;\n    return this;\n  },\n\n  expand(d) {\n    this.x1 -= d;\n    this.y1 -= d;\n    this.x2 += d;\n    this.y2 += d;\n    return this;\n  },\n\n  round() {\n    this.x1 = Math.floor(this.x1);\n    this.y1 = Math.floor(this.y1);\n    this.x2 = Math.ceil(this.x2);\n    this.y2 = Math.ceil(this.y2);\n    return this;\n  },\n\n  scale(s) {\n    this.x1 *= s;\n    this.y1 *= s;\n    this.x2 *= s;\n    this.y2 *= s;\n    return this;\n  },\n\n  translate(dx, dy) {\n    this.x1 += dx;\n    this.x2 += dx;\n    this.y1 += dy;\n    this.y2 += dy;\n    return this;\n  },\n\n  rotate(angle, x, y) {\n    const p = this.rotatedPoints(angle, x, y);\n    return this.clear().add(p[0], p[1]).add(p[2], p[3]).add(p[4], p[5]).add(p[6], p[7]);\n  },\n\n  rotatedPoints(angle, x, y) {\n    var {\n      x1,\n      y1,\n      x2,\n      y2\n    } = this,\n        cos = Math.cos(angle),\n        sin = Math.sin(angle),\n        cx = x - x * cos + y * sin,\n        cy = y - x * sin - y * cos;\n    return [cos * x1 - sin * y1 + cx, sin * x1 + cos * y1 + cy, cos * x1 - sin * y2 + cx, sin * x1 + cos * y2 + cy, cos * x2 - sin * y1 + cx, sin * x2 + cos * y1 + cy, cos * x2 - sin * y2 + cx, sin * x2 + cos * y2 + cy];\n  },\n\n  union(b) {\n    if (b.x1 < this.x1) this.x1 = b.x1;\n    if (b.y1 < this.y1) this.y1 = b.y1;\n    if (b.x2 > this.x2) this.x2 = b.x2;\n    if (b.y2 > this.y2) this.y2 = b.y2;\n    return this;\n  },\n\n  intersect(b) {\n    if (b.x1 > this.x1) this.x1 = b.x1;\n    if (b.y1 > this.y1) this.y1 = b.y1;\n    if (b.x2 < this.x2) this.x2 = b.x2;\n    if (b.y2 < this.y2) this.y2 = b.y2;\n    return this;\n  },\n\n  encloses(b) {\n    return b && this.x1 <= b.x1 && this.x2 >= b.x2 && this.y1 <= b.y1 && this.y2 >= b.y2;\n  },\n\n  alignsWith(b) {\n    return b && (this.x1 == b.x1 || this.x2 == b.x2 || this.y1 == b.y1 || this.y2 == b.y2);\n  },\n\n  intersects(b) {\n    return b && !(this.x2 < b.x1 || this.x1 > b.x2 || this.y2 < b.y1 || this.y1 > b.y2);\n  },\n\n  contains(x, y) {\n    return !(x < this.x1 || x > this.x2 || y < this.y1 || y > this.y2);\n  },\n\n  width() {\n    return this.x2 - this.x1;\n  },\n\n  height() {\n    return this.y2 - this.y1;\n  }\n\n};\n\nfunction Item(mark) {\n  this.mark = mark;\n  this.bounds = this.bounds || new Bounds();\n}\n\nfunction GroupItem(mark) {\n  Item.call(this, mark);\n  this.items = this.items || [];\n}\ninherits(GroupItem, Item);\n\nfunction ResourceLoader(customLoader) {\n  this._pending = 0;\n  this._loader = customLoader || loader();\n}\n\nfunction increment(loader) {\n  loader._pending += 1;\n}\n\nfunction decrement(loader) {\n  loader._pending -= 1;\n}\n\nResourceLoader.prototype = {\n  pending() {\n    return this._pending;\n  },\n\n  sanitizeURL(uri) {\n    const loader = this;\n    increment(loader);\n    return loader._loader.sanitize(uri, {\n      context: 'href'\n    }).then(opt => {\n      decrement(loader);\n      return opt;\n    }).catch(() => {\n      decrement(loader);\n      return null;\n    });\n  },\n\n  loadImage(uri) {\n    const loader = this,\n          Image = image$1();\n    increment(loader);\n    return loader._loader.sanitize(uri, {\n      context: 'image'\n    }).then(opt => {\n      const url = opt.href;\n      if (!url || !Image) throw {\n        url: url\n      };\n      const img = new Image(); // set crossOrigin only if cors is defined; empty string sets anonymous mode\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/crossOrigin\n\n      const cors = hasOwnProperty(opt, 'crossOrigin') ? opt.crossOrigin : 'anonymous';\n      if (cors != null) img.crossOrigin = cors; // attempt to load image resource\n\n      img.onload = () => decrement(loader);\n\n      img.onerror = () => decrement(loader);\n\n      img.src = url;\n      return img;\n    }).catch(e => {\n      decrement(loader);\n      return {\n        complete: false,\n        width: 0,\n        height: 0,\n        src: e && e.url || ''\n      };\n    });\n  },\n\n  ready() {\n    const loader = this;\n    return new Promise(accept => {\n      function poll(value) {\n        if (!loader.pending()) accept(value);else setTimeout(() => {\n          poll(true);\n        }, 10);\n      }\n\n      poll(false);\n    });\n  }\n\n};\n\nfunction boundStroke (bounds, item, miter) {\n  if (item.stroke && item.opacity !== 0 && item.strokeOpacity !== 0) {\n    const sw = item.strokeWidth != null ? +item.strokeWidth : 1;\n    bounds.expand(sw + (miter ? miterAdjustment(item, sw) : 0));\n  }\n\n  return bounds;\n}\n\nfunction miterAdjustment(item, strokeWidth) {\n  // TODO: more sophisticated adjustment? Or miter support in boundContext?\n  return item.strokeJoin && item.strokeJoin !== 'miter' ? 0 : strokeWidth;\n}\n\nconst circleThreshold = Tau - 1e-8;\nlet bounds, lx, ly, rot, ma, mb, mc, md;\n\nconst add = (x, y) => bounds.add(x, y);\n\nconst addL = (x, y) => add(lx = x, ly = y);\n\nconst addX = x => add(x, bounds.y1);\n\nconst addY = y => add(bounds.x1, y);\n\nconst px = (x, y) => ma * x + mc * y;\n\nconst py = (x, y) => mb * x + md * y;\n\nconst addp = (x, y) => add(px(x, y), py(x, y));\n\nconst addpL = (x, y) => addL(px(x, y), py(x, y));\n\nfunction boundContext (_, deg) {\n  bounds = _;\n\n  if (deg) {\n    rot = deg * DegToRad;\n    ma = md = Math.cos(rot);\n    mb = Math.sin(rot);\n    mc = -mb;\n  } else {\n    ma = md = 1;\n    rot = mb = mc = 0;\n  }\n\n  return context$1;\n}\nconst context$1 = {\n  beginPath() {},\n\n  closePath() {},\n\n  moveTo: addpL,\n  lineTo: addpL,\n\n  rect(x, y, w, h) {\n    if (rot) {\n      addp(x + w, y);\n      addp(x + w, y + h);\n      addp(x, y + h);\n      addpL(x, y);\n    } else {\n      add(x + w, y + h);\n      addL(x, y);\n    }\n  },\n\n  quadraticCurveTo(x1, y1, x2, y2) {\n    const px1 = px(x1, y1),\n          py1 = py(x1, y1),\n          px2 = px(x2, y2),\n          py2 = py(x2, y2);\n    quadExtrema(lx, px1, px2, addX);\n    quadExtrema(ly, py1, py2, addY);\n    addL(px2, py2);\n  },\n\n  bezierCurveTo(x1, y1, x2, y2, x3, y3) {\n    const px1 = px(x1, y1),\n          py1 = py(x1, y1),\n          px2 = px(x2, y2),\n          py2 = py(x2, y2),\n          px3 = px(x3, y3),\n          py3 = py(x3, y3);\n    cubicExtrema(lx, px1, px2, px3, addX);\n    cubicExtrema(ly, py1, py2, py3, addY);\n    addL(px3, py3);\n  },\n\n  arc(cx, cy, r, sa, ea, ccw) {\n    sa += rot;\n    ea += rot; // store last point on path\n\n    lx = r * Math.cos(ea) + cx;\n    ly = r * Math.sin(ea) + cy;\n\n    if (Math.abs(ea - sa) > circleThreshold) {\n      // treat as full circle\n      add(cx - r, cy - r);\n      add(cx + r, cy + r);\n    } else {\n      const update = a => add(r * Math.cos(a) + cx, r * Math.sin(a) + cy);\n\n      let s, i; // sample end points\n\n      update(sa);\n      update(ea); // sample interior points aligned with 90 degrees\n\n      if (ea !== sa) {\n        sa = sa % Tau;\n        if (sa < 0) sa += Tau;\n        ea = ea % Tau;\n        if (ea < 0) ea += Tau;\n\n        if (ea < sa) {\n          ccw = !ccw; // flip direction\n\n          s = sa;\n          sa = ea;\n          ea = s; // swap end-points\n        }\n\n        if (ccw) {\n          ea -= Tau;\n          s = sa - sa % HalfPi;\n\n          for (i = 0; i < 4 && s > ea; ++i, s -= HalfPi) update(s);\n        } else {\n          s = sa - sa % HalfPi + HalfPi;\n\n          for (i = 0; i < 4 && s < ea; ++i, s = s + HalfPi) update(s);\n        }\n      }\n    }\n  }\n\n};\n\nfunction quadExtrema(x0, x1, x2, cb) {\n  const t = (x0 - x1) / (x0 + x2 - 2 * x1);\n  if (0 < t && t < 1) cb(x0 + (x1 - x0) * t);\n}\n\nfunction cubicExtrema(x0, x1, x2, x3, cb) {\n  const a = x3 - x0 + 3 * x1 - 3 * x2,\n        b = x0 + x2 - 2 * x1,\n        c = x0 - x1;\n  let t0 = 0,\n      t1 = 0,\n      r; // solve for parameter t\n\n  if (Math.abs(a) > Epsilon) {\n    // quadratic equation\n    r = b * b + c * a;\n\n    if (r >= 0) {\n      r = Math.sqrt(r);\n      t0 = (-b + r) / a;\n      t1 = (-b - r) / a;\n    }\n  } else {\n    // linear equation\n    t0 = 0.5 * c / b;\n  } // calculate position\n\n\n  if (0 < t0 && t0 < 1) cb(cubic(t0, x0, x1, x2, x3));\n  if (0 < t1 && t1 < 1) cb(cubic(t1, x0, x1, x2, x3));\n}\n\nfunction cubic(t, x0, x1, x2, x3) {\n  const s = 1 - t,\n        s2 = s * s,\n        t2 = t * t;\n  return s2 * s * x0 + 3 * s2 * t * x1 + 3 * s * t2 * x2 + t2 * t * x3;\n}\n\nvar context = (context = canvas(1, 1)) ? context.getContext('2d') : null;\n\nconst b = new Bounds();\nfunction intersectPath(draw) {\n  return function (item, brush) {\n    // rely on (inaccurate) bounds intersection if no context\n    if (!context) return true; // add path to offscreen graphics context\n\n    draw(context, item); // get bounds intersection region\n\n    b.clear().union(item.bounds).intersect(brush).round();\n    const {\n      x1,\n      y1,\n      x2,\n      y2\n    } = b; // iterate over intersection region\n    // perform fine grained inclusion test\n\n    for (let y = y1; y <= y2; ++y) {\n      for (let x = x1; x <= x2; ++x) {\n        if (context.isPointInPath(x, y)) {\n          return true;\n        }\n      }\n    } // false if no hits in intersection region\n\n\n    return false;\n  };\n}\nfunction intersectPoint(item, box) {\n  return box.contains(item.x || 0, item.y || 0);\n}\nfunction intersectRect(item, box) {\n  const x = item.x || 0,\n        y = item.y || 0,\n        w = item.width || 0,\n        h = item.height || 0;\n  return box.intersects(b.set(x, y, x + w, y + h));\n}\nfunction intersectRule(item, box) {\n  const x = item.x || 0,\n        y = item.y || 0,\n        x2 = item.x2 != null ? item.x2 : x,\n        y2 = item.y2 != null ? item.y2 : y;\n  return intersectBoxLine(box, x, y, x2, y2);\n}\nfunction intersectBoxLine(box, x, y, u, v) {\n  const {\n    x1,\n    y1,\n    x2,\n    y2\n  } = box,\n        dx = u - x,\n        dy = v - y;\n  let t0 = 0,\n      t1 = 1,\n      p,\n      q,\n      r,\n      e;\n\n  for (e = 0; e < 4; ++e) {\n    if (e === 0) {\n      p = -dx;\n      q = -(x1 - x);\n    }\n\n    if (e === 1) {\n      p = dx;\n      q = x2 - x;\n    }\n\n    if (e === 2) {\n      p = -dy;\n      q = -(y1 - y);\n    }\n\n    if (e === 3) {\n      p = dy;\n      q = y2 - y;\n    }\n\n    if (Math.abs(p) < 1e-10 && q < 0) return false;\n    r = q / p;\n\n    if (p < 0) {\n      if (r > t1) return false;else if (r > t0) t0 = r;\n    } else if (p > 0) {\n      if (r < t0) return false;else if (r < t1) t1 = r;\n    }\n  }\n\n  return true;\n}\n\nfunction blend (context, item) {\n  context.globalCompositeOperation = item.blend || 'source-over';\n}\n\nfunction value (value, dflt) {\n  return value == null ? dflt : value;\n}\n\nfunction addStops(gradient, stops) {\n  const n = stops.length;\n\n  for (let i = 0; i < n; ++i) {\n    gradient.addColorStop(stops[i].offset, stops[i].color);\n  }\n\n  return gradient;\n}\n\nfunction gradient (context, spec, bounds) {\n  const w = bounds.width(),\n        h = bounds.height();\n  let gradient;\n\n  if (spec.gradient === 'radial') {\n    gradient = context.createRadialGradient(bounds.x1 + value(spec.x1, 0.5) * w, bounds.y1 + value(spec.y1, 0.5) * h, Math.max(w, h) * value(spec.r1, 0), bounds.x1 + value(spec.x2, 0.5) * w, bounds.y1 + value(spec.y2, 0.5) * h, Math.max(w, h) * value(spec.r2, 0.5));\n  } else {\n    // linear gradient\n    const x1 = value(spec.x1, 0),\n          y1 = value(spec.y1, 0),\n          x2 = value(spec.x2, 1),\n          y2 = value(spec.y2, 0);\n\n    if (x1 === x2 || y1 === y2 || w === h) {\n      // axis aligned: use normal gradient\n      gradient = context.createLinearGradient(bounds.x1 + x1 * w, bounds.y1 + y1 * h, bounds.x1 + x2 * w, bounds.y1 + y2 * h);\n    } else {\n      // not axis aligned: render gradient into a pattern (#2365)\n      // this allows us to use normalized bounding box coordinates\n      const image = canvas(Math.ceil(w), Math.ceil(h)),\n            ictx = image.getContext('2d');\n      ictx.scale(w, h);\n      ictx.fillStyle = addStops(ictx.createLinearGradient(x1, y1, x2, y2), spec.stops);\n      ictx.fillRect(0, 0, w, h);\n      return context.createPattern(image, 'no-repeat');\n    }\n  }\n\n  return addStops(gradient, spec.stops);\n}\n\nfunction color (context, item, value) {\n  return isGradient(value) ? gradient(context, value, item.bounds) : value;\n}\n\nfunction fill (context, item, opacity) {\n  opacity *= item.fillOpacity == null ? 1 : item.fillOpacity;\n\n  if (opacity > 0) {\n    context.globalAlpha = opacity;\n    context.fillStyle = color(context, item, item.fill);\n    return true;\n  } else {\n    return false;\n  }\n}\n\nvar Empty = [];\nfunction stroke (context, item, opacity) {\n  var lw = (lw = item.strokeWidth) != null ? lw : 1;\n  if (lw <= 0) return false;\n  opacity *= item.strokeOpacity == null ? 1 : item.strokeOpacity;\n\n  if (opacity > 0) {\n    context.globalAlpha = opacity;\n    context.strokeStyle = color(context, item, item.stroke);\n    context.lineWidth = lw;\n    context.lineCap = item.strokeCap || 'butt';\n    context.lineJoin = item.strokeJoin || 'miter';\n    context.miterLimit = item.strokeMiterLimit || 10;\n\n    if (context.setLineDash) {\n      context.setLineDash(item.strokeDash || Empty);\n      context.lineDashOffset = item.strokeDashOffset || 0;\n    }\n\n    return true;\n  } else {\n    return false;\n  }\n}\n\nfunction compare(a, b) {\n  return a.zindex - b.zindex || a.index - b.index;\n}\n\nfunction zorder(scene) {\n  if (!scene.zdirty) return scene.zitems;\n  var items = scene.items,\n      output = [],\n      item,\n      i,\n      n;\n\n  for (i = 0, n = items.length; i < n; ++i) {\n    item = items[i];\n    item.index = i;\n    if (item.zindex) output.push(item);\n  }\n\n  scene.zdirty = false;\n  return scene.zitems = output.sort(compare);\n}\nfunction visit(scene, visitor) {\n  var items = scene.items,\n      i,\n      n;\n  if (!items || !items.length) return;\n  const zitems = zorder(scene);\n\n  if (zitems && zitems.length) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      if (!items[i].zindex) visitor(items[i]);\n    }\n\n    items = zitems;\n  }\n\n  for (i = 0, n = items.length; i < n; ++i) {\n    visitor(items[i]);\n  }\n}\nfunction pickVisit(scene, visitor) {\n  var items = scene.items,\n      hit,\n      i;\n  if (!items || !items.length) return null;\n  const zitems = zorder(scene);\n  if (zitems && zitems.length) items = zitems;\n\n  for (i = items.length; --i >= 0;) {\n    if (hit = visitor(items[i])) return hit;\n  }\n\n  if (items === zitems) {\n    for (items = scene.items, i = items.length; --i >= 0;) {\n      if (!items[i].zindex) {\n        if (hit = visitor(items[i])) return hit;\n      }\n    }\n  }\n\n  return null;\n}\n\nfunction drawAll(path) {\n  return function (context, scene, bounds) {\n    visit(scene, item => {\n      if (!bounds || bounds.intersects(item.bounds)) {\n        drawPath(path, context, item, item);\n      }\n    });\n  };\n}\nfunction drawOne(path) {\n  return function (context, scene, bounds) {\n    if (scene.items.length && (!bounds || bounds.intersects(scene.bounds))) {\n      drawPath(path, context, scene.items[0], scene.items);\n    }\n  };\n}\n\nfunction drawPath(path, context, item, items) {\n  var opacity = item.opacity == null ? 1 : item.opacity;\n  if (opacity === 0) return;\n  if (path(context, items)) return;\n  blend(context, item);\n\n  if (item.fill && fill(context, item, opacity)) {\n    context.fill();\n  }\n\n  if (item.stroke && stroke(context, item, opacity)) {\n    context.stroke();\n  }\n}\n\nfunction pick$1(test) {\n  test = test || truthy;\n  return function (context, scene, x, y, gx, gy) {\n    x *= context.pixelRatio;\n    y *= context.pixelRatio;\n    return pickVisit(scene, item => {\n      const b = item.bounds; // first hit test against bounding box\n\n      if (b && !b.contains(gx, gy) || !b) return; // if in bounding box, perform more careful test\n\n      if (test(context, item, x, y, gx, gy)) return item;\n    });\n  };\n}\nfunction hitPath(path, filled) {\n  return function (context, o, x, y) {\n    var item = Array.isArray(o) ? o[0] : o,\n        fill = filled == null ? item.fill : filled,\n        stroke = item.stroke && context.isPointInStroke,\n        lw,\n        lc;\n\n    if (stroke) {\n      lw = item.strokeWidth;\n      lc = item.strokeCap;\n      context.lineWidth = lw != null ? lw : 1;\n      context.lineCap = lc != null ? lc : 'butt';\n    }\n\n    return path(context, o) ? false : fill && context.isPointInPath(x, y) || stroke && context.isPointInStroke(x, y);\n  };\n}\nfunction pickPath(path) {\n  return pick$1(hitPath(path));\n}\n\nfunction translate(x, y) {\n  return 'translate(' + x + ',' + y + ')';\n}\nfunction rotate(a) {\n  return 'rotate(' + a + ')';\n}\nfunction scale(scaleX, scaleY) {\n  return 'scale(' + scaleX + ',' + scaleY + ')';\n}\nfunction translateItem(item) {\n  return translate(item.x || 0, item.y || 0);\n}\nfunction rotateItem(item) {\n  return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '');\n}\nfunction transformItem(item) {\n  return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '') + (item.scaleX || item.scaleY ? ' ' + scale(item.scaleX || 1, item.scaleY || 1) : '');\n}\n\nfunction markItemPath (type, shape, isect) {\n  function attr(emit, item) {\n    emit('transform', rotateItem(item));\n    emit('d', shape(null, item));\n  }\n\n  function bound(bounds, item) {\n    shape(boundContext(bounds, item.angle), item);\n    return boundStroke(bounds, item).translate(item.x || 0, item.y || 0);\n  }\n\n  function draw(context, item) {\n    var x = item.x || 0,\n        y = item.y || 0,\n        a = item.angle || 0;\n    context.translate(x, y);\n    if (a) context.rotate(a *= DegToRad);\n    context.beginPath();\n    shape(context, item);\n    if (a) context.rotate(-a);\n    context.translate(-x, -y);\n  }\n\n  return {\n    type: type,\n    tag: 'path',\n    nested: false,\n    attr: attr,\n    bound: bound,\n    draw: drawAll(draw),\n    pick: pickPath(draw),\n    isect: isect || intersectPath(draw)\n  };\n}\n\nvar arc = markItemPath('arc', arc$1);\n\nfunction pickArea(a, p) {\n  var v = a[0].orient === 'horizontal' ? p[1] : p[0],\n      z = a[0].orient === 'horizontal' ? 'y' : 'x',\n      i = a.length,\n      min = +Infinity,\n      hit,\n      d;\n\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    d = Math.abs(a[i][z] - v);\n\n    if (d < min) {\n      min = d;\n      hit = a[i];\n    }\n  }\n\n  return hit;\n}\nfunction pickLine(a, p) {\n  var t = Math.pow(a[0].strokeWidth || 1, 2),\n      i = a.length,\n      dx,\n      dy,\n      dd;\n\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    dx = a[i].x - p[0];\n    dy = a[i].y - p[1];\n    dd = dx * dx + dy * dy;\n    if (dd < t) return a[i];\n  }\n\n  return null;\n}\nfunction pickTrail(a, p) {\n  var i = a.length,\n      dx,\n      dy,\n      dd;\n\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    dx = a[i].x - p[0];\n    dy = a[i].y - p[1];\n    dd = dx * dx + dy * dy;\n    dx = a[i].size || 1;\n    if (dd < dx * dx) return a[i];\n  }\n\n  return null;\n}\n\nfunction markMultiItemPath (type, shape, tip) {\n  function attr(emit, item) {\n    var items = item.mark.items;\n    if (items.length) emit('d', shape(null, items));\n  }\n\n  function bound(bounds, mark) {\n    var items = mark.items;\n\n    if (items.length === 0) {\n      return bounds;\n    } else {\n      shape(boundContext(bounds), items);\n      return boundStroke(bounds, items[0]);\n    }\n  }\n\n  function draw(context, items) {\n    context.beginPath();\n    shape(context, items);\n  }\n\n  const hit = hitPath(draw);\n\n  function pick(context, scene, x, y, gx, gy) {\n    var items = scene.items,\n        b = scene.bounds;\n\n    if (!items || !items.length || b && !b.contains(gx, gy)) {\n      return null;\n    }\n\n    x *= context.pixelRatio;\n    y *= context.pixelRatio;\n    return hit(context, items, x, y) ? items[0] : null;\n  }\n\n  return {\n    type: type,\n    tag: 'path',\n    nested: true,\n    attr: attr,\n    bound: bound,\n    draw: drawOne(draw),\n    pick: pick,\n    isect: intersectPoint,\n    tip: tip\n  };\n}\n\nvar area = markMultiItemPath('area', area$1, pickArea);\n\nfunction clip (context, scene) {\n  var clip = scene.clip;\n  context.save();\n\n  if (isFunction(clip)) {\n    context.beginPath();\n    clip(context);\n    context.clip();\n  } else {\n    clipGroup(context, scene.group);\n  }\n}\nfunction clipGroup(context, group) {\n  context.beginPath();\n  hasCornerRadius(group) ? rectangle(context, group, 0, 0) : context.rect(0, 0, group.width || 0, group.height || 0);\n  context.clip();\n}\n\nfunction offset$1(item) {\n  const sw = value(item.strokeWidth, 1);\n  return item.strokeOffset != null ? item.strokeOffset : item.stroke && sw > 0.5 && sw < 1.5 ? 0.5 - Math.abs(sw - 1) : 0;\n}\n\nfunction attr$5(emit, item) {\n  emit('transform', translateItem(item));\n}\n\nfunction emitRectangle(emit, item) {\n  const off = offset$1(item);\n  emit('d', rectangle(null, item, off, off));\n}\n\nfunction background(emit, item) {\n  emit('class', 'background');\n  emit('aria-hidden', true);\n  emitRectangle(emit, item);\n}\n\nfunction foreground(emit, item) {\n  emit('class', 'foreground');\n  emit('aria-hidden', true);\n\n  if (item.strokeForeground) {\n    emitRectangle(emit, item);\n  } else {\n    emit('d', '');\n  }\n}\n\nfunction content(emit, item, renderer) {\n  const url = item.clip ? clip$1(renderer, item, item) : null;\n  emit('clip-path', url);\n}\n\nfunction bound$5(bounds, group) {\n  if (!group.clip && group.items) {\n    const items = group.items,\n          m = items.length;\n\n    for (let j = 0; j < m; ++j) {\n      bounds.union(items[j].bounds);\n    }\n  }\n\n  if ((group.clip || group.width || group.height) && !group.noBound) {\n    bounds.add(0, 0).add(group.width || 0, group.height || 0);\n  }\n\n  boundStroke(bounds, group);\n  return bounds.translate(group.x || 0, group.y || 0);\n}\n\nfunction rectanglePath(context, group, x, y) {\n  const off = offset$1(group);\n  context.beginPath();\n  rectangle(context, group, (x || 0) + off, (y || 0) + off);\n}\n\nconst hitBackground = hitPath(rectanglePath);\nconst hitForeground = hitPath(rectanglePath, false);\nconst hitCorner = hitPath(rectanglePath, true);\n\nfunction draw$4(context, scene, bounds) {\n  visit(scene, group => {\n    const gx = group.x || 0,\n          gy = group.y || 0,\n          fore = group.strokeForeground,\n          opacity = group.opacity == null ? 1 : group.opacity; // draw group background\n\n    if ((group.stroke || group.fill) && opacity) {\n      rectanglePath(context, group, gx, gy);\n      blend(context, group);\n\n      if (group.fill && fill(context, group, opacity)) {\n        context.fill();\n      }\n\n      if (group.stroke && !fore && stroke(context, group, opacity)) {\n        context.stroke();\n      }\n    } // setup graphics context, set clip and bounds\n\n\n    context.save();\n    context.translate(gx, gy);\n    if (group.clip) clipGroup(context, group);\n    if (bounds) bounds.translate(-gx, -gy); // draw group contents\n\n    visit(group, item => {\n      this.draw(context, item, bounds);\n    }); // restore graphics context\n\n    if (bounds) bounds.translate(gx, gy);\n    context.restore(); // draw group foreground\n\n    if (fore && group.stroke && opacity) {\n      rectanglePath(context, group, gx, gy);\n      blend(context, group);\n\n      if (stroke(context, group, opacity)) {\n        context.stroke();\n      }\n    }\n  });\n}\n\nfunction pick(context, scene, x, y, gx, gy) {\n  if (scene.bounds && !scene.bounds.contains(gx, gy) || !scene.items) {\n    return null;\n  }\n\n  const cx = x * context.pixelRatio,\n        cy = y * context.pixelRatio;\n  return pickVisit(scene, group => {\n    let hit, dx, dy; // first hit test bounding box\n\n    const b = group.bounds;\n    if (b && !b.contains(gx, gy)) return; // passed bounds check, test rectangular clip\n\n    dx = group.x || 0;\n    dy = group.y || 0;\n    const dw = dx + (group.width || 0),\n          dh = dy + (group.height || 0),\n          c = group.clip;\n    if (c && (gx < dx || gx > dw || gy < dy || gy > dh)) return; // adjust coordinate system\n\n    context.save();\n    context.translate(dx, dy);\n    dx = gx - dx;\n    dy = gy - dy; // test background for rounded corner clip\n\n    if (c && hasCornerRadius(group) && !hitCorner(context, group, cx, cy)) {\n      context.restore();\n      return null;\n    }\n\n    const fore = group.strokeForeground,\n          ix = scene.interactive !== false; // hit test against group foreground\n\n    if (ix && fore && group.stroke && hitForeground(context, group, cx, cy)) {\n      context.restore();\n      return group;\n    } // hit test against contained marks\n\n\n    hit = pickVisit(group, mark => pickMark(mark, dx, dy) ? this.pick(mark, x, y, dx, dy) : null); // hit test against group background\n\n    if (!hit && ix && (group.fill || !fore && group.stroke) && hitBackground(context, group, cx, cy)) {\n      hit = group;\n    } // restore state and return\n\n\n    context.restore();\n    return hit || null;\n  });\n}\n\nfunction pickMark(mark, x, y) {\n  return (mark.interactive !== false || mark.marktype === 'group') && mark.bounds && mark.bounds.contains(x, y);\n}\n\nvar group = {\n  type: 'group',\n  tag: 'g',\n  nested: false,\n  attr: attr$5,\n  bound: bound$5,\n  draw: draw$4,\n  pick: pick,\n  isect: intersectRect,\n  content: content,\n  background: background,\n  foreground: foreground\n};\n\nvar metadata = {\n  'xmlns': 'http://www.w3.org/2000/svg',\n  'xmlns:xlink': 'http://www.w3.org/1999/xlink',\n  'version': '1.1'\n};\n\nfunction getImage(item, renderer) {\n  var image = item.image;\n\n  if (!image || item.url && item.url !== image.url) {\n    image = {\n      complete: false,\n      width: 0,\n      height: 0\n    };\n    renderer.loadImage(item.url).then(image => {\n      item.image = image;\n      item.image.url = item.url;\n    });\n  }\n\n  return image;\n}\n\nfunction imageWidth(item, image) {\n  return item.width != null ? item.width : !image || !image.width ? 0 : item.aspect !== false && item.height ? item.height * image.width / image.height : image.width;\n}\n\nfunction imageHeight(item, image) {\n  return item.height != null ? item.height : !image || !image.height ? 0 : item.aspect !== false && item.width ? item.width * image.height / image.width : image.height;\n}\n\nfunction imageXOffset(align, w) {\n  return align === 'center' ? w / 2 : align === 'right' ? w : 0;\n}\n\nfunction imageYOffset(baseline, h) {\n  return baseline === 'middle' ? h / 2 : baseline === 'bottom' ? h : 0;\n}\n\nfunction attr$4(emit, item, renderer) {\n  const img = getImage(item, renderer),\n        w = imageWidth(item, img),\n        h = imageHeight(item, img),\n        x = (item.x || 0) - imageXOffset(item.align, w),\n        y = (item.y || 0) - imageYOffset(item.baseline, h),\n        i = !img.src && img.toDataURL ? img.toDataURL() : img.src || '';\n  emit('href', i, metadata['xmlns:xlink'], 'xlink:href');\n  emit('transform', translate(x, y));\n  emit('width', w);\n  emit('height', h);\n  emit('preserveAspectRatio', item.aspect === false ? 'none' : 'xMidYMid');\n}\n\nfunction bound$4(bounds, item) {\n  const img = item.image,\n        w = imageWidth(item, img),\n        h = imageHeight(item, img),\n        x = (item.x || 0) - imageXOffset(item.align, w),\n        y = (item.y || 0) - imageYOffset(item.baseline, h);\n  return bounds.set(x, y, x + w, y + h);\n}\n\nfunction draw$3(context, scene, bounds) {\n  visit(scene, item => {\n    if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n    const img = getImage(item, this);\n    let w = imageWidth(item, img);\n    let h = imageHeight(item, img);\n    if (w === 0 || h === 0) return; // early exit\n\n    let x = (item.x || 0) - imageXOffset(item.align, w),\n        y = (item.y || 0) - imageYOffset(item.baseline, h),\n        opacity,\n        ar0,\n        ar1,\n        t;\n\n    if (item.aspect !== false) {\n      ar0 = img.width / img.height;\n      ar1 = item.width / item.height;\n\n      if (ar0 === ar0 && ar1 === ar1 && ar0 !== ar1) {\n        if (ar1 < ar0) {\n          t = w / ar0;\n          y += (h - t) / 2;\n          h = t;\n        } else {\n          t = h * ar0;\n          x += (w - t) / 2;\n          w = t;\n        }\n      }\n    }\n\n    if (img.complete || img.toDataURL) {\n      blend(context, item);\n      context.globalAlpha = (opacity = item.opacity) != null ? opacity : 1;\n      context.imageSmoothingEnabled = item.smooth !== false;\n      context.drawImage(img, x, y, w, h);\n    }\n  });\n}\n\nvar image = {\n  type: 'image',\n  tag: 'image',\n  nested: false,\n  attr: attr$4,\n  bound: bound$4,\n  draw: draw$3,\n  pick: pick$1(),\n  isect: truthy,\n  // bounds check is sufficient\n  get: getImage,\n  xOffset: imageXOffset,\n  yOffset: imageYOffset\n};\n\nvar line = markMultiItemPath('line', line$1, pickLine);\n\nfunction attr$3(emit, item) {\n  var sx = item.scaleX || 1,\n      sy = item.scaleY || 1;\n\n  if (sx !== 1 || sy !== 1) {\n    emit('vector-effect', 'non-scaling-stroke');\n  }\n\n  emit('transform', transformItem(item));\n  emit('d', item.path);\n}\n\nfunction path$1(context, item) {\n  var path = item.path;\n  if (path == null) return true;\n  var x = item.x || 0,\n      y = item.y || 0,\n      sx = item.scaleX || 1,\n      sy = item.scaleY || 1,\n      a = (item.angle || 0) * DegToRad,\n      cache = item.pathCache;\n\n  if (!cache || cache.path !== path) {\n    (item.pathCache = cache = pathParse(path)).path = path;\n  }\n\n  if (a && context.rotate && context.translate) {\n    context.translate(x, y);\n    context.rotate(a);\n    pathRender(context, cache, 0, 0, sx, sy);\n    context.rotate(-a);\n    context.translate(-x, -y);\n  } else {\n    pathRender(context, cache, x, y, sx, sy);\n  }\n}\n\nfunction bound$3(bounds, item) {\n  return path$1(boundContext(bounds, item.angle), item) ? bounds.set(0, 0, 0, 0) : boundStroke(bounds, item, true);\n}\n\nvar path$2 = {\n  type: 'path',\n  tag: 'path',\n  nested: false,\n  attr: attr$3,\n  bound: bound$3,\n  draw: drawAll(path$1),\n  pick: pickPath(path$1),\n  isect: intersectPath(path$1)\n};\n\nfunction attr$2(emit, item) {\n  emit('d', rectangle(null, item));\n}\n\nfunction bound$2(bounds, item) {\n  var x, y;\n  return boundStroke(bounds.set(x = item.x || 0, y = item.y || 0, x + item.width || 0, y + item.height || 0), item);\n}\n\nfunction draw$2(context, item) {\n  context.beginPath();\n  rectangle(context, item);\n}\n\nvar rect = {\n  type: 'rect',\n  tag: 'path',\n  nested: false,\n  attr: attr$2,\n  bound: bound$2,\n  draw: drawAll(draw$2),\n  pick: pickPath(draw$2),\n  isect: intersectRect\n};\n\nfunction attr$1(emit, item) {\n  emit('transform', translateItem(item));\n  emit('x2', item.x2 != null ? item.x2 - (item.x || 0) : 0);\n  emit('y2', item.y2 != null ? item.y2 - (item.y || 0) : 0);\n}\n\nfunction bound$1(bounds, item) {\n  var x1, y1;\n  return boundStroke(bounds.set(x1 = item.x || 0, y1 = item.y || 0, item.x2 != null ? item.x2 : x1, item.y2 != null ? item.y2 : y1), item);\n}\n\nfunction path(context, item, opacity) {\n  var x1, y1, x2, y2;\n\n  if (item.stroke && stroke(context, item, opacity)) {\n    x1 = item.x || 0;\n    y1 = item.y || 0;\n    x2 = item.x2 != null ? item.x2 : x1;\n    y2 = item.y2 != null ? item.y2 : y1;\n    context.beginPath();\n    context.moveTo(x1, y1);\n    context.lineTo(x2, y2);\n    return true;\n  }\n\n  return false;\n}\n\nfunction draw$1(context, scene, bounds) {\n  visit(scene, item => {\n    if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n    var opacity = item.opacity == null ? 1 : item.opacity;\n\n    if (opacity && path(context, item, opacity)) {\n      blend(context, item);\n      context.stroke();\n    }\n  });\n}\n\nfunction hit$1(context, item, x, y) {\n  if (!context.isPointInStroke) return false;\n  return path(context, item, 1) && context.isPointInStroke(x, y);\n}\n\nvar rule = {\n  type: 'rule',\n  tag: 'line',\n  nested: false,\n  attr: attr$1,\n  bound: bound$1,\n  draw: draw$1,\n  pick: pick$1(hit$1),\n  isect: intersectRule\n};\n\nvar shape = markItemPath('shape', shape$1);\n\nvar symbol = markItemPath('symbol', symbol$1, intersectPoint);\n\nconst widthCache = lruCache();\nvar textMetrics = {\n  height: fontSize,\n  measureWidth: measureWidth,\n  estimateWidth: estimateWidth,\n  width: estimateWidth,\n  canvas: useCanvas\n};\nuseCanvas(true);\n\nfunction useCanvas(use) {\n  textMetrics.width = use && context ? measureWidth : estimateWidth;\n} // make simple estimate if no canvas is available\n\n\nfunction estimateWidth(item, text) {\n  return _estimateWidth(textValue(item, text), fontSize(item));\n}\n\nfunction _estimateWidth(text, currentFontHeight) {\n  return ~~(0.8 * text.length * currentFontHeight);\n} // measure text width if canvas is available\n\n\nfunction measureWidth(item, text) {\n  return fontSize(item) <= 0 || !(text = textValue(item, text)) ? 0 : _measureWidth(text, font(item));\n}\n\nfunction _measureWidth(text, currentFont) {\n  const key = `(${currentFont}) ${text}`;\n  let width = widthCache.get(key);\n\n  if (width === undefined) {\n    context.font = currentFont;\n    width = context.measureText(text).width;\n    widthCache.set(key, width);\n  }\n\n  return width;\n}\n\nfunction fontSize(item) {\n  return item.fontSize != null ? +item.fontSize || 0 : 11;\n}\nfunction lineHeight(item) {\n  return item.lineHeight != null ? item.lineHeight : fontSize(item) + 2;\n}\n\nfunction lineArray(_) {\n  return isArray(_) ? _.length > 1 ? _ : _[0] : _;\n}\n\nfunction textLines(item) {\n  return lineArray(item.lineBreak && item.text && !isArray(item.text) ? item.text.split(item.lineBreak) : item.text);\n}\nfunction multiLineOffset(item) {\n  const tl = textLines(item);\n  return (isArray(tl) ? tl.length - 1 : 0) * lineHeight(item);\n}\nfunction textValue(item, line) {\n  const text = line == null ? '' : (line + '').trim();\n  return item.limit > 0 && text.length ? truncate(item, text) : text;\n}\n\nfunction widthGetter(item) {\n  if (textMetrics.width === measureWidth) {\n    // we are using canvas\n    const currentFont = font(item);\n    return text => _measureWidth(text, currentFont);\n  } else {\n    // we are relying on estimates\n    const currentFontHeight = fontSize(item);\n    return text => _estimateWidth(text, currentFontHeight);\n  }\n}\n\nfunction truncate(item, text) {\n  var limit = +item.limit,\n      width = widthGetter(item);\n  if (width(text) < limit) return text;\n  var ellipsis = item.ellipsis || '\\u2026',\n      rtl = item.dir === 'rtl',\n      lo = 0,\n      hi = text.length,\n      mid;\n  limit -= width(ellipsis);\n\n  if (rtl) {\n    while (lo < hi) {\n      mid = lo + hi >>> 1;\n      if (width(text.slice(mid)) > limit) lo = mid + 1;else hi = mid;\n    }\n\n    return ellipsis + text.slice(lo);\n  } else {\n    while (lo < hi) {\n      mid = 1 + (lo + hi >>> 1);\n      if (width(text.slice(0, mid)) < limit) lo = mid;else hi = mid - 1;\n    }\n\n    return text.slice(0, lo) + ellipsis;\n  }\n}\n\nfunction fontFamily(item, quote) {\n  var font = item.font;\n  return (quote && font ? String(font).replace(/\"/g, '\\'') : font) || 'sans-serif';\n}\nfunction font(item, quote) {\n  return '' + (item.fontStyle ? item.fontStyle + ' ' : '') + (item.fontVariant ? item.fontVariant + ' ' : '') + (item.fontWeight ? item.fontWeight + ' ' : '') + fontSize(item) + 'px ' + fontFamily(item, quote);\n}\nfunction offset(item) {\n  // perform our own font baseline calculation\n  // why? not all browsers support SVG 1.1 'alignment-baseline' :(\n  // this also ensures consistent layout across renderers\n  var baseline = item.baseline,\n      h = fontSize(item);\n  return Math.round(baseline === 'top' ? 0.79 * h : baseline === 'middle' ? 0.30 * h : baseline === 'bottom' ? -0.21 * h : baseline === 'line-top' ? 0.29 * h + 0.5 * lineHeight(item) : baseline === 'line-bottom' ? 0.29 * h - 0.5 * lineHeight(item) : 0);\n}\n\nconst textAlign = {\n  'left': 'start',\n  'center': 'middle',\n  'right': 'end'\n};\nconst tempBounds = new Bounds();\n\nfunction anchorPoint(item) {\n  var x = item.x || 0,\n      y = item.y || 0,\n      r = item.radius || 0,\n      t;\n\n  if (r) {\n    t = (item.theta || 0) - HalfPi;\n    x += r * Math.cos(t);\n    y += r * Math.sin(t);\n  }\n\n  tempBounds.x1 = x;\n  tempBounds.y1 = y;\n  return tempBounds;\n}\n\nfunction attr(emit, item) {\n  var dx = item.dx || 0,\n      dy = (item.dy || 0) + offset(item),\n      p = anchorPoint(item),\n      x = p.x1,\n      y = p.y1,\n      a = item.angle || 0,\n      t;\n  emit('text-anchor', textAlign[item.align] || 'start');\n\n  if (a) {\n    t = translate(x, y) + ' ' + rotate(a);\n    if (dx || dy) t += ' ' + translate(dx, dy);\n  } else {\n    t = translate(x + dx, y + dy);\n  }\n\n  emit('transform', t);\n}\n\nfunction bound(bounds, item, mode) {\n  var h = textMetrics.height(item),\n      a = item.align,\n      p = anchorPoint(item),\n      x = p.x1,\n      y = p.y1,\n      dx = item.dx || 0,\n      dy = (item.dy || 0) + offset(item) - Math.round(0.8 * h),\n      // use 4/5 offset\n  tl = textLines(item),\n      w; // get dimensions\n\n  if (isArray(tl)) {\n    // multi-line text\n    h += lineHeight(item) * (tl.length - 1);\n    w = tl.reduce((w, t) => Math.max(w, textMetrics.width(item, t)), 0);\n  } else {\n    // single-line text\n    w = textMetrics.width(item, tl);\n  } // horizontal alignment\n\n\n  if (a === 'center') {\n    dx -= w / 2;\n  } else if (a === 'right') {\n    dx -= w;\n  } else ;\n\n  bounds.set(dx += x, dy += y, dx + w, dy + h);\n\n  if (item.angle && !mode) {\n    bounds.rotate(item.angle * DegToRad, x, y);\n  } else if (mode === 2) {\n    return bounds.rotatedPoints(item.angle * DegToRad, x, y);\n  }\n\n  return bounds;\n}\n\nfunction draw(context, scene, bounds) {\n  visit(scene, item => {\n    var opacity = item.opacity == null ? 1 : item.opacity,\n        p,\n        x,\n        y,\n        i,\n        lh,\n        tl,\n        str;\n    if (bounds && !bounds.intersects(item.bounds) || // bounds check\n    opacity === 0 || item.fontSize <= 0 || item.text == null || item.text.length === 0) return;\n    context.font = font(item);\n    context.textAlign = item.align || 'left';\n    p = anchorPoint(item);\n    x = p.x1, y = p.y1;\n\n    if (item.angle) {\n      context.save();\n      context.translate(x, y);\n      context.rotate(item.angle * DegToRad);\n      x = y = 0; // reset x, y\n    }\n\n    x += item.dx || 0;\n    y += (item.dy || 0) + offset(item);\n    tl = textLines(item);\n    blend(context, item);\n\n    if (isArray(tl)) {\n      lh = lineHeight(item);\n\n      for (i = 0; i < tl.length; ++i) {\n        str = textValue(item, tl[i]);\n\n        if (item.fill && fill(context, item, opacity)) {\n          context.fillText(str, x, y);\n        }\n\n        if (item.stroke && stroke(context, item, opacity)) {\n          context.strokeText(str, x, y);\n        }\n\n        y += lh;\n      }\n    } else {\n      str = textValue(item, tl);\n\n      if (item.fill && fill(context, item, opacity)) {\n        context.fillText(str, x, y);\n      }\n\n      if (item.stroke && stroke(context, item, opacity)) {\n        context.strokeText(str, x, y);\n      }\n    }\n\n    if (item.angle) context.restore();\n  });\n}\n\nfunction hit(context, item, x, y, gx, gy) {\n  if (item.fontSize <= 0) return false;\n  if (!item.angle) return true; // bounds sufficient if no rotation\n  // project point into space of unrotated bounds\n\n  var p = anchorPoint(item),\n      ax = p.x1,\n      ay = p.y1,\n      b = bound(tempBounds, item, 1),\n      a = -item.angle * DegToRad,\n      cos = Math.cos(a),\n      sin = Math.sin(a),\n      px = cos * gx - sin * gy + (ax - cos * ax + sin * ay),\n      py = sin * gx + cos * gy + (ay - sin * ax - cos * ay);\n  return b.contains(px, py);\n}\n\nfunction intersectText(item, box) {\n  const p = bound(tempBounds, item, 2);\n  return intersectBoxLine(box, p[0], p[1], p[2], p[3]) || intersectBoxLine(box, p[0], p[1], p[4], p[5]) || intersectBoxLine(box, p[4], p[5], p[6], p[7]) || intersectBoxLine(box, p[2], p[3], p[6], p[7]);\n}\n\nvar text = {\n  type: 'text',\n  tag: 'text',\n  nested: false,\n  attr: attr,\n  bound: bound,\n  draw: draw,\n  pick: pick$1(hit),\n  isect: intersectText\n};\n\nvar trail = markMultiItemPath('trail', trail$1, pickTrail);\n\nvar Marks = {\n  arc: arc,\n  area: area,\n  group: group,\n  image: image,\n  line: line,\n  path: path$2,\n  rect: rect,\n  rule: rule,\n  shape: shape,\n  symbol: symbol,\n  text: text,\n  trail: trail\n};\n\nfunction boundItem (item, func, opt) {\n  var type = Marks[item.mark.marktype],\n      bound = func || type.bound;\n  if (type.nested) item = item.mark;\n  return bound(item.bounds || (item.bounds = new Bounds()), item, opt);\n}\n\nvar DUMMY = {\n  mark: null\n};\nfunction boundMark (mark, bounds, opt) {\n  var type = Marks[mark.marktype],\n      bound = type.bound,\n      items = mark.items,\n      hasItems = items && items.length,\n      i,\n      n,\n      item,\n      b;\n\n  if (type.nested) {\n    if (hasItems) {\n      item = items[0];\n    } else {\n      // no items, fake it\n      DUMMY.mark = mark;\n      item = DUMMY;\n    }\n\n    b = boundItem(item, bound, opt);\n    bounds = bounds && bounds.union(b) || b;\n    return bounds;\n  }\n\n  bounds = bounds || mark.bounds && mark.bounds.clear() || new Bounds();\n\n  if (hasItems) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      bounds.union(boundItem(items[i], bound, opt));\n    }\n  }\n\n  return mark.bounds = bounds;\n}\n\nconst keys = ['marktype', 'name', 'role', 'interactive', 'clip', 'items', 'zindex', 'x', 'y', 'width', 'height', 'align', 'baseline', // layout\n'fill', 'fillOpacity', 'opacity', 'blend', // fill\n'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap', // stroke\n'strokeDash', 'strokeDashOffset', // stroke dash\n'strokeForeground', 'strokeOffset', // group\n'startAngle', 'endAngle', 'innerRadius', 'outerRadius', // arc\n'cornerRadius', 'padAngle', // arc, rect\n'cornerRadiusTopLeft', 'cornerRadiusTopRight', // rect, group\n'cornerRadiusBottomLeft', 'cornerRadiusBottomRight', 'interpolate', 'tension', 'orient', 'defined', // area, line\n'url', 'aspect', 'smooth', // image\n'path', 'scaleX', 'scaleY', // path\n'x2', 'y2', // rule\n'size', 'shape', // symbol\n'text', 'angle', 'theta', 'radius', 'dir', 'dx', 'dy', // text\n'ellipsis', 'limit', 'lineBreak', 'lineHeight', 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant', // font\n'description', 'aria', 'ariaRole', 'ariaRoleDescription' // aria\n];\nfunction sceneToJSON(scene, indent) {\n  return JSON.stringify(scene, keys, indent);\n}\nfunction sceneFromJSON(json) {\n  const scene = typeof json === 'string' ? JSON.parse(json) : json;\n  return initialize(scene);\n}\n\nfunction initialize(scene) {\n  var type = scene.marktype,\n      items = scene.items,\n      parent,\n      i,\n      n;\n\n  if (items) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      parent = type ? 'mark' : 'group';\n      items[i][parent] = scene;\n      if (items[i].zindex) items[i][parent].zdirty = true;\n      if ('group' === (type || parent)) initialize(items[i]);\n    }\n  }\n\n  if (type) boundMark(scene);\n  return scene;\n}\n\nfunction Scenegraph(scene) {\n  if (arguments.length) {\n    this.root = sceneFromJSON(scene);\n  } else {\n    this.root = createMark({\n      marktype: 'group',\n      name: 'root',\n      role: 'frame'\n    });\n    this.root.items = [new GroupItem(this.root)];\n  }\n}\nScenegraph.prototype = {\n  toJSON(indent) {\n    return sceneToJSON(this.root, indent || 0);\n  },\n\n  mark(markdef, group, index) {\n    group = group || this.root.items[0];\n    const mark = createMark(markdef, group);\n    group.items[index] = mark;\n    if (mark.zindex) mark.group.zdirty = true;\n    return mark;\n  }\n\n};\n\nfunction createMark(def, group) {\n  const mark = {\n    bounds: new Bounds(),\n    clip: !!def.clip,\n    group: group,\n    interactive: def.interactive === false ? false : true,\n    items: [],\n    marktype: def.marktype,\n    name: def.name || undefined,\n    role: def.role || undefined,\n    zindex: def.zindex || 0\n  }; // add accessibility properties if defined\n\n  if (def.aria != null) {\n    mark.aria = def.aria;\n  }\n\n  if (def.description) {\n    mark.description = def.description;\n  }\n\n  return mark;\n}\n\n// create a new DOM element\nfunction domCreate(doc, tag, ns) {\n  if (!doc && typeof document !== 'undefined' && document.createElement) {\n    doc = document;\n  }\n\n  return doc ? ns ? doc.createElementNS(ns, tag) : doc.createElement(tag) : null;\n} // find first child element with matching tag\n\nfunction domFind(el, tag) {\n  tag = tag.toLowerCase();\n  var nodes = el.childNodes,\n      i = 0,\n      n = nodes.length;\n\n  for (; i < n; ++i) if (nodes[i].tagName.toLowerCase() === tag) {\n    return nodes[i];\n  }\n} // retrieve child element at given index\n// create & insert if doesn't exist or if tags do not match\n\nfunction domChild(el, index, tag, ns) {\n  var a = el.childNodes[index],\n      b;\n\n  if (!a || a.tagName.toLowerCase() !== tag.toLowerCase()) {\n    b = a || null;\n    a = domCreate(el.ownerDocument, tag, ns);\n    el.insertBefore(a, b);\n  }\n\n  return a;\n} // remove all child elements at or above the given index\n\nfunction domClear(el, index) {\n  var nodes = el.childNodes,\n      curr = nodes.length;\n\n  while (curr > index) el.removeChild(nodes[--curr]);\n\n  return el;\n} // generate css class name for mark\n\nfunction cssClass(mark) {\n  return 'mark-' + mark.marktype + (mark.role ? ' role-' + mark.role : '') + (mark.name ? ' ' + mark.name : '');\n}\n\nfunction point (event, el) {\n  const rect = el.getBoundingClientRect();\n  return [event.clientX - rect.left - (el.clientLeft || 0), event.clientY - rect.top - (el.clientTop || 0)];\n}\n\nfunction resolveItem (item, event, el, origin) {\n  var mark = item && item.mark,\n      mdef,\n      p;\n\n  if (mark && (mdef = Marks[mark.marktype]).tip) {\n    p = point(event, el);\n    p[0] -= origin[0];\n    p[1] -= origin[1];\n\n    while (item = item.mark.group) {\n      p[0] -= item.x || 0;\n      p[1] -= item.y || 0;\n    }\n\n    item = mdef.tip(mark.items, p);\n  }\n\n  return item;\n}\n\n/**\n * Create a new Handler instance.\n * @param {object} [customLoader] - Optional loader instance for\n *   href URL sanitization. If not specified, a standard loader\n *   instance will be generated.\n * @param {function} [customTooltip] - Optional tooltip handler\n *   function for custom tooltip display.\n * @constructor\n */\n\nfunction Handler(customLoader, customTooltip) {\n  this._active = null;\n  this._handlers = {};\n  this._loader = customLoader || loader();\n  this._tooltip = customTooltip || defaultTooltip;\n} // The default tooltip display handler.\n// Sets the HTML title attribute on the visualization container.\n\nfunction defaultTooltip(handler, event, item, value) {\n  handler.element().setAttribute('title', value || '');\n}\n\nHandler.prototype = {\n  /**\n   * Initialize a new Handler instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {object} [obj] - Optional context object that should serve as\n   *   the \"this\" context for event callbacks.\n   * @return {Handler} - This handler instance.\n   */\n  initialize(el, origin, obj) {\n    this._el = el;\n    this._obj = obj || null;\n    return this.origin(origin);\n  },\n\n  /**\n   * Returns the parent container element for a visualization.\n   * @return {DOMElement} - The containing DOM element.\n   */\n  element() {\n    return this._el;\n  },\n\n  /**\n   * Returns the scene element (e.g., canvas or SVG) of the visualization\n   * Subclasses must override if the first child is not the scene element.\n   * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n   */\n  canvas() {\n    return this._el && this._el.firstChild;\n  },\n\n  /**\n   * Get / set the origin coordinates of the visualization.\n   */\n  origin(origin) {\n    if (arguments.length) {\n      this._origin = origin || [0, 0];\n      return this;\n    } else {\n      return this._origin.slice();\n    }\n  },\n\n  /**\n   * Get / set the scenegraph root.\n   */\n  scene(scene) {\n    if (!arguments.length) return this._scene;\n    this._scene = scene;\n    return this;\n  },\n\n  /**\n   * Add an event handler. Subclasses should override this method.\n   */\n  on()\n  /*type, handler*/\n  {},\n\n  /**\n   * Remove an event handler. Subclasses should override this method.\n   */\n  off()\n  /*type, handler*/\n  {},\n\n  /**\n   * Utility method for finding the array index of an event handler.\n   * @param {Array} h - An array of registered event handlers.\n   * @param {string} type - The event type.\n   * @param {function} handler - The event handler instance to find.\n   * @return {number} - The handler's array index or -1 if not registered.\n   */\n  _handlerIndex(h, type, handler) {\n    for (let i = h ? h.length : 0; --i >= 0;) {\n      if (h[i].type === type && (!handler || h[i].handler === handler)) {\n        return i;\n      }\n    }\n\n    return -1;\n  },\n\n  /**\n   * Returns an array with registered event handlers.\n   * @param {string} [type] - The event type to query. Any annotations\n   *   are ignored; for example, for the argument \"click.foo\", \".foo\" will\n   *   be ignored and the method returns all \"click\" handlers. If type is\n   *   null or unspecified, this method returns handlers for all types.\n   * @return {Array} - A new array containing all registered event handlers.\n   */\n  handlers(type) {\n    const h = this._handlers,\n          a = [];\n\n    if (type) {\n      a.push(...h[this.eventName(type)]);\n    } else {\n      for (const k in h) {\n        a.push(...h[k]);\n      }\n    }\n\n    return a;\n  },\n\n  /**\n   * Parses an event name string to return the specific event type.\n   * For example, given \"click.foo\" returns \"click\"\n   * @param {string} name - The input event type string.\n   * @return {string} - A string with the event type only.\n   */\n  eventName(name) {\n    const i = name.indexOf('.');\n    return i < 0 ? name : name.slice(0, i);\n  },\n\n  /**\n   * Handle hyperlink navigation in response to an item.href value.\n   * @param {Event} event - The event triggering hyperlink navigation.\n   * @param {Item} item - The scenegraph item.\n   * @param {string} href - The URL to navigate to.\n   */\n  handleHref(event, item, href) {\n    this._loader.sanitize(href, {\n      context: 'href'\n    }).then(opt => {\n      const e = new MouseEvent(event.type, event),\n            a = domCreate(null, 'a');\n\n      for (const name in opt) a.setAttribute(name, opt[name]);\n\n      a.dispatchEvent(e);\n    }).catch(() => {\n      /* do nothing */\n    });\n  },\n\n  /**\n   * Handle tooltip display in response to an item.tooltip value.\n   * @param {Event} event - The event triggering tooltip display.\n   * @param {Item} item - The scenegraph item.\n   * @param {boolean} show - A boolean flag indicating whether\n   *   to show or hide a tooltip for the given item.\n   */\n  handleTooltip(event, item, show) {\n    if (item && item.tooltip != null) {\n      item = resolveItem(item, event, this.canvas(), this._origin);\n      const value = show && item && item.tooltip || null;\n\n      this._tooltip.call(this._obj, this, event, item, value);\n    }\n  },\n\n  /**\n   * Returns the size of a scenegraph item and its position relative\n   * to the viewport.\n   * @param {Item} item - The scenegraph item.\n   * @return {object} - A bounding box object (compatible with the\n   *   DOMRect type) consisting of x, y, width, heigh, top, left,\n   *   right, and bottom properties.\n   */\n  getItemBoundingClientRect(item) {\n    const el = this.canvas();\n    if (!el) return;\n    const rect = el.getBoundingClientRect(),\n          origin = this._origin,\n          bounds = item.bounds,\n          width = bounds.width(),\n          height = bounds.height();\n    let x = bounds.x1 + origin[0] + rect.left,\n        y = bounds.y1 + origin[1] + rect.top; // translate coordinate for each parent group\n\n    while (item.mark && (item = item.mark.group)) {\n      x += item.x || 0;\n      y += item.y || 0;\n    } // return DOMRect-compatible bounding box\n\n\n    return {\n      x,\n      y,\n      width,\n      height,\n      left: x,\n      top: y,\n      right: x + width,\n      bottom: y + height\n    };\n  }\n\n};\n\n/**\n * Create a new Renderer instance.\n * @param {object} [loader] - Optional loader instance for\n *   image and href URL sanitization. If not specified, a\n *   standard loader instance will be generated.\n * @constructor\n */\n\nfunction Renderer(loader) {\n  this._el = null;\n  this._bgcolor = null;\n  this._loader = new ResourceLoader(loader);\n}\nRenderer.prototype = {\n  /**\n   * Initialize a new Renderer instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {number} width - The coordinate width of the display, in pixels.\n   * @param {number} height - The coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {Renderer} - This renderer instance.\n   */\n  initialize(el, width, height, origin, scaleFactor) {\n    this._el = el;\n    return this.resize(width, height, origin, scaleFactor);\n  },\n\n  /**\n   * Returns the parent container element for a visualization.\n   * @return {DOMElement} - The containing DOM element.\n   */\n  element() {\n    return this._el;\n  },\n\n  /**\n   * Returns the scene element (e.g., canvas or SVG) of the visualization\n   * Subclasses must override if the first child is not the scene element.\n   * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n   */\n  canvas() {\n    return this._el && this._el.firstChild;\n  },\n\n  /**\n   * Get / set the background color.\n   */\n  background(bgcolor) {\n    if (arguments.length === 0) return this._bgcolor;\n    this._bgcolor = bgcolor;\n    return this;\n  },\n\n  /**\n   * Resize the display.\n   * @param {number} width - The new coordinate width of the display, in pixels.\n   * @param {number} height - The new coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The new origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {Renderer} - This renderer instance;\n   */\n  resize(width, height, origin, scaleFactor) {\n    this._width = width;\n    this._height = height;\n    this._origin = origin || [0, 0];\n    this._scale = scaleFactor || 1;\n    return this;\n  },\n\n  /**\n   * Report a dirty item whose bounds should be redrawn.\n   * This base class method does nothing. Subclasses that perform\n   * incremental should implement this method.\n   * @param {Item} item - The dirty item whose bounds should be redrawn.\n   */\n  dirty()\n  /*item*/\n  {},\n\n  /**\n   * Render an input scenegraph, potentially with a set of dirty items.\n   * This method will perform an immediate rendering with available resources.\n   * The renderer may also need to perform image loading to perform a complete\n   * render. This process can lead to asynchronous re-rendering of the scene\n   * after this method returns. To receive notification when rendering is\n   * complete, use the renderAsync method instead.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   * @return {Renderer} - This renderer instance.\n   */\n  render(scene) {\n    const r = this; // bind arguments into a render call, and cache it\n    // this function may be subsequently called for async redraw\n\n    r._call = function () {\n      r._render(scene);\n    }; // invoke the renderer\n\n\n    r._call(); // clear the cached call for garbage collection\n    // async redraws will stash their own copy\n\n\n    r._call = null;\n    return r;\n  },\n\n  /**\n   * Internal rendering method. Renderer subclasses should override this\n   * method to actually perform rendering.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   */\n  _render()\n  /*scene*/\n  {// subclasses to override\n  },\n\n  /**\n   * Asynchronous rendering method. Similar to render, but returns a Promise\n   * that resolves when all rendering is completed. Sometimes a renderer must\n   * perform image loading to get a complete rendering. The returned\n   * Promise will not resolve until this process completes.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   * @return {Promise} - A Promise that resolves when rendering is complete.\n   */\n  renderAsync(scene) {\n    const r = this.render(scene);\n    return this._ready ? this._ready.then(() => r) : Promise.resolve(r);\n  },\n\n  /**\n   * Internal method for asynchronous resource loading.\n   * Proxies method calls to the ImageLoader, and tracks loading\n   * progress to invoke a re-render once complete.\n   * @param {string} method - The method name to invoke on the ImageLoader.\n   * @param {string} uri - The URI for the requested resource.\n   * @return {Promise} - A Promise that resolves to the requested resource.\n   */\n  _load(method, uri) {\n    var r = this,\n        p = r._loader[method](uri);\n\n    if (!r._ready) {\n      // re-render the scene when loading completes\n      const call = r._call;\n      r._ready = r._loader.ready().then(redraw => {\n        if (redraw) call();\n        r._ready = null;\n      });\n    }\n\n    return p;\n  },\n\n  /**\n   * Sanitize a URL to include as a hyperlink in the rendered scene.\n   * This method proxies a call to ImageLoader.sanitizeURL, but also tracks\n   * image loading progress and invokes a re-render once complete.\n   * @param {string} uri - The URI string to sanitize.\n   * @return {Promise} - A Promise that resolves to the sanitized URL.\n   */\n  sanitizeURL(uri) {\n    return this._load('sanitizeURL', uri);\n  },\n\n  /**\n   * Requests an image to include in the rendered scene.\n   * This method proxies a call to ImageLoader.loadImage, but also tracks\n   * image loading progress and invokes a re-render once complete.\n   * @param {string} uri - The URI string of the image.\n   * @return {Promise} - A Promise that resolves to the loaded Image.\n   */\n  loadImage(uri) {\n    return this._load('loadImage', uri);\n  }\n\n};\n\nconst KeyDownEvent = 'keydown';\nconst KeyPressEvent = 'keypress';\nconst KeyUpEvent = 'keyup';\nconst DragEnterEvent = 'dragenter';\nconst DragLeaveEvent = 'dragleave';\nconst DragOverEvent = 'dragover';\nconst MouseDownEvent = 'mousedown';\nconst MouseUpEvent = 'mouseup';\nconst MouseMoveEvent = 'mousemove';\nconst MouseOutEvent = 'mouseout';\nconst MouseOverEvent = 'mouseover';\nconst ClickEvent = 'click';\nconst DoubleClickEvent = 'dblclick';\nconst WheelEvent = 'wheel';\nconst MouseWheelEvent = 'mousewheel';\nconst TouchStartEvent = 'touchstart';\nconst TouchMoveEvent = 'touchmove';\nconst TouchEndEvent = 'touchend';\nconst Events = [KeyDownEvent, KeyPressEvent, KeyUpEvent, DragEnterEvent, DragLeaveEvent, DragOverEvent, MouseDownEvent, MouseUpEvent, MouseMoveEvent, MouseOutEvent, MouseOverEvent, ClickEvent, DoubleClickEvent, WheelEvent, MouseWheelEvent, TouchStartEvent, TouchMoveEvent, TouchEndEvent];\nconst TooltipShowEvent = MouseMoveEvent;\nconst TooltipHideEvent = MouseOutEvent;\nconst HrefEvent = ClickEvent;\n\nfunction CanvasHandler(loader, tooltip) {\n  Handler.call(this, loader, tooltip);\n  this._down = null;\n  this._touch = null;\n  this._first = true;\n  this._events = {};\n}\n\nconst eventBundle = type => type === TouchStartEvent || type === TouchMoveEvent || type === TouchEndEvent ? [TouchStartEvent, TouchMoveEvent, TouchEndEvent] : [type]; // lazily add listeners to the canvas as needed\n\n\nfunction eventListenerCheck(handler, type) {\n  eventBundle(type).forEach(_ => addEventListener(handler, _));\n}\n\nfunction addEventListener(handler, type) {\n  const canvas = handler.canvas();\n\n  if (canvas && !handler._events[type]) {\n    handler._events[type] = 1;\n    canvas.addEventListener(type, handler[type] ? evt => handler[type](evt) : evt => handler.fire(type, evt));\n  }\n}\n\nfunction move(moveEvent, overEvent, outEvent) {\n  return function (evt) {\n    const a = this._active,\n          p = this.pickEvent(evt);\n\n    if (p === a) {\n      // active item and picked item are the same\n      this.fire(moveEvent, evt); // fire move\n    } else {\n      // active item and picked item are different\n      if (!a || !a.exit) {\n        // fire out for prior active item\n        // suppress if active item was removed from scene\n        this.fire(outEvent, evt);\n      }\n\n      this._active = p; // set new active item\n\n      this.fire(overEvent, evt); // fire over for new active item\n\n      this.fire(moveEvent, evt); // fire move for new active item\n    }\n  };\n}\n\nfunction inactive(type) {\n  return function (evt) {\n    this.fire(type, evt);\n    this._active = null;\n  };\n}\n\ninherits(CanvasHandler, Handler, {\n  initialize(el, origin, obj) {\n    this._canvas = el && domFind(el, 'canvas'); // add minimal events required for proper state management\n\n    [ClickEvent, MouseDownEvent, MouseMoveEvent, MouseOutEvent, DragLeaveEvent].forEach(type => eventListenerCheck(this, type));\n    return Handler.prototype.initialize.call(this, el, origin, obj);\n  },\n\n  // return the backing canvas instance\n  canvas() {\n    return this._canvas;\n  },\n\n  // retrieve the current canvas context\n  context() {\n    return this._canvas.getContext('2d');\n  },\n\n  // supported events\n  events: Events,\n\n  // to keep old versions of firefox happy\n  DOMMouseScroll(evt) {\n    this.fire(MouseWheelEvent, evt);\n  },\n\n  mousemove: move(MouseMoveEvent, MouseOverEvent, MouseOutEvent),\n  dragover: move(DragOverEvent, DragEnterEvent, DragLeaveEvent),\n  mouseout: inactive(MouseOutEvent),\n  dragleave: inactive(DragLeaveEvent),\n\n  mousedown(evt) {\n    this._down = this._active;\n    this.fire(MouseDownEvent, evt);\n  },\n\n  click(evt) {\n    if (this._down === this._active) {\n      this.fire(ClickEvent, evt);\n      this._down = null;\n    }\n  },\n\n  touchstart(evt) {\n    this._touch = this.pickEvent(evt.changedTouches[0]);\n\n    if (this._first) {\n      this._active = this._touch;\n      this._first = false;\n    }\n\n    this.fire(TouchStartEvent, evt, true);\n  },\n\n  touchmove(evt) {\n    this.fire(TouchMoveEvent, evt, true);\n  },\n\n  touchend(evt) {\n    this.fire(TouchEndEvent, evt, true);\n    this._touch = null;\n  },\n\n  // fire an event\n  fire(type, evt, touch) {\n    const a = touch ? this._touch : this._active,\n          h = this._handlers[type]; // set event type relative to scenegraph items\n\n    evt.vegaType = type; // handle hyperlinks and tooltips first\n\n    if (type === HrefEvent && a && a.href) {\n      this.handleHref(evt, a, a.href);\n    } else if (type === TooltipShowEvent || type === TooltipHideEvent) {\n      this.handleTooltip(evt, a, type !== TooltipHideEvent);\n    } // invoke all registered handlers\n\n\n    if (h) {\n      for (let i = 0, len = h.length; i < len; ++i) {\n        h[i].handler.call(this._obj, evt, a);\n      }\n    }\n  },\n\n  // add an event handler\n  on(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers,\n          i = this._handlerIndex(h[name], type, handler);\n\n    if (i < 0) {\n      eventListenerCheck(this, type);\n      (h[name] || (h[name] = [])).push({\n        type: type,\n        handler: handler\n      });\n    }\n\n    return this;\n  },\n\n  // remove an event handler\n  off(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers[name],\n          i = this._handlerIndex(h, type, handler);\n\n    if (i >= 0) {\n      h.splice(i, 1);\n    }\n\n    return this;\n  },\n\n  pickEvent(evt) {\n    const p = point(evt, this._canvas),\n          o = this._origin;\n    return this.pick(this._scene, p[0], p[1], p[0] - o[0], p[1] - o[1]);\n  },\n\n  // find the scenegraph item at the current mouse position\n  // x, y -- the absolute x, y mouse coordinates on the canvas element\n  // gx, gy -- the relative coordinates within the current group\n  pick(scene, x, y, gx, gy) {\n    const g = this.context(),\n          mark = Marks[scene.marktype];\n    return mark.pick.call(this, g, scene, x, y, gx, gy);\n  }\n\n});\n\nfunction devicePixelRatio() {\n  return typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n}\n\nvar pixelRatio = devicePixelRatio();\nfunction resize (canvas, width, height, origin, scaleFactor, opt) {\n  const inDOM = typeof HTMLElement !== 'undefined' && canvas instanceof HTMLElement && canvas.parentNode != null,\n        context = canvas.getContext('2d'),\n        ratio = inDOM ? pixelRatio : scaleFactor;\n  canvas.width = width * ratio;\n  canvas.height = height * ratio;\n\n  for (const key in opt) {\n    context[key] = opt[key];\n  }\n\n  if (inDOM && ratio !== 1) {\n    canvas.style.width = width + 'px';\n    canvas.style.height = height + 'px';\n  }\n\n  context.pixelRatio = ratio;\n  context.setTransform(ratio, 0, 0, ratio, ratio * origin[0], ratio * origin[1]);\n  return canvas;\n}\n\nfunction CanvasRenderer(loader) {\n  Renderer.call(this, loader);\n  this._options = {};\n  this._redraw = false;\n  this._dirty = new Bounds();\n  this._tempb = new Bounds();\n}\nconst base$1 = Renderer.prototype;\n\nconst viewBounds = (origin, width, height) => new Bounds().set(0, 0, width, height).translate(-origin[0], -origin[1]);\n\nfunction clipToBounds(g, b, origin) {\n  // expand bounds by 1 pixel, then round to pixel boundaries\n  b.expand(1).round(); // align to base pixel grid in case of non-integer scaling (#2425)\n\n  if (g.pixelRatio % 1) {\n    b.scale(g.pixelRatio).round().scale(1 / g.pixelRatio);\n  } // to avoid artifacts translate if origin has fractional pixels\n\n\n  b.translate(-(origin[0] % 1), -(origin[1] % 1)); // set clip path\n\n  g.beginPath();\n  g.rect(b.x1, b.y1, b.width(), b.height());\n  g.clip();\n  return b;\n}\n\ninherits(CanvasRenderer, Renderer, {\n  initialize(el, width, height, origin, scaleFactor, options) {\n    this._options = options || {};\n    this._canvas = this._options.externalContext ? null : canvas(1, 1, this._options.type); // instantiate a small canvas\n\n    if (el && this._canvas) {\n      domClear(el, 0).appendChild(this._canvas);\n\n      this._canvas.setAttribute('class', 'marks');\n    } // this method will invoke resize to size the canvas appropriately\n\n\n    return base$1.initialize.call(this, el, width, height, origin, scaleFactor);\n  },\n\n  resize(width, height, origin, scaleFactor) {\n    base$1.resize.call(this, width, height, origin, scaleFactor);\n\n    if (this._canvas) {\n      // configure canvas size and transform\n      resize(this._canvas, this._width, this._height, this._origin, this._scale, this._options.context);\n    } else {\n      // external context needs to be scaled and positioned to origin\n      const ctx = this._options.externalContext;\n      if (!ctx) error('CanvasRenderer is missing a valid canvas or context');\n      ctx.scale(this._scale, this._scale);\n      ctx.translate(this._origin[0], this._origin[1]);\n    }\n\n    this._redraw = true;\n    return this;\n  },\n\n  canvas() {\n    return this._canvas;\n  },\n\n  context() {\n    return this._options.externalContext || (this._canvas ? this._canvas.getContext('2d') : null);\n  },\n\n  dirty(item) {\n    const b = this._tempb.clear().union(item.bounds);\n\n    let g = item.mark.group;\n\n    while (g) {\n      b.translate(g.x || 0, g.y || 0);\n      g = g.mark.group;\n    }\n\n    this._dirty.union(b);\n  },\n\n  _render(scene) {\n    const g = this.context(),\n          o = this._origin,\n          w = this._width,\n          h = this._height,\n          db = this._dirty,\n          vb = viewBounds(o, w, h); // setup\n\n    g.save();\n    const b = this._redraw || db.empty() ? (this._redraw = false, vb.expand(1)) : clipToBounds(g, vb.intersect(db), o);\n    this.clear(-o[0], -o[1], w, h); // render\n\n    this.draw(g, scene, b); // takedown\n\n    g.restore();\n    db.clear();\n    return this;\n  },\n\n  draw(ctx, scene, bounds) {\n    const mark = Marks[scene.marktype];\n    if (scene.clip) clip(ctx, scene);\n    mark.draw.call(this, ctx, scene, bounds);\n    if (scene.clip) ctx.restore();\n  },\n\n  clear(x, y, w, h) {\n    const opt = this._options,\n          g = this.context();\n\n    if (opt.type !== 'pdf' && !opt.externalContext) {\n      // calling clear rect voids vector output in pdf mode\n      // and could remove external context content (#2615)\n      g.clearRect(x, y, w, h);\n    }\n\n    if (this._bgcolor != null) {\n      g.fillStyle = this._bgcolor;\n      g.fillRect(x, y, w, h);\n    }\n  }\n\n});\n\nfunction SVGHandler(loader, tooltip) {\n  Handler.call(this, loader, tooltip);\n  const h = this;\n  h._hrefHandler = listener(h, (evt, item) => {\n    if (item && item.href) h.handleHref(evt, item, item.href);\n  });\n  h._tooltipHandler = listener(h, (evt, item) => {\n    h.handleTooltip(evt, item, evt.type !== TooltipHideEvent);\n  });\n} // wrap an event listener for the SVG DOM\n\nconst listener = (context, handler) => evt => {\n  let item = evt.target.__data__;\n  item = Array.isArray(item) ? item[0] : item;\n  evt.vegaType = evt.type;\n  handler.call(context._obj, evt, item);\n};\n\ninherits(SVGHandler, Handler, {\n  initialize(el, origin, obj) {\n    let svg = this._svg;\n\n    if (svg) {\n      svg.removeEventListener(HrefEvent, this._hrefHandler);\n      svg.removeEventListener(TooltipShowEvent, this._tooltipHandler);\n      svg.removeEventListener(TooltipHideEvent, this._tooltipHandler);\n    }\n\n    this._svg = svg = el && domFind(el, 'svg');\n\n    if (svg) {\n      svg.addEventListener(HrefEvent, this._hrefHandler);\n      svg.addEventListener(TooltipShowEvent, this._tooltipHandler);\n      svg.addEventListener(TooltipHideEvent, this._tooltipHandler);\n    }\n\n    return Handler.prototype.initialize.call(this, el, origin, obj);\n  },\n\n  canvas() {\n    return this._svg;\n  },\n\n  // add an event handler\n  on(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers,\n          i = this._handlerIndex(h[name], type, handler);\n\n    if (i < 0) {\n      const x = {\n        type,\n        handler,\n        listener: listener(this, handler)\n      };\n      (h[name] || (h[name] = [])).push(x);\n\n      if (this._svg) {\n        this._svg.addEventListener(name, x.listener);\n      }\n    }\n\n    return this;\n  },\n\n  // remove an event handler\n  off(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers[name],\n          i = this._handlerIndex(h, type, handler);\n\n    if (i >= 0) {\n      if (this._svg) {\n        this._svg.removeEventListener(name, h[i].listener);\n      }\n\n      h.splice(i, 1);\n    }\n\n    return this;\n  }\n\n});\n\nconst ARIA_HIDDEN = 'aria-hidden';\nconst ARIA_LABEL = 'aria-label';\nconst ARIA_ROLE = 'role';\nconst ARIA_ROLEDESCRIPTION = 'aria-roledescription';\nconst GRAPHICS_OBJECT = 'graphics-object';\nconst GRAPHICS_SYMBOL = 'graphics-symbol';\n\nconst bundle = (role, roledesc, label) => ({\n  [ARIA_ROLE]: role,\n  [ARIA_ROLEDESCRIPTION]: roledesc,\n  [ARIA_LABEL]: label || undefined\n}); // these roles are covered by related roles\n// we can ignore them, no need to generate attributes\n\n\nconst AriaIgnore = toSet(['axis-domain', 'axis-grid', 'axis-label', 'axis-tick', 'axis-title', 'legend-band', 'legend-entry', 'legend-gradient', 'legend-label', 'legend-title', 'legend-symbol', 'title']); // aria attribute generators for guide roles\n\nconst AriaGuides = {\n  'axis': {\n    desc: 'axis',\n    caption: axisCaption\n  },\n  'legend': {\n    desc: 'legend',\n    caption: legendCaption\n  },\n  'title-text': {\n    desc: 'title',\n    caption: item => `Title text '${titleCaption(item)}'`\n  },\n  'title-subtitle': {\n    desc: 'subtitle',\n    caption: item => `Subtitle text '${titleCaption(item)}'`\n  }\n}; // aria properties generated for mark item encoding channels\n\nconst AriaEncode = {\n  ariaRole: ARIA_ROLE,\n  ariaRoleDescription: ARIA_ROLEDESCRIPTION,\n  description: ARIA_LABEL\n};\nfunction ariaItemAttributes(emit, item) {\n  const hide = item.aria === false;\n  emit(ARIA_HIDDEN, hide || undefined);\n\n  if (hide || item.description == null) {\n    for (const prop in AriaEncode) {\n      emit(AriaEncode[prop], undefined);\n    }\n  } else {\n    const type = item.mark.marktype;\n    emit(ARIA_LABEL, item.description);\n    emit(ARIA_ROLE, item.ariaRole || (type === 'group' ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL));\n    emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || `${type} mark`);\n  }\n}\nfunction ariaMarkAttributes(mark) {\n  return mark.aria === false ? {\n    [ARIA_HIDDEN]: true\n  } : AriaIgnore[mark.role] ? null : AriaGuides[mark.role] ? ariaGuide(mark, AriaGuides[mark.role]) : ariaMark(mark);\n}\n\nfunction ariaMark(mark) {\n  const type = mark.marktype;\n  const recurse = type === 'group' || type === 'text' || mark.items.some(_ => _.description != null && _.aria !== false);\n  return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, `${type} mark container`, mark.description);\n}\n\nfunction ariaGuide(mark, opt) {\n  try {\n    const item = mark.items[0],\n          caption = opt.caption || (() => '');\n\n    return bundle(opt.role || GRAPHICS_SYMBOL, opt.desc, item.description || caption(item));\n  } catch (err) {\n    return null;\n  }\n}\n\nfunction titleCaption(item) {\n  return array(item.text).join(' ');\n}\n\nfunction axisCaption(item) {\n  const datum = item.datum,\n        orient = item.orient,\n        title = datum.title ? extractTitle(item) : null,\n        ctx = item.context,\n        scale = ctx.scales[datum.scale].value,\n        locale = ctx.dataflow.locale(),\n        type = scale.type,\n        xy = orient === 'left' || orient === 'right' ? 'Y' : 'X';\n  return `${xy}-axis` + (title ? ` titled '${title}'` : '') + ` for a ${isDiscrete(type) ? 'discrete' : type} scale` + ` with ${domainCaption(locale, scale, item)}`;\n}\n\nfunction legendCaption(item) {\n  const datum = item.datum,\n        title = datum.title ? extractTitle(item) : null,\n        type = `${datum.type || ''} legend`.trim(),\n        scales = datum.scales,\n        props = Object.keys(scales),\n        ctx = item.context,\n        scale = ctx.scales[scales[props[0]]].value,\n        locale = ctx.dataflow.locale();\n  return capitalize(type) + (title ? ` titled '${title}'` : '') + ` for ${channelCaption(props)}` + ` with ${domainCaption(locale, scale, item)}`;\n}\n\nfunction extractTitle(item) {\n  try {\n    return array(peek(item.items).items[0].text).join(' ');\n  } catch (err) {\n    return null;\n  }\n}\n\nfunction channelCaption(props) {\n  props = props.map(p => p + (p === 'fill' || p === 'stroke' ? ' color' : ''));\n  return props.length < 2 ? props[0] : props.slice(0, -1).join(', ') + ' and ' + peek(props);\n}\n\nfunction capitalize(s) {\n  return s.length ? s[0].toUpperCase() + s.slice(1) : s;\n}\n\nconst innerText = val => (val + '').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\nconst attrText = val => innerText(val).replace(/\"/g, '&quot;').replace(/\\t/g, '&#x9;').replace(/\\n/g, '&#xA;').replace(/\\r/g, '&#xD;');\n\nfunction markup() {\n  let buf = '',\n      outer = '',\n      inner = '';\n\n  const stack = [],\n        clear = () => outer = inner = '',\n        push = tag => {\n    if (outer) {\n      buf += `${outer}>${inner}`;\n      clear();\n    }\n\n    stack.push(tag);\n  },\n        attr = (name, value) => {\n    if (value != null) outer += ` ${name}=\"${attrText(value)}\"`;\n    return m;\n  },\n        m = {\n    open(tag, ...attrs) {\n      push(tag);\n      outer = '<' + tag;\n\n      for (const set of attrs) {\n        for (const key in set) attr(key, set[key]);\n      }\n\n      return m;\n    },\n\n    close() {\n      const tag = stack.pop();\n\n      if (outer) {\n        buf += outer + (inner ? `>${inner}</${tag}>` : '/>');\n      } else {\n        buf += `</${tag}>`;\n      }\n\n      clear();\n      return m;\n    },\n\n    attr,\n    text: t => (inner += innerText(t), m),\n    toString: () => buf\n  };\n\n  return m;\n}\nconst serializeXML = node => _serialize(markup(), node) + '';\n\nfunction _serialize(m, node) {\n  m.open(node.tagName);\n\n  if (node.hasAttributes()) {\n    const attrs = node.attributes,\n          n = attrs.length;\n\n    for (let i = 0; i < n; ++i) {\n      m.attr(attrs[i].name, attrs[i].value);\n    }\n  }\n\n  if (node.hasChildNodes()) {\n    const children = node.childNodes,\n          n = children.length;\n\n    for (let i = 0; i < n; i++) {\n      const child = children[i];\n      child.nodeType === 3 // text node\n      ? m.text(child.nodeValue) : _serialize(m, child);\n    }\n  }\n\n  return m.close();\n}\n\nconst styles = {\n  fill: 'fill',\n  fillOpacity: 'fill-opacity',\n  stroke: 'stroke',\n  strokeOpacity: 'stroke-opacity',\n  strokeWidth: 'stroke-width',\n  strokeCap: 'stroke-linecap',\n  strokeJoin: 'stroke-linejoin',\n  strokeDash: 'stroke-dasharray',\n  strokeDashOffset: 'stroke-dashoffset',\n  strokeMiterLimit: 'stroke-miterlimit',\n  opacity: 'opacity',\n  blend: 'mix-blend-mode'\n}; // ensure miter limit default is consistent with canvas (#2498)\n\nconst rootAttributes = {\n  'fill': 'none',\n  'stroke-miterlimit': 10\n};\n\nconst RootIndex = 0,\n      xmlns = 'http://www.w3.org/2000/xmlns/',\n      svgns = metadata.xmlns;\nfunction SVGRenderer(loader) {\n  Renderer.call(this, loader);\n  this._dirtyID = 0;\n  this._dirty = [];\n  this._svg = null;\n  this._root = null;\n  this._defs = null;\n}\nconst base = Renderer.prototype;\ninherits(SVGRenderer, Renderer, {\n  /**\n   * Initialize a new SVGRenderer instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {number} width - The coordinate width of the display, in pixels.\n   * @param {number} height - The coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {SVGRenderer} - This renderer instance.\n   */\n  initialize(el, width, height, origin, scaleFactor) {\n    // create the svg definitions cache\n    this._defs = {};\n\n    this._clearDefs();\n\n    if (el) {\n      this._svg = domChild(el, 0, 'svg', svgns);\n\n      this._svg.setAttributeNS(xmlns, 'xmlns', svgns);\n\n      this._svg.setAttributeNS(xmlns, 'xmlns:xlink', metadata['xmlns:xlink']);\n\n      this._svg.setAttribute('version', metadata['version']);\n\n      this._svg.setAttribute('class', 'marks');\n\n      domClear(el, 1); // set the svg root group\n\n      this._root = domChild(this._svg, RootIndex, 'g', svgns);\n      setAttributes(this._root, rootAttributes); // ensure no additional child elements\n\n      domClear(this._svg, RootIndex + 1);\n    } // set background color if defined\n\n\n    this.background(this._bgcolor);\n    return base.initialize.call(this, el, width, height, origin, scaleFactor);\n  },\n\n  /**\n   * Get / set the background color.\n   */\n  background(bgcolor) {\n    if (arguments.length && this._svg) {\n      this._svg.style.setProperty('background-color', bgcolor);\n    }\n\n    return base.background.apply(this, arguments);\n  },\n\n  /**\n   * Resize the display.\n   * @param {number} width - The new coordinate width of the display, in pixels.\n   * @param {number} height - The new coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The new origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {SVGRenderer} - This renderer instance;\n   */\n  resize(width, height, origin, scaleFactor) {\n    base.resize.call(this, width, height, origin, scaleFactor);\n\n    if (this._svg) {\n      setAttributes(this._svg, {\n        width: this._width * this._scale,\n        height: this._height * this._scale,\n        viewBox: `0 0 ${this._width} ${this._height}`\n      });\n\n      this._root.setAttribute('transform', `translate(${this._origin})`);\n    }\n\n    this._dirty = [];\n    return this;\n  },\n\n  /**\n   * Returns the SVG element of the visualization.\n   * @return {DOMElement} - The SVG element.\n   */\n  canvas() {\n    return this._svg;\n  },\n\n  /**\n   * Returns an SVG text string for the rendered content,\n   * or null if this renderer is currently headless.\n   */\n  svg() {\n    const svg = this._svg,\n          bg = this._bgcolor;\n    if (!svg) return null;\n    let node;\n\n    if (bg) {\n      svg.removeAttribute('style');\n      node = domChild(svg, RootIndex, 'rect', svgns);\n      setAttributes(node, {\n        width: this._width,\n        height: this._height,\n        fill: bg\n      });\n    }\n\n    const text = serializeXML(svg);\n\n    if (bg) {\n      svg.removeChild(node);\n\n      this._svg.style.setProperty('background-color', bg);\n    }\n\n    return text;\n  },\n\n  /**\n   * Internal rendering method.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   */\n  _render(scene) {\n    // perform spot updates and re-render markup\n    if (this._dirtyCheck()) {\n      if (this._dirtyAll) this._clearDefs();\n      this.mark(this._root, scene);\n      domClear(this._root, 1);\n    }\n\n    this.defs();\n    this._dirty = [];\n    ++this._dirtyID;\n    return this;\n  },\n\n  // -- Manage rendering of items marked as dirty --\n\n  /**\n   * Flag a mark item as dirty.\n   * @param {Item} item - The mark item.\n   */\n  dirty(item) {\n    if (item.dirty !== this._dirtyID) {\n      item.dirty = this._dirtyID;\n\n      this._dirty.push(item);\n    }\n  },\n\n  /**\n   * Check if a mark item is considered dirty.\n   * @param {Item} item - The mark item.\n   */\n  isDirty(item) {\n    return this._dirtyAll || !item._svg || item.dirty === this._dirtyID;\n  },\n\n  /**\n   * Internal method to check dirty status and, if possible,\n   * make targetted updates without a full rendering pass.\n   */\n  _dirtyCheck() {\n    this._dirtyAll = true;\n    const items = this._dirty;\n    if (!items.length || !this._dirtyID) return true;\n    const id = ++this._dirtyID;\n    let item, mark, type, mdef, i, n, o;\n\n    for (i = 0, n = items.length; i < n; ++i) {\n      item = items[i];\n      mark = item.mark;\n\n      if (mark.marktype !== type) {\n        // memoize mark instance lookup\n        type = mark.marktype;\n        mdef = Marks[type];\n      }\n\n      if (mark.zdirty && mark.dirty !== id) {\n        this._dirtyAll = false;\n        dirtyParents(item, id);\n        mark.items.forEach(i => {\n          i.dirty = id;\n        });\n      }\n\n      if (mark.zdirty) continue; // handle in standard drawing pass\n\n      if (item.exit) {\n        // EXIT\n        if (mdef.nested && mark.items.length) {\n          // if nested mark with remaining points, update instead\n          o = mark.items[0];\n          if (o._svg) this._update(mdef, o._svg, o);\n        } else if (item._svg) {\n          // otherwise remove from DOM\n          o = item._svg.parentNode;\n          if (o) o.removeChild(item._svg);\n        }\n\n        item._svg = null;\n        continue;\n      }\n\n      item = mdef.nested ? mark.items[0] : item;\n      if (item._update === id) continue; // already visited\n\n      if (!item._svg || !item._svg.ownerSVGElement) {\n        // ENTER\n        this._dirtyAll = false;\n        dirtyParents(item, id);\n      } else {\n        // IN-PLACE UPDATE\n        this._update(mdef, item._svg, item);\n      }\n\n      item._update = id;\n    }\n\n    return !this._dirtyAll;\n  },\n\n  // -- Construct & maintain scenegraph to SVG mapping ---\n\n  /**\n   * Render a set of mark items.\n   * @param {SVGElement} el - The parent element in the SVG tree.\n   * @param {object} scene - The mark parent to render.\n   * @param {SVGElement} prev - The previous sibling in the SVG tree.\n   */\n  mark(el, scene, prev) {\n    if (!this.isDirty(scene)) return scene._svg;\n    const svg = this._svg,\n          mdef = Marks[scene.marktype],\n          events = scene.interactive === false ? 'none' : null,\n          isGroup = mdef.tag === 'g';\n    let sibling = null,\n        i = 0;\n    const parent = bind(scene, el, prev, 'g', svg);\n    parent.setAttribute('class', cssClass(scene)); // apply aria attributes to parent container element\n\n    const aria = ariaMarkAttributes(scene);\n\n    for (const key in aria) setAttribute(parent, key, aria[key]);\n\n    if (!isGroup) {\n      setAttribute(parent, 'pointer-events', events);\n    }\n\n    setAttribute(parent, 'clip-path', scene.clip ? clip$1(this, scene, scene.group) : null);\n\n    const process = item => {\n      const dirty = this.isDirty(item),\n            node = bind(item, parent, sibling, mdef.tag, svg);\n\n      if (dirty) {\n        this._update(mdef, node, item);\n\n        if (isGroup) recurse(this, node, item);\n      }\n\n      sibling = node;\n      ++i;\n    };\n\n    if (mdef.nested) {\n      if (scene.items.length) process(scene.items[0]);\n    } else {\n      visit(scene, process);\n    }\n\n    domClear(parent, i);\n    return parent;\n  },\n\n  /**\n   * Update the attributes of an SVG element for a mark item.\n   * @param {object} mdef - The mark definition object\n   * @param {SVGElement} el - The SVG element.\n   * @param {Item} item - The mark item.\n   */\n  _update(mdef, el, item) {\n    // set dom element and values cache\n    // provides access to emit method\n    element = el;\n    values = el.__values__; // apply aria-specific properties\n\n    ariaItemAttributes(emit, item); // apply svg attributes\n\n    mdef.attr(emit, item, this); // some marks need special treatment\n\n    const extra = mark_extras[mdef.type];\n    if (extra) extra.call(this, mdef, el, item); // apply svg style attributes\n    // note: element state may have been modified by 'extra' method\n\n    if (element) this.style(element, item);\n  },\n\n  /**\n   * Update the presentation attributes of an SVG element for a mark item.\n   * @param {SVGElement} el - The SVG element.\n   * @param {Item} item - The mark item.\n   */\n  style(el, item) {\n    if (item == null) return;\n\n    for (const prop in styles) {\n      let value = prop === 'font' ? fontFamily(item) : item[prop];\n      if (value === values[prop]) continue;\n      const name = styles[prop];\n\n      if (value == null) {\n        el.removeAttribute(name);\n      } else {\n        if (isGradient(value)) {\n          value = gradientRef(value, this._defs.gradient, href());\n        }\n\n        el.setAttribute(name, value + '');\n      }\n\n      values[prop] = value;\n    }\n  },\n\n  /**\n   * Render SVG defs, as needed.\n   * Must be called *after* marks have been processed to ensure the\n   * collected state is current and accurate.\n   */\n  defs() {\n    const svg = this._svg,\n          defs = this._defs;\n    let el = defs.el,\n        index = 0;\n\n    for (const id in defs.gradient) {\n      if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n      index = updateGradient(el, defs.gradient[id], index);\n    }\n\n    for (const id in defs.clipping) {\n      if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n      index = updateClipping(el, defs.clipping[id], index);\n    } // clean-up\n\n\n    if (el) {\n      index === 0 ? (svg.removeChild(el), defs.el = null) : domClear(el, index);\n    }\n  },\n\n  /**\n   * Clear defs caches.\n   */\n  _clearDefs() {\n    const def = this._defs;\n    def.gradient = {};\n    def.clipping = {};\n  }\n\n}); // mark ancestor chain with a dirty id\n\nfunction dirtyParents(item, id) {\n  for (; item && item.dirty !== id; item = item.mark.group) {\n    item.dirty = id;\n\n    if (item.mark && item.mark.dirty !== id) {\n      item.mark.dirty = id;\n    } else return;\n  }\n} // update gradient definitions\n\n\nfunction updateGradient(el, grad, index) {\n  let i, n, stop;\n\n  if (grad.gradient === 'radial') {\n    // SVG radial gradients automatically transform to normalized bbox\n    // coordinates, in a way that is cumbersome to replicate in canvas.\n    // We wrap the radial gradient in a pattern element, allowing us to\n    // maintain a circular gradient that matches what canvas provides.\n    let pt = domChild(el, index++, 'pattern', svgns);\n    setAttributes(pt, {\n      id: patternPrefix + grad.id,\n      viewBox: '0,0,1,1',\n      width: '100%',\n      height: '100%',\n      preserveAspectRatio: 'xMidYMid slice'\n    });\n    pt = domChild(pt, 0, 'rect', svgns);\n    setAttributes(pt, {\n      width: 1,\n      height: 1,\n      fill: `url(${href()}#${grad.id})`\n    });\n    el = domChild(el, index++, 'radialGradient', svgns);\n    setAttributes(el, {\n      id: grad.id,\n      fx: grad.x1,\n      fy: grad.y1,\n      fr: grad.r1,\n      cx: grad.x2,\n      cy: grad.y2,\n      r: grad.r2\n    });\n  } else {\n    el = domChild(el, index++, 'linearGradient', svgns);\n    setAttributes(el, {\n      id: grad.id,\n      x1: grad.x1,\n      x2: grad.x2,\n      y1: grad.y1,\n      y2: grad.y2\n    });\n  }\n\n  for (i = 0, n = grad.stops.length; i < n; ++i) {\n    stop = domChild(el, i, 'stop', svgns);\n    stop.setAttribute('offset', grad.stops[i].offset);\n    stop.setAttribute('stop-color', grad.stops[i].color);\n  }\n\n  domClear(el, i);\n  return index;\n} // update clipping path definitions\n\n\nfunction updateClipping(el, clip, index) {\n  let mask;\n  el = domChild(el, index, 'clipPath', svgns);\n  el.setAttribute('id', clip.id);\n\n  if (clip.path) {\n    mask = domChild(el, 0, 'path', svgns);\n    mask.setAttribute('d', clip.path);\n  } else {\n    mask = domChild(el, 0, 'rect', svgns);\n    setAttributes(mask, {\n      x: 0,\n      y: 0,\n      width: clip.width,\n      height: clip.height\n    });\n  }\n\n  domClear(el, 1);\n  return index + 1;\n} // Recursively process group contents.\n\n\nfunction recurse(renderer, el, group) {\n  el = el.lastChild.previousSibling;\n  let prev,\n      idx = 0;\n  visit(group, item => {\n    prev = renderer.mark(el, item, prev);\n    ++idx;\n  }); // remove any extraneous DOM elements\n\n  domClear(el, 1 + idx);\n} // Bind a scenegraph item to an SVG DOM element.\n// Create new SVG elements as needed.\n\n\nfunction bind(item, el, sibling, tag, svg) {\n  let node = item._svg,\n      doc; // create a new dom node if needed\n\n  if (!node) {\n    doc = el.ownerDocument;\n    node = domCreate(doc, tag, svgns);\n    item._svg = node;\n\n    if (item.mark) {\n      node.__data__ = item;\n      node.__values__ = {\n        fill: 'default'\n      }; // if group, create background, content, and foreground elements\n\n      if (tag === 'g') {\n        const bg = domCreate(doc, 'path', svgns);\n        node.appendChild(bg);\n        bg.__data__ = item;\n        const cg = domCreate(doc, 'g', svgns);\n        node.appendChild(cg);\n        cg.__data__ = item;\n        const fg = domCreate(doc, 'path', svgns);\n        node.appendChild(fg);\n        fg.__data__ = item;\n        fg.__values__ = {\n          fill: 'default'\n        };\n      }\n    }\n  } // (re-)insert if (a) not contained in SVG or (b) sibling order has changed\n\n\n  if (node.ownerSVGElement !== svg || siblingCheck(node, sibling)) {\n    el.insertBefore(node, sibling ? sibling.nextSibling : el.firstChild);\n  }\n\n  return node;\n} // check if two nodes are ordered siblings\n\n\nfunction siblingCheck(node, sibling) {\n  return node.parentNode && node.parentNode.childNodes.length > 1 && node.previousSibling != sibling; // treat null/undefined the same\n} // -- Set attributes & styles on SVG elements ---\n\n\nlet element = null,\n    // temp var for current SVG element\nvalues = null; // temp var for current values hash\n// Extra configuration for certain mark types\n\nconst mark_extras = {\n  group(mdef, el, item) {\n    const fg = element = el.childNodes[2];\n    values = fg.__values__;\n    mdef.foreground(emit, item, this);\n    values = el.__values__; // use parent's values hash\n\n    element = el.childNodes[1];\n    mdef.content(emit, item, this);\n    const bg = element = el.childNodes[0];\n    mdef.background(emit, item, this);\n    const value = item.mark.interactive === false ? 'none' : null;\n\n    if (value !== values.events) {\n      setAttribute(fg, 'pointer-events', value);\n      setAttribute(bg, 'pointer-events', value);\n      values.events = value;\n    }\n\n    if (item.strokeForeground && item.stroke) {\n      const fill = item.fill;\n      setAttribute(fg, 'display', null); // set style of background\n\n      this.style(bg, item);\n      setAttribute(bg, 'stroke', null); // set style of foreground\n\n      if (fill) item.fill = null;\n      values = fg.__values__;\n      this.style(fg, item);\n      if (fill) item.fill = fill; // leave element null to prevent downstream styling\n\n      element = null;\n    } else {\n      // ensure foreground is ignored\n      setAttribute(fg, 'display', 'none');\n    }\n  },\n\n  image(mdef, el, item) {\n    if (item.smooth === false) {\n      setStyle(el, 'image-rendering', 'optimizeSpeed');\n      setStyle(el, 'image-rendering', 'pixelated');\n    } else {\n      setStyle(el, 'image-rendering', null);\n    }\n  },\n\n  text(mdef, el, item) {\n    const tl = textLines(item);\n    let key, value, doc, lh;\n\n    if (isArray(tl)) {\n      // multi-line text\n      value = tl.map(_ => textValue(item, _));\n      key = value.join('\\n'); // content cache key\n\n      if (key !== values.text) {\n        domClear(el, 0);\n        doc = el.ownerDocument;\n        lh = lineHeight(item);\n        value.forEach((t, i) => {\n          const ts = domCreate(doc, 'tspan', svgns);\n          ts.__data__ = item; // data binding\n\n          ts.textContent = t;\n\n          if (i) {\n            ts.setAttribute('x', 0);\n            ts.setAttribute('dy', lh);\n          }\n\n          el.appendChild(ts);\n        });\n        values.text = key;\n      }\n    } else {\n      // single-line text\n      value = textValue(item, tl);\n\n      if (value !== values.text) {\n        el.textContent = value;\n        values.text = value;\n      }\n    }\n\n    setAttribute(el, 'font-family', fontFamily(item));\n    setAttribute(el, 'font-size', fontSize(item) + 'px');\n    setAttribute(el, 'font-style', item.fontStyle);\n    setAttribute(el, 'font-variant', item.fontVariant);\n    setAttribute(el, 'font-weight', item.fontWeight);\n  }\n\n};\n\nfunction emit(name, value, ns) {\n  // early exit if value is unchanged\n  if (value === values[name]) return; // use appropriate method given namespace (ns)\n\n  if (ns) {\n    setAttributeNS(element, name, value, ns);\n  } else {\n    setAttribute(element, name, value);\n  } // note current value for future comparison\n\n\n  values[name] = value;\n}\n\nfunction setStyle(el, name, value) {\n  if (value !== values[name]) {\n    if (value == null) {\n      el.style.removeProperty(name);\n    } else {\n      el.style.setProperty(name, value + '');\n    }\n\n    values[name] = value;\n  }\n}\n\nfunction setAttributes(el, attrs) {\n  for (const key in attrs) {\n    setAttribute(el, key, attrs[key]);\n  }\n}\n\nfunction setAttribute(el, name, value) {\n  if (value != null) {\n    // if value is provided, update DOM attribute\n    el.setAttribute(name, value);\n  } else {\n    // else remove DOM attribute\n    el.removeAttribute(name);\n  }\n}\n\nfunction setAttributeNS(el, name, value, ns) {\n  if (value != null) {\n    // if value is provided, update DOM attribute\n    el.setAttributeNS(ns, name, value);\n  } else {\n    // else remove DOM attribute\n    el.removeAttributeNS(ns, name);\n  }\n}\n\nfunction href() {\n  let loc;\n  return typeof window === 'undefined' ? '' : (loc = window.location).hash ? loc.href.slice(0, -loc.hash.length) : loc.href;\n}\n\nfunction SVGStringRenderer(loader) {\n  Renderer.call(this, loader);\n  this._text = null;\n  this._defs = {\n    gradient: {},\n    clipping: {}\n  };\n}\ninherits(SVGStringRenderer, Renderer, {\n  /**\n   * Returns the rendered SVG text string,\n   * or null if rendering has not yet occurred.\n   */\n  svg() {\n    return this._text;\n  },\n\n  /**\n   * Internal rendering method.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   */\n  _render(scene) {\n    const m = markup(); // svg tag\n\n    m.open('svg', extend({}, metadata, {\n      class: 'marks',\n      width: this._width * this._scale,\n      height: this._height * this._scale,\n      viewBox: `0 0 ${this._width} ${this._height}`\n    })); // background, if defined\n\n    const bg = this._bgcolor;\n\n    if (bg && bg !== 'transparent' && bg !== 'none') {\n      m.open('rect', {\n        width: this._width,\n        height: this._height,\n        fill: bg\n      }).close();\n    } // root content group\n\n\n    m.open('g', rootAttributes, {\n      transform: 'translate(' + this._origin + ')'\n    });\n    this.mark(m, scene);\n    m.close(); // </g>\n    // defs\n\n    this.defs(m); // get SVG text string\n\n    this._text = m.close() + '';\n    return this;\n  },\n\n  /**\n   * Render a set of mark items.\n   * @param {object} m - The markup context.\n   * @param {object} scene - The mark parent to render.\n   */\n  mark(m, scene) {\n    const mdef = Marks[scene.marktype],\n          tag = mdef.tag,\n          attrList = [ariaItemAttributes, mdef.attr]; // render opening group tag\n\n    m.open('g', {\n      'class': cssClass(scene),\n      'clip-path': scene.clip ? clip$1(this, scene, scene.group) : null\n    }, ariaMarkAttributes(scene), {\n      'pointer-events': tag !== 'g' && scene.interactive === false ? 'none' : null\n    }); // render contained elements\n\n    const process = item => {\n      const href = this.href(item);\n      if (href) m.open('a', href);\n      m.open(tag, this.attr(scene, item, attrList, tag !== 'g' ? tag : null));\n\n      if (tag === 'text') {\n        const tl = textLines(item);\n\n        if (isArray(tl)) {\n          // multi-line text\n          const attrs = {\n            x: 0,\n            dy: lineHeight(item)\n          };\n\n          for (let i = 0; i < tl.length; ++i) {\n            m.open('tspan', i ? attrs : null).text(textValue(item, tl[i])).close();\n          }\n        } else {\n          // single-line text\n          m.text(textValue(item, tl));\n        }\n      } else if (tag === 'g') {\n        const fore = item.strokeForeground,\n              fill = item.fill,\n              stroke = item.stroke;\n\n        if (fore && stroke) {\n          item.stroke = null;\n        }\n\n        m.open('path', this.attr(scene, item, mdef.background, 'bgrect')).close(); // recurse for group content\n\n        m.open('g', this.attr(scene, item, mdef.content));\n        visit(item, scene => this.mark(m, scene));\n        m.close();\n\n        if (fore && stroke) {\n          if (fill) item.fill = null;\n          item.stroke = stroke;\n          m.open('path', this.attr(scene, item, mdef.foreground, 'bgrect')).close();\n          if (fill) item.fill = fill;\n        } else {\n          m.open('path', this.attr(scene, item, mdef.foreground, 'bgfore')).close();\n        }\n      }\n\n      m.close(); // </tag>\n\n      if (href) m.close(); // </a>\n    };\n\n    if (mdef.nested) {\n      if (scene.items && scene.items.length) process(scene.items[0]);\n    } else {\n      visit(scene, process);\n    } // render closing group tag\n\n\n    return m.close(); // </g>\n  },\n\n  /**\n   * Get href attributes for a hyperlinked mark item.\n   * @param {Item} item - The mark item.\n   */\n  href(item) {\n    const href = item.href;\n    let attr;\n\n    if (href) {\n      if (attr = this._hrefs && this._hrefs[href]) {\n        return attr;\n      } else {\n        this.sanitizeURL(href).then(attr => {\n          // rewrite to use xlink namespace\n          attr['xlink:href'] = attr.href;\n          attr.href = null;\n          (this._hrefs || (this._hrefs = {}))[href] = attr;\n        });\n      }\n    }\n\n    return null;\n  },\n\n  /**\n   * Get an object of SVG attributes for a mark item.\n   * @param {object} scene - The mark parent.\n   * @param {Item} item - The mark item.\n   * @param {array|function} attrs - One or more attribute emitters.\n   * @param {string} tag - The tag being rendered.\n   */\n  attr(scene, item, attrs, tag) {\n    const object = {},\n          emit = (name, value, ns, prefixed) => {\n      object[prefixed || name] = value;\n    }; // apply mark specific attributes\n\n\n    if (Array.isArray(attrs)) {\n      attrs.forEach(fn => fn(emit, item, this));\n    } else {\n      attrs(emit, item, this);\n    } // apply style attributes\n\n\n    if (tag) {\n      style(object, item, scene, tag, this._defs);\n    }\n\n    return object;\n  },\n\n  /**\n   * Render SVG defs, as needed.\n   * Must be called *after* marks have been processed to ensure the\n   * collected state is current and accurate.\n   * @param {object} m - The markup context.\n   */\n  defs(m) {\n    const gradient = this._defs.gradient,\n          clipping = this._defs.clipping,\n          count = Object.keys(gradient).length + Object.keys(clipping).length;\n    if (count === 0) return; // nothing to do\n\n    m.open('defs');\n\n    for (const id in gradient) {\n      const def = gradient[id],\n            stops = def.stops;\n\n      if (def.gradient === 'radial') {\n        // SVG radial gradients automatically transform to normalized bbox\n        // coordinates, in a way that is cumbersome to replicate in canvas.\n        // We wrap the radial gradient in a pattern element, allowing us to\n        // maintain a circular gradient that matches what canvas provides.\n        m.open('pattern', {\n          id: patternPrefix + id,\n          viewBox: '0,0,1,1',\n          width: '100%',\n          height: '100%',\n          preserveAspectRatio: 'xMidYMid slice'\n        });\n        m.open('rect', {\n          width: '1',\n          height: '1',\n          fill: 'url(#' + id + ')'\n        }).close();\n        m.close(); // </pattern>\n\n        m.open('radialGradient', {\n          id: id,\n          fx: def.x1,\n          fy: def.y1,\n          fr: def.r1,\n          cx: def.x2,\n          cy: def.y2,\n          r: def.r2\n        });\n      } else {\n        m.open('linearGradient', {\n          id: id,\n          x1: def.x1,\n          x2: def.x2,\n          y1: def.y1,\n          y2: def.y2\n        });\n      }\n\n      for (let i = 0; i < stops.length; ++i) {\n        m.open('stop', {\n          offset: stops[i].offset,\n          'stop-color': stops[i].color\n        }).close();\n      }\n\n      m.close();\n    }\n\n    for (const id in clipping) {\n      const def = clipping[id];\n      m.open('clipPath', {\n        id: id\n      });\n\n      if (def.path) {\n        m.open('path', {\n          d: def.path\n        }).close();\n      } else {\n        m.open('rect', {\n          x: 0,\n          y: 0,\n          width: def.width,\n          height: def.height\n        }).close();\n      }\n\n      m.close();\n    }\n\n    m.close();\n  }\n\n}); // Helper function for attr for style presentation attributes\n\nfunction style(s, item, scene, tag, defs) {\n  if (item == null) return s;\n\n  if (tag === 'bgrect' && scene.interactive === false) {\n    s['pointer-events'] = 'none';\n  }\n\n  if (tag === 'bgfore') {\n    if (scene.interactive === false) {\n      s['pointer-events'] = 'none';\n    }\n\n    s.display = 'none';\n    if (item.fill !== null) return s;\n  }\n\n  if (tag === 'image' && item.smooth === false) {\n    s.style = 'image-rendering: optimizeSpeed; image-rendering: pixelated;';\n  }\n\n  if (tag === 'text') {\n    s['font-family'] = fontFamily(item);\n    s['font-size'] = fontSize(item) + 'px';\n    s['font-style'] = item.fontStyle;\n    s['font-variant'] = item.fontVariant;\n    s['font-weight'] = item.fontWeight;\n  }\n\n  for (const prop in styles) {\n    let value = item[prop];\n    const name = styles[prop];\n\n    if (value === 'transparent' && (name === 'fill' || name === 'stroke')) ; else if (value != null) {\n      if (isGradient(value)) {\n        value = gradientRef(value, defs.gradient, '');\n      }\n\n      s[name] = value;\n    }\n  }\n\n  return s;\n}\n\nconst Canvas = 'canvas';\nconst PNG = 'png';\nconst SVG = 'svg';\nconst None = 'none';\nconst RenderType = {\n  Canvas: Canvas,\n  PNG: PNG,\n  SVG: SVG,\n  None: None\n};\nconst modules = {};\nmodules[Canvas] = modules[PNG] = {\n  renderer: CanvasRenderer,\n  headless: CanvasRenderer,\n  handler: CanvasHandler\n};\nmodules[SVG] = {\n  renderer: SVGRenderer,\n  headless: SVGStringRenderer,\n  handler: SVGHandler\n};\nmodules[None] = {};\nfunction renderModule(name, _) {\n  name = String(name || '').toLowerCase();\n\n  if (arguments.length > 1) {\n    modules[name] = _;\n    return this;\n  } else {\n    return modules[name];\n  }\n}\n\nfunction intersect(scene, bounds, filter) {\n  const hits = [],\n        // intersection results\n  box = new Bounds().union(bounds),\n        // defensive copy\n  type = scene.marktype;\n  return type ? intersectMark(scene, box, filter, hits) : type === 'group' ? intersectGroup(scene, box, filter, hits) : error('Intersect scene must be mark node or group item.');\n}\n\nfunction intersectMark(mark, box, filter, hits) {\n  if (visitMark(mark, box, filter)) {\n    const items = mark.items,\n          type = mark.marktype,\n          n = items.length;\n    let i = 0;\n\n    if (type === 'group') {\n      for (; i < n; ++i) {\n        intersectGroup(items[i], box, filter, hits);\n      }\n    } else {\n      for (const test = Marks[type].isect; i < n; ++i) {\n        const item = items[i];\n        if (intersectItem(item, box, test)) hits.push(item);\n      }\n    }\n  }\n\n  return hits;\n}\n\nfunction visitMark(mark, box, filter) {\n  // process if bounds intersect and if\n  // (1) mark is a group mark (so we must recurse), or\n  // (2) mark is interactive and passes filter\n  return mark.bounds && box.intersects(mark.bounds) && (mark.marktype === 'group' || mark.interactive !== false && (!filter || filter(mark)));\n}\n\nfunction intersectGroup(group, box, filter, hits) {\n  // test intersect against group\n  // skip groups by default unless filter says otherwise\n  if (filter && filter(group.mark) && intersectItem(group, box, Marks.group.isect)) {\n    hits.push(group);\n  } // recursively test children marks\n  // translate box to group coordinate space\n\n\n  const marks = group.items,\n        n = marks && marks.length;\n\n  if (n) {\n    const x = group.x || 0,\n          y = group.y || 0;\n    box.translate(-x, -y);\n\n    for (let i = 0; i < n; ++i) {\n      intersectMark(marks[i], box, filter, hits);\n    }\n\n    box.translate(x, y);\n  }\n\n  return hits;\n}\n\nfunction intersectItem(item, box, test) {\n  // test bounds enclosure, bounds intersection, then detailed test\n  const bounds = item.bounds;\n  return box.encloses(bounds) || box.intersects(bounds) && test(item, box);\n}\n\nconst clipBounds = new Bounds();\nfunction boundClip (mark) {\n  const clip = mark.clip;\n\n  if (isFunction(clip)) {\n    clip(boundContext(clipBounds.clear()));\n  } else if (clip) {\n    clipBounds.set(0, 0, mark.group.width, mark.group.height);\n  } else return;\n\n  mark.bounds.intersect(clipBounds);\n}\n\nconst TOLERANCE = 1e-9;\nfunction sceneEqual(a, b, key) {\n  return a === b ? true : key === 'path' ? pathEqual(a, b) : a instanceof Date && b instanceof Date ? +a === +b : isNumber(a) && isNumber(b) ? Math.abs(a - b) <= TOLERANCE : !a || !b || !isObject(a) && !isObject(b) ? a == b : objectEqual(a, b);\n}\nfunction pathEqual(a, b) {\n  return sceneEqual(pathParse(a), pathParse(b));\n}\n\nfunction objectEqual(a, b) {\n  var ka = Object.keys(a),\n      kb = Object.keys(b),\n      key,\n      i;\n  if (ka.length !== kb.length) return false;\n  ka.sort();\n  kb.sort();\n\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i]) return false;\n  }\n\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!sceneEqual(a[key], b[key], key)) return false;\n  }\n\n  return typeof a === typeof b;\n}\n\nfunction resetSVGDefIds() {\n  resetSVGClipId();\n  resetSVGGradientId();\n}\n\nexport { Bounds, CanvasHandler, CanvasRenderer, Gradient, GroupItem, Handler, Item, Marks, RenderType, Renderer, ResourceLoader, SVGHandler, SVGRenderer, SVGStringRenderer, Scenegraph, boundClip, boundContext, boundItem, boundMark, boundStroke, domChild, domClear, domCreate, domFind, font, fontFamily, fontSize, intersect, intersectBoxLine, intersectPath, intersectPoint, intersectRule, lineHeight, markup, multiLineOffset, curves as pathCurves, pathEqual, pathParse, vg_rect as pathRectangle, pathRender, symbols as pathSymbols, vg_trail as pathTrail, point, renderModule, resetSVGClipId, resetSVGDefIds, sceneEqual, sceneFromJSON, pickVisit as scenePickVisit, sceneToJSON, visit as sceneVisit, zorder as sceneZOrder, serializeXML, textMetrics };\n","import { Transform } from 'vega-dataflow';\nimport { Marks, boundClip, GroupItem, Item, Bounds, multiLineOffset, boundStroke } from 'vega-scenegraph';\nimport { inherits, peek, isObject } from 'vega-util';\n\nconst Top = 'top';\nconst Left = 'left';\nconst Right = 'right';\nconst Bottom = 'bottom';\nconst TopLeft = 'top-left';\nconst TopRight = 'top-right';\nconst BottomLeft = 'bottom-left';\nconst BottomRight = 'bottom-right';\nconst Start = 'start';\nconst Middle = 'middle';\nconst End = 'end';\nconst X = 'x';\nconst Y = 'y';\nconst Group = 'group';\nconst AxisRole = 'axis';\nconst TitleRole = 'title';\nconst FrameRole = 'frame';\nconst ScopeRole = 'scope';\nconst LegendRole = 'legend';\nconst RowHeader = 'row-header';\nconst RowFooter = 'row-footer';\nconst RowTitle = 'row-title';\nconst ColHeader = 'column-header';\nconst ColFooter = 'column-footer';\nconst ColTitle = 'column-title';\nconst Padding = 'padding';\nconst Symbols = 'symbol';\nconst Fit = 'fit';\nconst FitX = 'fit-x';\nconst FitY = 'fit-y';\nconst Pad = 'pad';\nconst None = 'none';\nconst All = 'all';\nconst Each = 'each';\nconst Flush = 'flush';\nconst Column = 'column';\nconst Row = 'row';\n\n/**\n * Calculate bounding boxes for scenegraph items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - The scenegraph mark instance to bound.\n */\n\nfunction Bound(params) {\n  Transform.call(this, null, params);\n}\ninherits(Bound, Transform, {\n  transform(_, pulse) {\n    const view = pulse.dataflow,\n          mark = _.mark,\n          type = mark.marktype,\n          entry = Marks[type],\n          bound = entry.bound;\n    let markBounds = mark.bounds,\n        rebound;\n\n    if (entry.nested) {\n      // multi-item marks have a single bounds instance\n      if (mark.items.length) view.dirty(mark.items[0]);\n      markBounds = boundItem(mark, bound);\n      mark.items.forEach(item => {\n        item.bounds.clear().union(markBounds);\n      });\n    } else if (type === Group || _.modified()) {\n      // operator parameters modified -> re-bound all items\n      // updates group bounds in response to modified group content\n      pulse.visit(pulse.MOD, item => view.dirty(item));\n      markBounds.clear();\n      mark.items.forEach(item => markBounds.union(boundItem(item, bound))); // force reflow for axes/legends/titles to propagate any layout changes\n\n      switch (mark.role) {\n        case AxisRole:\n        case LegendRole:\n        case TitleRole:\n          pulse.reflow();\n      }\n    } else {\n      // incrementally update bounds, re-bound mark as needed\n      rebound = pulse.changed(pulse.REM);\n      pulse.visit(pulse.ADD, item => {\n        markBounds.union(boundItem(item, bound));\n      });\n      pulse.visit(pulse.MOD, item => {\n        rebound = rebound || markBounds.alignsWith(item.bounds);\n        view.dirty(item);\n        markBounds.union(boundItem(item, bound));\n      });\n\n      if (rebound) {\n        markBounds.clear();\n        mark.items.forEach(item => markBounds.union(item.bounds));\n      }\n    } // ensure mark bounds do not exceed any clipping region\n\n\n    boundClip(mark);\n    return pulse.modifies('bounds');\n  }\n\n});\n\nfunction boundItem(item, bound, opt) {\n  return bound(item.bounds.clear(), item, opt);\n}\n\nconst COUNTER_NAME = ':vega_identifier:';\n/**\n * Adds a unique identifier to all added tuples.\n * This transform creates a new signal that serves as an id counter.\n * As a result, the id counter is shared across all instances of this\n * transform, generating unique ids across multiple data streams. In\n * addition, this signal value can be included in a snapshot of the\n * dataflow state, enabling correct resumption of id allocation.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.as - The field name for the generated identifier.\n */\n\nfunction Identifier(params) {\n  Transform.call(this, 0, params);\n}\nIdentifier.Definition = {\n  'type': 'Identifier',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'as',\n    'type': 'string',\n    'required': true\n  }]\n};\ninherits(Identifier, Transform, {\n  transform(_, pulse) {\n    const counter = getCounter(pulse.dataflow),\n          as = _.as;\n    let id = counter.value;\n    pulse.visit(pulse.ADD, t => t[as] = t[as] || ++id);\n    counter.set(this.value = id);\n    return pulse;\n  }\n\n});\n\nfunction getCounter(view) {\n  return view._signals[COUNTER_NAME] || (view._signals[COUNTER_NAME] = view.add(0));\n}\n\n/**\n * Bind scenegraph items to a scenegraph mark instance.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.markdef - The mark definition for creating the mark.\n *   This is an object of legal scenegraph mark properties which *must* include\n *   the 'marktype' property.\n */\n\nfunction Mark(params) {\n  Transform.call(this, null, params);\n}\ninherits(Mark, Transform, {\n  transform(_, pulse) {\n    let mark = this.value; // acquire mark on first invocation, bind context and group\n\n    if (!mark) {\n      mark = pulse.dataflow.scenegraph().mark(_.markdef, lookup(_), _.index);\n      mark.group.context = _.context;\n      if (!_.context.group) _.context.group = mark.group;\n      mark.source = this.source; // point to upstream collector\n\n      mark.clip = _.clip;\n      mark.interactive = _.interactive;\n      this.value = mark;\n    } // initialize entering items\n\n\n    const Init = mark.marktype === Group ? GroupItem : Item;\n    pulse.visit(pulse.ADD, item => Init.call(item, mark)); // update clipping and/or interactive status\n\n    if (_.modified('clip') || _.modified('interactive')) {\n      mark.clip = _.clip;\n      mark.interactive = !!_.interactive;\n      mark.zdirty = true; // force scenegraph re-eval\n\n      pulse.reflow();\n    } // bind items array to scenegraph mark\n\n\n    mark.items = pulse.source;\n    return pulse;\n  }\n\n});\n\nfunction lookup(_) {\n  const g = _.groups,\n        p = _.parent;\n  return g && g.size === 1 ? g.get(Object.keys(g.object)[0]) : g && p ? g.lookup(p) : null;\n}\n\n/**\n * Analyze items for overlap, changing opacity to hide items with\n * overlapping bounding boxes. This transform will preserve at least\n * two items (e.g., first and last) even if overlap persists.\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n *   function for sorting items.\n * @param {object} [params.method] - The overlap removal method to apply.\n *   One of 'parity' (default, hide every other item until there is no\n *   more overlap) or 'greedy' (sequentially scan and hide and items that\n *   overlap with the last visible item).\n * @param {object} [params.boundScale] - A scale whose range should be used\n *   to bound the items. Items exceeding the bounds of the scale range\n *   will be treated as overlapping. If null or undefined, no bounds check\n *   will be applied.\n * @param {object} [params.boundOrient] - The orientation of the scale\n *   (top, bottom, left, or right) used to bound items. This parameter is\n *   ignored if boundScale is null or undefined.\n * @param {object} [params.boundTolerance] - The tolerance in pixels for\n *   bound inclusion testing (default 1). This specifies by how many pixels\n *   an item's bounds may exceed the scale range bounds and not be culled.\n * @constructor\n */\n\nfunction Overlap(params) {\n  Transform.call(this, null, params);\n}\nconst methods = {\n  parity: items => items.filter((item, i) => i % 2 ? item.opacity = 0 : 1),\n  greedy: (items, sep) => {\n    let a;\n    return items.filter((b, i) => !i || !intersect(a.bounds, b.bounds, sep) ? (a = b, 1) : b.opacity = 0);\n  }\n}; // compute bounding box intersection\n// including padding pixels of separation\n\nconst intersect = (a, b, sep) => sep > Math.max(b.x1 - a.x2, a.x1 - b.x2, b.y1 - a.y2, a.y1 - b.y2);\n\nconst hasOverlap = (items, pad) => {\n  for (var i = 1, n = items.length, a = items[0].bounds, b; i < n; a = b, ++i) {\n    if (intersect(a, b = items[i].bounds, pad)) return true;\n  }\n};\n\nconst hasBounds = item => {\n  const b = item.bounds;\n  return b.width() > 1 && b.height() > 1;\n};\n\nconst boundTest = (scale, orient, tolerance) => {\n  var range = scale.range(),\n      b = new Bounds();\n\n  if (orient === Top || orient === Bottom) {\n    b.set(range[0], -Infinity, range[1], +Infinity);\n  } else {\n    b.set(-Infinity, range[0], +Infinity, range[1]);\n  }\n\n  b.expand(tolerance || 1);\n  return item => b.encloses(item.bounds);\n}; // reset all items to be fully opaque\n\n\nconst reset = source => {\n  source.forEach(item => item.opacity = 1);\n  return source;\n}; // add all tuples to mod, fork pulse if parameters were modified\n// fork prevents cross-stream tuple pollution (e.g., pulse from scale)\n\n\nconst reflow = (pulse, _) => pulse.reflow(_.modified()).modifies('opacity');\n\ninherits(Overlap, Transform, {\n  transform(_, pulse) {\n    const reduce = methods[_.method] || methods.parity,\n          sep = _.separation || 0;\n    let source = pulse.materialize(pulse.SOURCE).source,\n        items,\n        test;\n    if (!source || !source.length) return;\n\n    if (!_.method) {\n      // early exit if method is falsy\n      if (_.modified('method')) {\n        reset(source);\n        pulse = reflow(pulse, _);\n      }\n\n      return pulse;\n    } // skip labels with no content\n\n\n    source = source.filter(hasBounds); // early exit, nothing to do\n\n    if (!source.length) return;\n\n    if (_.sort) {\n      source = source.slice().sort(_.sort);\n    }\n\n    items = reset(source);\n    pulse = reflow(pulse, _);\n\n    if (items.length >= 3 && hasOverlap(items, sep)) {\n      do {\n        items = reduce(items, sep);\n      } while (items.length >= 3 && hasOverlap(items, sep));\n\n      if (items.length < 3 && !peek(source).opacity) {\n        if (items.length > 1) peek(items).opacity = 0;\n        peek(source).opacity = 1;\n      }\n    }\n\n    if (_.boundScale && _.boundTolerance >= 0) {\n      test = boundTest(_.boundScale, _.boundOrient, +_.boundTolerance);\n      source.forEach(item => {\n        if (!test(item)) item.opacity = 0;\n      });\n    } // re-calculate mark bounds\n\n\n    const bounds = items[0].mark.bounds.clear();\n    source.forEach(item => {\n      if (item.opacity) bounds.union(item.bounds);\n    });\n    return pulse;\n  }\n\n});\n\n/**\n * Queue modified scenegraph items for rendering.\n * @constructor\n */\n\nfunction Render(params) {\n  Transform.call(this, null, params);\n}\ninherits(Render, Transform, {\n  transform(_, pulse) {\n    const view = pulse.dataflow;\n    pulse.visit(pulse.ALL, item => view.dirty(item)); // set z-index dirty flag as needed\n\n    if (pulse.fields && pulse.fields['zindex']) {\n      const item = pulse.source && pulse.source[0];\n      if (item) item.mark.zdirty = true;\n    }\n  }\n\n});\n\nconst tempBounds = new Bounds();\nfunction set(item, property, value) {\n  return item[property] === value ? 0 : (item[property] = value, 1);\n}\n\nfunction isYAxis(mark) {\n  var orient = mark.items[0].orient;\n  return orient === Left || orient === Right;\n}\n\nfunction axisIndices(datum) {\n  let index = +datum.grid;\n  return [datum.ticks ? index++ : -1, // ticks index\n  datum.labels ? index++ : -1, // labels index\n  index + +datum.domain // title index\n  ];\n}\n\nfunction axisLayout(view, axis, width, height) {\n  var item = axis.items[0],\n      datum = item.datum,\n      delta = item.translate != null ? item.translate : 0.5,\n      orient = item.orient,\n      indices = axisIndices(datum),\n      range = item.range,\n      offset = item.offset,\n      position = item.position,\n      minExtent = item.minExtent,\n      maxExtent = item.maxExtent,\n      title = datum.title && item.items[indices[2]].items[0],\n      titlePadding = item.titlePadding,\n      bounds = item.bounds,\n      dl = title && multiLineOffset(title),\n      x = 0,\n      y = 0,\n      i,\n      s;\n  tempBounds.clear().union(bounds);\n  bounds.clear();\n  if ((i = indices[0]) > -1) bounds.union(item.items[i].bounds);\n  if ((i = indices[1]) > -1) bounds.union(item.items[i].bounds); // position axis group and title\n\n  switch (orient) {\n    case Top:\n      x = position || 0;\n      y = -offset;\n      s = Math.max(minExtent, Math.min(maxExtent, -bounds.y1));\n      bounds.add(0, -s).add(range, 0);\n      if (title) axisTitleLayout(view, title, s, titlePadding, dl, 0, -1, bounds);\n      break;\n\n    case Left:\n      x = -offset;\n      y = position || 0;\n      s = Math.max(minExtent, Math.min(maxExtent, -bounds.x1));\n      bounds.add(-s, 0).add(0, range);\n      if (title) axisTitleLayout(view, title, s, titlePadding, dl, 1, -1, bounds);\n      break;\n\n    case Right:\n      x = width + offset;\n      y = position || 0;\n      s = Math.max(minExtent, Math.min(maxExtent, bounds.x2));\n      bounds.add(0, 0).add(s, range);\n      if (title) axisTitleLayout(view, title, s, titlePadding, dl, 1, 1, bounds);\n      break;\n\n    case Bottom:\n      x = position || 0;\n      y = height + offset;\n      s = Math.max(minExtent, Math.min(maxExtent, bounds.y2));\n      bounds.add(0, 0).add(range, s);\n      if (title) axisTitleLayout(view, title, s, titlePadding, 0, 0, 1, bounds);\n      break;\n\n    default:\n      x = item.x;\n      y = item.y;\n  } // update bounds\n\n\n  boundStroke(bounds.translate(x, y), item);\n\n  if (set(item, 'x', x + delta) | set(item, 'y', y + delta)) {\n    item.bounds = tempBounds;\n    view.dirty(item);\n    item.bounds = bounds;\n    view.dirty(item);\n  }\n\n  return item.mark.bounds.clear().union(bounds);\n}\n\nfunction axisTitleLayout(view, title, offset, pad, dl, isYAxis, sign, bounds) {\n  const b = title.bounds;\n\n  if (title.auto) {\n    const v = sign * (offset + dl + pad);\n    let dx = 0,\n        dy = 0;\n    view.dirty(title);\n    isYAxis ? dx = (title.x || 0) - (title.x = v) : dy = (title.y || 0) - (title.y = v);\n    title.mark.bounds.clear().union(b.translate(-dx, -dy));\n    view.dirty(title);\n  }\n\n  bounds.union(b);\n}\n\nconst min = (a, b) => Math.floor(Math.min(a, b));\n\nconst max = (a, b) => Math.ceil(Math.max(a, b));\n\nfunction gridLayoutGroups(group) {\n  var groups = group.items,\n      n = groups.length,\n      i = 0,\n      mark,\n      items;\n  const views = {\n    marks: [],\n    rowheaders: [],\n    rowfooters: [],\n    colheaders: [],\n    colfooters: [],\n    rowtitle: null,\n    coltitle: null\n  }; // layout axes, gather legends, collect bounds\n\n  for (; i < n; ++i) {\n    mark = groups[i];\n    items = mark.items;\n\n    if (mark.marktype === Group) {\n      switch (mark.role) {\n        case AxisRole:\n        case LegendRole:\n        case TitleRole:\n          break;\n\n        case RowHeader:\n          views.rowheaders.push(...items);\n          break;\n\n        case RowFooter:\n          views.rowfooters.push(...items);\n          break;\n\n        case ColHeader:\n          views.colheaders.push(...items);\n          break;\n\n        case ColFooter:\n          views.colfooters.push(...items);\n          break;\n\n        case RowTitle:\n          views.rowtitle = items[0];\n          break;\n\n        case ColTitle:\n          views.coltitle = items[0];\n          break;\n\n        default:\n          views.marks.push(...items);\n      }\n    }\n  }\n\n  return views;\n}\n\nfunction bboxFlush(item) {\n  return new Bounds().set(0, 0, item.width || 0, item.height || 0);\n}\n\nfunction bboxFull(item) {\n  const b = item.bounds.clone();\n  return b.empty() ? b.set(0, 0, 0, 0) : b.translate(-(item.x || 0), -(item.y || 0));\n}\n\nfunction get(opt, key, d) {\n  const v = isObject(opt) ? opt[key] : opt;\n  return v != null ? v : d !== undefined ? d : 0;\n}\n\nfunction offsetValue(v) {\n  return v < 0 ? Math.ceil(-v) : 0;\n}\n\nfunction gridLayout(view, groups, opt) {\n  var dirty = !opt.nodirty,\n      bbox = opt.bounds === Flush ? bboxFlush : bboxFull,\n      bounds = tempBounds.set(0, 0, 0, 0),\n      alignCol = get(opt.align, Column),\n      alignRow = get(opt.align, Row),\n      padCol = get(opt.padding, Column),\n      padRow = get(opt.padding, Row),\n      ncols = opt.columns || groups.length,\n      nrows = ncols <= 0 ? 1 : Math.ceil(groups.length / ncols),\n      n = groups.length,\n      xOffset = Array(n),\n      xExtent = Array(ncols),\n      xMax = 0,\n      yOffset = Array(n),\n      yExtent = Array(nrows),\n      yMax = 0,\n      dx = Array(n),\n      dy = Array(n),\n      boxes = Array(n),\n      m,\n      i,\n      c,\n      r,\n      b,\n      g,\n      px,\n      py,\n      x,\n      y,\n      offset;\n\n  for (i = 0; i < ncols; ++i) xExtent[i] = 0;\n\n  for (i = 0; i < nrows; ++i) yExtent[i] = 0; // determine offsets for each group\n\n\n  for (i = 0; i < n; ++i) {\n    g = groups[i];\n    b = boxes[i] = bbox(g);\n    g.x = g.x || 0;\n    dx[i] = 0;\n    g.y = g.y || 0;\n    dy[i] = 0;\n    c = i % ncols;\n    r = ~~(i / ncols);\n    xMax = Math.max(xMax, px = Math.ceil(b.x2));\n    yMax = Math.max(yMax, py = Math.ceil(b.y2));\n    xExtent[c] = Math.max(xExtent[c], px);\n    yExtent[r] = Math.max(yExtent[r], py);\n    xOffset[i] = padCol + offsetValue(b.x1);\n    yOffset[i] = padRow + offsetValue(b.y1);\n    if (dirty) view.dirty(groups[i]);\n  } // set initial alignment offsets\n\n\n  for (i = 0; i < n; ++i) {\n    if (i % ncols === 0) xOffset[i] = 0;\n    if (i < ncols) yOffset[i] = 0;\n  } // enforce column alignment constraints\n\n\n  if (alignCol === Each) {\n    for (c = 1; c < ncols; ++c) {\n      for (offset = 0, i = c; i < n; i += ncols) {\n        if (offset < xOffset[i]) offset = xOffset[i];\n      }\n\n      for (i = c; i < n; i += ncols) {\n        xOffset[i] = offset + xExtent[c - 1];\n      }\n    }\n  } else if (alignCol === All) {\n    for (offset = 0, i = 0; i < n; ++i) {\n      if (i % ncols && offset < xOffset[i]) offset = xOffset[i];\n    }\n\n    for (i = 0; i < n; ++i) {\n      if (i % ncols) xOffset[i] = offset + xMax;\n    }\n  } else {\n    for (alignCol = false, c = 1; c < ncols; ++c) {\n      for (i = c; i < n; i += ncols) {\n        xOffset[i] += xExtent[c - 1];\n      }\n    }\n  } // enforce row alignment constraints\n\n\n  if (alignRow === Each) {\n    for (r = 1; r < nrows; ++r) {\n      for (offset = 0, i = r * ncols, m = i + ncols; i < m; ++i) {\n        if (offset < yOffset[i]) offset = yOffset[i];\n      }\n\n      for (i = r * ncols; i < m; ++i) {\n        yOffset[i] = offset + yExtent[r - 1];\n      }\n    }\n  } else if (alignRow === All) {\n    for (offset = 0, i = ncols; i < n; ++i) {\n      if (offset < yOffset[i]) offset = yOffset[i];\n    }\n\n    for (i = ncols; i < n; ++i) {\n      yOffset[i] = offset + yMax;\n    }\n  } else {\n    for (alignRow = false, r = 1; r < nrows; ++r) {\n      for (i = r * ncols, m = i + ncols; i < m; ++i) {\n        yOffset[i] += yExtent[r - 1];\n      }\n    }\n  } // perform horizontal grid layout\n\n\n  for (x = 0, i = 0; i < n; ++i) {\n    x = xOffset[i] + (i % ncols ? x : 0);\n    dx[i] += x - groups[i].x;\n  } // perform vertical grid layout\n\n\n  for (c = 0; c < ncols; ++c) {\n    for (y = 0, i = c; i < n; i += ncols) {\n      y += yOffset[i];\n      dy[i] += y - groups[i].y;\n    }\n  } // perform horizontal centering\n\n\n  if (alignCol && get(opt.center, Column) && nrows > 1) {\n    for (i = 0; i < n; ++i) {\n      b = alignCol === All ? xMax : xExtent[i % ncols];\n      x = b - boxes[i].x2 - groups[i].x - dx[i];\n      if (x > 0) dx[i] += x / 2;\n    }\n  } // perform vertical centering\n\n\n  if (alignRow && get(opt.center, Row) && ncols !== 1) {\n    for (i = 0; i < n; ++i) {\n      b = alignRow === All ? yMax : yExtent[~~(i / ncols)];\n      y = b - boxes[i].y2 - groups[i].y - dy[i];\n      if (y > 0) dy[i] += y / 2;\n    }\n  } // position grid relative to anchor\n\n\n  for (i = 0; i < n; ++i) {\n    bounds.union(boxes[i].translate(dx[i], dy[i]));\n  }\n\n  x = get(opt.anchor, X);\n  y = get(opt.anchor, Y);\n\n  switch (get(opt.anchor, Column)) {\n    case End:\n      x -= bounds.width();\n      break;\n\n    case Middle:\n      x -= bounds.width() / 2;\n  }\n\n  switch (get(opt.anchor, Row)) {\n    case End:\n      y -= bounds.height();\n      break;\n\n    case Middle:\n      y -= bounds.height() / 2;\n  }\n\n  x = Math.round(x);\n  y = Math.round(y); // update mark positions, bounds, dirty\n\n  bounds.clear();\n\n  for (i = 0; i < n; ++i) {\n    groups[i].mark.bounds.clear();\n  }\n\n  for (i = 0; i < n; ++i) {\n    g = groups[i];\n    g.x += dx[i] += x;\n    g.y += dy[i] += y;\n    bounds.union(g.mark.bounds.union(g.bounds.translate(dx[i], dy[i])));\n    if (dirty) view.dirty(g);\n  }\n\n  return bounds;\n}\nfunction trellisLayout(view, group, opt) {\n  var views = gridLayoutGroups(group),\n      groups = views.marks,\n      bbox = opt.bounds === Flush ? boundFlush : boundFull,\n      off = opt.offset,\n      ncols = opt.columns || groups.length,\n      nrows = ncols <= 0 ? 1 : Math.ceil(groups.length / ncols),\n      cells = nrows * ncols,\n      x,\n      y,\n      x2,\n      y2,\n      anchor,\n      band,\n      offset; // -- initial grid layout\n\n  const bounds = gridLayout(view, groups, opt);\n  if (bounds.empty()) bounds.set(0, 0, 0, 0); // empty grid\n  // -- layout grid headers and footers --\n  // perform row header layout\n\n  if (views.rowheaders) {\n    band = get(opt.headerBand, Row, null);\n    x = layoutHeaders(view, views.rowheaders, groups, ncols, nrows, -get(off, 'rowHeader'), min, 0, bbox, 'x1', 0, ncols, 1, band);\n  } // perform column header layout\n\n\n  if (views.colheaders) {\n    band = get(opt.headerBand, Column, null);\n    y = layoutHeaders(view, views.colheaders, groups, ncols, ncols, -get(off, 'columnHeader'), min, 1, bbox, 'y1', 0, 1, ncols, band);\n  } // perform row footer layout\n\n\n  if (views.rowfooters) {\n    band = get(opt.footerBand, Row, null);\n    x2 = layoutHeaders(view, views.rowfooters, groups, ncols, nrows, get(off, 'rowFooter'), max, 0, bbox, 'x2', ncols - 1, ncols, 1, band);\n  } // perform column footer layout\n\n\n  if (views.colfooters) {\n    band = get(opt.footerBand, Column, null);\n    y2 = layoutHeaders(view, views.colfooters, groups, ncols, ncols, get(off, 'columnFooter'), max, 1, bbox, 'y2', cells - ncols, 1, ncols, band);\n  } // perform row title layout\n\n\n  if (views.rowtitle) {\n    anchor = get(opt.titleAnchor, Row);\n    offset = get(off, 'rowTitle');\n    offset = anchor === End ? x2 + offset : x - offset;\n    band = get(opt.titleBand, Row, 0.5);\n    layoutTitle(view, views.rowtitle, offset, 0, bounds, band);\n  } // perform column title layout\n\n\n  if (views.coltitle) {\n    anchor = get(opt.titleAnchor, Column);\n    offset = get(off, 'columnTitle');\n    offset = anchor === End ? y2 + offset : y - offset;\n    band = get(opt.titleBand, Column, 0.5);\n    layoutTitle(view, views.coltitle, offset, 1, bounds, band);\n  }\n}\n\nfunction boundFlush(item, field) {\n  return field === 'x1' ? item.x || 0 : field === 'y1' ? item.y || 0 : field === 'x2' ? (item.x || 0) + (item.width || 0) : field === 'y2' ? (item.y || 0) + (item.height || 0) : undefined;\n}\n\nfunction boundFull(item, field) {\n  return item.bounds[field];\n}\n\nfunction layoutHeaders(view, headers, groups, ncols, limit, offset, agg, isX, bound, bf, start, stride, back, band) {\n  var n = groups.length,\n      init = 0,\n      edge = 0,\n      i,\n      j,\n      k,\n      m,\n      b,\n      h,\n      g,\n      x,\n      y; // if no groups, early exit and return 0\n\n  if (!n) return init; // compute margin\n\n  for (i = start; i < n; i += stride) {\n    if (groups[i]) init = agg(init, bound(groups[i], bf));\n  } // if no headers, return margin calculation\n\n\n  if (!headers.length) return init; // check if number of headers exceeds number of rows or columns\n\n  if (headers.length > limit) {\n    view.warn('Grid headers exceed limit: ' + limit);\n    headers = headers.slice(0, limit);\n  } // apply offset\n\n\n  init += offset; // clear mark bounds for all headers\n\n  for (j = 0, m = headers.length; j < m; ++j) {\n    view.dirty(headers[j]);\n    headers[j].mark.bounds.clear();\n  } // layout each header\n\n\n  for (i = start, j = 0, m = headers.length; j < m; ++j, i += stride) {\n    h = headers[j];\n    b = h.mark.bounds; // search for nearest group to align to\n    // necessary if table has empty cells\n\n    for (k = i; k >= 0 && (g = groups[k]) == null; k -= back); // assign coordinates and update bounds\n\n\n    if (isX) {\n      x = band == null ? g.x : Math.round(g.bounds.x1 + band * g.bounds.width());\n      y = init;\n    } else {\n      x = init;\n      y = band == null ? g.y : Math.round(g.bounds.y1 + band * g.bounds.height());\n    }\n\n    b.union(h.bounds.translate(x - (h.x || 0), y - (h.y || 0)));\n    h.x = x;\n    h.y = y;\n    view.dirty(h); // update current edge of layout bounds\n\n    edge = agg(edge, b[bf]);\n  }\n\n  return edge;\n}\n\nfunction layoutTitle(view, g, offset, isX, bounds, band) {\n  if (!g) return;\n  view.dirty(g); // compute title coordinates\n\n  var x = offset,\n      y = offset;\n  isX ? x = Math.round(bounds.x1 + band * bounds.width()) : y = Math.round(bounds.y1 + band * bounds.height()); // assign coordinates and update bounds\n\n  g.bounds.translate(x - (g.x || 0), y - (g.y || 0));\n  g.mark.bounds.clear().union(g.bounds);\n  g.x = x;\n  g.y = y; // queue title for redraw\n\n  view.dirty(g);\n}\n\nfunction lookup$1(config, orient) {\n  const opt = config[orient] || {};\n  return (key, d) => opt[key] != null ? opt[key] : config[key] != null ? config[key] : d;\n} // if legends specify offset directly, use the maximum specified value\n\n\nfunction offsets(legends, value) {\n  let max = -Infinity;\n  legends.forEach(item => {\n    if (item.offset != null) max = Math.max(max, item.offset);\n  });\n  return max > -Infinity ? max : value;\n}\n\nfunction legendParams(g, orient, config, xb, yb, w, h) {\n  const _ = lookup$1(config, orient),\n        offset = offsets(g, _('offset', 0)),\n        anchor = _('anchor', Start),\n        mult = anchor === End ? 1 : anchor === Middle ? 0.5 : 0;\n\n  const p = {\n    align: Each,\n    bounds: _('bounds', Flush),\n    columns: _('direction') === 'vertical' ? 1 : g.length,\n    padding: _('margin', 8),\n    center: _('center'),\n    nodirty: true\n  };\n\n  switch (orient) {\n    case Left:\n      p.anchor = {\n        x: Math.floor(xb.x1) - offset,\n        column: End,\n        y: mult * (h || xb.height() + 2 * xb.y1),\n        row: anchor\n      };\n      break;\n\n    case Right:\n      p.anchor = {\n        x: Math.ceil(xb.x2) + offset,\n        y: mult * (h || xb.height() + 2 * xb.y1),\n        row: anchor\n      };\n      break;\n\n    case Top:\n      p.anchor = {\n        y: Math.floor(yb.y1) - offset,\n        row: End,\n        x: mult * (w || yb.width() + 2 * yb.x1),\n        column: anchor\n      };\n      break;\n\n    case Bottom:\n      p.anchor = {\n        y: Math.ceil(yb.y2) + offset,\n        x: mult * (w || yb.width() + 2 * yb.x1),\n        column: anchor\n      };\n      break;\n\n    case TopLeft:\n      p.anchor = {\n        x: offset,\n        y: offset\n      };\n      break;\n\n    case TopRight:\n      p.anchor = {\n        x: w - offset,\n        y: offset,\n        column: End\n      };\n      break;\n\n    case BottomLeft:\n      p.anchor = {\n        x: offset,\n        y: h - offset,\n        row: End\n      };\n      break;\n\n    case BottomRight:\n      p.anchor = {\n        x: w - offset,\n        y: h - offset,\n        column: End,\n        row: End\n      };\n      break;\n  }\n\n  return p;\n}\nfunction legendLayout(view, legend) {\n  var item = legend.items[0],\n      datum = item.datum,\n      orient = item.orient,\n      bounds = item.bounds,\n      x = item.x,\n      y = item.y,\n      w,\n      h; // cache current bounds for later comparison\n\n  item._bounds ? item._bounds.clear().union(bounds) : item._bounds = bounds.clone();\n  bounds.clear(); // adjust legend to accommodate padding and title\n\n  legendGroupLayout(view, item, item.items[0].items[0]); // aggregate bounds to determine size, and include origin\n\n  bounds = legendBounds(item, bounds);\n  w = 2 * item.padding;\n  h = 2 * item.padding;\n\n  if (!bounds.empty()) {\n    w = Math.ceil(bounds.width() + w);\n    h = Math.ceil(bounds.height() + h);\n  }\n\n  if (datum.type === Symbols) {\n    legendEntryLayout(item.items[0].items[0].items[0].items);\n  }\n\n  if (orient !== None) {\n    item.x = x = 0;\n    item.y = y = 0;\n  }\n\n  item.width = w;\n  item.height = h;\n  boundStroke(bounds.set(x, y, x + w, y + h), item);\n  item.mark.bounds.clear().union(bounds);\n  return item;\n}\n\nfunction legendBounds(item, b) {\n  // aggregate item bounds\n  item.items.forEach(_ => b.union(_.bounds)); // anchor to legend origin\n\n  b.x1 = item.padding;\n  b.y1 = item.padding;\n  return b;\n}\n\nfunction legendGroupLayout(view, item, entry) {\n  var pad = item.padding,\n      ex = pad - entry.x,\n      ey = pad - entry.y;\n\n  if (!item.datum.title) {\n    if (ex || ey) translate(view, entry, ex, ey);\n  } else {\n    var title = item.items[1].items[0],\n        anchor = title.anchor,\n        tpad = item.titlePadding || 0,\n        tx = pad - title.x,\n        ty = pad - title.y;\n\n    switch (title.orient) {\n      case Left:\n        ex += Math.ceil(title.bounds.width()) + tpad;\n        break;\n\n      case Right:\n      case Bottom:\n        break;\n\n      default:\n        ey += title.bounds.height() + tpad;\n    }\n\n    if (ex || ey) translate(view, entry, ex, ey);\n\n    switch (title.orient) {\n      case Left:\n        ty += legendTitleOffset(item, entry, title, anchor, 1, 1);\n        break;\n\n      case Right:\n        tx += legendTitleOffset(item, entry, title, End, 0, 0) + tpad;\n        ty += legendTitleOffset(item, entry, title, anchor, 1, 1);\n        break;\n\n      case Bottom:\n        tx += legendTitleOffset(item, entry, title, anchor, 0, 0);\n        ty += legendTitleOffset(item, entry, title, End, -1, 0, 1) + tpad;\n        break;\n\n      default:\n        tx += legendTitleOffset(item, entry, title, anchor, 0, 0);\n    }\n\n    if (tx || ty) translate(view, title, tx, ty); // translate legend if title pushes into negative coordinates\n\n    if ((tx = Math.round(title.bounds.x1 - pad)) < 0) {\n      translate(view, entry, -tx, 0);\n      translate(view, title, -tx, 0);\n    }\n  }\n}\n\nfunction legendTitleOffset(item, entry, title, anchor, y, lr, noBar) {\n  const grad = item.datum.type !== 'symbol',\n        vgrad = title.datum.vgrad,\n        e = grad && (lr || !vgrad) && !noBar ? entry.items[0] : entry,\n        s = e.bounds[y ? 'y2' : 'x2'] - item.padding,\n        u = vgrad && lr ? s : 0,\n        v = vgrad && lr ? 0 : s,\n        o = y <= 0 ? 0 : multiLineOffset(title);\n  return Math.round(anchor === Start ? u : anchor === End ? v - o : 0.5 * (s - o));\n}\n\nfunction translate(view, item, dx, dy) {\n  item.x += dx;\n  item.y += dy;\n  item.bounds.translate(dx, dy);\n  item.mark.bounds.translate(dx, dy);\n  view.dirty(item);\n}\n\nfunction legendEntryLayout(entries) {\n  // get max widths for each column\n  const widths = entries.reduce((w, g) => {\n    w[g.column] = Math.max(g.bounds.x2 - g.x, w[g.column] || 0);\n    return w;\n  }, {}); // set dimensions of legend entry groups\n\n  entries.forEach(g => {\n    g.width = widths[g.column];\n    g.height = g.bounds.y2 - g.y;\n  });\n}\n\nfunction titleLayout(view, mark, width, height, viewBounds) {\n  var group = mark.items[0],\n      frame = group.frame,\n      orient = group.orient,\n      anchor = group.anchor,\n      offset = group.offset,\n      padding = group.padding,\n      title = group.items[0].items[0],\n      subtitle = group.items[1] && group.items[1].items[0],\n      end = orient === Left || orient === Right ? height : width,\n      start = 0,\n      x = 0,\n      y = 0,\n      sx = 0,\n      sy = 0,\n      pos;\n\n  if (frame !== Group) {\n    orient === Left ? (start = viewBounds.y2, end = viewBounds.y1) : orient === Right ? (start = viewBounds.y1, end = viewBounds.y2) : (start = viewBounds.x1, end = viewBounds.x2);\n  } else if (orient === Left) {\n    start = height, end = 0;\n  }\n\n  pos = anchor === Start ? start : anchor === End ? end : (start + end) / 2;\n\n  if (subtitle && subtitle.text) {\n    // position subtitle\n    switch (orient) {\n      case Top:\n      case Bottom:\n        sy = title.bounds.height() + padding;\n        break;\n\n      case Left:\n        sx = title.bounds.width() + padding;\n        break;\n\n      case Right:\n        sx = -title.bounds.width() - padding;\n        break;\n    }\n\n    tempBounds.clear().union(subtitle.bounds);\n    tempBounds.translate(sx - (subtitle.x || 0), sy - (subtitle.y || 0));\n\n    if (set(subtitle, 'x', sx) | set(subtitle, 'y', sy)) {\n      view.dirty(subtitle);\n      subtitle.bounds.clear().union(tempBounds);\n      subtitle.mark.bounds.clear().union(tempBounds);\n      view.dirty(subtitle);\n    }\n\n    tempBounds.clear().union(subtitle.bounds);\n  } else {\n    tempBounds.clear();\n  }\n\n  tempBounds.union(title.bounds); // position title group\n\n  switch (orient) {\n    case Top:\n      x = pos;\n      y = viewBounds.y1 - tempBounds.height() - offset;\n      break;\n\n    case Left:\n      x = viewBounds.x1 - tempBounds.width() - offset;\n      y = pos;\n      break;\n\n    case Right:\n      x = viewBounds.x2 + tempBounds.width() + offset;\n      y = pos;\n      break;\n\n    case Bottom:\n      x = pos;\n      y = viewBounds.y2 + offset;\n      break;\n\n    default:\n      x = group.x;\n      y = group.y;\n  }\n\n  if (set(group, 'x', x) | set(group, 'y', y)) {\n    tempBounds.translate(x, y);\n    view.dirty(group);\n    group.bounds.clear().union(tempBounds);\n    mark.bounds.clear().union(tempBounds);\n    view.dirty(group);\n  }\n\n  return group.bounds;\n}\n\n/**\n * Layout view elements such as axes and legends.\n * Also performs size adjustments.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - Scenegraph mark of groups to layout.\n */\n\nfunction ViewLayout(params) {\n  Transform.call(this, null, params);\n}\ninherits(ViewLayout, Transform, {\n  transform(_, pulse) {\n    const view = pulse.dataflow;\n\n    _.mark.items.forEach(group => {\n      if (_.layout) trellisLayout(view, group, _.layout);\n      layoutGroup(view, group, _);\n    });\n\n    return shouldReflow(_.mark.group) ? pulse.reflow() : pulse;\n  }\n\n});\n\nfunction shouldReflow(group) {\n  // We typically should reflow if layout is invoked (#2568), as child items\n  // may have resized and reflow ensures group bounds are re-calculated.\n  // However, legend entries have a special exception to avoid instability.\n  // For example, if a selected legend symbol gains a stroke on hover,\n  // we don't want to re-position subsequent elements in the legend.\n  return group && group.mark.role !== 'legend-entry';\n}\n\nfunction layoutGroup(view, group, _) {\n  var items = group.items,\n      width = Math.max(0, group.width || 0),\n      height = Math.max(0, group.height || 0),\n      viewBounds = new Bounds().set(0, 0, width, height),\n      xBounds = viewBounds.clone(),\n      yBounds = viewBounds.clone(),\n      legends = [],\n      title,\n      mark,\n      orient,\n      b,\n      i,\n      n; // layout axes, gather legends, collect bounds\n\n  for (i = 0, n = items.length; i < n; ++i) {\n    mark = items[i];\n\n    switch (mark.role) {\n      case AxisRole:\n        b = isYAxis(mark) ? xBounds : yBounds;\n        b.union(axisLayout(view, mark, width, height));\n        break;\n\n      case TitleRole:\n        title = mark;\n        break;\n\n      case LegendRole:\n        legends.push(legendLayout(view, mark));\n        break;\n\n      case FrameRole:\n      case ScopeRole:\n      case RowHeader:\n      case RowFooter:\n      case RowTitle:\n      case ColHeader:\n      case ColFooter:\n      case ColTitle:\n        xBounds.union(mark.bounds);\n        yBounds.union(mark.bounds);\n        break;\n\n      default:\n        viewBounds.union(mark.bounds);\n    }\n  } // layout legends, adjust viewBounds\n\n\n  if (legends.length) {\n    // group legends by orient\n    const l = {};\n    legends.forEach(item => {\n      orient = item.orient || Right;\n      if (orient !== None) (l[orient] || (l[orient] = [])).push(item);\n    }); // perform grid layout for each orient group\n\n    for (const orient in l) {\n      const g = l[orient];\n      gridLayout(view, g, legendParams(g, orient, _.legends, xBounds, yBounds, width, height));\n    } // update view bounds\n\n\n    legends.forEach(item => {\n      const b = item.bounds;\n\n      if (!b.equals(item._bounds)) {\n        item.bounds = item._bounds;\n        view.dirty(item); // dirty previous location\n\n        item.bounds = b;\n        view.dirty(item);\n      }\n\n      if (_.autosize && _.autosize.type === Fit) {\n        // For autosize fit, incorporate the orthogonal dimension only.\n        // Legends that overrun the chart area will then be clipped;\n        // otherwise the chart area gets reduced to nothing!\n        switch (item.orient) {\n          case Left:\n          case Right:\n            viewBounds.add(b.x1, 0).add(b.x2, 0);\n            break;\n\n          case Top:\n          case Bottom:\n            viewBounds.add(0, b.y1).add(0, b.y2);\n        }\n      } else {\n        viewBounds.union(b);\n      }\n    });\n  } // combine bounding boxes\n\n\n  viewBounds.union(xBounds).union(yBounds); // layout title, adjust bounds\n\n  if (title) {\n    viewBounds.union(titleLayout(view, title, width, height, viewBounds));\n  } // override aggregated view bounds if content is clipped\n\n\n  if (group.clip) {\n    viewBounds.set(0, 0, group.width || 0, group.height || 0);\n  } // perform size adjustment\n\n\n  viewSizeLayout(view, group, viewBounds, _);\n}\n\nfunction viewSizeLayout(view, group, viewBounds, _) {\n  const auto = _.autosize || {},\n        type = auto.type;\n  if (view._autosize < 1 || !type) return;\n  let viewWidth = view._width,\n      viewHeight = view._height,\n      width = Math.max(0, group.width || 0),\n      left = Math.max(0, Math.ceil(-viewBounds.x1)),\n      height = Math.max(0, group.height || 0),\n      top = Math.max(0, Math.ceil(-viewBounds.y1));\n  const right = Math.max(0, Math.ceil(viewBounds.x2 - width)),\n        bottom = Math.max(0, Math.ceil(viewBounds.y2 - height));\n\n  if (auto.contains === Padding) {\n    const padding = view.padding();\n    viewWidth -= padding.left + padding.right;\n    viewHeight -= padding.top + padding.bottom;\n  }\n\n  if (type === None) {\n    left = 0;\n    top = 0;\n    width = viewWidth;\n    height = viewHeight;\n  } else if (type === Fit) {\n    width = Math.max(0, viewWidth - left - right);\n    height = Math.max(0, viewHeight - top - bottom);\n  } else if (type === FitX) {\n    width = Math.max(0, viewWidth - left - right);\n    viewHeight = height + top + bottom;\n  } else if (type === FitY) {\n    viewWidth = width + left + right;\n    height = Math.max(0, viewHeight - top - bottom);\n  } else if (type === Pad) {\n    viewWidth = width + left + right;\n    viewHeight = height + top + bottom;\n  }\n\n  view._resizeView(viewWidth, viewHeight, width, height, [left, top], auto.resize);\n}\n\nexport { Bound as bound, Identifier as identifier, Mark as mark, Overlap as overlap, Render as render, ViewLayout as viewlayout };\n","export default function sum(values, valueof) {\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value = +value) {\n        sum += value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if (value = +valueof(value, ++index, values)) {\n        sum += value;\n      }\n    }\n  }\n  return sum;\n}\n","import { Transform, ingest, tupleid, stableCompare } from 'vega-dataflow';\nimport { tickCount, tickFormat, validTicks, tickValues, SymbolLegend, labelFormat, labelValues, GradientLegend, scaleFraction, labelFraction, scale, isContinuous, Sequential, Linear, Time, UTC, Pow, Sqrt, Ordinal, scaleImplicit, Log, Symlog, isLogarithmic, BinOrdinal, bandSpace, isInterpolating, interpolateRange, quantizeInterpolator, interpolateColors, interpolate, Band, Point, scheme, Threshold, Quantile, Quantize, Diverging } from 'vega-scale';\nimport { inherits, isArray, error, fastmap, falsy, isFunction, constant, peek, one, toSet, isString, zoomLog, zoomPow, zoomSymlog, zoomLinear, stringValue } from 'vega-util';\nimport { sum, range } from 'd3-array';\nimport { interpolateRound, interpolate as interpolate$1 } from 'd3-interpolate';\n\n/**\n * Generates axis ticks for visualizing a spatial scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate ticks for.\n * @param {*} [params.count=10] - The approximate number of ticks, or\n *   desired tick interval, to use.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n *   These must be legal domain values for the provided scale.\n *   If provided, the count argument is ignored.\n * @param {function(*):string} [params.formatSpecifier] - A format specifier\n *   to use in conjunction with scale.tickFormat. Legal values are\n *   any valid d3 4.0 format specifier.\n * @param {function(*):string} [params.format] - The format function to use.\n *   If provided, the formatSpecifier argument is ignored.\n */\n\nfunction AxisTicks(params) {\n  Transform.call(this, null, params);\n}\ninherits(AxisTicks, Transform, {\n  transform(_, pulse) {\n    if (this.value && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n\n    var locale = pulse.dataflow.locale(),\n        out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n        ticks = this.value,\n        scale = _.scale,\n        tally = _.count == null ? _.values ? _.values.length : 10 : _.count,\n        count = tickCount(scale, tally, _.minstep),\n        format = _.format || tickFormat(locale, scale, count, _.formatSpecifier, _.formatType, !!_.values),\n        values = _.values ? validTicks(scale, _.values, count) : tickValues(scale, count);\n    if (ticks) out.rem = ticks;\n    ticks = values.map((value, i) => ingest({\n      index: i / (values.length - 1 || 1),\n      value: value,\n      label: format(value)\n    }));\n\n    if (_.extra && ticks.length) {\n      // add an extra tick pegged to the initial domain value\n      // this is used to generate axes with 'binned' domains\n      ticks.push(ingest({\n        index: -1,\n        extra: {\n          value: ticks[0].value\n        },\n        label: ''\n      }));\n    }\n\n    out.source = ticks;\n    out.add = ticks;\n    this.value = ticks;\n    return out;\n  }\n\n});\n\n/**\n * Joins a set of data elements against a set of visual items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): object} [params.item] - An item generator function.\n * @param {function(object): *} [params.key] - The key field associating data and visual items.\n */\n\nfunction DataJoin(params) {\n  Transform.call(this, null, params);\n}\n\nfunction defaultItemCreate() {\n  return ingest({});\n}\n\nfunction newMap(key) {\n  const map = fastmap().test(t => t.exit);\n\n  map.lookup = t => map.get(key(t));\n\n  return map;\n}\n\ninherits(DataJoin, Transform, {\n  transform(_, pulse) {\n    var df = pulse.dataflow,\n        out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n        item = _.item || defaultItemCreate,\n        key = _.key || tupleid,\n        map = this.value; // prevent transient (e.g., hover) requests from\n    // cascading across marks derived from marks\n\n    if (isArray(out.encode)) {\n      out.encode = null;\n    }\n\n    if (map && (_.modified('key') || pulse.modified(key))) {\n      error('DataJoin does not support modified key function or fields.');\n    }\n\n    if (!map) {\n      pulse = pulse.addAll();\n      this.value = map = newMap(key);\n    }\n\n    pulse.visit(pulse.ADD, t => {\n      const k = key(t);\n      let x = map.get(k);\n\n      if (x) {\n        if (x.exit) {\n          map.empty--;\n          out.add.push(x);\n        } else {\n          out.mod.push(x);\n        }\n      } else {\n        x = item(t);\n        map.set(k, x);\n        out.add.push(x);\n      }\n\n      x.datum = t;\n      x.exit = false;\n    });\n    pulse.visit(pulse.MOD, t => {\n      const k = key(t),\n            x = map.get(k);\n\n      if (x) {\n        x.datum = t;\n        out.mod.push(x);\n      }\n    });\n    pulse.visit(pulse.REM, t => {\n      const k = key(t),\n            x = map.get(k);\n\n      if (t === x.datum && !x.exit) {\n        out.rem.push(x);\n        x.exit = true;\n        ++map.empty;\n      }\n    });\n    if (pulse.changed(pulse.ADD_MOD)) out.modifies('datum');\n\n    if (pulse.clean() || _.clean && map.empty > df.cleanThreshold) {\n      df.runAfter(map.clean);\n    }\n\n    return out;\n  }\n\n});\n\n/**\n * Invokes encoding functions for visual items.\n * @constructor\n * @param {object} params - The parameters to the encoding functions. This\n *   parameter object will be passed through to all invoked encoding functions.\n * @param {object} [params.mod=false] - Flag indicating if tuples in the input\n *   mod set that are unmodified by encoders should be included in the output.\n * @param {object} param.encoders - The encoding functions\n * @param {function(object, object): boolean} [param.encoders.update] - Update encoding set\n * @param {function(object, object): boolean} [param.encoders.enter] - Enter encoding set\n * @param {function(object, object): boolean} [param.encoders.exit] - Exit encoding set\n */\n\nfunction Encode(params) {\n  Transform.call(this, null, params);\n}\ninherits(Encode, Transform, {\n  transform(_, pulse) {\n    var out = pulse.fork(pulse.ADD_REM),\n        fmod = _.mod || false,\n        encoders = _.encoders,\n        encode = pulse.encode; // if an array, the encode directive includes additional sets\n    // that must be defined in order for the primary set to be invoked\n    // e.g., only run the update set if the hover set is defined\n\n    if (isArray(encode)) {\n      if (out.changed() || encode.every(e => encoders[e])) {\n        encode = encode[0];\n        out.encode = null; // consume targeted encode directive\n      } else {\n        return pulse.StopPropagation;\n      }\n    } // marshall encoder functions\n\n\n    var reenter = encode === 'enter',\n        update = encoders.update || falsy,\n        enter = encoders.enter || falsy,\n        exit = encoders.exit || falsy,\n        set = (encode && !reenter ? encoders[encode] : update) || falsy;\n\n    if (pulse.changed(pulse.ADD)) {\n      pulse.visit(pulse.ADD, t => {\n        enter(t, _);\n        update(t, _);\n      });\n      out.modifies(enter.output);\n      out.modifies(update.output);\n\n      if (set !== falsy && set !== update) {\n        pulse.visit(pulse.ADD, t => {\n          set(t, _);\n        });\n        out.modifies(set.output);\n      }\n    }\n\n    if (pulse.changed(pulse.REM) && exit !== falsy) {\n      pulse.visit(pulse.REM, t => {\n        exit(t, _);\n      });\n      out.modifies(exit.output);\n    }\n\n    if (reenter || set !== falsy) {\n      const flag = pulse.MOD | (_.modified() ? pulse.REFLOW : 0);\n\n      if (reenter) {\n        pulse.visit(flag, t => {\n          const mod = enter(t, _) || fmod;\n          if (set(t, _) || mod) out.mod.push(t);\n        });\n        if (out.mod.length) out.modifies(enter.output);\n      } else {\n        pulse.visit(flag, t => {\n          if (set(t, _) || fmod) out.mod.push(t);\n        });\n      }\n\n      if (out.mod.length) out.modifies(set.output);\n    }\n\n    return out.changed() ? out : pulse.StopPropagation;\n  }\n\n});\n\n/**\n * Generates legend entries for visualizing a scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate items for.\n * @param {*} [params.count=5] - The approximate number of items, or\n *   desired tick interval, to use.\n * @param {*} [params.limit] - The maximum number of entries to\n *   include in a symbol legend.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n *   These must be legal domain values for the provided scale.\n *   If provided, the count argument is ignored.\n * @param {string} [params.formatSpecifier] - A format specifier\n *   to use in conjunction with scale.tickFormat. Legal values are\n *   any valid D3 format specifier string.\n * @param {function(*):string} [params.format] - The format function to use.\n *   If provided, the formatSpecifier argument is ignored.\n */\n\nfunction LegendEntries(params) {\n  Transform.call(this, [], params);\n}\ninherits(LegendEntries, Transform, {\n  transform(_, pulse) {\n    if (this.value != null && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n\n    var locale = pulse.dataflow.locale(),\n        out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n        items = this.value,\n        type = _.type || SymbolLegend,\n        scale = _.scale,\n        limit = +_.limit,\n        count = tickCount(scale, _.count == null ? 5 : _.count, _.minstep),\n        lskip = !!_.values || type === SymbolLegend,\n        format = _.format || labelFormat(locale, scale, count, type, _.formatSpecifier, _.formatType, lskip),\n        values = _.values || labelValues(scale, count),\n        domain,\n        fraction,\n        size,\n        offset,\n        ellipsis;\n    if (items) out.rem = items;\n\n    if (type === SymbolLegend) {\n      if (limit && values.length > limit) {\n        pulse.dataflow.warn('Symbol legend count exceeds limit, filtering items.');\n        items = values.slice(0, limit - 1);\n        ellipsis = true;\n      } else {\n        items = values;\n      }\n\n      if (isFunction(size = _.size)) {\n        // if first value maps to size zero, remove from list (vega#717)\n        if (!_.values && scale(items[0]) === 0) {\n          items = items.slice(1);\n        } // compute size offset for legend entries\n\n\n        offset = items.reduce((max, value) => Math.max(max, size(value, _)), 0);\n      } else {\n        size = constant(offset = size || 8);\n      }\n\n      items = items.map((value, index) => ingest({\n        index: index,\n        label: format(value, index, items),\n        value: value,\n        offset: offset,\n        size: size(value, _)\n      }));\n\n      if (ellipsis) {\n        ellipsis = values[items.length];\n        items.push(ingest({\n          index: items.length,\n          label: \"\\u2026\".concat(values.length - items.length, \" entries\"),\n          value: ellipsis,\n          offset: offset,\n          size: size(ellipsis, _)\n        }));\n      }\n    } else if (type === GradientLegend) {\n      domain = scale.domain(), fraction = scaleFraction(scale, domain[0], peek(domain)); // if automatic label generation produces 2 or fewer values,\n      // use the domain end points instead (fixes vega/vega#1364)\n\n      if (values.length < 3 && !_.values && domain[0] !== peek(domain)) {\n        values = [domain[0], peek(domain)];\n      }\n\n      items = values.map((value, index) => ingest({\n        index: index,\n        label: format(value, index, values),\n        value: value,\n        perc: fraction(value)\n      }));\n    } else {\n      size = values.length - 1;\n      fraction = labelFraction(scale);\n      items = values.map((value, index) => ingest({\n        index: index,\n        label: format(value, index, values),\n        value: value,\n        perc: index ? fraction(value) : 0,\n        perc2: index === size ? 1 : fraction(values[index + 1])\n      }));\n    }\n\n    out.source = items;\n    out.add = items;\n    this.value = items;\n    return out;\n  }\n\n});\n\nconst sourceX = t => t.source.x;\n\nconst sourceY = t => t.source.y;\n\nconst targetX = t => t.target.x;\n\nconst targetY = t => t.target.y;\n/**\n * Layout paths linking source and target elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\n\n\nfunction LinkPath(params) {\n  Transform.call(this, {}, params);\n}\nLinkPath.Definition = {\n  'type': 'LinkPath',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'sourceX',\n    'type': 'field',\n    'default': 'source.x'\n  }, {\n    'name': 'sourceY',\n    'type': 'field',\n    'default': 'source.y'\n  }, {\n    'name': 'targetX',\n    'type': 'field',\n    'default': 'target.x'\n  }, {\n    'name': 'targetY',\n    'type': 'field',\n    'default': 'target.y'\n  }, {\n    'name': 'orient',\n    'type': 'enum',\n    'default': 'vertical',\n    'values': ['horizontal', 'vertical', 'radial']\n  }, {\n    'name': 'shape',\n    'type': 'enum',\n    'default': 'line',\n    'values': ['line', 'arc', 'curve', 'diagonal', 'orthogonal']\n  }, {\n    'name': 'require',\n    'type': 'signal'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'path'\n  }]\n};\ninherits(LinkPath, Transform, {\n  transform(_, pulse) {\n    var sx = _.sourceX || sourceX,\n        sy = _.sourceY || sourceY,\n        tx = _.targetX || targetX,\n        ty = _.targetY || targetY,\n        as = _.as || 'path',\n        orient = _.orient || 'vertical',\n        shape = _.shape || 'line',\n        path = Paths.get(shape + '-' + orient) || Paths.get(shape);\n\n    if (!path) {\n      error('LinkPath unsupported type: ' + _.shape + (_.orient ? '-' + _.orient : ''));\n    }\n\n    pulse.visit(pulse.SOURCE, t => {\n      t[as] = path(sx(t), sy(t), tx(t), ty(t));\n    });\n    return pulse.reflow(_.modified()).modifies(as);\n  }\n\n});\n\nconst line = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'L' + tx + ',' + ty;\n\nconst lineR = (sa, sr, ta, tr) => line(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\n\nconst arc = (sx, sy, tx, ty) => {\n  var dx = tx - sx,\n      dy = ty - sy,\n      rr = Math.sqrt(dx * dx + dy * dy) / 2,\n      ra = 180 * Math.atan2(dy, dx) / Math.PI;\n  return 'M' + sx + ',' + sy + 'A' + rr + ',' + rr + ' ' + ra + ' 0 1' + ' ' + tx + ',' + ty;\n};\n\nconst arcR = (sa, sr, ta, tr) => arc(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\n\nconst curve = (sx, sy, tx, ty) => {\n  const dx = tx - sx,\n        dy = ty - sy,\n        ix = 0.2 * (dx + dy),\n        iy = 0.2 * (dy - dx);\n  return 'M' + sx + ',' + sy + 'C' + (sx + ix) + ',' + (sy + iy) + ' ' + (tx + iy) + ',' + (ty - ix) + ' ' + tx + ',' + ty;\n};\n\nconst curveR = (sa, sr, ta, tr) => curve(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\n\nconst orthoX = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'V' + ty + 'H' + tx;\n\nconst orthoY = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'H' + tx + 'V' + ty;\n\nconst orthoR = (sa, sr, ta, tr) => {\n  const sc = Math.cos(sa),\n        ss = Math.sin(sa),\n        tc = Math.cos(ta),\n        ts = Math.sin(ta),\n        sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa;\n  return 'M' + sr * sc + ',' + sr * ss + 'A' + sr + ',' + sr + ' 0 0,' + (sf ? 1 : 0) + ' ' + sr * tc + ',' + sr * ts + 'L' + tr * tc + ',' + tr * ts;\n};\n\nconst diagonalX = (sx, sy, tx, ty) => {\n  const m = (sx + tx) / 2;\n  return 'M' + sx + ',' + sy + 'C' + m + ',' + sy + ' ' + m + ',' + ty + ' ' + tx + ',' + ty;\n};\n\nconst diagonalY = (sx, sy, tx, ty) => {\n  const m = (sy + ty) / 2;\n  return 'M' + sx + ',' + sy + 'C' + sx + ',' + m + ' ' + tx + ',' + m + ' ' + tx + ',' + ty;\n};\n\nconst diagonalR = (sa, sr, ta, tr) => {\n  const sc = Math.cos(sa),\n        ss = Math.sin(sa),\n        tc = Math.cos(ta),\n        ts = Math.sin(ta),\n        mr = (sr + tr) / 2;\n  return 'M' + sr * sc + ',' + sr * ss + 'C' + mr * sc + ',' + mr * ss + ' ' + mr * tc + ',' + mr * ts + ' ' + tr * tc + ',' + tr * ts;\n};\n\nconst Paths = fastmap({\n  'line': line,\n  'line-radial': lineR,\n  'arc': arc,\n  'arc-radial': arcR,\n  'curve': curve,\n  'curve-radial': curveR,\n  'orthogonal-horizontal': orthoX,\n  'orthogonal-vertical': orthoY,\n  'orthogonal-radial': orthoR,\n  'diagonal-horizontal': diagonalX,\n  'diagonal-vertical': diagonalY,\n  'diagonal-radial': diagonalR\n});\n\n/**\n * Pie and donut chart layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size pie segments.\n * @param {number} [params.startAngle=0] - The start angle (in radians) of the layout.\n * @param {number} [params.endAngle=2π] - The end angle (in radians) of the layout.\n * @param {boolean} [params.sort] - Boolean flag for sorting sectors by value.\n */\n\nfunction Pie(params) {\n  Transform.call(this, null, params);\n}\nPie.Definition = {\n  'type': 'Pie',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'startAngle',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'endAngle',\n    'type': 'number',\n    'default': 6.283185307179586\n  }, {\n    'name': 'sort',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['startAngle', 'endAngle']\n  }]\n};\ninherits(Pie, Transform, {\n  transform(_, pulse) {\n    var as = _.as || ['startAngle', 'endAngle'],\n        startAngle = as[0],\n        endAngle = as[1],\n        field = _.field || one,\n        start = _.startAngle || 0,\n        stop = _.endAngle != null ? _.endAngle : 2 * Math.PI,\n        data = pulse.source,\n        values = data.map(field),\n        n = values.length,\n        a = start,\n        k = (stop - start) / sum(values),\n        index = range(n),\n        i,\n        t,\n        v;\n\n    if (_.sort) {\n      index.sort((a, b) => values[a] - values[b]);\n    }\n\n    for (i = 0; i < n; ++i) {\n      v = values[index[i]];\n      t = data[index[i]];\n      t[startAngle] = a;\n      t[endAngle] = a += v * k;\n    }\n\n    this.value = values;\n    return pulse.reflow(_.modified()).modifies(as);\n  }\n\n});\n\nconst DEFAULT_COUNT = 5;\n\nfunction includeZero(scale) {\n  const type = scale.type;\n  return !scale.bins && (type === Linear || type === Pow || type === Sqrt);\n}\n\nfunction includePad(type) {\n  return isContinuous(type) && type !== Sequential;\n}\n\nconst SKIP = toSet(['set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount', 'domain', 'domainMin', 'domainMid', 'domainMax', 'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins', 'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma']);\n/**\n * Maintains a scale function mapping data values to visual channels.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\n\nfunction Scale(params) {\n  Transform.call(this, null, params);\n  this.modified(true); // always treat as modified\n}\ninherits(Scale, Transform, {\n  transform(_, pulse) {\n    var df = pulse.dataflow,\n        scale$1 = this.value,\n        key = scaleKey(_);\n\n    if (!scale$1 || key !== scale$1.type) {\n      this.value = scale$1 = scale(key)();\n    }\n\n    for (key in _) if (!SKIP[key]) {\n      // padding is a scale property for band/point but not others\n      if (key === 'padding' && includePad(scale$1.type)) continue; // invoke scale property setter, raise warning if not found\n\n      isFunction(scale$1[key]) ? scale$1[key](_[key]) : df.warn('Unsupported scale property: ' + key);\n    }\n\n    configureRange(scale$1, _, configureBins(scale$1, _, configureDomain(scale$1, _, df)));\n    return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n  }\n\n});\n\nfunction scaleKey(_) {\n  var t = _.type,\n      d = '',\n      n; // backwards compatibility pre Vega 5.\n\n  if (t === Sequential) return Sequential + '-' + Linear;\n\n  if (isContinuousColor(_)) {\n    n = _.rawDomain ? _.rawDomain.length : _.domain ? _.domain.length + +(_.domainMid != null) : 0;\n    d = n === 2 ? Sequential + '-' : n === 3 ? Diverging + '-' : '';\n  }\n\n  return (d + t || Linear).toLowerCase();\n}\n\nfunction isContinuousColor(_) {\n  const t = _.type;\n  return isContinuous(t) && t !== Time && t !== UTC && (_.scheme || _.range && _.range.length && _.range.every(isString));\n}\n\nfunction configureDomain(scale, _, df) {\n  // check raw domain, if provided use that and exit early\n  const raw = rawDomain(scale, _.domainRaw, df);\n  if (raw > -1) return raw;\n  var domain = _.domain,\n      type = scale.type,\n      zero = _.zero || _.zero === undefined && includeZero(scale),\n      n,\n      mid;\n  if (!domain) return 0; // adjust continuous domain for minimum pixel padding\n\n  if (includePad(type) && _.padding && domain[0] !== peek(domain)) {\n    domain = padDomain(type, domain, _.range, _.padding, _.exponent, _.constant);\n  } // adjust domain based on zero, min, max settings\n\n\n  if (zero || _.domainMin != null || _.domainMax != null || _.domainMid != null) {\n    n = (domain = domain.slice()).length - 1 || 1;\n\n    if (zero) {\n      if (domain[0] > 0) domain[0] = 0;\n      if (domain[n] < 0) domain[n] = 0;\n    }\n\n    if (_.domainMin != null) domain[0] = _.domainMin;\n    if (_.domainMax != null) domain[n] = _.domainMax;\n\n    if (_.domainMid != null) {\n      mid = _.domainMid;\n      const i = mid > domain[n] ? n + 1 : mid < domain[0] ? 0 : n;\n      if (i !== n) df.warn('Scale domainMid exceeds domain min or max.', mid);\n      domain.splice(i, 0, mid);\n    }\n  } // set the scale domain\n\n\n  scale.domain(domainCheck(type, domain, df)); // if ordinal scale domain is defined, prevent implicit\n  // domain construction as side-effect of scale lookup\n\n  if (type === Ordinal) {\n    scale.unknown(_.domainImplicit ? scaleImplicit : undefined);\n  } // perform 'nice' adjustment as requested\n\n\n  if (_.nice && scale.nice) {\n    scale.nice(_.nice !== true && tickCount(scale, _.nice) || null);\n  } // return the cardinality of the domain\n\n\n  return domain.length;\n}\n\nfunction rawDomain(scale, raw, df) {\n  if (raw) {\n    scale.domain(domainCheck(scale.type, raw, df));\n    return raw.length;\n  } else {\n    return -1;\n  }\n}\n\nfunction padDomain(type, domain, range, pad, exponent, constant) {\n  var span = Math.abs(peek(range) - range[0]),\n      frac = span / (span - 2 * pad),\n      d = type === Log ? zoomLog(domain, null, frac) : type === Sqrt ? zoomPow(domain, null, frac, 0.5) : type === Pow ? zoomPow(domain, null, frac, exponent || 1) : type === Symlog ? zoomSymlog(domain, null, frac, constant || 1) : zoomLinear(domain, null, frac);\n  domain = domain.slice();\n  domain[0] = d[0];\n  domain[domain.length - 1] = d[1];\n  return domain;\n}\n\nfunction domainCheck(type, domain, df) {\n  if (isLogarithmic(type)) {\n    // sum signs of domain values\n    // if all pos or all neg, abs(sum) === domain.length\n    var s = Math.abs(domain.reduce((s, v) => s + (v < 0 ? -1 : v > 0 ? 1 : 0), 0));\n\n    if (s !== domain.length) {\n      df.warn('Log scale domain includes zero: ' + stringValue(domain));\n    }\n  }\n\n  return domain;\n}\n\nfunction configureBins(scale, _, count) {\n  let bins = _.bins;\n\n  if (bins && !isArray(bins)) {\n    // generate bin boundary array\n    const domain = scale.domain(),\n          lo = domain[0],\n          hi = peek(domain),\n          step = bins.step;\n    let start = bins.start == null ? lo : bins.start,\n        stop = bins.stop == null ? hi : bins.stop;\n    if (!step) error('Scale bins parameter missing step property.');\n    if (start < lo) start = step * Math.ceil(lo / step);\n    if (stop > hi) stop = step * Math.floor(hi / step);\n    bins = range(start, stop + step / 2, step);\n  }\n\n  if (bins) {\n    // assign bin boundaries to scale instance\n    scale.bins = bins;\n  } else if (scale.bins) {\n    // no current bins, remove bins if previously set\n    delete scale.bins;\n  } // special handling for bin-ordinal scales\n\n\n  if (scale.type === BinOrdinal) {\n    if (!bins) {\n      // the domain specifies the bins\n      scale.bins = scale.domain();\n    } else if (!_.domain && !_.domainRaw) {\n      // the bins specify the domain\n      scale.domain(bins);\n      count = bins.length;\n    }\n  } // return domain cardinality\n\n\n  return count;\n}\n\nfunction configureRange(scale, _, count) {\n  var type = scale.type,\n      round = _.round || false,\n      range = _.range; // if range step specified, calculate full range extent\n\n  if (_.rangeStep != null) {\n    range = configureRangeStep(type, _, count);\n  } // else if a range scheme is defined, use that\n  else if (_.scheme) {\n      range = configureScheme(type, _, count);\n\n      if (isFunction(range)) {\n        if (scale.interpolator) {\n          return scale.interpolator(range);\n        } else {\n          error(\"Scale type \".concat(type, \" does not support interpolating color schemes.\"));\n        }\n      }\n    } // given a range array for an interpolating scale, convert to interpolator\n\n\n  if (range && isInterpolating(type)) {\n    return scale.interpolator(interpolateColors(flip(range, _.reverse), _.interpolate, _.interpolateGamma));\n  } // configure rounding / interpolation\n\n\n  if (range && _.interpolate && scale.interpolate) {\n    scale.interpolate(interpolate(_.interpolate, _.interpolateGamma));\n  } else if (isFunction(scale.round)) {\n    scale.round(round);\n  } else if (isFunction(scale.rangeRound)) {\n    scale.interpolate(round ? interpolateRound : interpolate$1);\n  }\n\n  if (range) scale.range(flip(range, _.reverse));\n}\n\nfunction configureRangeStep(type, _, count) {\n  if (type !== Band && type !== Point) {\n    error('Only band and point scales support rangeStep.');\n  } // calculate full range based on requested step size and padding\n\n\n  var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0,\n      inner = type === Point ? 1 : (_.paddingInner != null ? _.paddingInner : _.padding) || 0;\n  return [0, _.rangeStep * bandSpace(count, inner, outer)];\n}\n\nfunction configureScheme(type, _, count) {\n  var extent = _.schemeExtent,\n      name,\n      scheme$1;\n\n  if (isArray(_.scheme)) {\n    scheme$1 = interpolateColors(_.scheme, _.interpolate, _.interpolateGamma);\n  } else {\n    name = _.scheme.toLowerCase();\n    scheme$1 = scheme(name);\n    if (!scheme$1) error(\"Unrecognized scheme name: \".concat(_.scheme));\n  } // determine size for potential discrete range\n\n\n  count = type === Threshold ? count + 1 : type === BinOrdinal ? count - 1 : type === Quantile || type === Quantize ? +_.schemeCount || DEFAULT_COUNT : count; // adjust and/or quantize scheme as appropriate\n\n  return isInterpolating(type) ? adjustScheme(scheme$1, extent, _.reverse) : isFunction(scheme$1) ? quantizeInterpolator(adjustScheme(scheme$1, extent), count) : type === Ordinal ? scheme$1 : scheme$1.slice(0, count);\n}\n\nfunction adjustScheme(scheme, extent, reverse) {\n  return isFunction(scheme) && (extent || reverse) ? interpolateRange(scheme, flip(extent || [0, 1], reverse)) : scheme;\n}\n\nfunction flip(array, reverse) {\n  return reverse ? array.slice().reverse() : array;\n}\n\n/**\n * Sorts scenegraph items in the pulse source array.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n *   function for sorting tuples.\n */\n\nfunction SortItems(params) {\n  Transform.call(this, null, params);\n}\ninherits(SortItems, Transform, {\n  transform(_, pulse) {\n    const mod = _.modified('sort') || pulse.changed(pulse.ADD) || pulse.modified(_.sort.fields) || pulse.modified('datum');\n    if (mod) pulse.source.sort(stableCompare(_.sort));\n    this.modified(mod);\n    return pulse;\n  }\n\n});\n\nconst Zero = 'zero',\n      Center = 'center',\n      Normalize = 'normalize',\n      DefOutput = ['y0', 'y1'];\n/**\n * Stack layout for visualization elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to stack.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {function(object,object): number} [params.sort] - A comparator for stack sorting.\n * @param {string} [offset='zero'] - Stack baseline offset. One of 'zero', 'center', 'normalize'.\n */\n\nfunction Stack(params) {\n  Transform.call(this, null, params);\n}\nStack.Definition = {\n  'type': 'Stack',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'offset',\n    'type': 'enum',\n    'default': Zero,\n    'values': [Zero, Center, Normalize]\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': DefOutput\n  }]\n};\ninherits(Stack, Transform, {\n  transform(_, pulse) {\n    var as = _.as || DefOutput,\n        y0 = as[0],\n        y1 = as[1],\n        sort = stableCompare(_.sort),\n        field = _.field || one,\n        stack = _.offset === Center ? stackCenter : _.offset === Normalize ? stackNormalize : stackZero,\n        groups,\n        i,\n        n,\n        max; // partition, sum, and sort the stack groups\n\n    groups = partition(pulse.source, _.groupby, sort, field); // compute stack layouts per group\n\n    for (i = 0, n = groups.length, max = groups.max; i < n; ++i) {\n      stack(groups[i], max, field, y0, y1);\n    }\n\n    return pulse.reflow(_.modified()).modifies(as);\n  }\n\n});\n\nfunction stackCenter(group, max, field, y0, y1) {\n  var last = (max - group.sum) / 2,\n      m = group.length,\n      j = 0,\n      t;\n\n  for (; j < m; ++j) {\n    t = group[j];\n    t[y0] = last;\n    t[y1] = last += Math.abs(field(t));\n  }\n}\n\nfunction stackNormalize(group, max, field, y0, y1) {\n  var scale = 1 / group.sum,\n      last = 0,\n      m = group.length,\n      j = 0,\n      v = 0,\n      t;\n\n  for (; j < m; ++j) {\n    t = group[j];\n    t[y0] = last;\n    t[y1] = last = scale * (v += Math.abs(field(t)));\n  }\n}\n\nfunction stackZero(group, max, field, y0, y1) {\n  var lastPos = 0,\n      lastNeg = 0,\n      m = group.length,\n      j = 0,\n      v,\n      t;\n\n  for (; j < m; ++j) {\n    t = group[j];\n    v = +field(t);\n\n    if (v < 0) {\n      t[y0] = lastNeg;\n      t[y1] = lastNeg += v;\n    } else {\n      t[y0] = lastPos;\n      t[y1] = lastPos += v;\n    }\n  }\n}\n\nfunction partition(data, groupby, sort, field) {\n  var groups = [],\n      get = f => f(t),\n      map,\n      i,\n      n,\n      m,\n      t,\n      k,\n      g,\n      s,\n      max; // partition data points into stack groups\n\n\n  if (groupby == null) {\n    groups.push(data.slice());\n  } else {\n    for (map = {}, i = 0, n = data.length; i < n; ++i) {\n      t = data[i];\n      k = groupby.map(get);\n      g = map[k];\n\n      if (!g) {\n        map[k] = g = [];\n        groups.push(g);\n      }\n\n      g.push(t);\n    }\n  } // compute sums of groups, sort groups as needed\n\n\n  for (k = 0, max = 0, m = groups.length; k < m; ++k) {\n    g = groups[k];\n\n    for (i = 0, s = 0, n = g.length; i < n; ++i) {\n      s += Math.abs(field(g[i]));\n    }\n\n    g.sum = s;\n    if (s > max) max = s;\n    if (sort) g.sort(sort);\n  }\n\n  groups.max = max;\n  return groups;\n}\n\nexport { AxisTicks as axisticks, DataJoin as datajoin, Encode as encode, LegendEntries as legendentries, LinkPath as linkpath, Pie as pie, Scale as scale, SortItems as sortitems, Stack as stack };\n","export default x => x;\n","function streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n  constructor() {\n    this._partials = new Float64Array(32);\n    this._n = 0;\n  }\n  add(x) {\n    const p = this._partials;\n    let i = 0;\n    for (let j = 0; j < this._n && j < 32; j++) {\n      const y = p[j],\n        hi = x + y,\n        lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n      if (lo) p[i++] = lo;\n      x = hi;\n    }\n    p[i] = x;\n    this._n = i + 1;\n    return this;\n  }\n  valueOf() {\n    const p = this._partials;\n    let n = this._n, x, y, lo, hi = 0;\n    if (n > 0) {\n      hi = p[--n];\n      while (n > 0) {\n        x = hi;\n        y = p[--n];\n        hi = x + y;\n        lo = y - (hi - x);\n        if (lo) break;\n      }\n      if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n        y = lo * 2;\n        x = hi + y;\n        if (y == x - hi) hi = x;\n      }\n    }\n    return hi;\n  }\n}\n\nexport function fsum(values, valueof) {\n  const adder = new Adder();\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value = +value) {\n        adder.add(value);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if (value = +valueof(value, ++index, values)) {\n        adder.add(value);\n      }\n    }\n  }\n  return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n  const adder = new Adder();\n  let index = -1;\n  return Float64Array.from(values, valueof === undefined\n      ? v => adder.add(+v || 0)\n      : v => adder.add(+valueof(v, ++index, values) || 0)\n  );\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n    areaRingSum = new Adder(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n    areaSum.add(abs(areaRingSum));\n    areaRingSum = new Adder();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum = new Adder();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop,\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x < x0) x0 = x;\n  if (x > x1) x1 = x;\n  if (y < y0) y0 = y;\n  if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n    Y0 = 0,\n    Z0 = 0,\n    X1 = 0,\n    Y1 = 0,\n    Z1 = 0,\n    X2 = 0,\n    Y2 = 0,\n    Z2 = 0,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar centroidStream = {\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.point = centroidPoint;\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  },\n  result: function() {\n    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n        : Z1 ? [X1 / Z1, Y1 / Z1]\n        : Z0 ? [X0 / Z0, Y0 / Z0]\n        : [NaN, NaN];\n    X0 = Y0 = Z0 =\n    X1 = Y1 = Z1 =\n    X2 = Y2 = Z2 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint(x, y) {\n  X0 += x;\n  Y0 += y;\n  ++Z0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream.point = centroidPointLine;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n  centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n  centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream.point = centroidPointRing;\n  centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - x0,\n      dy = y - y0,\n      z = sqrt(dx * dx + dy * dy);\n\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n\n  z = y0 * x - x0 * y;\n  X2 += z * (x0 + x);\n  Y2 += z * (y0 + y);\n  Z2 += z * 3;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, tau);\n        break;\n      }\n    }\n  },\n  result: noop\n};\n","import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: noop,\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = noop;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum = new Adder();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n  this._string = [];\n}\n\nPathString.prototype = {\n  _radius: 4.5,\n  _circle: circle(4.5),\n  pointRadius: function(_) {\n    if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n    return this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._string.push(\"Z\");\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._string.push(\"M\", x, \",\", y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._string.push(\"L\", x, \",\", y);\n        break;\n      }\n      default: {\n        if (this._circle == null) this._circle = circle(this._radius);\n        this._string.push(\"M\", x, \",\", y, this._circle);\n        break;\n      }\n    }\n  },\n  result: function() {\n    if (this._string.length) {\n      var result = this._string.join(\"\");\n      this._string = [];\n      return result;\n    } else {\n      return null;\n    }\n  }\n};\n\nfunction circle(radius) {\n  return \"m0,\" + radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n      + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n  var pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      stream(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    stream(object, projectionStream(pathArea));\n    return pathArea.result();\n  };\n\n  path.measure = function(object) {\n    stream(object, projectionStream(pathMeasure));\n    return pathMeasure.result();\n  };\n\n  path.bounds = function(object) {\n    stream(object, projectionStream(pathBounds));\n    return pathBounds.result();\n  };\n\n  path.centroid = function(object) {\n    stream(object, projectionStream(pathCentroid));\n    return pathCentroid.result();\n  };\n\n  path.projection = function(_) {\n    return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  return path.projection(projection).context(context);\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y, m) {\n      line.push([x, y, m]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: noop,\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n  return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    if (pointEqual(p0, p1)) {\n      if (!p0[2] && !p1[2]) {\n        stream.lineStart();\n        for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n        stream.lineEnd();\n        return;\n      }\n      // handle degenerate cases by moving the point\n      p1[0] += 2 * epsilon;\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n  return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n  return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n  var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n  if (abs(point[0]) <= pi)\n    return point[0];\n  else\n    return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n  var lambda = longitude(point),\n      phi = point[1],\n      sinPhi = sin(phi),\n      normal = [sin(lambda), -cos(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  var sum = new Adder();\n\n  if (sinPhi === 1) phi = halfPi + epsilon;\n  else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = longitude(point0),\n        phi0 = point0[1] / 2 + quarterPi,\n        sinPhi0 = sin(phi0),\n        cosPhi0 = cos(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = longitude(point1),\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin(phi1),\n          cosPhi1 = cos(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n      angle += antimeridian ? delta + sign * tau : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n","function* flatten(arrays) {\n  for (const array of arrays) {\n    yield* array;\n  }\n}\n\nexport default function merge(arrays) {\n  return Array.from(flatten(arrays));\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n  return function(sink) {\n    var line = clipLine(sink),\n        ringBuffer = clipBuffer(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = merge(segments);\n        var startInside = polygonContains(polygon, start);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      line.point(lambda, phi);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      ringSink.point(lambda, phi);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n}\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? pi : -pi,\n          delta = abs(lambda1 - lambda0);\n      if (abs(delta - pi) < epsilon) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n        if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n        if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = sin(lambda0 - lambda1);\n  return abs(sinLambda0Lambda1) > epsilon\n      ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n          - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * halfPi;\n    stream.point(-pi, phi);\n    stream.point(0, phi);\n    stream.point(pi, phi);\n    stream.point(pi, 0);\n    stream.point(pi, -phi);\n    stream.point(0, -phi);\n    stream.point(-pi, -phi);\n    stream.point(-pi, 0);\n    stream.point(-pi, phi);\n  } else if (abs(from[0] - to[0]) > epsilon) {\n    var lambda = from[0] < to[0] ? pi : -pi;\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert && b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n  };\n\n  return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n  return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = cos(deltaPhi),\n      sinDeltaPhi = sin(deltaPhi),\n      cosDeltaGamma = cos(deltaGamma),\n      sinDeltaGamma = sin(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      asin(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      asin(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\nexport default function(rotate) {\n  rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  };\n\n  return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = cos(radius),\n      sinRadius = sin(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * tau;\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = cartesian(point), point[0] -= cosRadius;\n  cartesianNormalizeInPlace(point);\n  var radius = acos(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n  var center = constant([0, 0]),\n      radius = constant(90),\n      precision = constant(6),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= degrees, x[1] *= degrees;\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * radians,\n        p = precision.apply(this, arguments) * radians;\n    ring = [];\n    rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n  };\n\n  return circle;\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n  var cr = cos(radius),\n      delta = 6 * radians,\n      smallRadius = cr > 0,\n      notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    circleStream(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return cos(lambda) * cos(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n            point1[2] = 1;\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1], 2);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1], 3);\n            }\n          }\n        }\n        if (v && (!point0 || !pointEqual(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = cartesian(a),\n        pb = cartesian(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = cartesianCross(pa, pb),\n        n2n2 = cartesianDot(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = cartesianCross(n1, n2),\n        A = cartesianScale(n1, c1),\n        B = cartesianScale(n2, c2);\n    cartesianAddInPlace(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = cartesianDot(A, u),\n        uu = cartesianDot(u, u),\n        t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = sqrt(t2),\n        q = cartesianScale(u, (-w - t) / uu);\n    cartesianAddInPlace(q, A);\n    q = spherical(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = abs(delta - pi) < epsilon,\n        meridian = polar || delta < epsilon;\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = cartesianScale(u, (-w + t) / uu);\n      cartesianAddInPlace(q1, A);\n      return [q, spherical(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : pi - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n        : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n        : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = clipBuffer(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = merge(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (clipLine(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n","export default function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nexport function transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n  var clip = projection.clipExtent && projection.clipExtent();\n  projection.scale(150).translate([0, 0]);\n  if (clip != null) projection.clipExtent(null);\n  geoStream(object, projection.stream(boundsStream));\n  fitBounds(boundsStream.result());\n  if (clip != null) projection.clipExtent(clip);\n  return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n  return fit(projection, function(b) {\n    var w = extent[1][0] - extent[0][0],\n        h = extent[1][1] - extent[0][1],\n        k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n        x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n        y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n  return fit(projection, function(b) {\n    var w = +width,\n        k = w / (b[1][0] - b[0][0]),\n        x = (w - k * (b[1][0] + b[0][0])) / 2,\n        y = -k * b[0][1];\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n  return fit(projection, function(b) {\n    var h = +height,\n        k = h / (b[1][1] - b[0][1]),\n        x = -k * b[0][0],\n        y = (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return transformer({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = sqrt(a * a + b * b + c * c),\n          phi2 = asin(c /= m),\n          lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = cartesian([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n  point: function(x, y) {\n    this.stream.point(x * radians, y * radians);\n  }\n});\n\nfunction transformRotate(rotate) {\n  return transformer({\n    point: function(x, y) {\n      var r = rotate(x, y);\n      return this.stream.point(r[0], r[1]);\n    }\n  });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [dx + k * x, dy - k * y];\n  }\n  transform.invert = function(x, y) {\n    return [(x - dx) / k * sx, (dy - y) / k * sy];\n  };\n  return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n  if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n  var cosAlpha = cos(alpha),\n      sinAlpha = sin(alpha),\n      a = cosAlpha * k,\n      b = sinAlpha * k,\n      ai = cosAlpha / k,\n      bi = sinAlpha / k,\n      ci = (sinAlpha * dy - cosAlpha * dx) / k,\n      fi = (sinAlpha * dx + cosAlpha * dy) / k;\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [a * x - b * y + dx, dy - b * x - a * y];\n  }\n  transform.invert = function(x, y) {\n    return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n  };\n  return transform;\n}\n\nexport default function projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n      alpha = 0, // post-rotate angle\n      sx = 1, // reflectX\n      sy = 1, // reflectX\n      theta = null, preclip = clipAntimeridian, // pre-clip angle\n      x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n      delta2 = 0.5, // precision\n      projectResample,\n      projectTransform,\n      projectRotateTransform,\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    return projectRotateTransform(point[0] * radians, point[1] * radians);\n  }\n\n  function invert(point) {\n    point = projectRotateTransform.invert(point[0], point[1]);\n    return point && [point[0] * degrees, point[1] * degrees];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n  };\n\n  projection.preclip = function(_) {\n    return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n  };\n\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n  };\n\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n  };\n\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n  };\n\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  function recenter() {\n    var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n        transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n    rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n    projectTransform = compose(project, transform);\n    projectRotateTransform = compose(rotate, projectTransform);\n    projectResample = resample(projectTransform, delta2);\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = pi / 3,\n      m = projectionMutator(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n  };\n\n  return p;\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = cos(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, sin(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, asin(y * cosPhi0)];\n  };\n\n  return forward;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n  var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n  function project(x, y) {\n    var r = sqrt(c - 2 * n * sin(y)) / n;\n    return [r * sin(x *= n), r0 - r * cos(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y,\n        l = atan2(x, abs(r0y)) * sign(r0y);\n    if (r0y * n < 0)\n      l -= pi * sign(x) * sign(r0y);\n    return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n  return conicEqualArea()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n  var cache,\n      cacheStream,\n      lower48 = albers(), lower48Point,\n      alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null,\n        (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return fitExtent(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return fitSize(albersUsa, size, object);\n  };\n\n  albersUsa.fitWidth = function(width, object) {\n    return fitWidth(albersUsa, width, object);\n  };\n\n  albersUsa.fitHeight = function(height, object) {\n    return fitHeight(albersUsa, height, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos(x),\n        cy = cos(y),\n        k = scale(cx * cy);\n        if (k === Infinity) return [2, 0];\n    return [\n      k * cy * sin(x),\n      k * sin(y)\n    ];\n  }\n}\n\nexport function azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin(c),\n        cc = cos(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z && y * sc / z)\n    ];\n  }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n  return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n  return 2 * asin(z / 2);\n});\n\nexport default function() {\n  return projection(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n  return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n  return z;\n});\n\nexport default function() {\n  return projection(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n  return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n  var m = projection(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = pi * scale(),\n        t = m(rotation(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n  return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n      f = cy0 * pow(tany(y0), n) / n;\n\n  if (!n) return mercatorRaw;\n\n  function project(x, y) {\n    if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n    else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n    var r = f / pow(tany(y), n);\n    return [r * sin(n * x), f - r * cos(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n      l = atan2(x, abs(fy)) * sign(fy);\n    if (fy * n < 0)\n      l -= pi * sign(x) * sign(fy);\n    return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n  return projection(equirectangularRaw)\n      .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if (abs(n) < epsilon) return equirectangularRaw;\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * sin(nx), g - gy * cos(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y,\n        l = atan2(x, abs(gy)) * sign(gy);\n    if (gy * n < 0)\n      l -= pi * sign(x) * sign(gy);\n    return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n    A2 = -0.081106,\n    A3 = 0.000893,\n    A4 = 0.003796,\n    M = sqrt(3) / 2,\n    iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n  var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n  return [\n    lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n    l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n  ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n  var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n  for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n    fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n    fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n    l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n    if (abs(delta) < epsilon2) break;\n  }\n  return [\n    M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n    asin(sin(l) / M)\n  ];\n};\n\nexport default function() {\n  return projection(equalEarthRaw)\n      .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n  var cy = cos(y), k = cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n  return projection(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n      alpha = 0, ca, sa, // angle\n      x0 = null, y0, x1, y1, // clip extent\n      kx = 1, ky = 1,\n      transform = transformer({\n        point: function(x, y) {\n          var p = projection([x, y])\n          this.stream.point(p[0], p[1]);\n        }\n      }),\n      postclip = identity,\n      cache,\n      cacheStream;\n\n  function reset() {\n    kx = k * sx;\n    ky = k * sy;\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  function projection (p) {\n    var x = p[0] * kx, y = p[1] * ky;\n    if (alpha) {\n      var t = y * ca - x * sa;\n      x = x * ca + y * sa;\n      y = t;\n    }    \n    return [x + tx, y + ty];\n  }\n  projection.invert = function(p) {\n    var x = p[0] - tx, y = p[1] - ty;\n    if (alpha) {\n      var t = y * ca + x * sa;\n      x = x * ca - y * sa;\n      y = t;\n    }\n    return [x / kx, y / ky];\n  };\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n  };\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, reset()) : k;\n  };\n  projection.translate = function(_) {\n    return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n  }\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n  };\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n  };\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n  };\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  return projection;\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2;\n  return [\n    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n  ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta;\n  do {\n    var phi2 = phi * phi, phi4 = phi2 * phi2;\n    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n  } while (abs(delta) > epsilon && --i > 0);\n  return [\n    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n    phi\n  ];\n};\n\nexport default function() {\n  return projection(naturalEarth1Raw)\n      .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n  return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n  return projection(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n  var cy = cos(y), k = 1 + cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n  return 2 * atan(z);\n});\n\nexport default function() {\n  return projection(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n  return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n  var m = mercatorProjection(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\n}\n","export var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var ceil = Math.ceil;\nexport var cos = Math.cos;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var pow = Math.pow;\nexport var round = Math.round;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sin = Math.sin;\nexport var tan = Math.tan;\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var sqrt1_2 = Math.SQRT1_2;\nexport var sqrt2 = sqrt(2);\nexport var sqrtPi = sqrt(pi);\nexport var tau = pi * 2;\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport function sinci(x) {\n  return x ? x / Math.sin(x) : 1;\n}\n\nexport function asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function sqrt(x) {\n  return x > 0 ? Math.sqrt(x) : 0;\n}\n\nexport function tanh(x) {\n  x = exp(2 * x);\n  return (x - 1) / (x + 1);\n}\n\nexport function sinh(x) {\n  return (exp(x) - exp(-x)) / 2;\n}\n\nexport function cosh(x) {\n  return (exp(x) + exp(-x)) / 2;\n}\n\nexport function arsinh(x) {\n  return log(x + sqrt(x * x + 1));\n}\n\nexport function arcosh(x) {\n  return log(x + sqrt(x * x - 1));\n}\n","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, asin, cos, epsilon, halfPi, pi, sin, sqrt2} from \"./math.js\";\n\nexport function mollweideBromleyTheta(cp, phi) {\n  var cpsinPhi = cp * sin(phi), i = 30, delta;\n  do phi -= delta = (phi + sin(phi) - cpsinPhi) / (1 + cos(phi));\n  while (abs(delta) > epsilon && --i > 0);\n  return phi / 2;\n}\n\nexport function mollweideBromleyRaw(cx, cy, cp) {\n\n  function forward(lambda, phi) {\n    return [cx * lambda * cos(phi = mollweideBromleyTheta(cp, phi)), cy * sin(phi)];\n  }\n\n  forward.invert = function(x, y) {\n    return y = asin(y / cy), [x / (cx * cos(y)), asin((2 * y + sin(2 * y)) / cp)];\n  };\n\n  return forward;\n}\n\nexport var mollweideRaw = mollweideBromleyRaw(sqrt2 / halfPi, sqrt2, pi);\n\nexport default function() {\n  return projection(mollweideRaw)\n      .scale(169.529);\n}\n","import { geoPath, geoAlbers, geoAlbersUsa, geoAzimuthalEqualArea, geoAzimuthalEquidistant, geoConicConformal, geoConicEqualArea, geoConicEquidistant, geoEqualEarth, geoEquirectangular, geoGnomonic, geoIdentity, geoMercator, geoNaturalEarth1, geoOrthographic, geoStereographic, geoTransverseMercator } from 'd3-geo';\nimport { geoMollweide } from 'd3-geo-projection';\n\nconst defaultPath = geoPath();\nconst projectionProperties = [// standard properties in d3-geo\n'clipAngle', 'clipExtent', 'scale', 'translate', 'center', 'rotate', 'parallels', 'precision', 'reflectX', 'reflectY', // extended properties in d3-geo-projections\n'coefficient', 'distance', 'fraction', 'lobes', 'parallel', 'radius', 'ratio', 'spacing', 'tilt'];\n/**\n * Augment projections with their type and a copy method.\n */\n\nfunction create(type, constructor) {\n  return function projection() {\n    const p = constructor();\n    p.type = type;\n    p.path = geoPath().projection(p);\n\n    p.copy = p.copy || function () {\n      const c = projection();\n      projectionProperties.forEach(prop => {\n        if (p[prop]) c[prop](p[prop]());\n      });\n      c.path.pointRadius(p.path.pointRadius());\n      return c;\n    };\n\n    return p;\n  };\n}\n\nfunction projection(type, proj) {\n  if (!type || typeof type !== 'string') {\n    throw new Error('Projection type must be a name string.');\n  }\n\n  type = type.toLowerCase();\n\n  if (arguments.length > 1) {\n    projections[type] = create(type, proj);\n    return this;\n  } else {\n    return projections[type] || null;\n  }\n}\nfunction getProjectionPath(proj) {\n  return proj && proj.path || defaultPath;\n}\nconst projections = {\n  // base d3-geo projection types\n  albers: geoAlbers,\n  albersusa: geoAlbersUsa,\n  azimuthalequalarea: geoAzimuthalEqualArea,\n  azimuthalequidistant: geoAzimuthalEquidistant,\n  conicconformal: geoConicConformal,\n  conicequalarea: geoConicEqualArea,\n  conicequidistant: geoConicEquidistant,\n  equalEarth: geoEqualEarth,\n  equirectangular: geoEquirectangular,\n  gnomonic: geoGnomonic,\n  identity: geoIdentity,\n  mercator: geoMercator,\n  mollweide: geoMollweide,\n  naturalEarth1: geoNaturalEarth1,\n  orthographic: geoOrthographic,\n  stereographic: geoStereographic,\n  transversemercator: geoTransverseMercator\n};\n\nfor (const key in projections) {\n  projection(key, projections[key]);\n}\n\nexport { getProjectionPath, projection, projectionProperties };\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n  var y = range(y0, y1 - epsilon, dy).concat(y1);\n  return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n  var x = range(x0, x1 - epsilon, dx).concat(x1);\n  return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n  var x1, x0, X1, X0,\n      y1, y0, Y1, Y0,\n      dx = 10, dy = dx, DX = 90, DY = 360,\n      x, y, X, Y,\n      precision = 2.5;\n\n  function graticule() {\n    return {type: \"MultiLineString\", coordinates: lines()};\n  }\n\n  function lines() {\n    return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n        .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n        .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n        .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n  }\n\n  graticule.lines = function() {\n    return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n  };\n\n  graticule.outline = function() {\n    return {\n      type: \"Polygon\",\n      coordinates: [\n        X(X0).concat(\n        Y(Y1).slice(1),\n        X(X1).reverse().slice(1),\n        Y(Y0).reverse().slice(1))\n      ]\n    };\n  };\n\n  graticule.extent = function(_) {\n    if (!arguments.length) return graticule.extentMinor();\n    return graticule.extentMajor(_).extentMinor(_);\n  };\n\n  graticule.extentMajor = function(_) {\n    if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n    X0 = +_[0][0], X1 = +_[1][0];\n    Y0 = +_[0][1], Y1 = +_[1][1];\n    if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n    if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.extentMinor = function(_) {\n    if (!arguments.length) return [[x0, y0], [x1, y1]];\n    x0 = +_[0][0], x1 = +_[1][0];\n    y0 = +_[0][1], y1 = +_[1][1];\n    if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n    if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.step = function(_) {\n    if (!arguments.length) return graticule.stepMinor();\n    return graticule.stepMajor(_).stepMinor(_);\n  };\n\n  graticule.stepMajor = function(_) {\n    if (!arguments.length) return [DX, DY];\n    DX = +_[0], DY = +_[1];\n    return graticule;\n  };\n\n  graticule.stepMinor = function(_) {\n    if (!arguments.length) return [dx, dy];\n    dx = +_[0], dy = +_[1];\n    return graticule;\n  };\n\n  graticule.precision = function(_) {\n    if (!arguments.length) return precision;\n    precision = +_;\n    x = graticuleX(y0, y1, 90);\n    y = graticuleY(x0, x1, precision);\n    X = graticuleX(Y0, Y1, 90);\n    Y = graticuleY(X0, X1, precision);\n    return graticule;\n  };\n\n  return graticule\n      .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n      .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n  return graticule()();\n}\n","import { Transform, rederive, ingest, replace } from 'vega-dataflow';\nimport { error, extent, inherits, identity, isArray, isFunction, isNumber, constant, array, one, accessorName, accessorFields, field, extend, toSet, zero } from 'vega-util';\nimport { range, tickStep, max, sum } from 'd3-array';\nimport { bandwidthNRD } from 'vega-statistics';\nimport { getProjectionPath, projectionProperties, projection } from 'vega-projection';\nimport { geoGraticule } from 'd3-geo';\nimport { rgb } from 'd3-color';\nimport { canvas } from 'vega-canvas';\n\nfunction noop() {}\n\nconst cases = [[], [[[1.0, 1.5], [0.5, 1.0]]], [[[1.5, 1.0], [1.0, 1.5]]], [[[1.5, 1.0], [0.5, 1.0]]], [[[1.0, 0.5], [1.5, 1.0]]], [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]], [[[1.0, 0.5], [1.0, 1.5]]], [[[1.0, 0.5], [0.5, 1.0]]], [[[0.5, 1.0], [1.0, 0.5]]], [[[1.0, 1.5], [1.0, 0.5]]], [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]], [[[1.5, 1.0], [1.0, 0.5]]], [[[0.5, 1.0], [1.5, 1.0]]], [[[1.0, 1.5], [1.5, 1.0]]], [[[0.5, 1.0], [1.0, 1.5]]], []]; // Implementation adapted from d3/d3-contour. Thanks!\n\nfunction contours () {\n  var dx = 1,\n      dy = 1,\n      smooth = smoothLinear;\n\n  function contours(values, tz) {\n    return tz.map(value => contour(values, value));\n  } // Accumulate, smooth contour rings, assign holes to exterior rings.\n  // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n\n\n  function contour(values, value) {\n    var polygons = [],\n        holes = [];\n    isorings(values, value, ring => {\n      smooth(ring, values, value);\n      if (area(ring) > 0) polygons.push([ring]);else holes.push(ring);\n    });\n    holes.forEach(hole => {\n      for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n        if (contains((polygon = polygons[i])[0], hole) !== -1) {\n          polygon.push(hole);\n          return;\n        }\n      }\n    });\n    return {\n      type: 'MultiPolygon',\n      value: value,\n      coordinates: polygons\n    };\n  } // Marching squares with isolines stitched into rings.\n  // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n\n\n  function isorings(values, value, callback) {\n    var fragmentByStart = new Array(),\n        fragmentByEnd = new Array(),\n        x,\n        y,\n        t0,\n        t1,\n        t2,\n        t3; // Special case for the first row (y = -1, t2 = t3 = 0).\n\n    x = y = -1;\n    t1 = values[0] >= value;\n    cases[t1 << 1].forEach(stitch);\n\n    while (++x < dx - 1) {\n      t0 = t1, t1 = values[x + 1] >= value;\n      cases[t0 | t1 << 1].forEach(stitch);\n    }\n\n    cases[t1 << 0].forEach(stitch); // General case for the intermediate rows.\n\n    while (++y < dy - 1) {\n      x = -1;\n      t1 = values[y * dx + dx] >= value;\n      t2 = values[y * dx] >= value;\n      cases[t1 << 1 | t2 << 2].forEach(stitch);\n\n      while (++x < dx - 1) {\n        t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n        t3 = t2, t2 = values[y * dx + x + 1] >= value;\n        cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n      }\n\n      cases[t1 | t2 << 3].forEach(stitch);\n    } // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n\n\n    x = -1;\n    t2 = values[y * dx] >= value;\n    cases[t2 << 2].forEach(stitch);\n\n    while (++x < dx - 1) {\n      t3 = t2, t2 = values[y * dx + x + 1] >= value;\n      cases[t2 << 2 | t3 << 3].forEach(stitch);\n    }\n\n    cases[t2 << 3].forEach(stitch);\n\n    function stitch(line) {\n      var start = [line[0][0] + x, line[0][1] + y],\n          end = [line[1][0] + x, line[1][1] + y],\n          startIndex = index(start),\n          endIndex = index(end),\n          f,\n          g;\n\n      if (f = fragmentByEnd[startIndex]) {\n        if (g = fragmentByStart[endIndex]) {\n          delete fragmentByEnd[f.end];\n          delete fragmentByStart[g.start];\n\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[f.start] = fragmentByEnd[g.end] = {\n              start: f.start,\n              end: g.end,\n              ring: f.ring.concat(g.ring)\n            };\n          }\n        } else {\n          delete fragmentByEnd[f.end];\n          f.ring.push(end);\n          fragmentByEnd[f.end = endIndex] = f;\n        }\n      } else if (f = fragmentByStart[endIndex]) {\n        if (g = fragmentByEnd[startIndex]) {\n          delete fragmentByStart[f.start];\n          delete fragmentByEnd[g.end];\n\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[g.start] = fragmentByEnd[f.end] = {\n              start: g.start,\n              end: f.end,\n              ring: g.ring.concat(f.ring)\n            };\n          }\n        } else {\n          delete fragmentByStart[f.start];\n          f.ring.unshift(start);\n          fragmentByStart[f.start = startIndex] = f;\n        }\n      } else {\n        fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {\n          start: startIndex,\n          end: endIndex,\n          ring: [start, end]\n        };\n      }\n    }\n  }\n\n  function index(point) {\n    return point[0] * 2 + point[1] * (dx + 1) * 4;\n  }\n\n  function smoothLinear(ring, values, value) {\n    ring.forEach(point => {\n      var x = point[0],\n          y = point[1],\n          xt = x | 0,\n          yt = y | 0,\n          v0,\n          v1 = values[yt * dx + xt];\n\n      if (x > 0 && x < dx && xt === x) {\n        v0 = values[yt * dx + xt - 1];\n        point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n      }\n\n      if (y > 0 && y < dy && yt === y) {\n        v0 = values[(yt - 1) * dx + xt];\n        point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n      }\n    });\n  }\n\n  contours.contour = contour;\n\n  contours.size = function (_) {\n    if (!arguments.length) return [dx, dy];\n\n    var _0 = Math.floor(_[0]),\n        _1 = Math.floor(_[1]);\n\n    if (!(_0 >= 0 && _1 >= 0)) error('invalid size');\n    return dx = _0, dy = _1, contours;\n  };\n\n  contours.smooth = function (_) {\n    return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n  };\n\n  return contours;\n}\n\nfunction area(ring) {\n  var i = 0,\n      n = ring.length,\n      area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n\n  while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n\n  return area;\n}\n\nfunction contains(ring, hole) {\n  var i = -1,\n      n = hole.length,\n      c;\n\n  while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n\n  return 0;\n}\n\nfunction ringContains(ring, point) {\n  var x = point[0],\n      y = point[1],\n      contains = -1;\n\n  for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n    var pi = ring[i],\n        xi = pi[0],\n        yi = pi[1],\n        pj = ring[j],\n        xj = pj[0],\n        yj = pj[1];\n    if (segmentContains(pi, pj, point)) return 0;\n    if (yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi) contains = -contains;\n  }\n\n  return contains;\n}\n\nfunction segmentContains(a, b, c) {\n  var i;\n  return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n  return p <= q && q <= r || r <= q && q <= p;\n}\n\nfunction quantize (k, nice, zero) {\n  return function (values) {\n    var ex = extent(values),\n        start = zero ? Math.min(ex[0], 0) : ex[0],\n        stop = ex[1],\n        span = stop - start,\n        step = nice ? tickStep(start, stop, k) : span / (k + 1);\n    return range(start + step, stop, step);\n  };\n}\n\n/**\n * Generate isocontours (level sets) based on input raster grid data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} [params.field] - The field with raster grid\n *   data. If unspecified, the tuple itself is interpreted as a raster grid.\n * @param {Array<number>} [params.thresholds] - Contour threshold array. If\n *   specified, the levels, nice, resolve, and zero parameters are ignored.\n * @param {number} [params.levels] - The desired number of contour levels.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n *   threshold values should be automatically aligned to \"nice\"\n *   human-friendly values. Setting this flag may cause the number of\n *   thresholds to deviate from the specified levels.\n * @param {string} [params.resolve] - The method for resolving thresholds\n *   across multiple input grids. If 'independent' (the default), threshold\n *   calculation will be performed separately for each grid. If 'shared', a\n *   single set of threshold values will be used for all input grids.\n * @param {boolean} [params.zero] - Boolean flag indicating if the contour\n *   threshold values should include zero.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n *   polygons should be smoothed using linear interpolation. The default is\n *   true. The parameter is ignored when using density estimation.\n * @param {boolean} [params.scale] - Optional numerical value by which to\n *   scale the output isocontour coordinates. This parameter can be useful\n *   to scale the contours to match a desired output resolution.\n * @param {string} [params.as='contour'] - The output field in which to store\n *   the generated isocontour data (default 'contour').\n */\n\nfunction Isocontour(params) {\n  Transform.call(this, null, params);\n}\nIsocontour.Definition = {\n  'type': 'Isocontour',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'thresholds',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'levels',\n    'type': 'number'\n  }, {\n    'name': 'nice',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'resolve',\n    'type': 'enum',\n    'values': ['shared', 'independent'],\n    'default': 'independent'\n  }, {\n    'name': 'zero',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'smooth',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'scale',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'translate',\n    'type': 'number',\n    'array': true,\n    'expr': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'default': 'contour'\n  }]\n};\ninherits(Isocontour, Transform, {\n  transform(_, pulse) {\n    if (this.value && !pulse.changed() && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n\n    var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n        source = pulse.materialize(pulse.SOURCE).source,\n        field = _.field || identity,\n        contour = contours().smooth(_.smooth !== false),\n        tz = _.thresholds || levels(source, field, _),\n        as = _.as === null ? null : _.as || 'contour',\n        values = [];\n    source.forEach(t => {\n      const grid = field(t); // generate contour paths in GeoJSON format\n\n      const paths = contour.size([grid.width, grid.height])(grid.values, isArray(tz) ? tz : tz(grid.values)); // adjust contour path coordinates as needed\n\n      transformPaths(paths, grid, t, _); // ingest; copy source data properties to output\n\n      paths.forEach(p => {\n        values.push(rederive(t, ingest(as != null ? {\n          [as]: p\n        } : p)));\n      });\n    });\n    if (this.value) out.rem = this.value;\n    this.value = out.source = out.add = values;\n    return out;\n  }\n\n});\n\nfunction levels(values, f, _) {\n  const q = quantize(_.levels || 10, _.nice, _.zero !== false);\n  return _.resolve !== 'shared' ? q : q(values.map(t => max(f(t).values)));\n}\n\nfunction transformPaths(paths, grid, datum, _) {\n  let s = _.scale || grid.scale,\n      t = _.translate || grid.translate;\n  if (isFunction(s)) s = s(datum, _);\n  if (isFunction(t)) t = t(datum, _);\n  if ((s === 1 || s == null) && !t) return;\n  const sx = (isNumber(s) ? s : s[0]) || 1,\n        sy = (isNumber(s) ? s : s[1]) || 1,\n        tx = t && t[0] || 0,\n        ty = t && t[1] || 0;\n  paths.forEach(transform(grid, sx, sy, tx, ty));\n}\n\nfunction transform(grid, sx, sy, tx, ty) {\n  const x1 = grid.x1 || 0,\n        y1 = grid.y1 || 0,\n        flip = sx * sy < 0;\n\n  function transformPolygon(coordinates) {\n    coordinates.forEach(transformRing);\n  }\n\n  function transformRing(coordinates) {\n    if (flip) coordinates.reverse(); // maintain winding order\n\n    coordinates.forEach(transformPoint);\n  }\n\n  function transformPoint(coordinates) {\n    coordinates[0] = (coordinates[0] - x1) * sx + tx;\n    coordinates[1] = (coordinates[1] - y1) * sy + ty;\n  }\n\n  return function (geometry) {\n    geometry.coordinates.forEach(transformPolygon);\n    return geometry;\n  };\n}\n\nfunction radius(bw, data, f) {\n  const v = bw >= 0 ? bw : bandwidthNRD(data, f);\n  return Math.round((Math.sqrt(4 * v * v + 1) - 1) / 2);\n}\n\nfunction number(_) {\n  return isFunction(_) ? _ : constant(+_);\n} // Implementation adapted from d3/d3-contour. Thanks!\n\n\nfunction density2D () {\n  var x = d => d[0],\n      y = d => d[1],\n      weight = one,\n      bandwidth = [-1, -1],\n      dx = 960,\n      dy = 500,\n      k = 2; // log2(cellSize)\n\n\n  function density(data, counts) {\n    const rx = radius(bandwidth[0], data, x) >> k,\n          // blur x-radius\n    ry = radius(bandwidth[1], data, y) >> k,\n          // blur y-radius\n    ox = rx ? rx + 2 : 0,\n          // x-offset padding for blur\n    oy = ry ? ry + 2 : 0,\n          // y-offset padding for blur\n    n = 2 * ox + (dx >> k),\n          // grid width\n    m = 2 * oy + (dy >> k),\n          // grid height\n    values0 = new Float32Array(n * m),\n          values1 = new Float32Array(n * m);\n    let values = values0;\n    data.forEach(d => {\n      const xi = ox + (+x(d) >> k),\n            yi = oy + (+y(d) >> k);\n\n      if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n        values0[xi + yi * n] += +weight(d);\n      }\n    });\n\n    if (rx > 0 && ry > 0) {\n      blurX(n, m, values0, values1, rx);\n      blurY(n, m, values1, values0, ry);\n      blurX(n, m, values0, values1, rx);\n      blurY(n, m, values1, values0, ry);\n      blurX(n, m, values0, values1, rx);\n      blurY(n, m, values1, values0, ry);\n    } else if (rx > 0) {\n      blurX(n, m, values0, values1, rx);\n      blurX(n, m, values1, values0, rx);\n      blurX(n, m, values0, values1, rx);\n      values = values1;\n    } else if (ry > 0) {\n      blurY(n, m, values0, values1, ry);\n      blurY(n, m, values1, values0, ry);\n      blurY(n, m, values0, values1, ry);\n      values = values1;\n    } // scale density estimates\n    // density in points per square pixel or probability density\n\n\n    const s = counts ? Math.pow(2, -2 * k) : 1 / sum(values);\n\n    for (let i = 0, sz = n * m; i < sz; ++i) values[i] *= s;\n\n    return {\n      values: values,\n      scale: 1 << k,\n      width: n,\n      height: m,\n      x1: ox,\n      y1: oy,\n      x2: ox + (dx >> k),\n      y2: oy + (dy >> k)\n    };\n  }\n\n  density.x = function (_) {\n    return arguments.length ? (x = number(_), density) : x;\n  };\n\n  density.y = function (_) {\n    return arguments.length ? (y = number(_), density) : y;\n  };\n\n  density.weight = function (_) {\n    return arguments.length ? (weight = number(_), density) : weight;\n  };\n\n  density.size = function (_) {\n    if (!arguments.length) return [dx, dy];\n\n    var _0 = +_[0],\n        _1 = +_[1];\n\n    if (!(_0 >= 0 && _1 >= 0)) error('invalid size');\n    return dx = _0, dy = _1, density;\n  };\n\n  density.cellSize = function (_) {\n    if (!arguments.length) return 1 << k;\n    if (!((_ = +_) >= 1)) error('invalid cell size');\n    k = Math.floor(Math.log(_) / Math.LN2);\n    return density;\n  };\n\n  density.bandwidth = function (_) {\n    if (!arguments.length) return bandwidth;\n    _ = array(_);\n    if (_.length === 1) _ = [+_[0], +_[0]];\n    if (_.length !== 2) error('invalid bandwidth');\n    return bandwidth = _, density;\n  };\n\n  return density;\n}\n\nfunction blurX(n, m, source, target, r) {\n  const w = (r << 1) + 1;\n\n  for (let j = 0; j < m; ++j) {\n    for (let i = 0, sr = 0; i < n + r; ++i) {\n      if (i < n) {\n        sr += source[i + j * n];\n      }\n\n      if (i >= r) {\n        if (i >= w) {\n          sr -= source[i - w + j * n];\n        }\n\n        target[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n      }\n    }\n  }\n}\n\nfunction blurY(n, m, source, target, r) {\n  const w = (r << 1) + 1;\n\n  for (let i = 0; i < n; ++i) {\n    for (let j = 0, sr = 0; j < m + r; ++j) {\n      if (j < m) {\n        sr += source[i + j * n];\n      }\n\n      if (j >= r) {\n        if (j >= w) {\n          sr -= source[i + (j - w) * n];\n        }\n\n        target[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n      }\n    }\n  }\n}\n\n/**\n * Perform 2D kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<number>} params.size - The [width, height] extent (in\n *   units of input pixels) over which to perform density estimation.\n * @param {function(object): number} params.x - The x-coordinate accessor.\n * @param {function(object): number} params.y - The y-coordinate accessor.\n * @param {function(object): number} [params.weight] - The weight accessor.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n *   to groupby.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n *   This parameter determines the level of spatial approximation. For example,\n *   the default value of 4 maps to 2x reductions in both x- and y- dimensions.\n *   A value of 1 will result in an output raster grid whose dimensions exactly\n *   matches the size parameter.\n * @param {Array<number>} [params.bandwidth] - The KDE kernel bandwidths,\n *   in pixels. The input can be a two-element array specifying separate\n *   x and y bandwidths, or a single-element array specifying both. If the\n *   bandwidth is unspecified or less than zero, the bandwidth will be\n *   automatically determined.\n * @param {boolean} [params.counts=false] - A boolean flag indicating if the\n *   output values should be probability estimates (false, default) or\n *   smoothed counts (true).\n * @param {string} [params.as='grid'] - The output field in which to store\n *   the generated raster grid (default 'grid').\n */\n\nfunction KDE2D(params) {\n  Transform.call(this, null, params);\n}\nKDE2D.Definition = {\n  'type': 'KDE2D',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'required': true\n  }, {\n    'name': 'x',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'y',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'weight',\n    'type': 'field'\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'cellSize',\n    'type': 'number'\n  }, {\n    'name': 'bandwidth',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'counts',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'grid'\n  }]\n};\nconst PARAMS = ['x', 'y', 'weight', 'size', 'cellSize', 'bandwidth'];\nfunction params(obj, _) {\n  PARAMS.forEach(param => _[param] != null ? obj[param](_[param]) : 0);\n  return obj;\n}\ninherits(KDE2D, Transform, {\n  transform(_, pulse) {\n    if (this.value && !pulse.changed() && !_.modified()) return pulse.StopPropagation;\n    var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n        source = pulse.materialize(pulse.SOURCE).source,\n        groups = partition(source, _.groupby),\n        names = (_.groupby || []).map(accessorName),\n        kde = params(density2D(), _),\n        as = _.as || 'grid',\n        values = [];\n\n    function set(t, vals) {\n      for (let i = 0; i < names.length; ++i) t[names[i]] = vals[i];\n\n      return t;\n    } // generate density raster grids\n\n\n    values = groups.map(g => ingest(set({\n      [as]: kde(g, _.counts)\n    }, g.dims)));\n    if (this.value) out.rem = this.value;\n    this.value = out.source = out.add = values;\n    return out;\n  }\n\n});\nfunction partition(data, groupby) {\n  var groups = [],\n      get = f => f(t),\n      map,\n      i,\n      n,\n      t,\n      k,\n      g; // partition data points into groups\n\n\n  if (groupby == null) {\n    groups.push(data);\n  } else {\n    for (map = {}, i = 0, n = data.length; i < n; ++i) {\n      t = data[i];\n      k = groupby.map(get);\n      g = map[k];\n\n      if (!g) {\n        map[k] = g = [];\n        g.dims = k;\n        groups.push(g);\n      }\n\n      g.push(t);\n    }\n  }\n\n  return groups;\n}\n\n/**\n * Generate contours based on kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<number>} params.size - The dimensions [width, height] over which to compute contours.\n *  If the values parameter is provided, this must be the dimensions of the input data.\n *  If density estimation is performed, this is the output view dimensions in pixels.\n * @param {Array<number>} [params.values] - An array of numeric values representing an\n *  width x height grid of values over which to compute contours. If unspecified, this\n *  transform will instead attempt to compute contours for the kernel density estimate\n *  using values drawn from data tuples in the input pulse.\n * @param {function(object): number} [params.x] - The pixel x-coordinate accessor for density estimation.\n * @param {function(object): number} [params.y] - The pixel y-coordinate accessor for density estimation.\n * @param {function(object): number} [params.weight] - The data point weight accessor for density estimation.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n * @param {number} [params.bandwidth] - Kernel density estimation bandwidth.\n * @param {Array<number>} [params.thresholds] - Contour threshold array. If\n *   this parameter is set, the count and nice parameters will be ignored.\n * @param {number} [params.count] - The desired number of contours.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n *   threshold values should be automatically aligned to \"nice\"\n *   human-friendly values. Setting this flag may cause the number of\n *   thresholds to deviate from the specified count.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n *   polygons should be smoothed using linear interpolation. The default is\n *   true. The parameter is ignored when using density estimation.\n */\n\nfunction Contour(params) {\n  Transform.call(this, null, params);\n}\nContour.Definition = {\n  'type': 'Contour',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'required': true\n  }, {\n    'name': 'values',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'x',\n    'type': 'field'\n  }, {\n    'name': 'y',\n    'type': 'field'\n  }, {\n    'name': 'weight',\n    'type': 'field'\n  }, {\n    'name': 'cellSize',\n    'type': 'number'\n  }, {\n    'name': 'bandwidth',\n    'type': 'number'\n  }, {\n    'name': 'count',\n    'type': 'number'\n  }, {\n    'name': 'nice',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'thresholds',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'smooth',\n    'type': 'boolean',\n    'default': true\n  }]\n};\ninherits(Contour, Transform, {\n  transform(_, pulse) {\n    if (this.value && !pulse.changed() && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n\n    var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n        contour = contours().smooth(_.smooth !== false),\n        values = _.values,\n        thresh = _.thresholds || quantize(_.count || 10, _.nice, !!values),\n        size = _.size,\n        grid,\n        post;\n\n    if (!values) {\n      values = pulse.materialize(pulse.SOURCE).source;\n      grid = params(density2D(), _)(values, true);\n      post = transform(grid, grid.scale || 1, grid.scale || 1, 0, 0);\n      size = [grid.width, grid.height];\n      values = grid.values;\n    }\n\n    thresh = isArray(thresh) ? thresh : thresh(values);\n    values = contour.size(size)(values, thresh);\n    if (post) values.forEach(post);\n    if (this.value) out.rem = this.value;\n    this.value = out.source = out.add = (values || []).map(ingest);\n    return out;\n  }\n\n});\n\nconst Feature = 'Feature';\nconst FeatureCollection = 'FeatureCollection';\nconst MultiPoint = 'MultiPoint';\n\n/**\n * Consolidate an array of [longitude, latitude] points or GeoJSON features\n * into a combined GeoJSON object. This transform is particularly useful for\n * combining geo data for a Projection's fit argument. The resulting GeoJSON\n * data is available as this transform's value. Input pulses are unchanged.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.fields] - A two-element array\n *   of field accessors for the longitude and latitude values.\n * @param {function(object): *} params.geojson - A field accessor for\n *   retrieving GeoJSON feature data.\n */\n\nfunction GeoJSON(params) {\n  Transform.call(this, null, params);\n}\nGeoJSON.Definition = {\n  'type': 'GeoJSON',\n  'metadata': {},\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'geojson',\n    'type': 'field'\n  }]\n};\ninherits(GeoJSON, Transform, {\n  transform(_, pulse) {\n    var features = this._features,\n        points = this._points,\n        fields = _.fields,\n        lon = fields && fields[0],\n        lat = fields && fields[1],\n        geojson = _.geojson || !fields && identity,\n        flag = pulse.ADD,\n        mod;\n    mod = _.modified() || pulse.changed(pulse.REM) || pulse.modified(accessorFields(geojson)) || lon && pulse.modified(accessorFields(lon)) || lat && pulse.modified(accessorFields(lat));\n\n    if (!this.value || mod) {\n      flag = pulse.SOURCE;\n      this._features = features = [];\n      this._points = points = [];\n    }\n\n    if (geojson) {\n      pulse.visit(flag, t => features.push(geojson(t)));\n    }\n\n    if (lon && lat) {\n      pulse.visit(flag, t => {\n        var x = lon(t),\n            y = lat(t);\n\n        if (x != null && y != null && (x = +x) === x && (y = +y) === y) {\n          points.push([x, y]);\n        }\n      });\n      features = features.concat({\n        type: Feature,\n        geometry: {\n          type: MultiPoint,\n          coordinates: points\n        }\n      });\n    }\n\n    this.value = {\n      type: FeatureCollection,\n      features: features\n    };\n  }\n\n});\n\n/**\n * Map GeoJSON data to an SVG path string.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n *   projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n *   or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='path'] - The output field in which to store\n *   the generated path data (default 'path').\n */\n\nfunction GeoPath(params) {\n  Transform.call(this, null, params);\n}\nGeoPath.Definition = {\n  'type': 'GeoPath',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'projection',\n    'type': 'projection'\n  }, {\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'pointRadius',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'path'\n  }]\n};\ninherits(GeoPath, Transform, {\n  transform(_, pulse) {\n    var out = pulse.fork(pulse.ALL),\n        path = this.value,\n        field = _.field || identity,\n        as = _.as || 'path',\n        flag = out.SOURCE;\n\n    if (!path || _.modified()) {\n      // parameters updated, reset and reflow\n      this.value = path = getProjectionPath(_.projection);\n      out.materialize().reflow();\n    } else {\n      flag = field === identity || pulse.modified(field.fields) ? out.ADD_MOD : out.ADD;\n    }\n\n    const prev = initPath(path, _.pointRadius);\n    out.visit(flag, t => t[as] = path(field(t)));\n    path.pointRadius(prev);\n    return out.modifies(as);\n  }\n\n});\n\nfunction initPath(path, pointRadius) {\n  const prev = path.pointRadius();\n  path.context(null);\n\n  if (pointRadius != null) {\n    path.pointRadius(pointRadius);\n  }\n\n  return prev;\n}\n\n/**\n * Geo-code a longitude/latitude point to an x/y coordinate.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n *   projection to apply.\n * @param {Array<function(object): *>} params.fields - A two-element array of\n *   field accessors for the longitude and latitude values.\n * @param {Array<string>} [params.as] - A two-element array of field names\n *   under which to store the result. Defaults to ['x','y'].\n */\n\nfunction GeoPoint(params) {\n  Transform.call(this, null, params);\n}\nGeoPoint.Definition = {\n  'type': 'GeoPoint',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'projection',\n    'type': 'projection',\n    'required': true\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true,\n    'length': 2\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['x', 'y']\n  }]\n};\ninherits(GeoPoint, Transform, {\n  transform(_, pulse) {\n    var proj = _.projection,\n        lon = _.fields[0],\n        lat = _.fields[1],\n        as = _.as || ['x', 'y'],\n        x = as[0],\n        y = as[1],\n        mod;\n\n    function set(t) {\n      const xy = proj([lon(t), lat(t)]);\n\n      if (xy) {\n        t[x] = xy[0];\n        t[y] = xy[1];\n      } else {\n        t[x] = undefined;\n        t[y] = undefined;\n      }\n    }\n\n    if (_.modified()) {\n      // parameters updated, reflow\n      pulse = pulse.materialize().reflow(true).visit(pulse.SOURCE, set);\n    } else {\n      mod = pulse.modified(lon.fields) || pulse.modified(lat.fields);\n      pulse.visit(mod ? pulse.ADD_MOD : pulse.ADD, set);\n    }\n\n    return pulse.modifies(as);\n  }\n\n});\n\n/**\n * Annotate items with a geopath shape generator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n *   projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n *   or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='shape'] - The output field in which to store\n *   the generated path data (default 'shape').\n */\n\nfunction GeoShape(params) {\n  Transform.call(this, null, params);\n}\nGeoShape.Definition = {\n  'type': 'GeoShape',\n  'metadata': {\n    'modifies': true,\n    'nomod': true\n  },\n  'params': [{\n    'name': 'projection',\n    'type': 'projection'\n  }, {\n    'name': 'field',\n    'type': 'field',\n    'default': 'datum'\n  }, {\n    'name': 'pointRadius',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'shape'\n  }]\n};\ninherits(GeoShape, Transform, {\n  transform(_, pulse) {\n    var out = pulse.fork(pulse.ALL),\n        shape = this.value,\n        as = _.as || 'shape',\n        flag = out.ADD;\n\n    if (!shape || _.modified()) {\n      // parameters updated, reset and reflow\n      this.value = shape = shapeGenerator(getProjectionPath(_.projection), _.field || field('datum'), _.pointRadius);\n      out.materialize().reflow();\n      flag = out.SOURCE;\n    }\n\n    out.visit(flag, t => t[as] = shape);\n    return out.modifies(as);\n  }\n\n});\n\nfunction shapeGenerator(path, field, pointRadius) {\n  const shape = pointRadius == null ? _ => path(field(_)) : _ => {\n    var prev = path.pointRadius(),\n        value = path.pointRadius(pointRadius)(field(_));\n    path.pointRadius(prev);\n    return value;\n  };\n\n  shape.context = _ => {\n    path.context(_);\n    return shape;\n  };\n\n  return shape;\n}\n\n/**\n * GeoJSON feature generator for creating graticules.\n * @constructor\n */\n\nfunction Graticule(params) {\n  Transform.call(this, [], params);\n  this.generator = geoGraticule();\n}\nGraticule.Definition = {\n  'type': 'Graticule',\n  'metadata': {\n    'changes': true,\n    'generates': true\n  },\n  'params': [{\n    'name': 'extent',\n    'type': 'array',\n    'array': true,\n    'length': 2,\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }, {\n    'name': 'extentMajor',\n    'type': 'array',\n    'array': true,\n    'length': 2,\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }, {\n    'name': 'extentMinor',\n    'type': 'array',\n    'array': true,\n    'length': 2,\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }, {\n    'name': 'step',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'stepMajor',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'default': [90, 360]\n  }, {\n    'name': 'stepMinor',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'default': [10, 10]\n  }, {\n    'name': 'precision',\n    'type': 'number',\n    'default': 2.5\n  }]\n};\ninherits(Graticule, Transform, {\n  transform(_, pulse) {\n    var src = this.value,\n        gen = this.generator,\n        t;\n\n    if (!src.length || _.modified()) {\n      for (const prop in _) {\n        if (isFunction(gen[prop])) {\n          gen[prop](_[prop]);\n        }\n      }\n    }\n\n    t = gen();\n\n    if (src.length) {\n      pulse.mod.push(replace(src[0], t));\n    } else {\n      pulse.add.push(ingest(t));\n    }\n\n    src[0] = t;\n    return pulse;\n  }\n\n});\n\n/**\n * Render a heatmap image for input raster grid data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} [params.field] - The field with raster grid\n *   data. If unspecified, the tuple itself is interpreted as a raster grid.\n * @param {string} [params.color] - A constant color value or function for\n *   individual pixel color. If a function, it will be invoked with an input\n *   object that includes $x, $y, $value, and $max fields for the grid.\n * @param {number} [params.opacity] - A constant opacity value or function for\n *   individual pixel opacity. If a function, it will be invoked with an input\n *   object that includes $x, $y, $value, and $max fields for the grid.\n * @param {string} [params.resolve] - The method for resolving maximum values\n *   across multiple input grids. If 'independent' (the default), maximum\n *   calculation will be performed separately for each grid. If 'shared',\n *   a single global maximum will be used for all input grids.\n * @param {string} [params.as='image'] - The output field in which to store\n *   the generated bitmap canvas images (default 'image').\n */\n\nfunction Heatmap(params) {\n  Transform.call(this, null, params);\n}\nHeatmap.Definition = {\n  'type': 'heatmap',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'color',\n    'type': 'string',\n    'expr': true\n  }, {\n    'name': 'opacity',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'resolve',\n    'type': 'enum',\n    'values': ['shared', 'independent'],\n    'default': 'independent'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'image'\n  }]\n};\ninherits(Heatmap, Transform, {\n  transform(_, pulse) {\n    if (!pulse.changed() && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n\n    var source = pulse.materialize(pulse.SOURCE).source,\n        shared = _.resolve === 'shared',\n        field = _.field || identity,\n        opacity = opacity_(_.opacity, _),\n        color = color_(_.color, _),\n        as = _.as || 'image',\n        obj = {\n      $x: 0,\n      $y: 0,\n      $value: 0,\n      $max: shared ? max(source.map(t => max(field(t).values))) : 0\n    };\n    source.forEach(t => {\n      const v = field(t); // build proxy data object\n\n      const o = extend({}, t, obj); // set maximum value if not globally shared\n\n      if (!shared) o.$max = max(v.values || []); // generate canvas image\n      // optimize color/opacity if not pixel-dependent\n\n      t[as] = toCanvas(v, o, color.dep ? color : constant(color(o)), opacity.dep ? opacity : constant(opacity(o)));\n    });\n    return pulse.reflow(true).modifies(as);\n  }\n\n}); // get image color function\n\nfunction color_(color, _) {\n  let f;\n\n  if (isFunction(color)) {\n    f = obj => rgb(color(obj, _));\n\n    f.dep = dependency(color);\n  } else {\n    // default to mid-grey\n    f = constant(rgb(color || '#888'));\n  }\n\n  return f;\n} // get image opacity function\n\n\nfunction opacity_(opacity, _) {\n  let f;\n\n  if (isFunction(opacity)) {\n    f = obj => opacity(obj, _);\n\n    f.dep = dependency(opacity);\n  } else if (opacity) {\n    f = constant(opacity);\n  } else {\n    // default to [0, max] opacity gradient\n    f = obj => obj.$value / obj.$max || 0;\n\n    f.dep = true;\n  }\n\n  return f;\n} // check if function depends on individual pixel data\n\n\nfunction dependency(f) {\n  if (!isFunction(f)) return false;\n  const set = toSet(accessorFields(f));\n  return set.$x || set.$y || set.$value || set.$max;\n} // render raster grid to canvas\n\n\nfunction toCanvas(grid, obj, color, opacity) {\n  const n = grid.width,\n        m = grid.height,\n        x1 = grid.x1 || 0,\n        y1 = grid.y1 || 0,\n        x2 = grid.x2 || n,\n        y2 = grid.y2 || m,\n        val = grid.values,\n        value = val ? i => val[i] : zero,\n        can = canvas(x2 - x1, y2 - y1),\n        ctx = can.getContext('2d'),\n        img = ctx.getImageData(0, 0, x2 - x1, y2 - y1),\n        pix = img.data;\n\n  for (let j = y1, k = 0; j < y2; ++j) {\n    obj.$y = j - y1;\n\n    for (let i = x1, r = j * n; i < x2; ++i, k += 4) {\n      obj.$x = i - x1;\n      obj.$value = value(i + r);\n      const v = color(obj);\n      pix[k + 0] = v.r;\n      pix[k + 1] = v.g;\n      pix[k + 2] = v.b;\n      pix[k + 3] = ~~(255 * opacity(obj));\n    }\n  }\n\n  ctx.putImageData(img, 0, 0);\n  return can;\n}\n\n/**\n * Maintains a cartographic projection.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\n\nfunction Projection(params) {\n  Transform.call(this, null, params);\n  this.modified(true); // always treat as modified\n}\ninherits(Projection, Transform, {\n  transform(_, pulse) {\n    let proj = this.value;\n\n    if (!proj || _.modified('type')) {\n      this.value = proj = create(_.type);\n      projectionProperties.forEach(prop => {\n        if (_[prop] != null) set(proj, prop, _[prop]);\n      });\n    } else {\n      projectionProperties.forEach(prop => {\n        if (_.modified(prop)) set(proj, prop, _[prop]);\n      });\n    }\n\n    if (_.pointRadius != null) proj.path.pointRadius(_.pointRadius);\n    if (_.fit) fit(proj, _);\n    return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n  }\n\n});\n\nfunction fit(proj, _) {\n  const data = collectGeoJSON(_.fit);\n  _.extent ? proj.fitExtent(_.extent, data) : _.size ? proj.fitSize(_.size, data) : 0;\n}\n\nfunction create(type) {\n  const constructor = projection((type || 'mercator').toLowerCase());\n  if (!constructor) error('Unrecognized projection type: ' + type);\n  return constructor();\n}\n\nfunction set(proj, key, value) {\n  if (isFunction(proj[key])) proj[key](value);\n}\n\nfunction collectGeoJSON(data) {\n  data = array(data);\n  return data.length === 1 ? data[0] : {\n    type: FeatureCollection,\n    features: data.reduce((a, f) => a.concat(featurize(f)), [])\n  };\n}\n\nfunction featurize(f) {\n  return f.type === FeatureCollection ? f.features : array(f).filter(d => d != null).map(d => d.type === Feature ? d : {\n    type: Feature,\n    geometry: d\n  });\n}\n\nexport { Contour as contour, GeoJSON as geojson, GeoPath as geopath, GeoPoint as geopoint, GeoShape as geoshape, Graticule as graticule, Heatmap as heatmap, Isocontour as isocontour, KDE2D as kde2d, Projection as projection };\n","export default function(x, y) {\n  var nodes, strength = 1;\n\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force() {\n    var i,\n        n = nodes.length,\n        node,\n        sx = 0,\n        sy = 0;\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i], sx += node.x, sy += node.y;\n    }\n\n    for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n      node = nodes[i], node.x -= sx, node.y -= sy;\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  return force;\n}\n","export default function(d) {\n  const x = +this._x.call(null, d),\n      y = +this._y.call(null, d);\n  return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n  if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n  var parent,\n      node = tree._root,\n      leaf = {data: d},\n      x0 = tree._x0,\n      y0 = tree._y0,\n      x1 = tree._x1,\n      y1 = tree._y1,\n      xm,\n      ym,\n      xp,\n      yp,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return tree._root = leaf, tree;\n\n  // Find the existing leaf for the new point, or add it.\n  while (node.length) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n  }\n\n  // Is the new point is exactly coincident with the existing point?\n  xp = +tree._x.call(null, node.data);\n  yp = +tree._y.call(null, node.data);\n  if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n  // Otherwise, split the leaf node until the old and new point are separated.\n  do {\n    parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n  } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n  return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n  var d, i, n = data.length,\n      x,\n      y,\n      xz = new Array(n),\n      yz = new Array(n),\n      x0 = Infinity,\n      y0 = Infinity,\n      x1 = -Infinity,\n      y1 = -Infinity;\n\n  // Compute the points and their extent.\n  for (i = 0; i < n; ++i) {\n    if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n    xz[i] = x;\n    yz[i] = y;\n    if (x < x0) x0 = x;\n    if (x > x1) x1 = x;\n    if (y < y0) y0 = y;\n    if (y > y1) y1 = y;\n  }\n\n  // If there were no (valid) points, abort.\n  if (x0 > x1 || y0 > y1) return this;\n\n  // Expand the tree to cover the new points.\n  this.cover(x0, y0).cover(x1, y1);\n\n  // Add the new points.\n  for (i = 0; i < n; ++i) {\n    add(this, xz[i], yz[i], data[i]);\n  }\n\n  return this;\n}\n","export default function(x, y) {\n  if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n  var x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1;\n\n  // If the quadtree has no extent, initialize them.\n  // Integer extent are necessary so that if we later double the extent,\n  // the existing quadrant boundaries don’t change due to floating point error!\n  if (isNaN(x0)) {\n    x1 = (x0 = Math.floor(x)) + 1;\n    y1 = (y0 = Math.floor(y)) + 1;\n  }\n\n  // Otherwise, double repeatedly to cover.\n  else {\n    var z = x1 - x0 || 1,\n        node = this._root,\n        parent,\n        i;\n\n    while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n      i = (y < y0) << 1 | (x < x0);\n      parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n      switch (i) {\n        case 0: x1 = x0 + z, y1 = y0 + z; break;\n        case 1: x0 = x1 - z, y1 = y0 + z; break;\n        case 2: x1 = x0 + z, y0 = y1 - z; break;\n        case 3: x0 = x1 - z, y0 = y1 - z; break;\n      }\n    }\n\n    if (this._root && this._root.length) this._root = node;\n  }\n\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  return this;\n}\n","export default function() {\n  var data = [];\n  this.visit(function(node) {\n    if (!node.length) do data.push(node.data); while (node = node.next)\n  });\n  return data;\n}\n","export default function(_) {\n  return arguments.length\n      ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n      : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n  this.node = node;\n  this.x0 = x0;\n  this.y0 = y0;\n  this.x1 = x1;\n  this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n  var data,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1,\n      y1,\n      x2,\n      y2,\n      x3 = this._x1,\n      y3 = this._y1,\n      quads = [],\n      node = this._root,\n      q,\n      i;\n\n  if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n  if (radius == null) radius = Infinity;\n  else {\n    x0 = x - radius, y0 = y - radius;\n    x3 = x + radius, y3 = y + radius;\n    radius *= radius;\n  }\n\n  while (q = quads.pop()) {\n\n    // Stop searching if this quadrant can’t contain a closer node.\n    if (!(node = q.node)\n        || (x1 = q.x0) > x3\n        || (y1 = q.y0) > y3\n        || (x2 = q.x1) < x0\n        || (y2 = q.y1) < y0) continue;\n\n    // Bisect the current quadrant.\n    if (node.length) {\n      var xm = (x1 + x2) / 2,\n          ym = (y1 + y2) / 2;\n\n      quads.push(\n        new Quad(node[3], xm, ym, x2, y2),\n        new Quad(node[2], x1, ym, xm, y2),\n        new Quad(node[1], xm, y1, x2, ym),\n        new Quad(node[0], x1, y1, xm, ym)\n      );\n\n      // Visit the closest quadrant first.\n      if (i = (y >= ym) << 1 | (x >= xm)) {\n        q = quads[quads.length - 1];\n        quads[quads.length - 1] = quads[quads.length - 1 - i];\n        quads[quads.length - 1 - i] = q;\n      }\n    }\n\n    // Visit this point. (Visiting coincident points isn’t necessary!)\n    else {\n      var dx = x - +this._x.call(null, node.data),\n          dy = y - +this._y.call(null, node.data),\n          d2 = dx * dx + dy * dy;\n      if (d2 < radius) {\n        var d = Math.sqrt(radius = d2);\n        x0 = x - d, y0 = y - d;\n        x3 = x + d, y3 = y + d;\n        data = node.data;\n      }\n    }\n  }\n\n  return data;\n}\n","export default function(d) {\n  if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n  var parent,\n      node = this._root,\n      retainer,\n      previous,\n      next,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1,\n      x,\n      y,\n      xm,\n      ym,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return this;\n\n  // Find the leaf node for the point.\n  // While descending, also retain the deepest parent with a non-removed sibling.\n  if (node.length) while (true) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n    if (!node.length) break;\n    if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n  }\n\n  // Find the point to remove.\n  while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n  if (next = node.next) delete node.next;\n\n  // If there are multiple coincident points, remove just the point.\n  if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n  // If this is the root point, remove it.\n  if (!parent) return this._root = next, this;\n\n  // Remove this leaf.\n  next ? parent[i] = next : delete parent[i];\n\n  // If the parent now contains exactly one leaf, collapse superfluous parents.\n  if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n      && node === (parent[3] || parent[2] || parent[1] || parent[0])\n      && !node.length) {\n    if (retainer) retainer[j] = node;\n    else this._root = node;\n  }\n\n  return this;\n}\n\nexport function removeAll(data) {\n  for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n  return this;\n}\n","export default function() {\n  return this._root;\n}\n","export default function() {\n  var size = 0;\n  this.visit(function(node) {\n    if (!node.length) do ++size; while (node = node.next)\n  });\n  return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n  if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n      var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n    }\n  }\n  return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], next = [], q;\n  if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    var node = q.node;\n    if (node.length) {\n      var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n    }\n    next.push(q);\n  }\n  while (q = next.pop()) {\n    callback(q.node, q.x0, q.y0, q.x1, q.y1);\n  }\n  return this;\n}\n","export function defaultX(d) {\n  return d[0];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n  return d[1];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n  var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n  return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n  this._x = x;\n  this._y = y;\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n  var copy = {data: leaf.data}, next = copy;\n  while (leaf = leaf.next) next = next.next = {data: leaf.data};\n  return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n  var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n      node = this._root,\n      nodes,\n      child;\n\n  if (!node) return copy;\n\n  if (!node.length) return copy._root = leaf_copy(node), copy;\n\n  nodes = [{source: node, target: copy._root = new Array(4)}];\n  while (node = nodes.pop()) {\n    for (var i = 0; i < 4; ++i) {\n      if (child = node.source[i]) {\n        if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n        else node.target[i] = leaf_copy(child);\n      }\n    }\n  }\n\n  return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(random) {\n  return (random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n  return d.x + d.vx;\n}\n\nfunction y(d) {\n  return d.y + d.vy;\n}\n\nexport default function(radius) {\n  var nodes,\n      radii,\n      random,\n      strength = 1,\n      iterations = 1;\n\n  if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n  function force() {\n    var i, n = nodes.length,\n        tree,\n        node,\n        xi,\n        yi,\n        ri,\n        ri2;\n\n    for (var k = 0; k < iterations; ++k) {\n      tree = quadtree(nodes, x, y).visitAfter(prepare);\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        ri = radii[node.index], ri2 = ri * ri;\n        xi = node.x + node.vx;\n        yi = node.y + node.vy;\n        tree.visit(apply);\n      }\n    }\n\n    function apply(quad, x0, y0, x1, y1) {\n      var data = quad.data, rj = quad.r, r = ri + rj;\n      if (data) {\n        if (data.index > node.index) {\n          var x = xi - data.x - data.vx,\n              y = yi - data.y - data.vy,\n              l = x * x + y * y;\n          if (l < r * r) {\n            if (x === 0) x = jiggle(random), l += x * x;\n            if (y === 0) y = jiggle(random), l += y * y;\n            l = (r - (l = Math.sqrt(l))) / l * strength;\n            node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n            node.vy += (y *= l) * r;\n            data.vx -= x * (r = 1 - r);\n            data.vy -= y * r;\n          }\n        }\n        return;\n      }\n      return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n    }\n  }\n\n  function prepare(quad) {\n    if (quad.data) return quad.r = radii[quad.data.index];\n    for (var i = quad.r = 0; i < 4; ++i) {\n      if (quad[i] && quad[i].r > quad.r) {\n        quad.r = quad[i].r;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    radii = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  return force;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n  let s = 1;\n  return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n  return d.x;\n}\n\nexport function y(d) {\n  return d.y;\n}\n\nvar initialRadius = 10,\n    initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n  var simulation,\n      alpha = 1,\n      alphaMin = 0.001,\n      alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n      alphaTarget = 0,\n      velocityDecay = 0.6,\n      forces = new Map(),\n      stepper = timer(step),\n      event = dispatch(\"tick\", \"end\"),\n      random = lcg();\n\n  if (nodes == null) nodes = [];\n\n  function step() {\n    tick();\n    event.call(\"tick\", simulation);\n    if (alpha < alphaMin) {\n      stepper.stop();\n      event.call(\"end\", simulation);\n    }\n  }\n\n  function tick(iterations) {\n    var i, n = nodes.length, node;\n\n    if (iterations === undefined) iterations = 1;\n\n    for (var k = 0; k < iterations; ++k) {\n      alpha += (alphaTarget - alpha) * alphaDecay;\n\n      forces.forEach(function(force) {\n        force(alpha);\n      });\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        if (node.fx == null) node.x += node.vx *= velocityDecay;\n        else node.x = node.fx, node.vx = 0;\n        if (node.fy == null) node.y += node.vy *= velocityDecay;\n        else node.y = node.fy, node.vy = 0;\n      }\n    }\n\n    return simulation;\n  }\n\n  function initializeNodes() {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.index = i;\n      if (node.fx != null) node.x = node.fx;\n      if (node.fy != null) node.y = node.fy;\n      if (isNaN(node.x) || isNaN(node.y)) {\n        var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n        node.x = radius * Math.cos(angle);\n        node.y = radius * Math.sin(angle);\n      }\n      if (isNaN(node.vx) || isNaN(node.vy)) {\n        node.vx = node.vy = 0;\n      }\n    }\n  }\n\n  function initializeForce(force) {\n    if (force.initialize) force.initialize(nodes, random);\n    return force;\n  }\n\n  initializeNodes();\n\n  return simulation = {\n    tick: tick,\n\n    restart: function() {\n      return stepper.restart(step), simulation;\n    },\n\n    stop: function() {\n      return stepper.stop(), simulation;\n    },\n\n    nodes: function(_) {\n      return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n    },\n\n    alpha: function(_) {\n      return arguments.length ? (alpha = +_, simulation) : alpha;\n    },\n\n    alphaMin: function(_) {\n      return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n    },\n\n    alphaDecay: function(_) {\n      return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n    },\n\n    alphaTarget: function(_) {\n      return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n    },\n\n    velocityDecay: function(_) {\n      return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n    },\n\n    randomSource: function(_) {\n      return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n    },\n\n    force: function(name, _) {\n      return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n    },\n\n    find: function(x, y, radius) {\n      var i = 0,\n          n = nodes.length,\n          dx,\n          dy,\n          d2,\n          node,\n          closest;\n\n      if (radius == null) radius = Infinity;\n      else radius *= radius;\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        dx = x - node.x;\n        dy = y - node.y;\n        d2 = dx * dx + dy * dy;\n        if (d2 < radius) closest = node, radius = d2;\n      }\n\n      return closest;\n    },\n\n    on: function(name, _) {\n      return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n    }\n  };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n  var nodes,\n      node,\n      random,\n      alpha,\n      strength = constant(-30),\n      strengths,\n      distanceMin2 = 1,\n      distanceMax2 = Infinity,\n      theta2 = 0.81;\n\n  function force(_) {\n    var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n    for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    strengths = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n  }\n\n  function accumulate(quad) {\n    var strength = 0, q, c, weight = 0, x, y, i;\n\n    // For internal nodes, accumulate forces from child quadrants.\n    if (quad.length) {\n      for (x = y = i = 0; i < 4; ++i) {\n        if ((q = quad[i]) && (c = Math.abs(q.value))) {\n          strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n        }\n      }\n      quad.x = x / weight;\n      quad.y = y / weight;\n    }\n\n    // For leaf nodes, accumulate forces from coincident quadrants.\n    else {\n      q = quad;\n      q.x = q.data.x;\n      q.y = q.data.y;\n      do strength += strengths[q.data.index];\n      while (q = q.next);\n    }\n\n    quad.value = strength;\n  }\n\n  function apply(quad, x1, _, x2) {\n    if (!quad.value) return true;\n\n    var x = quad.x - node.x,\n        y = quad.y - node.y,\n        w = x2 - x1,\n        l = x * x + y * y;\n\n    // Apply the Barnes-Hut approximation if possible.\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (w * w / theta2 < l) {\n      if (l < distanceMax2) {\n        if (x === 0) x = jiggle(random), l += x * x;\n        if (y === 0) y = jiggle(random), l += y * y;\n        if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n        node.vx += x * quad.value * alpha / l;\n        node.vy += y * quad.value * alpha / l;\n      }\n      return true;\n    }\n\n    // Otherwise, process points directly.\n    else if (quad.length || l >= distanceMax2) return;\n\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (quad.data !== node || quad.next) {\n      if (x === 0) x = jiggle(random), l += x * x;\n      if (y === 0) y = jiggle(random), l += y * y;\n      if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n    }\n\n    do if (quad.data !== node) {\n      w = strengths[quad.data.index] * alpha / l;\n      node.vx += x * w;\n      node.vy += y * w;\n    } while (quad = quad.next);\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.distanceMin = function(_) {\n    return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n  };\n\n  force.distanceMax = function(_) {\n    return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n  };\n\n  force.theta = function(_) {\n    return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n  return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n  var node = nodeById.get(nodeId);\n  if (!node) throw new Error(\"node not found: \" + nodeId);\n  return node;\n}\n\nexport default function(links) {\n  var id = index,\n      strength = defaultStrength,\n      strengths,\n      distance = constant(30),\n      distances,\n      nodes,\n      count,\n      bias,\n      random,\n      iterations = 1;\n\n  if (links == null) links = [];\n\n  function defaultStrength(link) {\n    return 1 / Math.min(count[link.source.index], count[link.target.index]);\n  }\n\n  function force(alpha) {\n    for (var k = 0, n = links.length; k < iterations; ++k) {\n      for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n        link = links[i], source = link.source, target = link.target;\n        x = target.x + target.vx - source.x - source.vx || jiggle(random);\n        y = target.y + target.vy - source.y - source.vy || jiggle(random);\n        l = Math.sqrt(x * x + y * y);\n        l = (l - distances[i]) / l * alpha * strengths[i];\n        x *= l, y *= l;\n        target.vx -= x * (b = bias[i]);\n        target.vy -= y * b;\n        source.vx += x * (b = 1 - b);\n        source.vy += y * b;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n\n    var i,\n        n = nodes.length,\n        m = links.length,\n        nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n        link;\n\n    for (i = 0, count = new Array(n); i < m; ++i) {\n      link = links[i], link.index = i;\n      if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n      if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n      count[link.source.index] = (count[link.source.index] || 0) + 1;\n      count[link.target.index] = (count[link.target.index] || 0) + 1;\n    }\n\n    for (i = 0, bias = new Array(m); i < m; ++i) {\n      link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n    }\n\n    strengths = new Array(m), initializeStrength();\n    distances = new Array(m), initializeDistance();\n  }\n\n  function initializeStrength() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      strengths[i] = +strength(links[i], i, links);\n    }\n  }\n\n  function initializeDistance() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      distances[i] = +distance(links[i], i, links);\n    }\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.links = function(_) {\n    return arguments.length ? (links = _, initialize(), force) : links;\n  };\n\n  force.id = function(_) {\n    return arguments.length ? (id = _, force) : id;\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n  };\n\n  force.distance = function(_) {\n    return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(x) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      xz;\n\n  if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    xz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(y) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      yz;\n\n  if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    yz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n  };\n\n  return force;\n}\n","import { Transform } from 'vega-dataflow';\nimport { inherits, array, isFunction, accessorFields, hasOwnProperty, error } from 'vega-util';\nimport { forceSimulation, forceCenter, forceCollide, forceManyBody, forceLink, forceX, forceY } from 'd3-force';\n\nconst ForceMap = {\n  center: forceCenter,\n  collide: forceCollide,\n  nbody: forceManyBody,\n  link: forceLink,\n  x: forceX,\n  y: forceY\n};\nconst Forces = 'forces',\n      ForceParams = ['alpha', 'alphaMin', 'alphaTarget', 'velocityDecay', 'forces'],\n      ForceConfig = ['static', 'iterations'],\n      ForceOutput = ['x', 'y', 'vx', 'vy'];\n/**\n * Force simulation layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<object>} params.forces - The forces to apply.\n */\n\nfunction Force(params) {\n  Transform.call(this, null, params);\n}\nForce.Definition = {\n  'type': 'Force',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'static',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'restart',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'iterations',\n    'type': 'number',\n    'default': 300\n  }, {\n    'name': 'alpha',\n    'type': 'number',\n    'default': 1\n  }, {\n    'name': 'alphaMin',\n    'type': 'number',\n    'default': 0.001\n  }, {\n    'name': 'alphaTarget',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'velocityDecay',\n    'type': 'number',\n    'default': 0.4\n  }, {\n    'name': 'forces',\n    'type': 'param',\n    'array': true,\n    'params': [{\n      'key': {\n        'force': 'center'\n      },\n      'params': [{\n        'name': 'x',\n        'type': 'number',\n        'default': 0\n      }, {\n        'name': 'y',\n        'type': 'number',\n        'default': 0\n      }]\n    }, {\n      'key': {\n        'force': 'collide'\n      },\n      'params': [{\n        'name': 'radius',\n        'type': 'number',\n        'expr': true\n      }, {\n        'name': 'strength',\n        'type': 'number',\n        'default': 0.7\n      }, {\n        'name': 'iterations',\n        'type': 'number',\n        'default': 1\n      }]\n    }, {\n      'key': {\n        'force': 'nbody'\n      },\n      'params': [{\n        'name': 'strength',\n        'type': 'number',\n        'default': -30\n      }, {\n        'name': 'theta',\n        'type': 'number',\n        'default': 0.9\n      }, {\n        'name': 'distanceMin',\n        'type': 'number',\n        'default': 1\n      }, {\n        'name': 'distanceMax',\n        'type': 'number'\n      }]\n    }, {\n      'key': {\n        'force': 'link'\n      },\n      'params': [{\n        'name': 'links',\n        'type': 'data'\n      }, {\n        'name': 'id',\n        'type': 'field'\n      }, {\n        'name': 'distance',\n        'type': 'number',\n        'default': 30,\n        'expr': true\n      }, {\n        'name': 'strength',\n        'type': 'number',\n        'expr': true\n      }, {\n        'name': 'iterations',\n        'type': 'number',\n        'default': 1\n      }]\n    }, {\n      'key': {\n        'force': 'x'\n      },\n      'params': [{\n        'name': 'strength',\n        'type': 'number',\n        'default': 0.1\n      }, {\n        'name': 'x',\n        'type': 'field'\n      }]\n    }, {\n      'key': {\n        'force': 'y'\n      },\n      'params': [{\n        'name': 'strength',\n        'type': 'number',\n        'default': 0.1\n      }, {\n        'name': 'y',\n        'type': 'field'\n      }]\n    }]\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'modify': false,\n    'default': ForceOutput\n  }]\n};\ninherits(Force, Transform, {\n  transform(_, pulse) {\n    var sim = this.value,\n        change = pulse.changed(pulse.ADD_REM),\n        params = _.modified(ForceParams),\n        iters = _.iterations || 300; // configure simulation\n\n\n    if (!sim) {\n      this.value = sim = simulation(pulse.source, _);\n      sim.on('tick', rerun(pulse.dataflow, this));\n\n      if (!_.static) {\n        change = true;\n        sim.tick(); // ensure we run on init\n      }\n\n      pulse.modifies('index');\n    } else {\n      if (change) {\n        pulse.modifies('index');\n        sim.nodes(pulse.source);\n      }\n\n      if (params || pulse.changed(pulse.MOD)) {\n        setup(sim, _, 0, pulse);\n      }\n    } // run simulation\n\n\n    if (params || change || _.modified(ForceConfig) || pulse.changed() && _.restart) {\n      sim.alpha(Math.max(sim.alpha(), _.alpha || 1)).alphaDecay(1 - Math.pow(sim.alphaMin(), 1 / iters));\n\n      if (_.static) {\n        for (sim.stop(); --iters >= 0;) sim.tick();\n      } else {\n        if (sim.stopped()) sim.restart();\n        if (!change) return pulse.StopPropagation; // defer to sim ticks\n      }\n    }\n\n    return this.finish(_, pulse);\n  },\n\n  finish(_, pulse) {\n    const dataflow = pulse.dataflow; // inspect dependencies, touch link source data\n\n    for (let args = this._argops, j = 0, m = args.length, arg; j < m; ++j) {\n      arg = args[j];\n\n      if (arg.name !== Forces || arg.op._argval.force !== 'link') {\n        continue;\n      }\n\n      for (var ops = arg.op._argops, i = 0, n = ops.length, op; i < n; ++i) {\n        if (ops[i].name === 'links' && (op = ops[i].op.source)) {\n          dataflow.pulse(op, dataflow.changeset().reflow());\n          break;\n        }\n      }\n    } // reflow all nodes\n\n\n    return pulse.reflow(_.modified()).modifies(ForceOutput);\n  }\n\n});\n\nfunction rerun(df, op) {\n  return () => df.touch(op).run();\n}\n\nfunction simulation(nodes, _) {\n  const sim = forceSimulation(nodes),\n        stop = sim.stop,\n        restart = sim.restart;\n  let stopped = false;\n\n  sim.stopped = () => stopped;\n\n  sim.restart = () => (stopped = false, restart());\n\n  sim.stop = () => (stopped = true, stop());\n\n  return setup(sim, _, true).on('end', () => stopped = true);\n}\n\nfunction setup(sim, _, init, pulse) {\n  var f = array(_.forces),\n      i,\n      n,\n      p,\n      name;\n\n  for (i = 0, n = ForceParams.length; i < n; ++i) {\n    p = ForceParams[i];\n    if (p !== Forces && _.modified(p)) sim[p](_[p]);\n  }\n\n  for (i = 0, n = f.length; i < n; ++i) {\n    name = Forces + i;\n    p = init || _.modified(Forces, i) ? getForce(f[i]) : pulse && modified(f[i], pulse) ? sim.force(name) : null;\n    if (p) sim.force(name, p);\n  }\n\n  for (n = sim.numForces || 0; i < n; ++i) {\n    sim.force(Forces + i, null); // remove\n  }\n\n  sim.numForces = f.length;\n  return sim;\n}\n\nfunction modified(f, pulse) {\n  var k, v;\n\n  for (k in f) {\n    if (isFunction(v = f[k]) && pulse.modified(accessorFields(v))) return 1;\n  }\n\n  return 0;\n}\n\nfunction getForce(_) {\n  var f, p;\n\n  if (!hasOwnProperty(ForceMap, _.force)) {\n    error('Unrecognized force: ' + _.force);\n  }\n\n  f = ForceMap[_.force]();\n\n  for (p in _) {\n    if (isFunction(f[p])) setForceParam(f[p], _[p], _);\n  }\n\n  return f;\n}\n\nfunction setForceParam(f, v, _) {\n  f(isFunction(v) ? d => v(d, _) : v);\n}\n\nexport { Force as force };\n","function count(node) {\n  var sum = 0,\n      children = node.children,\n      i = children && children.length;\n  if (!i) sum = 1;\n  else while (--i >= 0) sum += children[i].value;\n  node.value = sum;\n}\n\nexport default function() {\n  return this.eachAfter(count);\n}\n","export default function(callback, that) {\n  let index = -1;\n  for (const node of this) {\n    callback.call(that, node, ++index, this);\n  }\n  return this;\n}\n","export default function(callback, that) {\n  var node = this, nodes = [node], children, i, index = -1;\n  while (node = nodes.pop()) {\n    callback.call(that, node, ++index, this);\n    if (children = node.children) {\n      for (i = children.length - 1; i >= 0; --i) {\n        nodes.push(children[i]);\n      }\n    }\n  }\n  return this;\n}\n","export default function(callback, that) {\n  var node = this, nodes = [node], next = [], children, i, n, index = -1;\n  while (node = nodes.pop()) {\n    next.push(node);\n    if (children = node.children) {\n      for (i = 0, n = children.length; i < n; ++i) {\n        nodes.push(children[i]);\n      }\n    }\n  }\n  while (node = next.pop()) {\n    callback.call(that, node, ++index, this);\n  }\n  return this;\n}\n","export default function(callback, that) {\n  let index = -1;\n  for (const node of this) {\n    if (callback.call(that, node, ++index, this)) {\n      return node;\n    }\n  }\n}\n","export default function(value) {\n  return this.eachAfter(function(node) {\n    var sum = +value(node.data) || 0,\n        children = node.children,\n        i = children && children.length;\n    while (--i >= 0) sum += children[i].value;\n    node.value = sum;\n  });\n}\n","export default function(compare) {\n  return this.eachBefore(function(node) {\n    if (node.children) {\n      node.children.sort(compare);\n    }\n  });\n}\n","export default function(end) {\n  var start = this,\n      ancestor = leastCommonAncestor(start, end),\n      nodes = [start];\n  while (start !== ancestor) {\n    start = start.parent;\n    nodes.push(start);\n  }\n  var k = nodes.length;\n  while (end !== ancestor) {\n    nodes.splice(k, 0, end);\n    end = end.parent;\n  }\n  return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n  if (a === b) return a;\n  var aNodes = a.ancestors(),\n      bNodes = b.ancestors(),\n      c = null;\n  a = aNodes.pop();\n  b = bNodes.pop();\n  while (a === b) {\n    c = a;\n    a = aNodes.pop();\n    b = bNodes.pop();\n  }\n  return c;\n}\n","export default function() {\n  var node = this, nodes = [node];\n  while (node = node.parent) {\n    nodes.push(node);\n  }\n  return nodes;\n}\n","export default function() {\n  return Array.from(this);\n}\n","export default function() {\n  var leaves = [];\n  this.eachBefore(function(node) {\n    if (!node.children) {\n      leaves.push(node);\n    }\n  });\n  return leaves;\n}\n","export default function() {\n  var root = this, links = [];\n  root.each(function(node) {\n    if (node !== root) { // Don’t include the root’s parent, if any.\n      links.push({source: node.parent, target: node});\n    }\n  });\n  return links;\n}\n","export default function*() {\n  var node = this, current, next = [node], children, i, n;\n  do {\n    current = next.reverse(), next = [];\n    while (node = current.pop()) {\n      yield node;\n      if (children = node.children) {\n        for (i = 0, n = children.length; i < n; ++i) {\n          next.push(children[i]);\n        }\n      }\n    }\n  } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n  if (data instanceof Map) {\n    data = [undefined, data];\n    if (children === undefined) children = mapChildren;\n  } else if (children === undefined) {\n    children = objectChildren;\n  }\n\n  var root = new Node(data),\n      node,\n      nodes = [root],\n      child,\n      childs,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n      node.children = childs;\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = childs[i] = new Node(childs[i]));\n        child.parent = node;\n        child.depth = node.depth + 1;\n      }\n    }\n  }\n\n  return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n  return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n  return d.children;\n}\n\nfunction mapChildren(d) {\n  return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n  if (node.data.value !== undefined) node.value = node.data.value;\n  node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n  var height = 0;\n  do node.height = height;\n  while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n  this.data = data;\n  this.depth =\n  this.height = 0;\n  this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n  constructor: Node,\n  count: node_count,\n  each: node_each,\n  eachAfter: node_eachAfter,\n  eachBefore: node_eachBefore,\n  find: node_find,\n  sum: node_sum,\n  sort: node_sort,\n  path: node_path,\n  ancestors: node_ancestors,\n  descendants: node_descendants,\n  leaves: node_leaves,\n  links: node_links,\n  copy: node_copy,\n  [Symbol.iterator]: node_iterator\n};\n","export default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array) {\n  var m = array.length,\n      t,\n      i;\n\n  while (m) {\n    i = Math.random() * m-- | 0;\n    t = array[m];\n    array[m] = array[i];\n    array[i] = t;\n  }\n\n  return array;\n}\n","import {shuffle} from \"../array.js\";\n\nexport default function(circles) {\n  var i = 0, n = (circles = shuffle(Array.from(circles))).length, B = [], p, e;\n\n  while (i < n) {\n    p = circles[i];\n    if (e && enclosesWeak(e, p)) ++i;\n    else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n  }\n\n  return e;\n}\n\nfunction extendBasis(B, p) {\n  var i, j;\n\n  if (enclosesWeakAll(p, B)) return [p];\n\n  // If we get here then B must have at least one element.\n  for (i = 0; i < B.length; ++i) {\n    if (enclosesNot(p, B[i])\n        && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n      return [B[i], p];\n    }\n  }\n\n  // If we get here then B must have at least two elements.\n  for (i = 0; i < B.length - 1; ++i) {\n    for (j = i + 1; j < B.length; ++j) {\n      if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n          && enclosesNot(encloseBasis2(B[i], p), B[j])\n          && enclosesNot(encloseBasis2(B[j], p), B[i])\n          && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n        return [B[i], B[j], p];\n      }\n    }\n  }\n\n  // If we get here then something is very wrong.\n  throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n  var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n  return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n  var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n  for (var i = 0; i < B.length; ++i) {\n    if (!enclosesWeak(a, B[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction encloseBasis(B) {\n  switch (B.length) {\n    case 1: return encloseBasis1(B[0]);\n    case 2: return encloseBasis2(B[0], B[1]);\n    case 3: return encloseBasis3(B[0], B[1], B[2]);\n  }\n}\n\nfunction encloseBasis1(a) {\n  return {\n    x: a.x,\n    y: a.y,\n    r: a.r\n  };\n}\n\nfunction encloseBasis2(a, b) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n      l = Math.sqrt(x21 * x21 + y21 * y21);\n  return {\n    x: (x1 + x2 + x21 / l * r21) / 2,\n    y: (y1 + y2 + y21 / l * r21) / 2,\n    r: (l + r1 + r2) / 2\n  };\n}\n\nfunction encloseBasis3(a, b, c) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x3 = c.x, y3 = c.y, r3 = c.r,\n      a2 = x1 - x2,\n      a3 = x1 - x3,\n      b2 = y1 - y2,\n      b3 = y1 - y3,\n      c2 = r2 - r1,\n      c3 = r3 - r1,\n      d1 = x1 * x1 + y1 * y1 - r1 * r1,\n      d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n      d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n      ab = a3 * b2 - a2 * b3,\n      xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n      xb = (b3 * c2 - b2 * c3) / ab,\n      ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n      yb = (a2 * c3 - a3 * c2) / ab,\n      A = xb * xb + yb * yb - 1,\n      B = 2 * (r1 + xa * xb + ya * yb),\n      C = xa * xa + ya * ya - r1 * r1,\n      r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n  return {\n    x: x1 + xa + xb * r,\n    y: y1 + ya + yb * r,\n    r: r\n  };\n}\n","import array from \"../array.js\";\nimport enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n  var dx = b.x - a.x, x, a2,\n      dy = b.y - a.y, y, b2,\n      d2 = dx * dx + dy * dy;\n  if (d2) {\n    a2 = a.r + c.r, a2 *= a2;\n    b2 = b.r + c.r, b2 *= b2;\n    if (a2 > b2) {\n      x = (d2 + b2 - a2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n      c.x = b.x - x * dx - y * dy;\n      c.y = b.y - x * dy + y * dx;\n    } else {\n      x = (d2 + a2 - b2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n      c.x = a.x + x * dx - y * dy;\n      c.y = a.y + x * dy + y * dx;\n    }\n  } else {\n    c.x = a.x + c.r;\n    c.y = a.y;\n  }\n}\n\nfunction intersects(a, b) {\n  var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n  var a = node._,\n      b = node.next._,\n      ab = a.r + b.r,\n      dx = (a.x * b.r + b.x * a.r) / ab,\n      dy = (a.y * b.r + b.y * a.r) / ab;\n  return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n  this._ = circle;\n  this.next = null;\n  this.previous = null;\n}\n\nexport function packEnclose(circles) {\n  if (!(n = (circles = array(circles)).length)) return 0;\n\n  var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n  // Place the first circle.\n  a = circles[0], a.x = 0, a.y = 0;\n  if (!(n > 1)) return a.r;\n\n  // Place the second circle.\n  b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n  if (!(n > 2)) return a.r + b.r;\n\n  // Place the third circle.\n  place(b, a, c = circles[2]);\n\n  // Initialize the front-chain using the first three circles a, b and c.\n  a = new Node(a), b = new Node(b), c = new Node(c);\n  a.next = c.previous = b;\n  b.next = a.previous = c;\n  c.next = b.previous = a;\n\n  // Attempt to place each remaining circle…\n  pack: for (i = 3; i < n; ++i) {\n    place(a._, b._, c = circles[i]), c = new Node(c);\n\n    // Find the closest intersecting circle on the front-chain, if any.\n    // “Closeness” is determined by linear distance along the front-chain.\n    // “Ahead” or “behind” is likewise determined by linear distance.\n    j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n    do {\n      if (sj <= sk) {\n        if (intersects(j._, c._)) {\n          b = j, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sj += j._.r, j = j.next;\n      } else {\n        if (intersects(k._, c._)) {\n          a = k, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sk += k._.r, k = k.previous;\n      }\n    } while (j !== k.next);\n\n    // Success! Insert the new circle c between a and b.\n    c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n    // Compute the new closest circle pair to the centroid.\n    aa = score(a);\n    while ((c = c.next) !== b) {\n      if ((ca = score(c)) < aa) {\n        a = c, aa = ca;\n      }\n    }\n    b = a.next;\n  }\n\n  // Compute the enclosing circle of the front chain.\n  a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n  // Translate the circles to put the enclosing circle around the origin.\n  for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n  return c.r;\n}\n\nexport default function(circles) {\n  packEnclose(circles);\n  return circles;\n}\n","export function optional(f) {\n  return f == null ? null : required(f);\n}\n\nexport function required(f) {\n  if (typeof f !== \"function\") throw new Error;\n  return f;\n}\n","export function constantZero() {\n  return 0;\n}\n\nexport default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n  return Math.sqrt(d.value);\n}\n\nexport default function() {\n  var radius = null,\n      dx = 1,\n      dy = 1,\n      padding = constantZero;\n\n  function pack(root) {\n    root.x = dx / 2, root.y = dy / 2;\n    if (radius) {\n      root.eachBefore(radiusLeaf(radius))\n          .eachAfter(packChildren(padding, 0.5))\n          .eachBefore(translateChild(1));\n    } else {\n      root.eachBefore(radiusLeaf(defaultRadius))\n          .eachAfter(packChildren(constantZero, 1))\n          .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n          .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n    }\n    return root;\n  }\n\n  pack.radius = function(x) {\n    return arguments.length ? (radius = optional(x), pack) : radius;\n  };\n\n  pack.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n  };\n\n  pack.padding = function(x) {\n    return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n  };\n\n  return pack;\n}\n\nfunction radiusLeaf(radius) {\n  return function(node) {\n    if (!node.children) {\n      node.r = Math.max(0, +radius(node) || 0);\n    }\n  };\n}\n\nfunction packChildren(padding, k) {\n  return function(node) {\n    if (children = node.children) {\n      var children,\n          i,\n          n = children.length,\n          r = padding(node) * k || 0,\n          e;\n\n      if (r) for (i = 0; i < n; ++i) children[i].r += r;\n      e = packEnclose(children);\n      if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n      node.r = e + r;\n    }\n  };\n}\n\nfunction translateChild(k) {\n  return function(node) {\n    var parent = node.parent;\n    node.r *= k;\n    if (parent) {\n      node.x = parent.x + k * node.x;\n      node.y = parent.y + k * node.y;\n    }\n  };\n}\n","export default function(node) {\n  node.x0 = Math.round(node.x0);\n  node.y0 = Math.round(node.y0);\n  node.x1 = Math.round(node.x1);\n  node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (x1 - x0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.y0 = y0, node.y1 = y1;\n    node.x0 = x0, node.x1 = x0 += node.value * k;\n  }\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n  var dx = 1,\n      dy = 1,\n      padding = 0,\n      round = false;\n\n  function partition(root) {\n    var n = root.height + 1;\n    root.x0 =\n    root.y0 = padding;\n    root.x1 = dx;\n    root.y1 = dy / n;\n    root.eachBefore(positionNode(dy, n));\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(dy, n) {\n    return function(node) {\n      if (node.children) {\n        treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n      }\n      var x0 = node.x0,\n          y0 = node.y0,\n          x1 = node.x1 - padding,\n          y1 = node.y1 - padding;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      node.x0 = x0;\n      node.y0 = y0;\n      node.x1 = x1;\n      node.y1 = y1;\n    };\n  }\n\n  partition.round = function(x) {\n    return arguments.length ? (round = !!x, partition) : round;\n  };\n\n  partition.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n  };\n\n  partition.padding = function(x) {\n    return arguments.length ? (padding = +x, partition) : padding;\n  };\n\n  return partition;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar preroot = {depth: -1},\n    ambiguous = {};\n\nfunction defaultId(d) {\n  return d.id;\n}\n\nfunction defaultParentId(d) {\n  return d.parentId;\n}\n\nexport default function() {\n  var id = defaultId,\n      parentId = defaultParentId;\n\n  function stratify(data) {\n    var nodes = Array.from(data),\n        n = nodes.length,\n        d,\n        i,\n        root,\n        parent,\n        node,\n        nodeId,\n        nodeKey,\n        nodeByKey = new Map;\n\n    for (i = 0; i < n; ++i) {\n      d = nodes[i], node = nodes[i] = new Node(d);\n      if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n        nodeKey = node.id = nodeId;\n        nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n      }\n      if ((nodeId = parentId(d, i, data)) != null && (nodeId += \"\")) {\n        node.parent = nodeId;\n      }\n    }\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i];\n      if (nodeId = node.parent) {\n        parent = nodeByKey.get(nodeId);\n        if (!parent) throw new Error(\"missing: \" + nodeId);\n        if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n        if (parent.children) parent.children.push(node);\n        else parent.children = [node];\n        node.parent = parent;\n      } else {\n        if (root) throw new Error(\"multiple roots\");\n        root = node;\n      }\n    }\n\n    if (!root) throw new Error(\"no root\");\n    root.parent = preroot;\n    root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n    root.parent = null;\n    if (n > 0) throw new Error(\"cycle\");\n\n    return root;\n  }\n\n  stratify.id = function(x) {\n    return arguments.length ? (id = required(x), stratify) : id;\n  };\n\n  stratify.parentId = function(x) {\n    return arguments.length ? (parentId = required(x), stratify) : parentId;\n  };\n\n  return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n//   return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n  var children = v.children;\n  return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n  var children = v.children;\n  return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n  var change = shift / (wp.i - wm.i);\n  wp.c -= change;\n  wp.s += shift;\n  wm.c += change;\n  wp.z += shift;\n  wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n  var shift = 0,\n      change = 0,\n      children = v.children,\n      i = children.length,\n      w;\n  while (--i >= 0) {\n    w = children[i];\n    w.z += shift;\n    w.m += shift;\n    shift += w.s + (change += w.c);\n  }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n  return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n  this._ = node;\n  this.parent = null;\n  this.children = null;\n  this.A = null; // default ancestor\n  this.a = this; // ancestor\n  this.z = 0; // prelim\n  this.m = 0; // mod\n  this.c = 0; // change\n  this.s = 0; // shift\n  this.t = null; // thread\n  this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n  var tree = new TreeNode(root, 0),\n      node,\n      nodes = [tree],\n      child,\n      children,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if (children = node._.children) {\n      node.children = new Array(n = children.length);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n        child.parent = node;\n      }\n    }\n  }\n\n  (tree.parent = new TreeNode(null, 0)).children = [tree];\n  return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = null;\n\n  function tree(root) {\n    var t = treeRoot(root);\n\n    // Compute the layout using Buchheim et al.’s algorithm.\n    t.eachAfter(firstWalk), t.parent.m = -t.z;\n    t.eachBefore(secondWalk);\n\n    // If a fixed node size is specified, scale x and y.\n    if (nodeSize) root.eachBefore(sizeNode);\n\n    // If a fixed tree size is specified, scale x and y based on the extent.\n    // Compute the left-most, right-most, and depth-most nodes for extents.\n    else {\n      var left = root,\n          right = root,\n          bottom = root;\n      root.eachBefore(function(node) {\n        if (node.x < left.x) left = node;\n        if (node.x > right.x) right = node;\n        if (node.depth > bottom.depth) bottom = node;\n      });\n      var s = left === right ? 1 : separation(left, right) / 2,\n          tx = s - left.x,\n          kx = dx / (right.x + s + tx),\n          ky = dy / (bottom.depth || 1);\n      root.eachBefore(function(node) {\n        node.x = (node.x + tx) * kx;\n        node.y = node.depth * ky;\n      });\n    }\n\n    return root;\n  }\n\n  // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n  // applied recursively to the children of v, as well as the function\n  // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n  // node v is placed to the midpoint of its outermost children.\n  function firstWalk(v) {\n    var children = v.children,\n        siblings = v.parent.children,\n        w = v.i ? siblings[v.i - 1] : null;\n    if (children) {\n      executeShifts(v);\n      var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n      if (w) {\n        v.z = w.z + separation(v._, w._);\n        v.m = v.z - midpoint;\n      } else {\n        v.z = midpoint;\n      }\n    } else if (w) {\n      v.z = w.z + separation(v._, w._);\n    }\n    v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n  }\n\n  // Computes all real x-coordinates by summing up the modifiers recursively.\n  function secondWalk(v) {\n    v._.x = v.z + v.parent.m;\n    v.m += v.parent.m;\n  }\n\n  // The core of the algorithm. Here, a new subtree is combined with the\n  // previous subtrees. Threads are used to traverse the inside and outside\n  // contours of the left and right subtree up to the highest common level. The\n  // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n  // superscript o means outside and i means inside, the subscript - means left\n  // subtree and + means right subtree. For summing up the modifiers along the\n  // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n  // nodes of the inside contours conflict, we compute the left one of the\n  // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n  // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n  // Finally, we add a new thread (if necessary).\n  function apportion(v, w, ancestor) {\n    if (w) {\n      var vip = v,\n          vop = v,\n          vim = w,\n          vom = vip.parent.children[0],\n          sip = vip.m,\n          sop = vop.m,\n          sim = vim.m,\n          som = vom.m,\n          shift;\n      while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n        vom = nextLeft(vom);\n        vop = nextRight(vop);\n        vop.a = v;\n        shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n        if (shift > 0) {\n          moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n          sip += shift;\n          sop += shift;\n        }\n        sim += vim.m;\n        sip += vip.m;\n        som += vom.m;\n        sop += vop.m;\n      }\n      if (vim && !nextRight(vop)) {\n        vop.t = vim;\n        vop.m += sim - sop;\n      }\n      if (vip && !nextLeft(vom)) {\n        vom.t = vip;\n        vom.m += sip - som;\n        ancestor = v;\n      }\n    }\n    return ancestor;\n  }\n\n  function sizeNode(node) {\n    node.x *= dx;\n    node.y = node.depth * dy;\n  }\n\n  tree.separation = function(x) {\n    return arguments.length ? (separation = x, tree) : separation;\n  };\n\n  tree.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n  };\n\n  tree.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return tree;\n}\n","function defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n  return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n  return x + c.x;\n}\n\nfunction maxY(children) {\n  return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n  return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n  var children;\n  while (children = node.children) node = children[0];\n  return node;\n}\n\nfunction leafRight(node) {\n  var children;\n  while (children = node.children) node = children[children.length - 1];\n  return node;\n}\n\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = false;\n\n  function cluster(root) {\n    var previousNode,\n        x = 0;\n\n    // First walk, computing the initial x & y values.\n    root.eachAfter(function(node) {\n      var children = node.children;\n      if (children) {\n        node.x = meanX(children);\n        node.y = maxY(children);\n      } else {\n        node.x = previousNode ? x += separation(node, previousNode) : 0;\n        node.y = 0;\n        previousNode = node;\n      }\n    });\n\n    var left = leafLeft(root),\n        right = leafRight(root),\n        x0 = left.x - separation(left, right) / 2,\n        x1 = right.x + separation(right, left) / 2;\n\n    // Second walk, normalizing x & y to the desired size.\n    return root.eachAfter(nodeSize ? function(node) {\n      node.x = (node.x - root.x) * dx;\n      node.y = (root.y - node.y) * dy;\n    } : function(node) {\n      node.x = (node.x - x0) / (x1 - x0) * dx;\n      node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n    });\n  }\n\n  cluster.separation = function(x) {\n    return arguments.length ? (separation = x, cluster) : separation;\n  };\n\n  cluster.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n  };\n\n  cluster.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return cluster;\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      i, n = nodes.length,\n      sum, sums = new Array(n + 1);\n\n  for (sums[0] = sum = i = 0; i < n; ++i) {\n    sums[i + 1] = sum += nodes[i].value;\n  }\n\n  partition(0, n, parent.value, x0, y0, x1, y1);\n\n  function partition(i, j, value, x0, y0, x1, y1) {\n    if (i >= j - 1) {\n      var node = nodes[i];\n      node.x0 = x0, node.y0 = y0;\n      node.x1 = x1, node.y1 = y1;\n      return;\n    }\n\n    var valueOffset = sums[i],\n        valueTarget = (value / 2) + valueOffset,\n        k = i + 1,\n        hi = j - 1;\n\n    while (k < hi) {\n      var mid = k + hi >>> 1;\n      if (sums[mid] < valueTarget) k = mid + 1;\n      else hi = mid;\n    }\n\n    if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n    var valueLeft = sums[k] - valueOffset,\n        valueRight = value - valueLeft;\n\n    if ((x1 - x0) > (y1 - y0)) {\n      var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n      partition(i, k, valueLeft, x0, y0, xk, y1);\n      partition(k, j, valueRight, xk, y0, x1, y1);\n    } else {\n      var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n      partition(i, k, valueLeft, x0, y0, x1, yk);\n      partition(k, j, valueRight, x0, yk, x1, y1);\n    }\n  }\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (y1 - y0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.x0 = x0, node.x1 = x1;\n    node.y0 = y0, node.y1 = y0 += node.value * k;\n  }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n  (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n  var rows = [],\n      nodes = parent.children,\n      row,\n      nodeValue,\n      i0 = 0,\n      i1 = 0,\n      n = nodes.length,\n      dx, dy,\n      value = parent.value,\n      sumValue,\n      minValue,\n      maxValue,\n      newRatio,\n      minRatio,\n      alpha,\n      beta;\n\n  while (i0 < n) {\n    dx = x1 - x0, dy = y1 - y0;\n\n    // Find the next non-empty node.\n    do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n    minValue = maxValue = sumValue;\n    alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n    beta = sumValue * sumValue * alpha;\n    minRatio = Math.max(maxValue / beta, beta / minValue);\n\n    // Keep adding nodes while the aspect ratio maintains or improves.\n    for (; i1 < n; ++i1) {\n      sumValue += nodeValue = nodes[i1].value;\n      if (nodeValue < minValue) minValue = nodeValue;\n      if (nodeValue > maxValue) maxValue = nodeValue;\n      beta = sumValue * sumValue * alpha;\n      newRatio = Math.max(maxValue / beta, beta / minValue);\n      if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n      minRatio = newRatio;\n    }\n\n    // Position and record the row orientation.\n    rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n    if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n    else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n    value -= sumValue, i0 = i1;\n  }\n\n  return rows;\n}\n\nexport default (function custom(ratio) {\n\n  function squarify(parent, x0, y0, x1, y1) {\n    squarifyRatio(ratio, parent, x0, y0, x1, y1);\n  }\n\n  squarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return squarify;\n})(phi);\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n  function resquarify(parent, x0, y0, x1, y1) {\n    if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n      var rows,\n          row,\n          nodes,\n          i,\n          j = -1,\n          n,\n          m = rows.length,\n          value = parent.value;\n\n      while (++j < m) {\n        row = rows[j], nodes = row.children;\n        for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n        if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);\n        else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n        value -= row.value;\n      }\n    } else {\n      parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n      rows.ratio = ratio;\n    }\n  }\n\n  resquarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return resquarify;\n})(phi);\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n  var tile = squarify,\n      round = false,\n      dx = 1,\n      dy = 1,\n      paddingStack = [0],\n      paddingInner = constantZero,\n      paddingTop = constantZero,\n      paddingRight = constantZero,\n      paddingBottom = constantZero,\n      paddingLeft = constantZero;\n\n  function treemap(root) {\n    root.x0 =\n    root.y0 = 0;\n    root.x1 = dx;\n    root.y1 = dy;\n    root.eachBefore(positionNode);\n    paddingStack = [0];\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(node) {\n    var p = paddingStack[node.depth],\n        x0 = node.x0 + p,\n        y0 = node.y0 + p,\n        x1 = node.x1 - p,\n        y1 = node.y1 - p;\n    if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n    if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n    node.x0 = x0;\n    node.y0 = y0;\n    node.x1 = x1;\n    node.y1 = y1;\n    if (node.children) {\n      p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n      x0 += paddingLeft(node) - p;\n      y0 += paddingTop(node) - p;\n      x1 -= paddingRight(node) - p;\n      y1 -= paddingBottom(node) - p;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      tile(node, x0, y0, x1, y1);\n    }\n  }\n\n  treemap.round = function(x) {\n    return arguments.length ? (round = !!x, treemap) : round;\n  };\n\n  treemap.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n  };\n\n  treemap.tile = function(x) {\n    return arguments.length ? (tile = required(x), treemap) : tile;\n  };\n\n  treemap.padding = function(x) {\n    return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n  };\n\n  treemap.paddingInner = function(x) {\n    return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n  };\n\n  treemap.paddingOuter = function(x) {\n    return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n  };\n\n  treemap.paddingTop = function(x) {\n    return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n  };\n\n  treemap.paddingRight = function(x) {\n    return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n  };\n\n  treemap.paddingBottom = function(x) {\n    return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n  };\n\n  treemap.paddingLeft = function(x) {\n    return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n  };\n\n  return treemap;\n}\n","import { Transform, isTuple, ingest, tupleid, stableCompare } from 'vega-dataflow';\nimport { inherits, error, array, one, truthy, hasOwnProperty } from 'vega-util';\nimport { hierarchy, pack, partition, stratify, tree, cluster, treemap, treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify } from 'd3-hierarchy';\n\n// Build lookup table mapping tuple keys to tree node instances\nfunction lookup (tree, key, filter) {\n  const map = {};\n  tree.each(node => {\n    const t = node.data;\n    if (filter(t)) map[key(t)] = node;\n  });\n  tree.lookup = map;\n  return tree;\n}\n\n/**\n * Nest tuples into a tree structure, grouped by key values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.keys - The key fields to nest by, in order.\n * @param {boolean} [params.generate=false] - A boolean flag indicating if\n *   non-leaf nodes generated by this transform should be included in the\n *   output. The default (false) includes only the input data (leaf nodes)\n *   in the data stream.\n */\n\nfunction Nest(params) {\n  Transform.call(this, null, params);\n}\nNest.Definition = {\n  'type': 'Nest',\n  'metadata': {\n    'treesource': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'keys',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'generate',\n    'type': 'boolean'\n  }]\n};\n\nconst children = n => n.values;\n\ninherits(Nest, Transform, {\n  transform(_, pulse) {\n    if (!pulse.source) {\n      error('Nest transform requires an upstream data source.');\n    }\n\n    var gen = _.generate,\n        mod = _.modified(),\n        out = pulse.clone(),\n        tree = this.value;\n\n    if (!tree || mod || pulse.changed()) {\n      // collect nodes to remove\n      if (tree) {\n        tree.each(node => {\n          if (node.children && isTuple(node.data)) {\n            out.rem.push(node.data);\n          }\n        });\n      } // generate new tree structure\n\n\n      this.value = tree = hierarchy({\n        values: array(_.keys).reduce((n, k) => {\n          n.key(k);\n          return n;\n        }, nest()).entries(out.source)\n      }, children); // collect nodes to add\n\n      if (gen) {\n        tree.each(node => {\n          if (node.children) {\n            node = ingest(node.data);\n            out.add.push(node);\n            out.source.push(node);\n          }\n        });\n      } // build lookup table\n\n\n      lookup(tree, tupleid, tupleid);\n    }\n\n    out.source.root = tree;\n    return out;\n  }\n\n});\n\nfunction nest() {\n  const keys = [],\n        nest = {\n    entries: array => entries(apply(array, 0), 0),\n    key: d => (keys.push(d), nest)\n  };\n\n  function apply(array, depth) {\n    if (depth >= keys.length) {\n      return array;\n    }\n\n    const n = array.length,\n          key = keys[depth++],\n          valuesByKey = {},\n          result = {};\n    let i = -1,\n        keyValue,\n        value,\n        values;\n\n    while (++i < n) {\n      keyValue = key(value = array[i]) + '';\n\n      if (values = valuesByKey[keyValue]) {\n        values.push(value);\n      } else {\n        valuesByKey[keyValue] = [value];\n      }\n    }\n\n    for (keyValue in valuesByKey) {\n      result[keyValue] = apply(valuesByKey[keyValue], depth);\n    }\n\n    return result;\n  }\n\n  function entries(map, depth) {\n    if (++depth > keys.length) return map;\n    const array = [];\n\n    for (const key in map) {\n      array.push({\n        key,\n        values: entries(map[key], depth)\n      });\n    }\n\n    return array;\n  }\n\n  return nest;\n}\n\n/**\n * Abstract class for tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\n\nfunction HierarchyLayout(params) {\n  Transform.call(this, null, params);\n}\n\nconst defaultSeparation = (a, b) => a.parent === b.parent ? 1 : 2;\n\ninherits(HierarchyLayout, Transform, {\n  transform(_, pulse) {\n    if (!pulse.source || !pulse.source.root) {\n      error(this.constructor.name + ' transform requires a backing tree data source.');\n    }\n\n    const layout = this.layout(_.method),\n          fields = this.fields,\n          root = pulse.source.root,\n          as = _.as || fields;\n    if (_.field) root.sum(_.field);else root.count();\n    if (_.sort) root.sort(stableCompare(_.sort, d => d.data));\n    setParams(layout, this.params, _);\n\n    if (layout.separation) {\n      layout.separation(_.separation !== false ? defaultSeparation : one);\n    }\n\n    try {\n      this.value = layout(root);\n    } catch (err) {\n      error(err);\n    }\n\n    root.each(node => setFields(node, fields, as));\n    return pulse.reflow(_.modified()).modifies(as).modifies('leaf');\n  }\n\n});\n\nfunction setParams(layout, params, _) {\n  for (let p, i = 0, n = params.length; i < n; ++i) {\n    p = params[i];\n    if (p in _) layout[p](_[p]);\n  }\n}\n\nfunction setFields(node, fields, as) {\n  const t = node.data,\n        n = fields.length - 1;\n\n  for (let i = 0; i < n; ++i) {\n    t[as[i]] = node[fields[i]];\n  }\n\n  t[as[n]] = node.children ? node.children.length : 0;\n}\n\nconst Output = ['x', 'y', 'r', 'depth', 'children'];\n/**\n * Packed circle tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\n\nfunction Pack(params) {\n  HierarchyLayout.call(this, params);\n}\nPack.Definition = {\n  'type': 'Pack',\n  'metadata': {\n    'tree': true,\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'padding',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'radius',\n    'type': 'field',\n    'default': null\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': Output.length,\n    'default': Output\n  }]\n};\ninherits(Pack, HierarchyLayout, {\n  layout: pack,\n  params: ['radius', 'size', 'padding'],\n  fields: Output\n});\n\nconst Output$1 = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n/**\n * Partition tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\n\nfunction Partition(params) {\n  HierarchyLayout.call(this, params);\n}\nPartition.Definition = {\n  'type': 'Partition',\n  'metadata': {\n    'tree': true,\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'padding',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'round',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': Output$1.length,\n    'default': Output$1\n  }]\n};\ninherits(Partition, HierarchyLayout, {\n  layout: partition,\n  params: ['size', 'round', 'padding'],\n  fields: Output$1\n});\n\n/**\n * Stratify a collection of tuples into a tree structure based on\n * id and parent id fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.key - Unique key field for each tuple.\n * @param {function(object): *} params.parentKey - Field with key for parent tuple.\n */\n\nfunction Stratify(params) {\n  Transform.call(this, null, params);\n}\nStratify.Definition = {\n  'type': 'Stratify',\n  'metadata': {\n    'treesource': true\n  },\n  'params': [{\n    'name': 'key',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'parentKey',\n    'type': 'field',\n    'required': true\n  }]\n};\ninherits(Stratify, Transform, {\n  transform(_, pulse) {\n    if (!pulse.source) {\n      error('Stratify transform requires an upstream data source.');\n    }\n\n    let tree = this.value;\n\n    const mod = _.modified(),\n          out = pulse.fork(pulse.ALL).materialize(pulse.SOURCE),\n          run = !tree || mod || pulse.changed(pulse.ADD_REM) || pulse.modified(_.key.fields) || pulse.modified(_.parentKey.fields); // prevent upstream source pollution\n\n\n    out.source = out.source.slice();\n\n    if (run) {\n      tree = out.source.length ? lookup(stratify().id(_.key).parentId(_.parentKey)(out.source), _.key, truthy) : lookup(stratify()([{}]), _.key, _.key);\n    }\n\n    out.source.root = this.value = tree;\n    return out;\n  }\n\n});\n\nconst Layouts = {\n  tidy: tree,\n  cluster: cluster\n};\nconst Output$2 = ['x', 'y', 'depth', 'children'];\n/**\n * Tree layout. Depending on the method parameter, performs either\n * Reingold-Tilford 'tidy' layout or dendrogram 'cluster' layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\n\nfunction Tree(params) {\n  HierarchyLayout.call(this, params);\n}\nTree.Definition = {\n  'type': 'Tree',\n  'metadata': {\n    'tree': true,\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'method',\n    'type': 'enum',\n    'default': 'tidy',\n    'values': ['tidy', 'cluster']\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'nodeSize',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'separation',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': Output$2.length,\n    'default': Output$2\n  }]\n};\ninherits(Tree, HierarchyLayout, {\n  /**\n   * Tree layout generator. Supports both 'tidy' and 'cluster' layouts.\n   */\n  layout(method) {\n    const m = method || 'tidy';\n    if (hasOwnProperty(Layouts, m)) return Layouts[m]();else error('Unrecognized Tree layout method: ' + m);\n  },\n\n  params: ['size', 'nodeSize'],\n  fields: Output$2\n});\n\n/**\n * Generate tuples representing links between tree nodes.\n * The resulting tuples will contain 'source' and 'target' fields,\n * which point to parent and child node tuples, respectively.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\n\nfunction TreeLinks(params) {\n  Transform.call(this, [], params);\n}\nTreeLinks.Definition = {\n  'type': 'TreeLinks',\n  'metadata': {\n    'tree': true,\n    'generates': true,\n    'changes': true\n  },\n  'params': []\n};\ninherits(TreeLinks, Transform, {\n  transform(_, pulse) {\n    const links = this.value,\n          tree = pulse.source && pulse.source.root,\n          out = pulse.fork(pulse.NO_SOURCE),\n          lut = {};\n    if (!tree) error('TreeLinks transform requires a tree data source.');\n\n    if (pulse.changed(pulse.ADD_REM)) {\n      // remove previous links\n      out.rem = links; // build lookup table of valid tuples\n\n      pulse.visit(pulse.SOURCE, t => lut[tupleid(t)] = 1); // generate links for all edges incident on valid tuples\n\n      tree.each(node => {\n        const t = node.data,\n              p = node.parent && node.parent.data;\n\n        if (p && lut[tupleid(t)] && lut[tupleid(p)]) {\n          out.add.push(ingest({\n            source: p,\n            target: t\n          }));\n        }\n      });\n      this.value = out.add;\n    } else if (pulse.changed(pulse.MOD)) {\n      // build lookup table of modified tuples\n      pulse.visit(pulse.MOD, t => lut[tupleid(t)] = 1); // gather links incident on modified tuples\n\n      links.forEach(link => {\n        if (lut[tupleid(link.source)] || lut[tupleid(link.target)]) {\n          out.mod.push(link);\n        }\n      });\n    }\n\n    return out;\n  }\n\n});\n\nconst Tiles = {\n  binary: treemapBinary,\n  dice: treemapDice,\n  slice: treemapSlice,\n  slicedice: treemapSliceDice,\n  squarify: treemapSquarify,\n  resquarify: treemapResquarify\n};\nconst Output$3 = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n/**\n * Treemap layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\n\nfunction Treemap(params) {\n  HierarchyLayout.call(this, params);\n}\nTreemap.Definition = {\n  'type': 'Treemap',\n  'metadata': {\n    'tree': true,\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'method',\n    'type': 'enum',\n    'default': 'squarify',\n    'values': ['squarify', 'resquarify', 'binary', 'dice', 'slice', 'slicedice']\n  }, {\n    'name': 'padding',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingInner',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingOuter',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingTop',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingRight',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingBottom',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingLeft',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'ratio',\n    'type': 'number',\n    'default': 1.618033988749895\n  }, {\n    'name': 'round',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': Output$3.length,\n    'default': Output$3\n  }]\n};\ninherits(Treemap, HierarchyLayout, {\n  /**\n   * Treemap layout generator. Adds 'method' and 'ratio' parameters\n   * to configure the underlying tile method.\n   */\n  layout() {\n    const x = treemap();\n\n    x.ratio = _ => {\n      const t = x.tile();\n      if (t.ratio) x.tile(t.ratio(_));\n    };\n\n    x.method = _ => {\n      if (hasOwnProperty(Tiles, _)) x.tile(Tiles[_]);else error('Unrecognized Treemap layout method: ' + _);\n    };\n\n    return x;\n  },\n\n  params: ['method', 'ratio', 'size', 'round', 'padding', 'paddingInner', 'paddingOuter', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'],\n  fields: Output$3\n});\n\nexport { Nest as nest, Pack as pack, Partition as partition, Stratify as stratify, Tree as tree, TreeLinks as treelinks, Treemap as treemap };\n","import { canvas } from 'vega-canvas';\nimport { rederive, Transform } from 'vega-dataflow';\nimport { Marks, textMetrics } from 'vega-scenegraph';\nimport { inherits, isFunction, error, array } from 'vega-util';\n\nconst ALPHA_MASK = 0xff000000; // alpha value equivalent to opacity 0.0625\n\nconst INSIDE_OPACITY_IN_ALPHA = 0x10000000;\nconst INSIDE_OPACITY = 0.0625;\nfunction baseBitmaps($, data) {\n  const bitmap = $.bitmap(); // when there is no base mark but data points are to be avoided\n\n  (data || []).forEach(d => bitmap.set($(d.boundary[0]), $(d.boundary[3])));\n  return [bitmap, undefined];\n}\nfunction markBitmaps($, avoidMarks, labelInside, isGroupArea) {\n  // create canvas\n  const width = $.width,\n        height = $.height,\n        border = labelInside || isGroupArea,\n        context = canvas(width, height).getContext('2d'); // render all marks to be avoided into canvas\n\n  avoidMarks.forEach(items => draw(context, items, border)); // get canvas buffer, create bitmaps\n\n  const buffer = new Uint32Array(context.getImageData(0, 0, width, height).data.buffer),\n        layer1 = $.bitmap(),\n        layer2 = border && $.bitmap(); // populate bitmap layers\n\n  let x, y, u, v, alpha;\n\n  for (y = 0; y < height; ++y) {\n    for (x = 0; x < width; ++x) {\n      alpha = buffer[y * width + x] & ALPHA_MASK;\n\n      if (alpha) {\n        u = $(x);\n        v = $(y);\n        if (!isGroupArea) layer1.set(u, v); // update interior bitmap\n\n        if (border && alpha ^ INSIDE_OPACITY_IN_ALPHA) layer2.set(u, v); // update border bitmap\n      }\n    }\n  }\n\n  return [layer1, layer2];\n}\n\nfunction draw(context, items, interior) {\n  if (!items.length) return;\n  const type = items[0].mark.marktype;\n\n  if (type === 'group') {\n    items.forEach(group => {\n      group.items.forEach(mark => draw(context, mark.items, interior));\n    });\n  } else {\n    Marks[type].draw(context, {\n      items: interior ? items.map(prepare) : items\n    });\n  }\n}\n/**\n * Prepare item before drawing into canvas (setting stroke and opacity)\n * @param {object} source item to be prepared\n * @returns prepared item\n */\n\n\nfunction prepare(source) {\n  const item = rederive(source, {});\n\n  if (item.stroke) {\n    item.strokeOpacity = 1;\n  }\n\n  if (item.fill) {\n    item.fillOpacity = INSIDE_OPACITY;\n    item.stroke = '#000';\n    item.strokeOpacity = 1;\n    item.strokeWidth = 2;\n  }\n\n  return item;\n}\n\nconst DIV = 5,\n      // bit shift from x, y index to bit vector array index\nMOD = 31,\n      // bit mask for index lookup within a bit vector\nSIZE = 32,\n      // individual bit vector size\nRIGHT0 = new Uint32Array(SIZE + 1),\n      // left-anchored bit vectors, full -> 0\nRIGHT1 = new Uint32Array(SIZE + 1); // right-anchored bit vectors, 0 -> full\n\nRIGHT1[0] = 0;\nRIGHT0[0] = ~RIGHT1[0];\n\nfor (let i = 1; i <= SIZE; ++i) {\n  RIGHT1[i] = RIGHT1[i - 1] << 1 | 1;\n  RIGHT0[i] = ~RIGHT1[i];\n}\n\nfunction Bitmap (w, h) {\n  const array = new Uint32Array(~~((w * h + SIZE) / SIZE));\n\n  function _set(index, mask) {\n    array[index] |= mask;\n  }\n\n  function _clear(index, mask) {\n    array[index] &= mask;\n  }\n\n  return {\n    array: array,\n    get: (x, y) => {\n      const index = y * w + x;\n      return array[index >>> DIV] & 1 << (index & MOD);\n    },\n    set: (x, y) => {\n      const index = y * w + x;\n\n      _set(index >>> DIV, 1 << (index & MOD));\n    },\n    clear: (x, y) => {\n      const index = y * w + x;\n\n      _clear(index >>> DIV, ~(1 << (index & MOD)));\n    },\n    getRange: (x, y, x2, y2) => {\n      let r = y2,\n          start,\n          end,\n          indexStart,\n          indexEnd;\n\n      for (; r >= y; --r) {\n        start = r * w + x;\n        end = r * w + x2;\n        indexStart = start >>> DIV;\n        indexEnd = end >>> DIV;\n\n        if (indexStart === indexEnd) {\n          if (array[indexStart] & RIGHT0[start & MOD] & RIGHT1[(end & MOD) + 1]) {\n            return true;\n          }\n        } else {\n          if (array[indexStart] & RIGHT0[start & MOD]) return true;\n          if (array[indexEnd] & RIGHT1[(end & MOD) + 1]) return true;\n\n          for (let i = indexStart + 1; i < indexEnd; ++i) {\n            if (array[i]) return true;\n          }\n        }\n      }\n\n      return false;\n    },\n    setRange: (x, y, x2, y2) => {\n      let start, end, indexStart, indexEnd, i;\n\n      for (; y <= y2; ++y) {\n        start = y * w + x;\n        end = y * w + x2;\n        indexStart = start >>> DIV;\n        indexEnd = end >>> DIV;\n\n        if (indexStart === indexEnd) {\n          _set(indexStart, RIGHT0[start & MOD] & RIGHT1[(end & MOD) + 1]);\n        } else {\n          _set(indexStart, RIGHT0[start & MOD]);\n\n          _set(indexEnd, RIGHT1[(end & MOD) + 1]);\n\n          for (i = indexStart + 1; i < indexEnd; ++i) _set(i, 0xffffffff);\n        }\n      }\n    },\n    clearRange: (x, y, x2, y2) => {\n      let start, end, indexStart, indexEnd, i;\n\n      for (; y <= y2; ++y) {\n        start = y * w + x;\n        end = y * w + x2;\n        indexStart = start >>> DIV;\n        indexEnd = end >>> DIV;\n\n        if (indexStart === indexEnd) {\n          _clear(indexStart, RIGHT1[start & MOD] | RIGHT0[(end & MOD) + 1]);\n        } else {\n          _clear(indexStart, RIGHT1[start & MOD]);\n\n          _clear(indexEnd, RIGHT0[(end & MOD) + 1]);\n\n          for (i = indexStart + 1; i < indexEnd; ++i) _clear(i, 0);\n        }\n      }\n    },\n    outOfBounds: (x, y, x2, y2) => x < 0 || y < 0 || y2 >= h || x2 >= w\n  };\n}\n\nfunction scaler (width, height, padding) {\n  const ratio = Math.max(1, Math.sqrt(width * height / 1e6)),\n        w = ~~((width + 2 * padding + ratio) / ratio),\n        h = ~~((height + 2 * padding + ratio) / ratio),\n        scale = _ => ~~((_ + padding) / ratio);\n\n  scale.invert = _ => _ * ratio - padding;\n\n  scale.bitmap = () => Bitmap(w, h);\n\n  scale.ratio = ratio;\n  scale.padding = padding;\n  scale.width = width;\n  scale.height = height;\n  return scale;\n}\n\nfunction placeAreaLabelNaive ($, bitmaps, avoidBaseMark, markIndex) {\n  const width = $.width,\n        height = $.height; // try to place a label within an input area mark\n\n  return function (d) {\n    const items = d.datum.datum.items[markIndex].items,\n          // area points\n    n = items.length,\n          // number of points\n    textHeight = d.datum.fontSize,\n          // label width\n    textWidth = textMetrics.width(d.datum, d.datum.text); // label height\n\n    let maxAreaWidth = 0,\n        x1,\n        x2,\n        y1,\n        y2,\n        x,\n        y,\n        areaWidth; // for each area sample point\n\n    for (let i = 0; i < n; ++i) {\n      x1 = items[i].x;\n      y1 = items[i].y;\n      x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n      y2 = items[i].y2 === undefined ? y1 : items[i].y2;\n      x = (x1 + x2) / 2;\n      y = (y1 + y2) / 2;\n      areaWidth = Math.abs(x2 - x1 + y2 - y1);\n\n      if (areaWidth >= maxAreaWidth) {\n        maxAreaWidth = areaWidth;\n        d.x = x;\n        d.y = y;\n      }\n    }\n\n    x = textWidth / 2;\n    y = textHeight / 2;\n    x1 = d.x - x;\n    x2 = d.x + x;\n    y1 = d.y - y;\n    y2 = d.y + y;\n    d.align = 'center';\n\n    if (x1 < 0 && x2 <= width) {\n      d.align = 'left';\n    } else if (0 <= x1 && width < x2) {\n      d.align = 'right';\n    }\n\n    d.baseline = 'middle';\n\n    if (y1 < 0 && y2 <= height) {\n      d.baseline = 'top';\n    } else if (0 <= y1 && height < y2) {\n      d.baseline = 'bottom';\n    }\n\n    return true;\n  };\n}\n\nfunction outOfBounds(x, y, textWidth, textHeight, width, height) {\n  let r = textWidth / 2;\n  return x - r < 0 || x + r > width || y - (r = textHeight / 2) < 0 || y + r > height;\n}\nfunction collision($, x, y, textHeight, textWidth, h, bm0, bm1) {\n  const w = textWidth * h / (textHeight * 2),\n        x1 = $(x - w),\n        x2 = $(x + w),\n        y1 = $(y - (h = h / 2)),\n        y2 = $(y + h);\n  return bm0.outOfBounds(x1, y1, x2, y2) || bm0.getRange(x1, y1, x2, y2) || bm1 && bm1.getRange(x1, y1, x2, y2);\n}\n\nfunction placeAreaLabelReducedSearch ($, bitmaps, avoidBaseMark, markIndex) {\n  const width = $.width,\n        height = $.height,\n        bm0 = bitmaps[0],\n        // where labels have been placed\n  bm1 = bitmaps[1]; // area outlines\n\n  function tryLabel(_x, _y, maxSize, textWidth, textHeight) {\n    const x = $.invert(_x),\n          y = $.invert(_y);\n    let lo = maxSize,\n        hi = height,\n        mid;\n\n    if (!outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, lo, bm0, bm1) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n      // if the label fits at the current sample point,\n      // perform binary search to find the largest font size that fits\n      while (hi - lo >= 1) {\n        mid = (lo + hi) / 2;\n\n        if (collision($, x, y, textHeight, textWidth, mid, bm0, bm1)) {\n          hi = mid;\n        } else {\n          lo = mid;\n        }\n      } // place label if current lower bound exceeds prior max font size\n\n\n      if (lo > maxSize) {\n        return [x, y, lo, true];\n      }\n    }\n  } // try to place a label within an input area mark\n\n\n  return function (d) {\n    const items = d.datum.datum.items[markIndex].items,\n          // area points\n    n = items.length,\n          // number of points\n    textHeight = d.datum.fontSize,\n          // label width\n    textWidth = textMetrics.width(d.datum, d.datum.text); // label height\n\n    let maxSize = avoidBaseMark ? textHeight : 0,\n        labelPlaced = false,\n        labelPlaced2 = false,\n        maxAreaWidth = 0,\n        x1,\n        x2,\n        y1,\n        y2,\n        x,\n        y,\n        _x,\n        _y,\n        _x1,\n        _xMid,\n        _x2,\n        _y1,\n        _yMid,\n        _y2,\n        areaWidth,\n        result,\n        swapTmp; // for each area sample point\n\n\n    for (let i = 0; i < n; ++i) {\n      x1 = items[i].x;\n      y1 = items[i].y;\n      x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n      y2 = items[i].y2 === undefined ? y1 : items[i].y2;\n\n      if (x1 > x2) {\n        swapTmp = x1;\n        x1 = x2;\n        x2 = swapTmp;\n      }\n\n      if (y1 > y2) {\n        swapTmp = y1;\n        y1 = y2;\n        y2 = swapTmp;\n      }\n\n      _x1 = $(x1);\n      _x2 = $(x2);\n      _xMid = ~~((_x1 + _x2) / 2);\n      _y1 = $(y1);\n      _y2 = $(y2);\n      _yMid = ~~((_y1 + _y2) / 2); // search along the line from mid point between the 2 border to lower border\n\n      for (_x = _xMid; _x >= _x1; --_x) {\n        for (_y = _yMid; _y >= _y1; --_y) {\n          result = tryLabel(_x, _y, maxSize, textWidth, textHeight);\n\n          if (result) {\n            [d.x, d.y, maxSize, labelPlaced] = result;\n          }\n        }\n      } // search along the line from mid point between the 2 border to upper border\n\n\n      for (_x = _xMid; _x <= _x2; ++_x) {\n        for (_y = _yMid; _y <= _y2; ++_y) {\n          result = tryLabel(_x, _y, maxSize, textWidth, textHeight);\n\n          if (result) {\n            [d.x, d.y, maxSize, labelPlaced] = result;\n          }\n        }\n      } // place label at slice center if not placed through other means\n      // and if we're not avoiding overlap with other areas\n\n\n      if (!labelPlaced && !avoidBaseMark) {\n        // one span is zero, hence we can add\n        areaWidth = Math.abs(x2 - x1 + y2 - y1);\n        x = (x1 + x2) / 2;\n        y = (y1 + y2) / 2; // place label if it fits and improves the max area width\n\n        if (areaWidth >= maxAreaWidth && !outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n          maxAreaWidth = areaWidth;\n          d.x = x;\n          d.y = y;\n          labelPlaced2 = true;\n        }\n      }\n    } // record current label placement information, update label bitmap\n\n\n    if (labelPlaced || labelPlaced2) {\n      x = textWidth / 2;\n      y = textHeight / 2;\n      bm0.setRange($(d.x - x), $(d.y - y), $(d.x + x), $(d.y + y));\n      d.align = 'center';\n      d.baseline = 'middle';\n      return true;\n    } else {\n      return false;\n    }\n  };\n}\n\nconst X_DIR = [-1, -1, 1, 1];\nconst Y_DIR = [-1, 1, -1, 1];\nfunction placeAreaLabelFloodFill ($, bitmaps, avoidBaseMark, markIndex) {\n  const width = $.width,\n        height = $.height,\n        bm0 = bitmaps[0],\n        // where labels have been placed\n  bm1 = bitmaps[1],\n        // area outlines\n  bm2 = $.bitmap(); // flood-fill visitations\n  // try to place a label within an input area mark\n\n  return function (d) {\n    const items = d.datum.datum.items[markIndex].items,\n          // area points\n    n = items.length,\n          // number of points\n    textHeight = d.datum.fontSize,\n          // label width\n    textWidth = textMetrics.width(d.datum, d.datum.text),\n          // label height\n    stack = []; // flood fill stack\n\n    let maxSize = avoidBaseMark ? textHeight : 0,\n        labelPlaced = false,\n        labelPlaced2 = false,\n        maxAreaWidth = 0,\n        x1,\n        x2,\n        y1,\n        y2,\n        x,\n        y,\n        _x,\n        _y,\n        lo,\n        hi,\n        mid,\n        areaWidth; // for each area sample point\n\n\n    for (let i = 0; i < n; ++i) {\n      x1 = items[i].x;\n      y1 = items[i].y;\n      x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n      y2 = items[i].y2 === undefined ? y1 : items[i].y2; // add scaled center point to stack\n\n      stack.push([$((x1 + x2) / 2), $((y1 + y2) / 2)]); // perform flood fill, visit points\n\n      while (stack.length) {\n        [_x, _y] = stack.pop(); // exit if point already marked\n\n        if (bm0.get(_x, _y) || bm1.get(_x, _y) || bm2.get(_x, _y)) continue; // mark point in flood fill bitmap\n        // add search points for all (in bound) directions\n\n        bm2.set(_x, _y);\n\n        for (let j = 0; j < 4; ++j) {\n          x = _x + X_DIR[j];\n          y = _y + Y_DIR[j];\n          if (!bm2.outOfBounds(x, y, x, y)) stack.push([x, y]);\n        } // unscale point back to x, y space\n\n\n        x = $.invert(_x);\n        y = $.invert(_y);\n        lo = maxSize;\n        hi = height; // TODO: make this bound smaller\n\n        if (!outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, lo, bm0, bm1) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n          // if the label fits at the current sample point,\n          // perform binary search to find the largest font size that fits\n          while (hi - lo >= 1) {\n            mid = (lo + hi) / 2;\n\n            if (collision($, x, y, textHeight, textWidth, mid, bm0, bm1)) {\n              hi = mid;\n            } else {\n              lo = mid;\n            }\n          } // place label if current lower bound exceeds prior max font size\n\n\n          if (lo > maxSize) {\n            d.x = x;\n            d.y = y;\n            maxSize = lo;\n            labelPlaced = true;\n          }\n        }\n      } // place label at slice center if not placed through other means\n      // and if we're not avoiding overlap with other areas\n\n\n      if (!labelPlaced && !avoidBaseMark) {\n        // one span is zero, hence we can add\n        areaWidth = Math.abs(x2 - x1 + y2 - y1);\n        x = (x1 + x2) / 2;\n        y = (y1 + y2) / 2; // place label if it fits and improves the max area width\n\n        if (areaWidth >= maxAreaWidth && !outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n          maxAreaWidth = areaWidth;\n          d.x = x;\n          d.y = y;\n          labelPlaced2 = true;\n        }\n      }\n    } // record current label placement information, update label bitmap\n\n\n    if (labelPlaced || labelPlaced2) {\n      x = textWidth / 2;\n      y = textHeight / 2;\n      bm0.setRange($(d.x - x), $(d.y - y), $(d.x + x), $(d.y + y));\n      d.align = 'center';\n      d.baseline = 'middle';\n      return true;\n    } else {\n      return false;\n    }\n  };\n}\n\nconst Aligns = ['right', 'center', 'left'],\n      Baselines = ['bottom', 'middle', 'top'];\nfunction placeMarkLabel ($, bitmaps, anchors, offsets) {\n  const width = $.width,\n        height = $.height,\n        bm0 = bitmaps[0],\n        bm1 = bitmaps[1],\n        n = offsets.length;\n  return function (d) {\n    const boundary = d.boundary,\n          textHeight = d.datum.fontSize; // can not be placed if the mark is not visible in the graph bound\n\n    if (boundary[2] < 0 || boundary[5] < 0 || boundary[0] > width || boundary[3] > height) {\n      return false;\n    }\n\n    let textWidth = 0,\n        dx,\n        dy,\n        isInside,\n        sizeFactor,\n        insideFactor,\n        x1,\n        x2,\n        y1,\n        y2,\n        xc,\n        yc,\n        _x1,\n        _x2,\n        _y1,\n        _y2; // for each anchor and offset\n\n\n    for (let i = 0; i < n; ++i) {\n      dx = (anchors[i] & 0x3) - 1;\n      dy = (anchors[i] >>> 0x2 & 0x3) - 1;\n      isInside = dx === 0 && dy === 0 || offsets[i] < 0;\n      sizeFactor = dx && dy ? Math.SQRT1_2 : 1;\n      insideFactor = offsets[i] < 0 ? -1 : 1;\n      x1 = boundary[1 + dx] + offsets[i] * dx * sizeFactor;\n      yc = boundary[4 + dy] + insideFactor * textHeight * dy / 2 + offsets[i] * dy * sizeFactor;\n      y1 = yc - textHeight / 2;\n      y2 = yc + textHeight / 2;\n      _x1 = $(x1);\n      _y1 = $(y1);\n      _y2 = $(y2);\n\n      if (!textWidth) {\n        // to avoid finding width of text label,\n        if (!test(_x1, _x1, _y1, _y2, bm0, bm1, x1, x1, y1, y2, boundary, isInside)) {\n          // skip this anchor/offset option if we fail to place a label with 1px width\n          continue;\n        } else {\n          // Otherwise, find the label width\n          textWidth = textMetrics.width(d.datum, d.datum.text);\n        }\n      }\n\n      xc = x1 + insideFactor * textWidth * dx / 2;\n      x1 = xc - textWidth / 2;\n      x2 = xc + textWidth / 2;\n      _x1 = $(x1);\n      _x2 = $(x2);\n\n      if (test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside)) {\n        // place label if the position is placeable\n        d.x = !dx ? xc : dx * insideFactor < 0 ? x2 : x1;\n        d.y = !dy ? yc : dy * insideFactor < 0 ? y2 : y1;\n        d.align = Aligns[dx * insideFactor + 1];\n        d.baseline = Baselines[dy * insideFactor + 1];\n        bm0.setRange(_x1, _y1, _x2, _y2);\n        return true;\n      }\n    }\n\n    return false;\n  };\n} // Test if a label with the given dimensions can be added without overlap\n\nfunction test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside) {\n  return !(bm0.outOfBounds(_x1, _y1, _x2, _y2) || (isInside && bm1 ? bm1.getRange(_x1, _y1, _x2, _y2) || !isInMarkBound(x1, y1, x2, y2, boundary) : bm0.getRange(_x1, _y1, _x2, _y2)));\n}\n\nfunction isInMarkBound(x1, y1, x2, y2, boundary) {\n  return boundary[0] <= x1 && x2 <= boundary[2] && boundary[3] <= y1 && y2 <= boundary[5];\n}\n\nconst TOP = 0x0,\n      MIDDLE = 0x4,\n      BOTTOM = 0x8,\n      LEFT = 0x0,\n      CENTER = 0x1,\n      RIGHT = 0x2; // Mapping from text anchor to number representation\n\nconst anchorCode = {\n  'top-left': TOP + LEFT,\n  'top': TOP + CENTER,\n  'top-right': TOP + RIGHT,\n  'left': MIDDLE + LEFT,\n  'middle': MIDDLE + CENTER,\n  'right': MIDDLE + RIGHT,\n  'bottom-left': BOTTOM + LEFT,\n  'bottom': BOTTOM + CENTER,\n  'bottom-right': BOTTOM + RIGHT\n};\nconst placeAreaLabel = {\n  'naive': placeAreaLabelNaive,\n  'reduced-search': placeAreaLabelReducedSearch,\n  'floodfill': placeAreaLabelFloodFill\n};\nfunction labelLayout (texts, size, compare, offset, anchor, avoidMarks, avoidBaseMark, lineAnchor, markIndex, padding, method) {\n  // early exit for empty data\n  if (!texts.length) return texts;\n  const positions = Math.max(offset.length, anchor.length),\n        offsets = getOffsets(offset, positions),\n        anchors = getAnchors(anchor, positions),\n        marktype = markType(texts[0].datum),\n        grouptype = marktype === 'group' && texts[0].datum.items[markIndex].marktype,\n        isGroupArea = grouptype === 'area',\n        boundary = markBoundary(marktype, grouptype, lineAnchor, markIndex),\n        $ = scaler(size[0], size[1], padding),\n        isNaiveGroupArea = isGroupArea && method === 'naive'; // prepare text mark data for placing\n\n  const data = texts.map(d => ({\n    datum: d,\n    opacity: 0,\n    x: undefined,\n    y: undefined,\n    align: undefined,\n    baseline: undefined,\n    boundary: boundary(d)\n  }));\n  let bitmaps;\n\n  if (!isNaiveGroupArea) {\n    // sort labels in priority order, if comparator is provided\n    if (compare) {\n      data.sort((a, b) => compare(a.datum, b.datum));\n    } // flag indicating if label can be placed inside its base mark\n\n\n    let labelInside = false;\n\n    for (let i = 0; i < anchors.length && !labelInside; ++i) {\n      // label inside if anchor is at center\n      // label inside if offset to be inside the mark bound\n      labelInside = anchors[i] === 0x5 || offsets[i] < 0;\n    } // extract data information from base mark when base mark is to be avoided\n    // base mark is implicitly avoided if it is a group area\n\n\n    if (marktype && (avoidBaseMark || isGroupArea)) {\n      avoidMarks = [texts.map(d => d.datum)].concat(avoidMarks);\n    } // generate bitmaps for layout calculation\n\n\n    bitmaps = avoidMarks.length ? markBitmaps($, avoidMarks, labelInside, isGroupArea) : baseBitmaps($, avoidBaseMark && data);\n  } // generate label placement function\n\n\n  const place = isGroupArea ? placeAreaLabel[method]($, bitmaps, avoidBaseMark, markIndex) : placeMarkLabel($, bitmaps, anchors, offsets); // place all labels\n\n  data.forEach(d => d.opacity = +place(d));\n  return data;\n}\n\nfunction getOffsets(_, count) {\n  const offsets = new Float64Array(count),\n        n = _.length;\n\n  for (let i = 0; i < n; ++i) offsets[i] = _[i] || 0;\n\n  for (let i = n; i < count; ++i) offsets[i] = offsets[n - 1];\n\n  return offsets;\n}\n\nfunction getAnchors(_, count) {\n  const anchors = new Int8Array(count),\n        n = _.length;\n\n  for (let i = 0; i < n; ++i) anchors[i] |= anchorCode[_[i]];\n\n  for (let i = n; i < count; ++i) anchors[i] = anchors[n - 1];\n\n  return anchors;\n}\n\nfunction markType(item) {\n  return item && item.mark && item.mark.marktype;\n}\n/**\n * Factory function for function for getting base mark boundary, depending\n * on mark and group type. When mark type is undefined, line or area: boundary\n * is the coordinate of each data point. When base mark is grouped line,\n * boundary is either at the beginning or end of the line depending on the\n * value of lineAnchor. Otherwise, use bounds of base mark.\n */\n\n\nfunction markBoundary(marktype, grouptype, lineAnchor, markIndex) {\n  const xy = d => [d.x, d.x, d.x, d.y, d.y, d.y];\n\n  if (!marktype) {\n    return xy; // no reactive geometry\n  } else if (marktype === 'line' || marktype === 'area') {\n    return d => xy(d.datum);\n  } else if (grouptype === 'line') {\n    return d => {\n      const items = d.datum.items[markIndex].items;\n      return xy(items.length ? items[lineAnchor === 'start' ? 0 : items.length - 1] : {\n        x: NaN,\n        y: NaN\n      });\n    };\n  } else {\n    return d => {\n      const b = d.datum.bounds;\n      return [b.x1, (b.x1 + b.x2) / 2, b.x2, b.y1, (b.y1 + b.y2) / 2, b.y2];\n    };\n  }\n}\n\nconst Output = ['x', 'y', 'opacity', 'align', 'baseline'];\nconst Anchors = ['top-left', 'left', 'bottom-left', 'top', 'bottom', 'top-right', 'right', 'bottom-right'];\n/**\n * Compute text label layout to annotate marks.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<number>} params.size - The size of the layout, provided as a [width, height] array.\n * @param {function(*,*): number} [params.sort] - An optional\n *   comparator function for sorting label data in priority order.\n * @param {Array<string>} [params.anchor] - Label anchor points relative to the base mark bounding box.\n *   The available options are 'top-left', 'left', 'bottom-left', 'top',\n *   'bottom', 'top-right', 'right', 'bottom-right', 'middle'.\n * @param {Array<number>} [params.offset] - Label offsets (in pixels) from the base mark bounding box.\n *   This parameter  is parallel to the list of anchor points.\n * @param {number} [params.padding=0] - The amount (in pixels) that a label may exceed the layout size.\n * @param {string} [params.lineAnchor='end'] - For group line mark labels only, indicates the anchor\n *   position for labels. One of 'start' or 'end'.\n * @param {string} [params.markIndex=0] - For group mark labels only, an index indicating\n *   which mark within the group should be labeled.\n * @param {Array<number>} [params.avoidMarks] - A list of additional mark names for which the label\n *   layout should avoid overlap.\n * @param {boolean} [params.avoidBaseMark=true] - Boolean flag indicating if labels should avoid\n *   overlap with the underlying base mark being labeled.\n * @param {string} [params.method='naive'] - For area make labels only, a method for\n *   place labels. One of 'naive', 'reduced-search', or 'floodfill'.\n * @param {Array<string>} [params.as] - The output fields written by the transform.\n *   The default is ['x', 'y', 'opacity', 'align', 'baseline'].\n */\n\nfunction Label(params) {\n  Transform.call(this, null, params);\n}\nLabel.Definition = {\n  type: 'Label',\n  metadata: {\n    modifies: true\n  },\n  params: [{\n    name: 'size',\n    type: 'number',\n    array: true,\n    length: 2,\n    required: true\n  }, {\n    name: 'sort',\n    type: 'compare'\n  }, {\n    name: 'anchor',\n    type: 'string',\n    array: true,\n    default: Anchors\n  }, {\n    name: 'offset',\n    type: 'number',\n    array: true,\n    default: [1]\n  }, {\n    name: 'padding',\n    type: 'number',\n    default: 0\n  }, {\n    name: 'lineAnchor',\n    type: 'string',\n    values: ['start', 'end'],\n    default: 'end'\n  }, {\n    name: 'markIndex',\n    type: 'number',\n    default: 0\n  }, {\n    name: 'avoidBaseMark',\n    type: 'boolean',\n    default: true\n  }, {\n    name: 'avoidMarks',\n    type: 'data',\n    array: true\n  }, {\n    name: 'method',\n    type: 'string',\n    default: 'naive'\n  }, {\n    name: 'as',\n    type: 'string',\n    array: true,\n    length: Output.length,\n    default: Output\n  }]\n};\ninherits(Label, Transform, {\n  transform(_, pulse) {\n    function modp(param) {\n      const p = _[param];\n      return isFunction(p) && pulse.modified(p.fields);\n    }\n\n    const mod = _.modified();\n\n    if (!(mod || pulse.changed(pulse.ADD_REM) || modp('sort'))) return;\n\n    if (!_.size || _.size.length !== 2) {\n      error('Size parameter should be specified as a [width, height] array.');\n    }\n\n    const as = _.as || Output; // run label layout\n\n    labelLayout(pulse.materialize(pulse.SOURCE).source, _.size, _.sort, array(_.offset || 1), array(_.anchor || Anchors), _.avoidMarks || [], _.avoidBaseMark === false ? false : true, _.lineAnchor || 'end', _.markIndex || 0, _.padding || 0, _.method || 'naive').forEach(l => {\n      // write layout results to data stream\n      const t = l.datum;\n      t[as[0]] = l.x;\n      t[as[1]] = l.y;\n      t[as[2]] = l.opacity;\n      t[as[3]] = l.align;\n      t[as[4]] = l.baseline;\n    });\n    return pulse.reflow(mod).modifies(as);\n  }\n\n});\n\nexport { Label as label };\n","import { regressionLoess, sampleCurve, regressionLinear, regressionLog, regressionExp, regressionPow, regressionQuad, regressionPoly } from 'vega-statistics';\nimport { Transform, ingest } from 'vega-dataflow';\nimport { inherits, accessorName, hasOwnProperty, error, extent } from 'vega-util';\n\nfunction partition (data, groupby) {\n  var groups = [],\n      get = function (f) {\n    return f(t);\n  },\n      map,\n      i,\n      n,\n      t,\n      k,\n      g; // partition data points into stack groups\n\n\n  if (groupby == null) {\n    groups.push(data);\n  } else {\n    for (map = {}, i = 0, n = data.length; i < n; ++i) {\n      t = data[i];\n      k = groupby.map(get);\n      g = map[k];\n\n      if (!g) {\n        map[k] = g = [];\n        g.dims = k;\n        groups.push(g);\n      }\n\n      g.push(t);\n    }\n  }\n\n  return groups;\n}\n\n/**\n * Compute locally-weighted regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.bandwidth=0.3] - The loess bandwidth.\n */\n\nfunction Loess(params) {\n  Transform.call(this, null, params);\n}\nLoess.Definition = {\n  'type': 'Loess',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'x',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'y',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'bandwidth',\n    'type': 'number',\n    'default': 0.3\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true\n  }]\n};\ninherits(Loess, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n    if (!this.value || pulse.changed() || _.modified()) {\n      const source = pulse.materialize(pulse.SOURCE).source,\n            groups = partition(source, _.groupby),\n            names = (_.groupby || []).map(accessorName),\n            m = names.length,\n            as = _.as || [accessorName(_.x), accessorName(_.y)],\n            values = [];\n      groups.forEach(g => {\n        regressionLoess(g, _.x, _.y, _.bandwidth || 0.3).forEach(p => {\n          const t = {};\n\n          for (let i = 0; i < m; ++i) {\n            t[names[i]] = g.dims[i];\n          }\n\n          t[as[0]] = p[0];\n          t[as[1]] = p[1];\n          values.push(ingest(t));\n        });\n      });\n      if (this.value) out.rem = this.value;\n      this.value = out.add = out.source = values;\n    }\n\n    return out;\n  }\n\n});\n\nconst Methods = {\n  linear: regressionLinear,\n  log: regressionLog,\n  exp: regressionExp,\n  pow: regressionPow,\n  quad: regressionQuad,\n  poly: regressionPoly\n};\n\nconst degreesOfFreedom = (method, order) => method === 'poly' ? order : method === 'quad' ? 2 : 1;\n/**\n * Compute regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {string} [params.method='linear'] - The regression method to apply.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {Array<number>} [params.extent] - The domain extent over which to plot the regression line.\n * @param {number} [params.order=3] - The polynomial order. Only applies to the 'poly' method.\n */\n\n\nfunction Regression(params) {\n  Transform.call(this, null, params);\n}\nRegression.Definition = {\n  'type': 'Regression',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'x',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'y',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'method',\n    'type': 'string',\n    'default': 'linear',\n    'values': Object.keys(Methods)\n  }, {\n    'name': 'order',\n    'type': 'number',\n    'default': 3\n  }, {\n    'name': 'extent',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'params',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true\n  }]\n};\ninherits(Regression, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n    if (!this.value || pulse.changed() || _.modified()) {\n      const source = pulse.materialize(pulse.SOURCE).source,\n            groups = partition(source, _.groupby),\n            names = (_.groupby || []).map(accessorName),\n            method = _.method || 'linear',\n            order = _.order || 3,\n            dof = degreesOfFreedom(method, order),\n            as = _.as || [accessorName(_.x), accessorName(_.y)],\n            fit = Methods[method],\n            values = [];\n      let domain = _.extent;\n\n      if (!hasOwnProperty(Methods, method)) {\n        error('Invalid regression method: ' + method);\n      }\n\n      if (domain != null) {\n        if (method === 'log' && domain[0] <= 0) {\n          pulse.dataflow.warn('Ignoring extent with values <= 0 for log regression.');\n          domain = null;\n        }\n      }\n\n      groups.forEach(g => {\n        const n = g.length;\n\n        if (n <= dof) {\n          pulse.dataflow.warn('Skipping regression with more parameters than data points.');\n          return;\n        }\n\n        const model = fit(g, _.x, _.y, order);\n\n        if (_.params) {\n          // if parameter vectors requested return those\n          values.push(ingest({\n            keys: g.dims,\n            coef: model.coef,\n            rSquared: model.rSquared\n          }));\n          return;\n        }\n\n        const dom = domain || extent(g, _.x),\n              add = p => {\n          const t = {};\n\n          for (let i = 0; i < names.length; ++i) {\n            t[names[i]] = g.dims[i];\n          }\n\n          t[as[0]] = p[0];\n          t[as[1]] = p[1];\n          values.push(ingest(t));\n        };\n\n        if (method === 'linear') {\n          // for linear regression we only need the end points\n          dom.forEach(x => add([x, model.predict(x)]));\n        } else {\n          // otherwise return trend line sample points\n          sampleCurve(model.predict, dom, 25, 200).forEach(add);\n        }\n      });\n      if (this.value) out.rem = this.value;\n      this.value = out.add = out.source = values;\n    }\n\n    return out;\n  }\n\n});\n\nexport { Loess as loess, Regression as regression };\n","\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nexport default class Delaunator {\n\n    static from(points, getX = defaultGetX, getY = defaultGetY) {\n        const n = points.length;\n        const coords = new Float64Array(n * 2);\n\n        for (let i = 0; i < n; i++) {\n            const p = points[i];\n            coords[2 * i] = getX(p);\n            coords[2 * i + 1] = getY(p);\n        }\n\n        return new Delaunator(coords);\n    }\n\n    constructor(coords) {\n        const n = coords.length >> 1;\n        if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n        this.coords = coords;\n\n        // arrays that will store the triangulation graph\n        const maxTriangles = Math.max(2 * n - 5, 0);\n        this._triangles = new Uint32Array(maxTriangles * 3);\n        this._halfedges = new Int32Array(maxTriangles * 3);\n\n        // temporary arrays for tracking the edges of the advancing convex hull\n        this._hashSize = Math.ceil(Math.sqrt(n));\n        this._hullPrev = new Uint32Array(n); // edge to prev edge\n        this._hullNext = new Uint32Array(n); // edge to next edge\n        this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n        this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n        // temporary arrays for sorting points\n        this._ids = new Uint32Array(n);\n        this._dists = new Float64Array(n);\n\n        this.update();\n    }\n\n    update() {\n        const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} =  this;\n        const n = coords.length >> 1;\n\n        // populate an array of point indices; calculate input data bbox\n        let minX = Infinity;\n        let minY = Infinity;\n        let maxX = -Infinity;\n        let maxY = -Infinity;\n\n        for (let i = 0; i < n; i++) {\n            const x = coords[2 * i];\n            const y = coords[2 * i + 1];\n            if (x < minX) minX = x;\n            if (y < minY) minY = y;\n            if (x > maxX) maxX = x;\n            if (y > maxY) maxY = y;\n            this._ids[i] = i;\n        }\n        const cx = (minX + maxX) / 2;\n        const cy = (minY + maxY) / 2;\n\n        let minDist = Infinity;\n        let i0, i1, i2;\n\n        // pick a seed point close to the center\n        for (let i = 0; i < n; i++) {\n            const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n            if (d < minDist) {\n                i0 = i;\n                minDist = d;\n            }\n        }\n        const i0x = coords[2 * i0];\n        const i0y = coords[2 * i0 + 1];\n\n        minDist = Infinity;\n\n        // find the point closest to the seed\n        for (let i = 0; i < n; i++) {\n            if (i === i0) continue;\n            const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n            if (d < minDist && d > 0) {\n                i1 = i;\n                minDist = d;\n            }\n        }\n        let i1x = coords[2 * i1];\n        let i1y = coords[2 * i1 + 1];\n\n        let minRadius = Infinity;\n\n        // find the third point which forms the smallest circumcircle with the first two\n        for (let i = 0; i < n; i++) {\n            if (i === i0 || i === i1) continue;\n            const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n            if (r < minRadius) {\n                i2 = i;\n                minRadius = r;\n            }\n        }\n        let i2x = coords[2 * i2];\n        let i2y = coords[2 * i2 + 1];\n\n        if (minRadius === Infinity) {\n            // order collinear points by dx (or dy if all x are identical)\n            // and return the list as a hull\n            for (let i = 0; i < n; i++) {\n                this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n            }\n            quicksort(this._ids, this._dists, 0, n - 1);\n            const hull = new Uint32Array(n);\n            let j = 0;\n            for (let i = 0, d0 = -Infinity; i < n; i++) {\n                const id = this._ids[i];\n                if (this._dists[id] > d0) {\n                    hull[j++] = id;\n                    d0 = this._dists[id];\n                }\n            }\n            this.hull = hull.subarray(0, j);\n            this.triangles = new Uint32Array(0);\n            this.halfedges = new Uint32Array(0);\n            return;\n        }\n\n        // swap the order of the seed points for counter-clockwise orientation\n        if (orient(i0x, i0y, i1x, i1y, i2x, i2y)) {\n            const i = i1;\n            const x = i1x;\n            const y = i1y;\n            i1 = i2;\n            i1x = i2x;\n            i1y = i2y;\n            i2 = i;\n            i2x = x;\n            i2y = y;\n        }\n\n        const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n        this._cx = center.x;\n        this._cy = center.y;\n\n        for (let i = 0; i < n; i++) {\n            this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n        }\n\n        // sort the points by distance from the seed triangle circumcenter\n        quicksort(this._ids, this._dists, 0, n - 1);\n\n        // set up the seed triangle as the starting hull\n        this._hullStart = i0;\n        let hullSize = 3;\n\n        hullNext[i0] = hullPrev[i2] = i1;\n        hullNext[i1] = hullPrev[i0] = i2;\n        hullNext[i2] = hullPrev[i1] = i0;\n\n        hullTri[i0] = 0;\n        hullTri[i1] = 1;\n        hullTri[i2] = 2;\n\n        hullHash.fill(-1);\n        hullHash[this._hashKey(i0x, i0y)] = i0;\n        hullHash[this._hashKey(i1x, i1y)] = i1;\n        hullHash[this._hashKey(i2x, i2y)] = i2;\n\n        this.trianglesLen = 0;\n        this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n        for (let k = 0, xp, yp; k < this._ids.length; k++) {\n            const i = this._ids[k];\n            const x = coords[2 * i];\n            const y = coords[2 * i + 1];\n\n            // skip near-duplicate points\n            if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n            xp = x;\n            yp = y;\n\n            // skip seed triangle points\n            if (i === i0 || i === i1 || i === i2) continue;\n\n            // find a visible edge on the convex hull using edge hash\n            let start = 0;\n            for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n                start = hullHash[(key + j) % this._hashSize];\n                if (start !== -1 && start !== hullNext[start]) break;\n            }\n\n            start = hullPrev[start];\n            let e = start, q;\n            while (q = hullNext[e], !orient(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1])) {\n                e = q;\n                if (e === start) {\n                    e = -1;\n                    break;\n                }\n            }\n            if (e === -1) continue; // likely a near-duplicate point; skip it\n\n            // add the first triangle from the point\n            let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n            // recursively flip triangles from the point until they satisfy the Delaunay condition\n            hullTri[i] = this._legalize(t + 2);\n            hullTri[e] = t; // keep track of boundary triangles on the hull\n            hullSize++;\n\n            // walk forward through the hull, adding more triangles and flipping recursively\n            let n = hullNext[e];\n            while (q = hullNext[n], orient(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1])) {\n                t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n                hullTri[i] = this._legalize(t + 2);\n                hullNext[n] = n; // mark as removed\n                hullSize--;\n                n = q;\n            }\n\n            // walk backward from the other side, adding more triangles and flipping\n            if (e === start) {\n                while (q = hullPrev[e], orient(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1])) {\n                    t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n                    this._legalize(t + 2);\n                    hullTri[q] = t;\n                    hullNext[e] = e; // mark as removed\n                    hullSize--;\n                    e = q;\n                }\n            }\n\n            // update the hull indices\n            this._hullStart = hullPrev[i] = e;\n            hullNext[e] = hullPrev[n] = i;\n            hullNext[i] = n;\n\n            // save the two new edges in the hash table\n            hullHash[this._hashKey(x, y)] = i;\n            hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n        }\n\n        this.hull = new Uint32Array(hullSize);\n        for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n            this.hull[i] = e;\n            e = hullNext[e];\n        }\n\n        // trim typed triangle mesh arrays\n        this.triangles = this._triangles.subarray(0, this.trianglesLen);\n        this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n    }\n\n    _hashKey(x, y) {\n        return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n    }\n\n    _legalize(a) {\n        const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n        let i = 0;\n        let ar = 0;\n\n        // recursion eliminated with a fixed-size stack\n        while (true) {\n            const b = halfedges[a];\n\n            /* if the pair of triangles doesn't satisfy the Delaunay condition\n             * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n             * then do the same check/flip recursively for the new pair of triangles\n             *\n             *           pl                    pl\n             *          /||\\                  /  \\\n             *       al/ || \\bl            al/    \\a\n             *        /  ||  \\              /      \\\n             *       /  a||b  \\    flip    /___ar___\\\n             *     p0\\   ||   /p1   =>   p0\\---bl---/p1\n             *        \\  ||  /              \\      /\n             *       ar\\ || /br             b\\    /br\n             *          \\||/                  \\  /\n             *           pr                    pr\n             */\n            const a0 = a - a % 3;\n            ar = a0 + (a + 2) % 3;\n\n            if (b === -1) { // convex hull edge\n                if (i === 0) break;\n                a = EDGE_STACK[--i];\n                continue;\n            }\n\n            const b0 = b - b % 3;\n            const al = a0 + (a + 1) % 3;\n            const bl = b0 + (b + 2) % 3;\n\n            const p0 = triangles[ar];\n            const pr = triangles[a];\n            const pl = triangles[al];\n            const p1 = triangles[bl];\n\n            const illegal = inCircle(\n                coords[2 * p0], coords[2 * p0 + 1],\n                coords[2 * pr], coords[2 * pr + 1],\n                coords[2 * pl], coords[2 * pl + 1],\n                coords[2 * p1], coords[2 * p1 + 1]);\n\n            if (illegal) {\n                triangles[a] = p1;\n                triangles[b] = p0;\n\n                const hbl = halfedges[bl];\n\n                // edge swapped on the other side of the hull (rare); fix the halfedge reference\n                if (hbl === -1) {\n                    let e = this._hullStart;\n                    do {\n                        if (this._hullTri[e] === bl) {\n                            this._hullTri[e] = a;\n                            break;\n                        }\n                        e = this._hullPrev[e];\n                    } while (e !== this._hullStart);\n                }\n                this._link(a, hbl);\n                this._link(b, halfedges[ar]);\n                this._link(ar, bl);\n\n                const br = b0 + (b + 1) % 3;\n\n                // don't worry about hitting the cap: it can only happen on extremely degenerate input\n                if (i < EDGE_STACK.length) {\n                    EDGE_STACK[i++] = br;\n                }\n            } else {\n                if (i === 0) break;\n                a = EDGE_STACK[--i];\n            }\n        }\n\n        return ar;\n    }\n\n    _link(a, b) {\n        this._halfedges[a] = b;\n        if (b !== -1) this._halfedges[b] = a;\n    }\n\n    // add a new triangle given vertex indices and adjacent half-edge ids\n    _addTriangle(i0, i1, i2, a, b, c) {\n        const t = this.trianglesLen;\n\n        this._triangles[t] = i0;\n        this._triangles[t + 1] = i1;\n        this._triangles[t + 2] = i2;\n\n        this._link(t, a);\n        this._link(t + 1, b);\n        this._link(t + 2, c);\n\n        this.trianglesLen += 3;\n\n        return t;\n    }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n    const p = dx / (Math.abs(dx) + Math.abs(dy));\n    return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n    const dx = ax - bx;\n    const dy = ay - by;\n    return dx * dx + dy * dy;\n}\n\n// return 2d orientation sign if we're confident in it through J. Shewchuk's error bound check\nfunction orientIfSure(px, py, rx, ry, qx, qy) {\n    const l = (ry - py) * (qx - px);\n    const r = (rx - px) * (qy - py);\n    return Math.abs(l - r) >= 3.3306690738754716e-16 * Math.abs(l + r) ? l - r : 0;\n}\n\n// a more robust orientation test that's stable in a given triangle (to fix robustness issues)\nfunction orient(rx, ry, qx, qy, px, py) {\n    const sign = orientIfSure(px, py, rx, ry, qx, qy) ||\n    orientIfSure(rx, ry, qx, qy, px, py) ||\n    orientIfSure(qx, qy, px, py, rx, ry);\n    return sign < 0;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n    const dx = ax - px;\n    const dy = ay - py;\n    const ex = bx - px;\n    const ey = by - py;\n    const fx = cx - px;\n    const fy = cy - py;\n\n    const ap = dx * dx + dy * dy;\n    const bp = ex * ex + ey * ey;\n    const cp = fx * fx + fy * fy;\n\n    return dx * (ey * cp - bp * fy) -\n           dy * (ex * cp - bp * fx) +\n           ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n    const dx = bx - ax;\n    const dy = by - ay;\n    const ex = cx - ax;\n    const ey = cy - ay;\n\n    const bl = dx * dx + dy * dy;\n    const cl = ex * ex + ey * ey;\n    const d = 0.5 / (dx * ey - dy * ex);\n\n    const x = (ey * bl - dy * cl) * d;\n    const y = (dx * cl - ex * bl) * d;\n\n    return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n    const dx = bx - ax;\n    const dy = by - ay;\n    const ex = cx - ax;\n    const ey = cy - ay;\n\n    const bl = dx * dx + dy * dy;\n    const cl = ex * ex + ey * ey;\n    const d = 0.5 / (dx * ey - dy * ex);\n\n    const x = ax + (ey * bl - dy * cl) * d;\n    const y = ay + (dx * cl - ex * bl) * d;\n\n    return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n    if (right - left <= 20) {\n        for (let i = left + 1; i <= right; i++) {\n            const temp = ids[i];\n            const tempDist = dists[temp];\n            let j = i - 1;\n            while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n            ids[j + 1] = temp;\n        }\n    } else {\n        const median = (left + right) >> 1;\n        let i = left + 1;\n        let j = right;\n        swap(ids, median, i);\n        if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n        if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n        if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n\n        const temp = ids[i];\n        const tempDist = dists[temp];\n        while (true) {\n            do i++; while (dists[ids[i]] < tempDist);\n            do j--; while (dists[ids[j]] > tempDist);\n            if (j < i) break;\n            swap(ids, i, j);\n        }\n        ids[left + 1] = ids[j];\n        ids[j] = temp;\n\n        if (right - i + 1 >= j - left) {\n            quicksort(ids, dists, i, right);\n            quicksort(ids, dists, left, j - 1);\n        } else {\n            quicksort(ids, dists, left, j - 1);\n            quicksort(ids, dists, i, right);\n        }\n    }\n}\n\nfunction swap(arr, i, j) {\n    const tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n    return p[0];\n}\nfunction defaultGetY(p) {\n    return p[1];\n}\n","const epsilon = 1e-6;\n\nexport default class Path {\n  constructor() {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n  }\n  moveTo(x, y) {\n    this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  }\n  lineTo(x, y) {\n    this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arc(x, y, r) {\n    x = +x, y = +y, r = +r;\n    const x0 = x + r;\n    const y0 = y;\n    if (r < 0) throw new Error(\"negative radius\");\n    if (this._x1 === null) this._ += `M${x0},${y0}`;\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n    if (!r) return;\n    this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n  }\n  rect(x, y, w, h) {\n    this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`;\n  }\n  value() {\n    return this._ || null;\n  }\n}\n","export default class Polygon {\n  constructor() {\n    this._ = [];\n  }\n  moveTo(x, y) {\n    this._.push([x, y]);\n  }\n  closePath() {\n    this._.push(this._[0].slice());\n  }\n  lineTo(x, y) {\n    this._.push([x, y]);\n  }\n  value() {\n    return this._.length ? this._ : null;\n  }\n}\n","import Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\n\nexport default class Voronoi {\n  constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n    if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n    this.delaunay = delaunay;\n    this._circumcenters = new Float64Array(delaunay.points.length * 2);\n    this.vectors = new Float64Array(delaunay.points.length * 2);\n    this.xmax = xmax, this.xmin = xmin;\n    this.ymax = ymax, this.ymin = ymin;\n    this._init();\n  }\n  update() {\n    this.delaunay.update();\n    this._init();\n    return this;\n  }\n  _init() {\n    const {delaunay: {points, hull, triangles}, vectors} = this;\n\n    // Compute circumcenters.\n    const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n    for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n      const t1 = triangles[i] * 2;\n      const t2 = triangles[i + 1] * 2;\n      const t3 = triangles[i + 2] * 2;\n      const x1 = points[t1];\n      const y1 = points[t1 + 1];\n      const x2 = points[t2];\n      const y2 = points[t2 + 1];\n      const x3 = points[t3];\n      const y3 = points[t3 + 1];\n\n      const dx = x2 - x1;\n      const dy = y2 - y1;\n      const ex = x3 - x1;\n      const ey = y3 - y1;\n      const bl = dx * dx + dy * dy;\n      const cl = ex * ex + ey * ey;\n      const ab = (dx * ey - dy * ex) * 2;\n\n      if (!ab) {\n        // degenerate case (collinear diagram)\n        x = (x1 + x3) / 2 - 1e8 * ey;\n        y = (y1 + y3) / 2 + 1e8 * ex;\n      }\n      else if (Math.abs(ab) < 1e-8) {\n        // almost equal points (degenerate triangle)\n        x = (x1 + x3) / 2;\n        y = (y1 + y3) / 2;\n      } else {\n        const d = 1 / ab;\n        x = x1 + (ey * bl - dy * cl) * d;\n        y = y1 + (dx * cl - ex * bl) * d;\n      }\n      circumcenters[j] = x;\n      circumcenters[j + 1] = y;\n    }\n\n    // Compute exterior cell rays.\n    let h = hull[hull.length - 1];\n    let p0, p1 = h * 4;\n    let x0, x1 = points[2 * h];\n    let y0, y1 = points[2 * h + 1];\n    vectors.fill(0);\n    for (let i = 0; i < hull.length; ++i) {\n      h = hull[i];\n      p0 = p1, x0 = x1, y0 = y1;\n      p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n      vectors[p0 + 2] = vectors[p1] = y0 - y1;\n      vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n    }\n  }\n  render(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n    if (hull.length <= 1) return null;\n    for (let i = 0, n = halfedges.length; i < n; ++i) {\n      const j = halfedges[i];\n      if (j < i) continue;\n      const ti = Math.floor(i / 3) * 2;\n      const tj = Math.floor(j / 3) * 2;\n      const xi = circumcenters[ti];\n      const yi = circumcenters[ti + 1];\n      const xj = circumcenters[tj];\n      const yj = circumcenters[tj + 1];\n      this._renderSegment(xi, yi, xj, yj, context);\n    }\n    let h0, h1 = hull[hull.length - 1];\n    for (let i = 0; i < hull.length; ++i) {\n      h0 = h1, h1 = hull[i];\n      const t = Math.floor(inedges[h1] / 3) * 2;\n      const x = circumcenters[t];\n      const y = circumcenters[t + 1];\n      const v = h0 * 4;\n      const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n      if (p) this._renderSegment(x, y, p[0], p[1], context);\n    }\n    return buffer && buffer.value();\n  }\n  renderBounds(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n    return buffer && buffer.value();\n  }\n  renderCell(i, context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const points = this._clip(i);\n    if (points === null || !points.length) return;\n    context.moveTo(points[0], points[1]);\n    let n = points.length;\n    while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2;\n    for (let i = 2; i < n; i += 2) {\n      if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n        context.lineTo(points[i], points[i + 1]);\n    }\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  *cellPolygons() {\n    const {delaunay: {points}} = this;\n    for (let i = 0, n = points.length / 2; i < n; ++i) {\n      const cell = this.cellPolygon(i);\n      if (cell) cell.index = i, yield cell;\n    }\n  }\n  cellPolygon(i) {\n    const polygon = new Polygon;\n    this.renderCell(i, polygon);\n    return polygon.value();\n  }\n  _renderSegment(x0, y0, x1, y1, context) {\n    let S;\n    const c0 = this._regioncode(x0, y0);\n    const c1 = this._regioncode(x1, y1);\n    if (c0 === 0 && c1 === 0) {\n      context.moveTo(x0, y0);\n      context.lineTo(x1, y1);\n    } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n      context.moveTo(S[0], S[1]);\n      context.lineTo(S[2], S[3]);\n    }\n  }\n  contains(i, x, y) {\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n    return this.delaunay._step(i, x, y) === i;\n  }\n  *neighbors(i) {\n    const ci = this._clip(i);\n    if (ci) for (const j of this.delaunay.neighbors(i)) {\n      const cj = this._clip(j);\n      // find the common edge\n      if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n        for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n          if (ci[ai] == cj[aj]\n          && ci[ai + 1] == cj[aj + 1]\n          && ci[(ai + 2) % li] == cj[(aj + lj - 2) % lj]\n          && ci[(ai + 3) % li] == cj[(aj + lj - 1) % lj]\n          ) {\n            yield j;\n            break loop;\n          }\n        }\n      }\n    }\n  }\n  _cell(i) {\n    const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n    const e0 = inedges[i];\n    if (e0 === -1) return null; // coincident point\n    const points = [];\n    let e = e0;\n    do {\n      const t = Math.floor(e / 3);\n      points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n      e = halfedges[e];\n    } while (e !== e0 && e !== -1);\n    return points;\n  }\n  _clip(i) {\n    // degenerate case (1 valid point: return the box)\n    if (i === 0 && this.delaunay.hull.length === 1) {\n      return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n    }\n    const points = this._cell(i);\n    if (points === null) return null;\n    const {vectors: V} = this;\n    const v = i * 4;\n    return V[v] || V[v + 1]\n        ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n        : this._clipFinite(i, points);\n  }\n  _clipFinite(i, points) {\n    const n = points.length;\n    let P = null;\n    let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n    let c0, c1 = this._regioncode(x1, y1);\n    let e0, e1;\n    for (let j = 0; j < n; j += 2) {\n      x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n      c0 = c1, c1 = this._regioncode(x1, y1);\n      if (c0 === 0 && c1 === 0) {\n        e0 = e1, e1 = 0;\n        if (P) P.push(x1, y1);\n        else P = [x1, y1];\n      } else {\n        let S, sx0, sy0, sx1, sy1;\n        if (c0 === 0) {\n          if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n          [sx0, sy0, sx1, sy1] = S;\n        } else {\n          if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n          [sx1, sy1, sx0, sy0] = S;\n          e0 = e1, e1 = this._edgecode(sx0, sy0);\n          if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n          if (P) P.push(sx0, sy0);\n          else P = [sx0, sy0];\n        }\n        e0 = e1, e1 = this._edgecode(sx1, sy1);\n        if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n        if (P) P.push(sx1, sy1);\n        else P = [sx1, sy1];\n      }\n    }\n    if (P) {\n      e0 = e1, e1 = this._edgecode(P[0], P[1]);\n      if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n    } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n      return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n    }\n    return P;\n  }\n  _clipSegment(x0, y0, x1, y1, c0, c1) {\n    while (true) {\n      if (c0 === 0 && c1 === 0) return [x0, y0, x1, y1];\n      if (c0 & c1) return null;\n      let x, y, c = c0 || c1;\n      if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n      else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n      else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n      else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n      if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n      else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n    }\n  }\n  _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n    let P = Array.from(points), p;\n    if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n    if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n    if (P = this._clipFinite(i, P)) {\n      for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n        c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n        if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n      }\n    } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n      P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n    }\n    return P;\n  }\n  _edge(i, e0, e1, P, j) {\n    while (e0 !== e1) {\n      let x, y;\n      switch (e0) {\n        case 0b0101: e0 = 0b0100; continue; // top-left\n        case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n        case 0b0110: e0 = 0b0010; continue; // top-right\n        case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n        case 0b1010: e0 = 0b1000; continue; // bottom-right\n        case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n        case 0b1001: e0 = 0b0001; continue; // bottom-left\n        case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n      }\n      if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n        P.splice(j, 0, x, y), j += 2;\n      }\n    }\n    if (P.length > 4) {\n      for (let i = 0; i < P.length; i+= 2) {\n        const j = (i + 2) % P.length, k = (i + 4) % P.length;\n        if (P[i] === P[j] && P[j] === P[k]\n        || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1])\n          P.splice(j, 2), i -= 2;\n      }\n    }\n    return j;\n  }\n  _project(x0, y0, vx, vy) {\n    let t = Infinity, c, x, y;\n    if (vy < 0) { // top\n      if (y0 <= this.ymin) return null;\n      if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n    } else if (vy > 0) { // bottom\n      if (y0 >= this.ymax) return null;\n      if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n    }\n    if (vx > 0) { // right\n      if (x0 >= this.xmax) return null;\n      if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n    } else if (vx < 0) { // left\n      if (x0 <= this.xmin) return null;\n      if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n    }\n    return [x, y];\n  }\n  _edgecode(x, y) {\n    return (x === this.xmin ? 0b0001\n        : x === this.xmax ? 0b0010 : 0b0000)\n        | (y === this.ymin ? 0b0100\n        : y === this.ymax ? 0b1000 : 0b0000);\n  }\n  _regioncode(x, y) {\n    return (x < this.xmin ? 0b0001\n        : x > this.xmax ? 0b0010 : 0b0000)\n        | (y < this.ymin ? 0b0100\n        : y > this.ymax ? 0b1000 : 0b0000);\n  }\n}\n","import Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n  return p[0];\n}\n\nfunction pointY(p) {\n  return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n  const {triangles, coords} = d;\n  for (let i = 0; i < triangles.length; i += 3) {\n    const a = 2 * triangles[i],\n          b = 2 * triangles[i + 1],\n          c = 2 * triangles[i + 2],\n          cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n                - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n    if (cross > 1e-10) return false;\n  }\n  return true;\n}\n\nfunction jitter(x, y, r) {\n  return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nexport default class Delaunay {\n  static from(points, fx = pointX, fy = pointY, that) {\n    return new Delaunay(\"length\" in points\n        ? flatArray(points, fx, fy, that)\n        : Float64Array.from(flatIterable(points, fx, fy, that)));\n  }\n  constructor(points) {\n    this._delaunator = new Delaunator(points);\n    this.inedges = new Int32Array(points.length / 2);\n    this._hullIndex = new Int32Array(points.length / 2);\n    this.points = this._delaunator.coords;\n    this._init();\n  }\n  update() {\n    this._delaunator.update();\n    this._init();\n    return this;\n  }\n  _init() {\n    const d = this._delaunator, points = this.points;\n\n    // check for collinear\n    if (d.hull && d.hull.length > 2 && collinear(d)) {\n      this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i)\n        .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n      const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n        bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n        r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n      for (let i = 0, n = points.length / 2; i < n; ++i) {\n        const p = jitter(points[2 * i], points[2 * i + 1], r);\n        points[2 * i] = p[0];\n        points[2 * i + 1] = p[1];\n      }\n      this._delaunator = new Delaunator(points);\n    } else {\n      delete this.collinear;\n    }\n\n    const halfedges = this.halfedges = this._delaunator.halfedges;\n    const hull = this.hull = this._delaunator.hull;\n    const triangles = this.triangles = this._delaunator.triangles;\n    const inedges = this.inedges.fill(-1);\n    const hullIndex = this._hullIndex.fill(-1);\n\n    // Compute an index from each point to an (arbitrary) incoming halfedge\n    // Used to give the first neighbor of each point; for this reason,\n    // on the hull we give priority to exterior halfedges\n    for (let e = 0, n = halfedges.length; e < n; ++e) {\n      const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n      if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n    }\n    for (let i = 0, n = hull.length; i < n; ++i) {\n      hullIndex[hull[i]] = i;\n    }\n\n    // degenerate case: 1 or 2 (distinct) points\n    if (hull.length <= 2 && hull.length > 0) {\n      this.triangles = new Int32Array(3).fill(-1);\n      this.halfedges = new Int32Array(3).fill(-1);\n      this.triangles[0] = hull[0];\n      this.triangles[1] = hull[1];\n      this.triangles[2] = hull[1];\n      inedges[hull[0]] = 1;\n      if (hull.length === 2) inedges[hull[1]] = 0;\n    }\n  }\n  voronoi(bounds) {\n    return new Voronoi(this, bounds);\n  }\n  *neighbors(i) {\n    const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n    // degenerate case with several collinear points\n    if (collinear) {\n      const l = collinear.indexOf(i);\n      if (l > 0) yield collinear[l - 1];\n      if (l < collinear.length - 1) yield collinear[l + 1];\n      return;\n    }\n\n    const e0 = inedges[i];\n    if (e0 === -1) return; // coincident point\n    let e = e0, p0 = -1;\n    do {\n      yield p0 = triangles[e];\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) return; // bad triangulation\n      e = halfedges[e];\n      if (e === -1) {\n        const p = hull[(_hullIndex[i] + 1) % hull.length];\n        if (p !== p0) yield p;\n        return;\n      }\n    } while (e !== e0);\n  }\n  find(x, y, i = 0) {\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n    const i0 = i;\n    let c;\n    while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n    return c;\n  }\n  _step(i, x, y) {\n    const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n    if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n    let c = i;\n    let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n    const e0 = inedges[i];\n    let e = e0;\n    do {\n      let t = triangles[e];\n      const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n      if (dt < dc) dc = dt, c = t;\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n      e = halfedges[e];\n      if (e === -1) {\n        e = hull[(_hullIndex[i] + 1) % hull.length];\n        if (e !== t) {\n          if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n        }\n        break;\n      }\n    } while (e !== e0);\n    return c;\n  }\n  render(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {points, halfedges, triangles} = this;\n    for (let i = 0, n = halfedges.length; i < n; ++i) {\n      const j = halfedges[i];\n      if (j < i) continue;\n      const ti = triangles[i] * 2;\n      const tj = triangles[j] * 2;\n      context.moveTo(points[ti], points[ti + 1]);\n      context.lineTo(points[tj], points[tj + 1]);\n    }\n    this.renderHull(context);\n    return buffer && buffer.value();\n  }\n  renderPoints(context, r = 2) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {points} = this;\n    for (let i = 0, n = points.length; i < n; i += 2) {\n      const x = points[i], y = points[i + 1];\n      context.moveTo(x + r, y);\n      context.arc(x, y, r, 0, tau);\n    }\n    return buffer && buffer.value();\n  }\n  renderHull(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {hull, points} = this;\n    const h = hull[0] * 2, n = hull.length;\n    context.moveTo(points[h], points[h + 1]);\n    for (let i = 1; i < n; ++i) {\n      const h = 2 * hull[i];\n      context.lineTo(points[h], points[h + 1]);\n    }\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  hullPolygon() {\n    const polygon = new Polygon;\n    this.renderHull(polygon);\n    return polygon.value();\n  }\n  renderTriangle(i, context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {points, triangles} = this;\n    const t0 = triangles[i *= 3] * 2;\n    const t1 = triangles[i + 1] * 2;\n    const t2 = triangles[i + 2] * 2;\n    context.moveTo(points[t0], points[t0 + 1]);\n    context.lineTo(points[t1], points[t1 + 1]);\n    context.lineTo(points[t2], points[t2 + 1]);\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  *trianglePolygons() {\n    const {triangles} = this;\n    for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n      yield this.trianglePolygon(i);\n    }\n  }\n  trianglePolygon(i) {\n    const polygon = new Polygon;\n    this.renderTriangle(i, polygon);\n    return polygon.value();\n  }\n}\n\nfunction flatArray(points, fx, fy, that) {\n  const n = points.length;\n  const array = new Float64Array(n * 2);\n  for (let i = 0; i < n; ++i) {\n    const p = points[i];\n    array[i * 2] = fx.call(that, p, i, points);\n    array[i * 2 + 1] = fy.call(that, p, i, points);\n  }\n  return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n  let i = 0;\n  for (const p of points) {\n    yield fx.call(that, p, i, points);\n    yield fy.call(that, p, i, points);\n    ++i;\n  }\n}\n","import { Transform } from 'vega-dataflow';\nimport { inherits } from 'vega-util';\nimport { Delaunay } from 'd3-delaunay';\n\nfunction Voronoi(params) {\n  Transform.call(this, null, params);\n}\nVoronoi.Definition = {\n  'type': 'Voronoi',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'x',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'y',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'extent',\n    'type': 'array',\n    'array': true,\n    'length': 2,\n    'default': [[-1e5, -1e5], [1e5, 1e5]],\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'path'\n  }]\n};\nconst defaultExtent = [-1e5, -1e5, 1e5, 1e5];\ninherits(Voronoi, Transform, {\n  transform(_, pulse) {\n    const as = _.as || 'path',\n          data = pulse.source; // nothing to do if no data\n\n    if (!data || !data.length) return pulse; // configure and construct voronoi diagram\n\n    let s = _.size;\n    s = s ? [0, 0, s[0], s[1]] : (s = _.extent) ? [s[0][0], s[0][1], s[1][0], s[1][1]] : defaultExtent;\n    const voronoi = this.value = Delaunay.from(data, _.x, _.y).voronoi(s); // map polygons to paths\n\n    for (let i = 0, n = data.length; i < n; ++i) {\n      const polygon = voronoi.cellPolygon(i);\n      data[i][as] = polygon ? toPathString(polygon) : null;\n    }\n\n    return pulse.reflow(_.modified()).modifies(as);\n  }\n\n}); // suppress duplicated end point vertices\n\nfunction toPathString(p) {\n  const x = p[0][0],\n        y = p[0][1];\n  let n = p.length - 1;\n\n  for (; p[n][0] === x && p[n][1] === y; --n);\n\n  return 'M' + p.slice(0, n + 1).join('L') + 'Z';\n}\n\nexport { Voronoi as voronoi };\n","import { canvas } from 'vega-canvas';\nimport { Transform } from 'vega-dataflow';\nimport { inherits, error, isFunction, constant, extent } from 'vega-util';\nimport { scale } from 'vega-scale';\nimport { random } from 'vega-statistics';\n\n/*\nCopyright (c) 2013, Jason Davies.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n  * Redistributions of source code must retain the above copyright notice, this\n    list of conditions and the following disclaimer.\n\n  * Redistributions in binary form must reproduce the above copyright notice,\n    this list of conditions and the following disclaimer in the documentation\n    and/or other materials provided with the distribution.\n\n  * The name Jason Davies may not be used to endorse or promote products\n    derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL JASON DAVIES BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\nOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nvar cloudRadians = Math.PI / 180,\n    cw = 1 << 11 >> 5,\n    ch = 1 << 11;\nfunction cloud () {\n  var size = [256, 256],\n      text,\n      font,\n      fontSize,\n      fontStyle,\n      fontWeight,\n      rotate,\n      padding,\n      spiral = archimedeanSpiral,\n      words = [],\n      random = Math.random,\n      cloud = {};\n\n  cloud.layout = function () {\n    var contextAndRatio = getContext(canvas()),\n        board = zeroArray((size[0] >> 5) * size[1]),\n        bounds = null,\n        n = words.length,\n        i = -1,\n        tags = [],\n        data = words.map(d => ({\n      text: text(d),\n      font: font(d),\n      style: fontStyle(d),\n      weight: fontWeight(d),\n      rotate: rotate(d),\n      size: ~~(fontSize(d) + 1e-14),\n      padding: padding(d),\n      xoff: 0,\n      yoff: 0,\n      x1: 0,\n      y1: 0,\n      x0: 0,\n      y0: 0,\n      hasText: false,\n      sprite: null,\n      datum: d\n    })).sort((a, b) => b.size - a.size);\n\n    while (++i < n) {\n      var d = data[i];\n      d.x = size[0] * (random() + .5) >> 1;\n      d.y = size[1] * (random() + .5) >> 1;\n      cloudSprite(contextAndRatio, d, data, i);\n\n      if (d.hasText && place(board, d, bounds)) {\n        tags.push(d);\n        if (bounds) cloudBounds(bounds, d);else bounds = [{\n          x: d.x + d.x0,\n          y: d.y + d.y0\n        }, {\n          x: d.x + d.x1,\n          y: d.y + d.y1\n        }]; // Temporary hack\n\n        d.x -= size[0] >> 1;\n        d.y -= size[1] >> 1;\n      }\n    }\n\n    return tags;\n  };\n\n  function getContext(canvas) {\n    canvas.width = canvas.height = 1;\n    var ratio = Math.sqrt(canvas.getContext('2d').getImageData(0, 0, 1, 1).data.length >> 2);\n    canvas.width = (cw << 5) / ratio;\n    canvas.height = ch / ratio;\n    var context = canvas.getContext('2d');\n    context.fillStyle = context.strokeStyle = 'red';\n    context.textAlign = 'center';\n    return {\n      context: context,\n      ratio: ratio\n    };\n  }\n\n  function place(board, tag, bounds) {\n    var startX = tag.x,\n        startY = tag.y,\n        maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n        s = spiral(size),\n        dt = random() < .5 ? 1 : -1,\n        t = -dt,\n        dxdy,\n        dx,\n        dy;\n\n    while (dxdy = s(t += dt)) {\n      dx = ~~dxdy[0];\n      dy = ~~dxdy[1];\n      if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n      tag.x = startX + dx;\n      tag.y = startY + dy;\n      if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 || tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue; // TODO only check for collisions within current bounds.\n\n      if (!bounds || !cloudCollide(tag, board, size[0])) {\n        if (!bounds || collideRects(tag, bounds)) {\n          var sprite = tag.sprite,\n              w = tag.width >> 5,\n              sw = size[0] >> 5,\n              lx = tag.x - (w << 4),\n              sx = lx & 0x7f,\n              msx = 32 - sx,\n              h = tag.y1 - tag.y0,\n              x = (tag.y + tag.y0) * sw + (lx >> 5),\n              last;\n\n          for (var j = 0; j < h; j++) {\n            last = 0;\n\n            for (var i = 0; i <= w; i++) {\n              board[x + i] |= last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n            }\n\n            x += sw;\n          }\n\n          tag.sprite = null;\n          return true;\n        }\n      }\n    }\n\n    return false;\n  }\n\n  cloud.words = function (_) {\n    if (arguments.length) {\n      words = _;\n      return cloud;\n    } else {\n      return words;\n    }\n  };\n\n  cloud.size = function (_) {\n    if (arguments.length) {\n      size = [+_[0], +_[1]];\n      return cloud;\n    } else {\n      return size;\n    }\n  };\n\n  cloud.font = function (_) {\n    if (arguments.length) {\n      font = functor(_);\n      return cloud;\n    } else {\n      return font;\n    }\n  };\n\n  cloud.fontStyle = function (_) {\n    if (arguments.length) {\n      fontStyle = functor(_);\n      return cloud;\n    } else {\n      return fontStyle;\n    }\n  };\n\n  cloud.fontWeight = function (_) {\n    if (arguments.length) {\n      fontWeight = functor(_);\n      return cloud;\n    } else {\n      return fontWeight;\n    }\n  };\n\n  cloud.rotate = function (_) {\n    if (arguments.length) {\n      rotate = functor(_);\n      return cloud;\n    } else {\n      return rotate;\n    }\n  };\n\n  cloud.text = function (_) {\n    if (arguments.length) {\n      text = functor(_);\n      return cloud;\n    } else {\n      return text;\n    }\n  };\n\n  cloud.spiral = function (_) {\n    if (arguments.length) {\n      spiral = spirals[_] || _;\n      return cloud;\n    } else {\n      return spiral;\n    }\n  };\n\n  cloud.fontSize = function (_) {\n    if (arguments.length) {\n      fontSize = functor(_);\n      return cloud;\n    } else {\n      return fontSize;\n    }\n  };\n\n  cloud.padding = function (_) {\n    if (arguments.length) {\n      padding = functor(_);\n      return cloud;\n    } else {\n      return padding;\n    }\n  };\n\n  cloud.random = function (_) {\n    if (arguments.length) {\n      random = _;\n      return cloud;\n    } else {\n      return random;\n    }\n  };\n\n  return cloud;\n} // Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\n\nfunction cloudSprite(contextAndRatio, d, data, di) {\n  if (d.sprite) return;\n  var c = contextAndRatio.context,\n      ratio = contextAndRatio.ratio;\n  c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n  var x = 0,\n      y = 0,\n      maxh = 0,\n      n = data.length,\n      w,\n      w32,\n      h,\n      i,\n      j;\n  --di;\n\n  while (++di < n) {\n    d = data[di];\n    c.save();\n    c.font = d.style + ' ' + d.weight + ' ' + ~~((d.size + 1) / ratio) + 'px ' + d.font;\n    w = c.measureText(d.text + 'm').width * ratio;\n    h = d.size << 1;\n\n    if (d.rotate) {\n      var sr = Math.sin(d.rotate * cloudRadians),\n          cr = Math.cos(d.rotate * cloudRadians),\n          wcr = w * cr,\n          wsr = w * sr,\n          hcr = h * cr,\n          hsr = h * sr;\n      w = Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f >> 5 << 5;\n      h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n    } else {\n      w = w + 0x1f >> 5 << 5;\n    }\n\n    if (h > maxh) maxh = h;\n\n    if (x + w >= cw << 5) {\n      x = 0;\n      y += maxh;\n      maxh = 0;\n    }\n\n    if (y + h >= ch) break;\n    c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n    if (d.rotate) c.rotate(d.rotate * cloudRadians);\n    c.fillText(d.text, 0, 0);\n\n    if (d.padding) {\n      c.lineWidth = 2 * d.padding;\n      c.strokeText(d.text, 0, 0);\n    }\n\n    c.restore();\n    d.width = w;\n    d.height = h;\n    d.xoff = x;\n    d.yoff = y;\n    d.x1 = w >> 1;\n    d.y1 = h >> 1;\n    d.x0 = -d.x1;\n    d.y0 = -d.y1;\n    d.hasText = true;\n    x += w;\n  }\n\n  var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n      sprite = [];\n\n  while (--di >= 0) {\n    d = data[di];\n    if (!d.hasText) continue;\n    w = d.width;\n    w32 = w >> 5;\n    h = d.y1 - d.y0; // Zero the buffer\n\n    for (i = 0; i < h * w32; i++) sprite[i] = 0;\n\n    x = d.xoff;\n    if (x == null) return;\n    y = d.yoff;\n    var seen = 0,\n        seenRow = -1;\n\n    for (j = 0; j < h; j++) {\n      for (i = 0; i < w; i++) {\n        var k = w32 * j + (i >> 5),\n            m = pixels[(y + j) * (cw << 5) + (x + i) << 2] ? 1 << 31 - i % 32 : 0;\n        sprite[k] |= m;\n        seen |= m;\n      }\n\n      if (seen) seenRow = j;else {\n        d.y0++;\n        h--;\n        j--;\n        y++;\n      }\n    }\n\n    d.y1 = d.y0 + seenRow;\n    d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n  }\n} // Use mask-based collision detection.\n\n\nfunction cloudCollide(tag, board, sw) {\n  sw >>= 5;\n  var sprite = tag.sprite,\n      w = tag.width >> 5,\n      lx = tag.x - (w << 4),\n      sx = lx & 0x7f,\n      msx = 32 - sx,\n      h = tag.y1 - tag.y0,\n      x = (tag.y + tag.y0) * sw + (lx >> 5),\n      last;\n\n  for (var j = 0; j < h; j++) {\n    last = 0;\n\n    for (var i = 0; i <= w; i++) {\n      if ((last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0)) & board[x + i]) return true;\n    }\n\n    x += sw;\n  }\n\n  return false;\n}\n\nfunction cloudBounds(bounds, d) {\n  var b0 = bounds[0],\n      b1 = bounds[1];\n  if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n  if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n  if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n  if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\n\nfunction collideRects(a, b) {\n  return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\n\nfunction archimedeanSpiral(size) {\n  var e = size[0] / size[1];\n  return function (t) {\n    return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n  };\n}\n\nfunction rectangularSpiral(size) {\n  var dy = 4,\n      dx = dy * size[0] / size[1],\n      x = 0,\n      y = 0;\n  return function (t) {\n    var sign = t < 0 ? -1 : 1; // See triangular numbers: T_n = n * (n + 1) / 2.\n\n    switch (Math.sqrt(1 + 4 * sign * t) - sign & 3) {\n      case 0:\n        x += dx;\n        break;\n\n      case 1:\n        y += dy;\n        break;\n\n      case 2:\n        x -= dx;\n        break;\n\n      default:\n        y -= dy;\n        break;\n    }\n\n    return [x, y];\n  };\n} // TODO reuse arrays?\n\n\nfunction zeroArray(n) {\n  var a = [],\n      i = -1;\n\n  while (++i < n) a[i] = 0;\n\n  return a;\n}\n\nfunction functor(d) {\n  return typeof d === 'function' ? d : function () {\n    return d;\n  };\n}\n\nvar spirals = {\n  archimedean: archimedeanSpiral,\n  rectangular: rectangularSpiral\n};\n\nconst Output = ['x', 'y', 'font', 'fontSize', 'fontStyle', 'fontWeight', 'angle'];\nconst Params = ['text', 'font', 'rotate', 'fontSize', 'fontStyle', 'fontWeight'];\nfunction Wordcloud(params) {\n  Transform.call(this, cloud(), params);\n}\nWordcloud.Definition = {\n  'type': 'Wordcloud',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'font',\n    'type': 'string',\n    'expr': true,\n    'default': 'sans-serif'\n  }, {\n    'name': 'fontStyle',\n    'type': 'string',\n    'expr': true,\n    'default': 'normal'\n  }, {\n    'name': 'fontWeight',\n    'type': 'string',\n    'expr': true,\n    'default': 'normal'\n  }, {\n    'name': 'fontSize',\n    'type': 'number',\n    'expr': true,\n    'default': 14\n  }, {\n    'name': 'fontSizeRange',\n    'type': 'number',\n    'array': 'nullable',\n    'default': [10, 50]\n  }, {\n    'name': 'rotate',\n    'type': 'number',\n    'expr': true,\n    'default': 0\n  }, {\n    'name': 'text',\n    'type': 'field'\n  }, {\n    'name': 'spiral',\n    'type': 'string',\n    'values': ['archimedean', 'rectangular']\n  }, {\n    'name': 'padding',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 7,\n    'default': Output\n  }]\n};\ninherits(Wordcloud, Transform, {\n  transform(_, pulse) {\n    if (_.size && !(_.size[0] && _.size[1])) {\n      error('Wordcloud size dimensions must be non-zero.');\n    }\n\n    function modp(param) {\n      const p = _[param];\n      return isFunction(p) && pulse.modified(p.fields);\n    }\n\n    const mod = _.modified();\n\n    if (!(mod || pulse.changed(pulse.ADD_REM) || Params.some(modp))) return;\n    const data = pulse.materialize(pulse.SOURCE).source,\n          layout = this.value,\n          as = _.as || Output;\n    let fontSize = _.fontSize || 14,\n        range;\n    isFunction(fontSize) ? range = _.fontSizeRange : fontSize = constant(fontSize); // create font size scaling function as needed\n\n    if (range) {\n      const fsize = fontSize,\n            sizeScale = scale('sqrt')().domain(extent(data, fsize)).range(range);\n\n      fontSize = x => sizeScale(fsize(x));\n    }\n\n    data.forEach(t => {\n      t[as[0]] = NaN;\n      t[as[1]] = NaN;\n      t[as[3]] = 0;\n    }); // configure layout\n\n    const words = layout.words(data).text(_.text).size(_.size || [500, 500]).padding(_.padding || 1).spiral(_.spiral || 'archimedean').rotate(_.rotate || 0).font(_.font || 'sans-serif').fontStyle(_.fontStyle || 'normal').fontWeight(_.fontWeight || 'normal').fontSize(fontSize).random(random).layout();\n    const size = layout.size(),\n          dx = size[0] >> 1,\n          dy = size[1] >> 1,\n          n = words.length;\n\n    for (let i = 0, w, t; i < n; ++i) {\n      w = words[i];\n      t = w.datum;\n      t[as[0]] = w.x + dx;\n      t[as[1]] = w.y + dy;\n      t[as[2]] = w.font;\n      t[as[3]] = w.size;\n      t[as[4]] = w.style;\n      t[as[5]] = w.weight;\n      t[as[6]] = w.rotate;\n    }\n\n    return pulse.reflow(mod).modifies(as);\n  }\n\n});\n\nexport { Wordcloud as wordcloud };\n","export default function(source, keys) {\n  return Array.from(keys, key => source[key]);\n}\n","import { permute, bisectLeft, bisectRight } from 'd3-array';\nimport { Transform } from 'vega-dataflow';\nimport { inherits } from 'vega-util';\n\nconst array8 = n => new Uint8Array(n);\nconst array16 = n => new Uint16Array(n);\nconst array32 = n => new Uint32Array(n);\n\n/**\n * Maintains CrossFilter state.\n */\n\nfunction Bitmaps() {\n  let width = 8,\n      data = [],\n      seen = array32(0),\n      curr = array(0, width),\n      prev = array(0, width);\n  return {\n    data: () => data,\n    seen: () => seen = lengthen(seen, data.length),\n\n    add(array) {\n      for (let i = 0, j = data.length, n = array.length, t; i < n; ++i) {\n        t = array[i];\n        t._index = j++;\n        data.push(t);\n      }\n    },\n\n    remove(num, map) {\n      // map: index -> boolean (true => remove)\n      const n = data.length,\n            copy = Array(n - num),\n            reindex = data; // reuse old data array for index map\n\n      let t, i, j; // seek forward to first removal\n\n      for (i = 0; !map[i] && i < n; ++i) {\n        copy[i] = data[i];\n        reindex[i] = i;\n      } // condense arrays\n\n\n      for (j = i; i < n; ++i) {\n        t = data[i];\n\n        if (!map[i]) {\n          reindex[i] = j;\n          curr[j] = curr[i];\n          prev[j] = prev[i];\n          copy[j] = t;\n          t._index = j++;\n        } else {\n          reindex[i] = -1;\n        }\n\n        curr[i] = 0; // clear unused bits\n      }\n\n      data = copy;\n      return reindex;\n    },\n\n    size: () => data.length,\n    curr: () => curr,\n    prev: () => prev,\n    reset: k => prev[k] = curr[k],\n    all: () => width < 0x101 ? 0xff : width < 0x10001 ? 0xffff : 0xffffffff,\n\n    set(k, one) {\n      curr[k] |= one;\n    },\n\n    clear(k, one) {\n      curr[k] &= ~one;\n    },\n\n    resize(n, m) {\n      const k = curr.length;\n\n      if (n > k || m > width) {\n        width = Math.max(m, width);\n        curr = array(n, width, curr);\n        prev = array(n, width);\n      }\n    }\n\n  };\n}\n\nfunction lengthen(array, length, copy) {\n  if (array.length >= length) return array;\n  copy = copy || new array.constructor(length);\n  copy.set(array);\n  return copy;\n}\n\nfunction array(n, m, array) {\n  const copy = (m < 0x101 ? array8 : m < 0x10001 ? array16 : array32)(n);\n  if (array) copy.set(array);\n  return copy;\n}\n\nfunction Dimension (index, i, query) {\n  const bit = 1 << i;\n  return {\n    one: bit,\n    zero: ~bit,\n    range: query.slice(),\n    bisect: index.bisect,\n    index: index.index,\n    size: index.size,\n\n    onAdd(added, curr) {\n      const dim = this,\n            range = dim.bisect(dim.range, added.value),\n            idx = added.index,\n            lo = range[0],\n            hi = range[1],\n            n1 = idx.length;\n      let i;\n\n      for (i = 0; i < lo; ++i) curr[idx[i]] |= bit;\n\n      for (i = hi; i < n1; ++i) curr[idx[i]] |= bit;\n\n      return dim;\n    }\n\n  };\n}\n\n/**\n * Maintains a list of values, sorted by key.\n */\n\nfunction SortedIndex() {\n  let index = array32(0),\n      value = [],\n      size = 0;\n\n  function insert(key, data, base) {\n    if (!data.length) return [];\n    const n0 = size,\n          n1 = data.length,\n          addi = array32(n1);\n    let addv = Array(n1),\n        oldv,\n        oldi,\n        i;\n\n    for (i = 0; i < n1; ++i) {\n      addv[i] = key(data[i]);\n      addi[i] = i;\n    }\n\n    addv = sort(addv, addi);\n\n    if (n0) {\n      oldv = value;\n      oldi = index;\n      value = Array(n0 + n1);\n      index = array32(n0 + n1);\n      merge(base, oldv, oldi, n0, addv, addi, n1, value, index);\n    } else {\n      if (base > 0) for (i = 0; i < n1; ++i) {\n        addi[i] += base;\n      }\n      value = addv;\n      index = addi;\n    }\n\n    size = n0 + n1;\n    return {\n      index: addi,\n      value: addv\n    };\n  }\n\n  function remove(num, map) {\n    // map: index -> remove\n    const n = size;\n    let idx, i, j; // seek forward to first removal\n\n    for (i = 0; !map[index[i]] && i < n; ++i); // condense index and value arrays\n\n\n    for (j = i; i < n; ++i) {\n      if (!map[idx = index[i]]) {\n        index[j] = idx;\n        value[j] = value[i];\n        ++j;\n      }\n    }\n\n    size = n - num;\n  }\n\n  function reindex(map) {\n    for (let i = 0, n = size; i < n; ++i) {\n      index[i] = map[index[i]];\n    }\n  }\n\n  function bisect(range, array) {\n    let n;\n\n    if (array) {\n      n = array.length;\n    } else {\n      array = value;\n      n = size;\n    }\n\n    return [bisectLeft(array, range[0], 0, n), bisectRight(array, range[1], 0, n)];\n  }\n\n  return {\n    insert: insert,\n    remove: remove,\n    bisect: bisect,\n    reindex: reindex,\n    index: () => index,\n    size: () => size\n  };\n}\n\nfunction sort(values, index) {\n  values.sort.call(index, (a, b) => {\n    const x = values[a],\n          y = values[b];\n    return x < y ? -1 : x > y ? 1 : 0;\n  });\n  return permute(values, index);\n}\n\nfunction merge(base, value0, index0, n0, value1, index1, n1, value, index) {\n  let i0 = 0,\n      i1 = 0,\n      i;\n\n  for (i = 0; i0 < n0 && i1 < n1; ++i) {\n    if (value0[i0] < value1[i1]) {\n      value[i] = value0[i0];\n      index[i] = index0[i0++];\n    } else {\n      value[i] = value1[i1];\n      index[i] = index1[i1++] + base;\n    }\n  }\n\n  for (; i0 < n0; ++i0, ++i) {\n    value[i] = value0[i0];\n    index[i] = index0[i0];\n  }\n\n  for (; i1 < n1; ++i1, ++i) {\n    value[i] = value1[i1];\n    index[i] = index1[i1] + base;\n  }\n}\n\n/**\n * An indexed multi-dimensional filter.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.fields - An array of dimension accessors to filter.\n * @param {Array} params.query - An array of per-dimension range queries.\n */\n\nfunction CrossFilter(params) {\n  Transform.call(this, Bitmaps(), params);\n  this._indices = null;\n  this._dims = null;\n}\nCrossFilter.Definition = {\n  'type': 'CrossFilter',\n  'metadata': {},\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true\n  }, {\n    'name': 'query',\n    'type': 'array',\n    'array': true,\n    'required': true,\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }]\n};\ninherits(CrossFilter, Transform, {\n  transform(_, pulse) {\n    if (!this._dims) {\n      return this.init(_, pulse);\n    } else {\n      var init = _.modified('fields') || _.fields.some(f => pulse.modified(f.fields));\n\n      return init ? this.reinit(_, pulse) : this.eval(_, pulse);\n    }\n  },\n\n  init(_, pulse) {\n    const fields = _.fields,\n          query = _.query,\n          indices = this._indices = {},\n          dims = this._dims = [],\n          m = query.length;\n    let i = 0,\n        key,\n        index; // instantiate indices and dimensions\n\n    for (; i < m; ++i) {\n      key = fields[i].fname;\n      index = indices[key] || (indices[key] = SortedIndex());\n      dims.push(Dimension(index, i, query[i]));\n    }\n\n    return this.eval(_, pulse);\n  },\n\n  reinit(_, pulse) {\n    const output = pulse.materialize().fork(),\n          fields = _.fields,\n          query = _.query,\n          indices = this._indices,\n          dims = this._dims,\n          bits = this.value,\n          curr = bits.curr(),\n          prev = bits.prev(),\n          all = bits.all(),\n          out = output.rem = output.add,\n          mod = output.mod,\n          m = query.length,\n          adds = {};\n    let add, index, key, mods, remMap, modMap, i, n, f; // set prev to current state\n\n    prev.set(curr); // if pulse has remove tuples, process them first\n\n    if (pulse.rem.length) {\n      remMap = this.remove(_, pulse, output);\n    } // if pulse has added tuples, add them to state\n\n\n    if (pulse.add.length) {\n      bits.add(pulse.add);\n    } // if pulse has modified tuples, create an index map\n\n\n    if (pulse.mod.length) {\n      modMap = {};\n\n      for (mods = pulse.mod, i = 0, n = mods.length; i < n; ++i) {\n        modMap[mods[i]._index] = 1;\n      }\n    } // re-initialize indices as needed, update curr bitmap\n\n\n    for (i = 0; i < m; ++i) {\n      f = fields[i];\n\n      if (!dims[i] || _.modified('fields', i) || pulse.modified(f.fields)) {\n        key = f.fname;\n\n        if (!(add = adds[key])) {\n          indices[key] = index = SortedIndex();\n          adds[key] = add = index.insert(f, pulse.source, 0);\n        }\n\n        dims[i] = Dimension(index, i, query[i]).onAdd(add, curr);\n      }\n    } // visit each tuple\n    // if filter state changed, push index to add/rem\n    // else if in mod and passes a filter, push index to mod\n\n\n    for (i = 0, n = bits.data().length; i < n; ++i) {\n      if (remMap[i]) {\n        // skip if removed tuple\n        continue;\n      } else if (prev[i] !== curr[i]) {\n        // add if state changed\n        out.push(i);\n      } else if (modMap[i] && curr[i] !== all) {\n        // otherwise, pass mods through\n        mod.push(i);\n      }\n    }\n\n    bits.mask = (1 << m) - 1;\n    return output;\n  },\n\n  eval(_, pulse) {\n    const output = pulse.materialize().fork(),\n          m = this._dims.length;\n    let mask = 0;\n\n    if (pulse.rem.length) {\n      this.remove(_, pulse, output);\n      mask |= (1 << m) - 1;\n    }\n\n    if (_.modified('query') && !_.modified('fields')) {\n      mask |= this.update(_, pulse, output);\n    }\n\n    if (pulse.add.length) {\n      this.insert(_, pulse, output);\n      mask |= (1 << m) - 1;\n    }\n\n    if (pulse.mod.length) {\n      this.modify(pulse, output);\n      mask |= (1 << m) - 1;\n    }\n\n    this.value.mask = mask;\n    return output;\n  },\n\n  insert(_, pulse, output) {\n    const tuples = pulse.add,\n          bits = this.value,\n          dims = this._dims,\n          indices = this._indices,\n          fields = _.fields,\n          adds = {},\n          out = output.add,\n          n = bits.size() + tuples.length,\n          m = dims.length;\n    let k = bits.size(),\n        j,\n        key,\n        add; // resize bitmaps and add tuples as needed\n\n    bits.resize(n, m);\n    bits.add(tuples);\n    const curr = bits.curr(),\n          prev = bits.prev(),\n          all = bits.all(); // add to dimensional indices\n\n    for (j = 0; j < m; ++j) {\n      key = fields[j].fname;\n      add = adds[key] || (adds[key] = indices[key].insert(fields[j], tuples, k));\n      dims[j].onAdd(add, curr);\n    } // set previous filters, output if passes at least one filter\n\n\n    for (; k < n; ++k) {\n      prev[k] = all;\n      if (curr[k] !== all) out.push(k);\n    }\n  },\n\n  modify(pulse, output) {\n    const out = output.mod,\n          bits = this.value,\n          curr = bits.curr(),\n          all = bits.all(),\n          tuples = pulse.mod;\n    let i, n, k;\n\n    for (i = 0, n = tuples.length; i < n; ++i) {\n      k = tuples[i]._index;\n      if (curr[k] !== all) out.push(k);\n    }\n  },\n\n  remove(_, pulse, output) {\n    const indices = this._indices,\n          bits = this.value,\n          curr = bits.curr(),\n          prev = bits.prev(),\n          all = bits.all(),\n          map = {},\n          out = output.rem,\n          tuples = pulse.rem;\n    let i, n, k, f; // process tuples, output if passes at least one filter\n\n    for (i = 0, n = tuples.length; i < n; ++i) {\n      k = tuples[i]._index;\n      map[k] = 1; // build index map\n\n      prev[k] = f = curr[k];\n      curr[k] = all;\n      if (f !== all) out.push(k);\n    } // remove from dimensional indices\n\n\n    for (k in indices) {\n      indices[k].remove(n, map);\n    }\n\n    this.reindex(pulse, n, map);\n    return map;\n  },\n\n  // reindex filters and indices after propagation completes\n  reindex(pulse, num, map) {\n    const indices = this._indices,\n          bits = this.value;\n    pulse.runAfter(() => {\n      const indexMap = bits.remove(num, map);\n\n      for (const key in indices) indices[key].reindex(indexMap);\n    });\n  },\n\n  update(_, pulse, output) {\n    const dims = this._dims,\n          query = _.query,\n          stamp = pulse.stamp,\n          m = dims.length;\n    let mask = 0,\n        i,\n        q; // survey how many queries have changed\n\n    output.filters = 0;\n\n    for (q = 0; q < m; ++q) {\n      if (_.modified('query', q)) {\n        i = q;\n        ++mask;\n      }\n    }\n\n    if (mask === 1) {\n      // only one query changed, use more efficient update\n      mask = dims[i].one;\n      this.incrementOne(dims[i], query[i], output.add, output.rem);\n    } else {\n      // multiple queries changed, perform full record keeping\n      for (q = 0, mask = 0; q < m; ++q) {\n        if (!_.modified('query', q)) continue;\n        mask |= dims[q].one;\n        this.incrementAll(dims[q], query[q], stamp, output.add);\n        output.rem = output.add; // duplicate add/rem for downstream resolve\n      }\n    }\n\n    return mask;\n  },\n\n  incrementAll(dim, query, stamp, out) {\n    const bits = this.value,\n          seen = bits.seen(),\n          curr = bits.curr(),\n          prev = bits.prev(),\n          index = dim.index(),\n          old = dim.bisect(dim.range),\n          range = dim.bisect(query),\n          lo1 = range[0],\n          hi1 = range[1],\n          lo0 = old[0],\n          hi0 = old[1],\n          one = dim.one;\n    let i, j, k; // Fast incremental update based on previous lo index.\n\n    if (lo1 < lo0) {\n      for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n        k = index[i];\n\n        if (seen[k] !== stamp) {\n          prev[k] = curr[k];\n          seen[k] = stamp;\n          out.push(k);\n        }\n\n        curr[k] ^= one;\n      }\n    } else if (lo1 > lo0) {\n      for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n        k = index[i];\n\n        if (seen[k] !== stamp) {\n          prev[k] = curr[k];\n          seen[k] = stamp;\n          out.push(k);\n        }\n\n        curr[k] ^= one;\n      }\n    } // Fast incremental update based on previous hi index.\n\n\n    if (hi1 > hi0) {\n      for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n        k = index[i];\n\n        if (seen[k] !== stamp) {\n          prev[k] = curr[k];\n          seen[k] = stamp;\n          out.push(k);\n        }\n\n        curr[k] ^= one;\n      }\n    } else if (hi1 < hi0) {\n      for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n        k = index[i];\n\n        if (seen[k] !== stamp) {\n          prev[k] = curr[k];\n          seen[k] = stamp;\n          out.push(k);\n        }\n\n        curr[k] ^= one;\n      }\n    }\n\n    dim.range = query.slice();\n  },\n\n  incrementOne(dim, query, add, rem) {\n    const bits = this.value,\n          curr = bits.curr(),\n          index = dim.index(),\n          old = dim.bisect(dim.range),\n          range = dim.bisect(query),\n          lo1 = range[0],\n          hi1 = range[1],\n          lo0 = old[0],\n          hi0 = old[1],\n          one = dim.one;\n    let i, j, k; // Fast incremental update based on previous lo index.\n\n    if (lo1 < lo0) {\n      for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n        k = index[i];\n        curr[k] ^= one;\n        add.push(k);\n      }\n    } else if (lo1 > lo0) {\n      for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n        k = index[i];\n        curr[k] ^= one;\n        rem.push(k);\n      }\n    } // Fast incremental update based on previous hi index.\n\n\n    if (hi1 > hi0) {\n      for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n        k = index[i];\n        curr[k] ^= one;\n        add.push(k);\n      }\n    } else if (hi1 < hi0) {\n      for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n        k = index[i];\n        curr[k] ^= one;\n        rem.push(k);\n      }\n    }\n\n    dim.range = query.slice();\n  }\n\n});\n\n/**\n * Selectively filters tuples by resolving against a filter bitmap.\n * Useful for processing the output of a cross-filter transform.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.ignore - A bit mask indicating which filters to ignore.\n * @param {object} params.filter - The per-tuple filter bitmaps. Typically this\n *   parameter value is a reference to a {@link CrossFilter} transform.\n */\n\nfunction ResolveFilter(params) {\n  Transform.call(this, null, params);\n}\nResolveFilter.Definition = {\n  'type': 'ResolveFilter',\n  'metadata': {},\n  'params': [{\n    'name': 'ignore',\n    'type': 'number',\n    'required': true,\n    'description': 'A bit mask indicating which filters to ignore.'\n  }, {\n    'name': 'filter',\n    'type': 'object',\n    'required': true,\n    'description': 'Per-tuple filter bitmaps from a CrossFilter transform.'\n  }]\n};\ninherits(ResolveFilter, Transform, {\n  transform(_, pulse) {\n    const ignore = ~(_.ignore || 0),\n          // bit mask where zeros -> dims to ignore\n    bitmap = _.filter,\n          mask = bitmap.mask; // exit early if no relevant filter changes\n\n    if ((mask & ignore) === 0) return pulse.StopPropagation;\n\n    const output = pulse.fork(pulse.ALL),\n          data = bitmap.data(),\n          curr = bitmap.curr(),\n          prev = bitmap.prev(),\n          pass = k => !(curr[k] & ignore) ? data[k] : null; // propagate all mod tuples that pass the filter\n\n\n    output.filter(output.MOD, pass); // determine add & rem tuples via filter functions\n    // for efficiency, we do *not* populate new arrays,\n    // instead we add filter functions applied downstream\n\n    if (!(mask & mask - 1)) {\n      // only one filter changed\n      output.filter(output.ADD, pass);\n      output.filter(output.REM, k => (curr[k] & ignore) === mask ? data[k] : null);\n    } else {\n      // multiple filters changed\n      output.filter(output.ADD, k => {\n        const c = curr[k] & ignore,\n              f = !c && c ^ prev[k] & ignore;\n        return f ? data[k] : null;\n      });\n      output.filter(output.REM, k => {\n        const c = curr[k] & ignore,\n              f = c && !(c ^ (c ^ prev[k] & ignore));\n        return f ? data[k] : null;\n      });\n    } // add filter to source data in case of reflow...\n\n\n    return output.filter(output.SOURCE, t => pass(t._index));\n  }\n\n});\n\nexport { CrossFilter as crossfilter, ResolveFilter as resolvefilter };\n","import { error, toSet, isFunction, isString, hasOwnProperty } from 'vega-util';\n\nconst RawCode = 'RawCode';\nconst Literal = 'Literal';\nconst Property = 'Property';\nconst Identifier = 'Identifier';\nconst ArrayExpression = 'ArrayExpression';\nconst BinaryExpression = 'BinaryExpression';\nconst CallExpression = 'CallExpression';\nconst ConditionalExpression = 'ConditionalExpression';\nconst LogicalExpression = 'LogicalExpression';\nconst MemberExpression = 'MemberExpression';\nconst ObjectExpression = 'ObjectExpression';\nconst UnaryExpression = 'UnaryExpression';\nfunction ASTNode(type) {\n  this.type = type;\n}\n\nASTNode.prototype.visit = function (visitor) {\n  let c, i, n;\n  if (visitor(this)) return 1;\n\n  for (c = children(this), i = 0, n = c.length; i < n; ++i) {\n    if (c[i].visit(visitor)) return 1;\n  }\n};\n\nfunction children(node) {\n  switch (node.type) {\n    case ArrayExpression:\n      return node.elements;\n\n    case BinaryExpression:\n    case LogicalExpression:\n      return [node.left, node.right];\n\n    case CallExpression:\n      return [node.callee].concat(node.arguments);\n\n    case ConditionalExpression:\n      return [node.test, node.consequent, node.alternate];\n\n    case MemberExpression:\n      return [node.object, node.property];\n\n    case ObjectExpression:\n      return node.properties;\n\n    case Property:\n      return [node.key, node.value];\n\n    case UnaryExpression:\n      return [node.argument];\n\n    case Identifier:\n    case Literal:\n    case RawCode:\n    default:\n      return [];\n  }\n}\n\n/*\n  The following expression parser is based on Esprima (http://esprima.org/).\n  Original header comment and license for Esprima is included here:\n\n  Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>\n  Copyright (C) 2013 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>\n  Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>\n  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>\n  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>\n  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar TokenName, source, index, length, lookahead;\nvar TokenBooleanLiteral = 1,\n    TokenEOF = 2,\n    TokenIdentifier = 3,\n    TokenKeyword = 4,\n    TokenNullLiteral = 5,\n    TokenNumericLiteral = 6,\n    TokenPunctuator = 7,\n    TokenStringLiteral = 8,\n    TokenRegularExpression = 9;\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '<end>';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\nvar SyntaxArrayExpression = 'ArrayExpression',\n    SyntaxBinaryExpression = 'BinaryExpression',\n    SyntaxCallExpression = 'CallExpression',\n    SyntaxConditionalExpression = 'ConditionalExpression',\n    SyntaxIdentifier = 'Identifier',\n    SyntaxLiteral = 'Literal',\n    SyntaxLogicalExpression = 'LogicalExpression',\n    SyntaxMemberExpression = 'MemberExpression',\n    SyntaxObjectExpression = 'ObjectExpression',\n    SyntaxProperty = 'Property',\n    SyntaxUnaryExpression = 'UnaryExpression'; // Error messages should be identical to V8.\n\nvar MessageUnexpectedToken = 'Unexpected token %0',\n    MessageUnexpectedNumber = 'Unexpected number',\n    MessageUnexpectedString = 'Unexpected string',\n    MessageUnexpectedIdentifier = 'Unexpected identifier',\n    MessageUnexpectedReserved = 'Unexpected reserved word',\n    MessageUnexpectedEOS = 'Unexpected end of input',\n    MessageInvalidRegExp = 'Invalid regular expression',\n    MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n    MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n    MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\nvar ILLEGAL = 'ILLEGAL',\n    DISABLED = 'Disabled.'; // See also tools/generate-unicode-regex.py.\n\nvar RegexNonAsciiIdentifierStart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'),\n    // eslint-disable-next-line no-misleading-character-class\nRegexNonAsciiIdentifierPart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'); // Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n  /* istanbul ignore next */\n  if (!condition) {\n    throw new Error('ASSERT: ' + message);\n  }\n}\n\nfunction isDecimalDigit(ch) {\n  return ch >= 0x30 && ch <= 0x39; // 0..9\n}\n\nfunction isHexDigit(ch) {\n  return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\n\nfunction isOctalDigit(ch) {\n  return '01234567'.indexOf(ch) >= 0;\n} // 7.2 White Space\n\n\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0;\n} // 7.3 Line Terminators\n\n\nfunction isLineTerminator(ch) {\n  return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n} // 7.6 Identifier Names and Identifiers\n\n\nfunction isIdentifierStart(ch) {\n  return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch));\n}\n\nfunction isIdentifierPart(ch) {\n  return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch >= 0x30 && ch <= 0x39 || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch));\n} // 7.6.1.1 Keywords\n\n\nconst keywords = {\n  'if': 1,\n  'in': 1,\n  'do': 1,\n  'var': 1,\n  'for': 1,\n  'new': 1,\n  'try': 1,\n  'let': 1,\n  'this': 1,\n  'else': 1,\n  'case': 1,\n  'void': 1,\n  'with': 1,\n  'enum': 1,\n  'while': 1,\n  'break': 1,\n  'catch': 1,\n  'throw': 1,\n  'const': 1,\n  'yield': 1,\n  'class': 1,\n  'super': 1,\n  'return': 1,\n  'typeof': 1,\n  'delete': 1,\n  'switch': 1,\n  'export': 1,\n  'import': 1,\n  'public': 1,\n  'static': 1,\n  'default': 1,\n  'finally': 1,\n  'extends': 1,\n  'package': 1,\n  'private': 1,\n  'function': 1,\n  'continue': 1,\n  'debugger': 1,\n  'interface': 1,\n  'protected': 1,\n  'instanceof': 1,\n  'implements': 1\n};\n\nfunction skipComment() {\n  while (index < length) {\n    const ch = source.charCodeAt(index);\n\n    if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n}\n\nfunction scanHexEscape(prefix) {\n  var i,\n      len,\n      ch,\n      code = 0;\n  len = prefix === 'u' ? 4 : 2;\n\n  for (i = 0; i < len; ++i) {\n    if (index < length && isHexDigit(source[index])) {\n      ch = source[index++];\n      code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n\n  return String.fromCharCode(code);\n}\n\nfunction scanUnicodeCodePointEscape() {\n  var ch, code, cu1, cu2;\n  ch = source[index];\n  code = 0; // At least, one hex digit is required.\n\n  if (ch === '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  while (index < length) {\n    ch = source[index++];\n\n    if (!isHexDigit(ch)) {\n      break;\n    }\n\n    code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n  }\n\n  if (code > 0x10FFFF || ch !== '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  } // UTF-16 Encoding\n\n\n  if (code <= 0xFFFF) {\n    return String.fromCharCode(code);\n  }\n\n  cu1 = (code - 0x10000 >> 10) + 0xD800;\n  cu2 = (code - 0x10000 & 1023) + 0xDC00;\n  return String.fromCharCode(cu1, cu2);\n}\n\nfunction getEscapedIdentifier() {\n  var ch, id;\n  ch = source.charCodeAt(index++);\n  id = String.fromCharCode(ch); // '\\u' (U+005C, U+0075) denotes an escaped character.\n\n  if (ch === 0x5C) {\n    if (source.charCodeAt(index) !== 0x75) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n\n    ++index;\n    ch = scanHexEscape('u');\n\n    if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n\n    id = ch;\n  }\n\n  while (index < length) {\n    ch = source.charCodeAt(index);\n\n    if (!isIdentifierPart(ch)) {\n      break;\n    }\n\n    ++index;\n    id += String.fromCharCode(ch); // '\\u' (U+005C, U+0075) denotes an escaped character.\n\n    if (ch === 0x5C) {\n      id = id.substr(0, id.length - 1);\n\n      if (source.charCodeAt(index) !== 0x75) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n\n      ++index;\n      ch = scanHexEscape('u');\n\n      if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n\n      id += ch;\n    }\n  }\n\n  return id;\n}\n\nfunction getIdentifier() {\n  var start, ch;\n  start = index++;\n\n  while (index < length) {\n    ch = source.charCodeAt(index);\n\n    if (ch === 0x5C) {\n      // Blackslash (U+005C) marks Unicode escape sequence.\n      index = start;\n      return getEscapedIdentifier();\n    }\n\n    if (isIdentifierPart(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n\n  return source.slice(start, index);\n}\n\nfunction scanIdentifier() {\n  var start, id, type;\n  start = index; // Backslash (U+005C) starts an escaped character.\n\n  id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier(); // There is no keyword or literal with only one character.\n  // Thus, it must be an identifier.\n\n  if (id.length === 1) {\n    type = TokenIdentifier;\n  } else if (keywords.hasOwnProperty(id)) {\n    // eslint-disable-line no-prototype-builtins\n    type = TokenKeyword;\n  } else if (id === 'null') {\n    type = TokenNullLiteral;\n  } else if (id === 'true' || id === 'false') {\n    type = TokenBooleanLiteral;\n  } else {\n    type = TokenIdentifier;\n  }\n\n  return {\n    type: type,\n    value: id,\n    start: start,\n    end: index\n  };\n} // 7.7 Punctuators\n\n\nfunction scanPunctuator() {\n  var start = index,\n      code = source.charCodeAt(index),\n      code2,\n      ch1 = source[index],\n      ch2,\n      ch3,\n      ch4;\n\n  switch (code) {\n    // Check for most common single-character punctuators.\n    case 0x2E: // . dot\n\n    case 0x28: // ( open bracket\n\n    case 0x29: // ) close bracket\n\n    case 0x3B: // ; semicolon\n\n    case 0x2C: // , comma\n\n    case 0x7B: // { open curly brace\n\n    case 0x7D: // } close curly brace\n\n    case 0x5B: // [\n\n    case 0x5D: // ]\n\n    case 0x3A: // :\n\n    case 0x3F: // ?\n\n    case 0x7E:\n      // ~\n      ++index;\n      return {\n        type: TokenPunctuator,\n        value: String.fromCharCode(code),\n        start: start,\n        end: index\n      };\n\n    default:\n      code2 = source.charCodeAt(index + 1); // '=' (U+003D) marks an assignment or comparison operator.\n\n      if (code2 === 0x3D) {\n        switch (code) {\n          case 0x2B: // +\n\n          case 0x2D: // -\n\n          case 0x2F: // /\n\n          case 0x3C: // <\n\n          case 0x3E: // >\n\n          case 0x5E: // ^\n\n          case 0x7C: // |\n\n          case 0x25: // %\n\n          case 0x26: // &\n\n          case 0x2A:\n            // *\n            index += 2;\n            return {\n              type: TokenPunctuator,\n              value: String.fromCharCode(code) + String.fromCharCode(code2),\n              start: start,\n              end: index\n            };\n\n          case 0x21: // !\n\n          case 0x3D:\n            // =\n            index += 2; // !== and ===\n\n            if (source.charCodeAt(index) === 0x3D) {\n              ++index;\n            }\n\n            return {\n              type: TokenPunctuator,\n              value: source.slice(start, index),\n              start: start,\n              end: index\n            };\n        }\n      }\n\n  } // 4-character punctuator: >>>=\n\n\n  ch4 = source.substr(index, 4);\n\n  if (ch4 === '>>>=') {\n    index += 4;\n    return {\n      type: TokenPunctuator,\n      value: ch4,\n      start: start,\n      end: index\n    };\n  } // 3-character punctuators: === !== >>> <<= >>=\n\n\n  ch3 = ch4.substr(0, 3);\n\n  if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n    index += 3;\n    return {\n      type: TokenPunctuator,\n      value: ch3,\n      start: start,\n      end: index\n    };\n  } // Other 2-character punctuators: ++ -- << >> && ||\n\n\n  ch2 = ch3.substr(0, 2);\n\n  if (ch1 === ch2[1] && '+-<>&|'.indexOf(ch1) >= 0 || ch2 === '=>') {\n    index += 2;\n    return {\n      type: TokenPunctuator,\n      value: ch2,\n      start: start,\n      end: index\n    };\n  }\n\n  if (ch2 === '//') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  } // 1-character punctuators: < > = ! + - * % & | ^ /\n\n\n  if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n    ++index;\n    return {\n      type: TokenPunctuator,\n      value: ch1,\n      start: start,\n      end: index\n    };\n  }\n\n  throwError({}, MessageUnexpectedToken, ILLEGAL);\n} // 7.8.3 Numeric Literals\n\n\nfunction scanHexLiteral(start) {\n  let number = '';\n\n  while (index < length) {\n    if (!isHexDigit(source[index])) {\n      break;\n    }\n\n    number += source[index++];\n  }\n\n  if (number.length === 0) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt('0x' + number, 16),\n    start: start,\n    end: index\n  };\n}\n\nfunction scanOctalLiteral(start) {\n  let number = '0' + source[index++];\n\n  while (index < length) {\n    if (!isOctalDigit(source[index])) {\n      break;\n    }\n\n    number += source[index++];\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt(number, 8),\n    octal: true,\n    start: start,\n    end: index\n  };\n}\n\nfunction scanNumericLiteral() {\n  var number, start, ch;\n  ch = source[index];\n  assert(isDecimalDigit(ch.charCodeAt(0)) || ch === '.', 'Numeric literal must start with a decimal digit or a decimal point');\n  start = index;\n  number = '';\n\n  if (ch !== '.') {\n    number = source[index++];\n    ch = source[index]; // Hex number starts with '0x'.\n    // Octal number starts with '0'.\n\n    if (number === '0') {\n      if (ch === 'x' || ch === 'X') {\n        ++index;\n        return scanHexLiteral(start);\n      }\n\n      if (isOctalDigit(ch)) {\n        return scanOctalLiteral(start);\n      } // decimal number starts with '0' such as '09' is illegal.\n\n\n      if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n    }\n\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n\n    ch = source[index];\n  }\n\n  if (ch === '.') {\n    number += source[index++];\n\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n\n    ch = source[index];\n  }\n\n  if (ch === 'e' || ch === 'E') {\n    number += source[index++];\n    ch = source[index];\n\n    if (ch === '+' || ch === '-') {\n      number += source[index++];\n    }\n\n    if (isDecimalDigit(source.charCodeAt(index))) {\n      while (isDecimalDigit(source.charCodeAt(index))) {\n        number += source[index++];\n      }\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseFloat(number),\n    start: start,\n    end: index\n  };\n} // 7.8.4 String Literals\n\n\nfunction scanStringLiteral() {\n  var str = '',\n      quote,\n      start,\n      ch,\n      code,\n      octal = false;\n  quote = source[index];\n  assert(quote === '\\'' || quote === '\"', 'String literal must starts with a quote');\n  start = index;\n  ++index;\n\n  while (index < length) {\n    ch = source[index++];\n\n    if (ch === quote) {\n      quote = '';\n      break;\n    } else if (ch === '\\\\') {\n      ch = source[index++];\n\n      if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n        switch (ch) {\n          case 'u':\n          case 'x':\n            if (source[index] === '{') {\n              ++index;\n              str += scanUnicodeCodePointEscape();\n            } else {\n              str += scanHexEscape(ch);\n            }\n\n            break;\n\n          case 'n':\n            str += '\\n';\n            break;\n\n          case 'r':\n            str += '\\r';\n            break;\n\n          case 't':\n            str += '\\t';\n            break;\n\n          case 'b':\n            str += '\\b';\n            break;\n\n          case 'f':\n            str += '\\f';\n            break;\n\n          case 'v':\n            str += '\\x0B';\n            break;\n\n          default:\n            if (isOctalDigit(ch)) {\n              code = '01234567'.indexOf(ch); // \\0 is not octal escape sequence\n\n              if (code !== 0) {\n                octal = true;\n              }\n\n              if (index < length && isOctalDigit(source[index])) {\n                octal = true;\n                code = code * 8 + '01234567'.indexOf(source[index++]); // 3 digits are only allowed when string starts\n                // with 0, 1, 2, 3\n\n                if ('0123'.indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) {\n                  code = code * 8 + '01234567'.indexOf(source[index++]);\n                }\n              }\n\n              str += String.fromCharCode(code);\n            } else {\n              str += ch;\n            }\n\n            break;\n        }\n      } else {\n        if (ch === '\\r' && source[index] === '\\n') {\n          ++index;\n        }\n      }\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      break;\n    } else {\n      str += ch;\n    }\n  }\n\n  if (quote !== '') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenStringLiteral,\n    value: str,\n    octal: octal,\n    start: start,\n    end: index\n  };\n}\n\nfunction testRegExp(pattern, flags) {\n  let tmp = pattern;\n\n  if (flags.indexOf('u') >= 0) {\n    // Replace each astral symbol and every Unicode code point\n    // escape sequence with a single ASCII symbol to avoid throwing on\n    // regular expressions that are only valid in combination with the\n    // `/u` flag.\n    // Note: replacing with the ASCII symbol `x` might cause false\n    // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n    // perfectly valid pattern that is equivalent to `[a-b]`, but it\n    // would be replaced by `[x-b]` which throws an error.\n    tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, ($0, $1) => {\n      if (parseInt($1, 16) <= 0x10FFFF) {\n        return 'x';\n      }\n\n      throwError({}, MessageInvalidRegExp);\n    }).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n  } // First, detect invalid regular expressions.\n\n\n  try {\n    new RegExp(tmp);\n  } catch (e) {\n    throwError({}, MessageInvalidRegExp);\n  } // Return a regular expression object for this pattern-flag pair, or\n  // `null` in case the current environment doesn't support the flags it\n  // uses.\n\n\n  try {\n    return new RegExp(pattern, flags);\n  } catch (exception) {\n    return null;\n  }\n}\n\nfunction scanRegExpBody() {\n  var ch, str, classMarker, terminated, body;\n  ch = source[index];\n  assert(ch === '/', 'Regular expression literal must start with a slash');\n  str = source[index++];\n  classMarker = false;\n  terminated = false;\n\n  while (index < length) {\n    ch = source[index++];\n    str += ch;\n\n    if (ch === '\\\\') {\n      ch = source[index++]; // ECMA-262 7.8.5\n\n      if (isLineTerminator(ch.charCodeAt(0))) {\n        throwError({}, MessageUnterminatedRegExp);\n      }\n\n      str += ch;\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      throwError({}, MessageUnterminatedRegExp);\n    } else if (classMarker) {\n      if (ch === ']') {\n        classMarker = false;\n      }\n    } else {\n      if (ch === '/') {\n        terminated = true;\n        break;\n      } else if (ch === '[') {\n        classMarker = true;\n      }\n    }\n  }\n\n  if (!terminated) {\n    throwError({}, MessageUnterminatedRegExp);\n  } // Exclude leading and trailing slash.\n\n\n  body = str.substr(1, str.length - 2);\n  return {\n    value: body,\n    literal: str\n  };\n}\n\nfunction scanRegExpFlags() {\n  var ch, str, flags;\n  str = '';\n  flags = '';\n\n  while (index < length) {\n    ch = source[index];\n\n    if (!isIdentifierPart(ch.charCodeAt(0))) {\n      break;\n    }\n\n    ++index;\n\n    if (ch === '\\\\' && index < length) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    } else {\n      flags += ch;\n      str += ch;\n    }\n  }\n\n  if (flags.search(/[^gimuy]/g) >= 0) {\n    throwError({}, MessageInvalidRegExp, flags);\n  }\n\n  return {\n    value: flags,\n    literal: str\n  };\n}\n\nfunction scanRegExp() {\n  var start, body, flags, value;\n  lookahead = null;\n  skipComment();\n  start = index;\n  body = scanRegExpBody();\n  flags = scanRegExpFlags();\n  value = testRegExp(body.value, flags.value);\n  return {\n    literal: body.literal + flags.literal,\n    value: value,\n    regex: {\n      pattern: body.value,\n      flags: flags.value\n    },\n    start: start,\n    end: index\n  };\n}\n\nfunction isIdentifierName(token) {\n  return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral;\n}\n\nfunction advance() {\n  skipComment();\n\n  if (index >= length) {\n    return {\n      type: TokenEOF,\n      start: index,\n      end: index\n    };\n  }\n\n  const ch = source.charCodeAt(index);\n\n  if (isIdentifierStart(ch)) {\n    return scanIdentifier();\n  } // Very common: ( and ) and ;\n\n\n  if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n    return scanPunctuator();\n  } // String literal starts with single quote (U+0027) or double quote (U+0022).\n\n\n  if (ch === 0x27 || ch === 0x22) {\n    return scanStringLiteral();\n  } // Dot (.) U+002E can also start a floating-point number, hence the need\n  // to check the next character.\n\n\n  if (ch === 0x2E) {\n    if (isDecimalDigit(source.charCodeAt(index + 1))) {\n      return scanNumericLiteral();\n    }\n\n    return scanPunctuator();\n  }\n\n  if (isDecimalDigit(ch)) {\n    return scanNumericLiteral();\n  }\n\n  return scanPunctuator();\n}\n\nfunction lex() {\n  const token = lookahead;\n  index = token.end;\n  lookahead = advance();\n  index = token.end;\n  return token;\n}\n\nfunction peek() {\n  const pos = index;\n  lookahead = advance();\n  index = pos;\n}\n\nfunction finishArrayExpression(elements) {\n  const node = new ASTNode(SyntaxArrayExpression);\n  node.elements = elements;\n  return node;\n}\n\nfunction finishBinaryExpression(operator, left, right) {\n  const node = new ASTNode(operator === '||' || operator === '&&' ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n  node.operator = operator;\n  node.left = left;\n  node.right = right;\n  return node;\n}\n\nfunction finishCallExpression(callee, args) {\n  const node = new ASTNode(SyntaxCallExpression);\n  node.callee = callee;\n  node.arguments = args;\n  return node;\n}\n\nfunction finishConditionalExpression(test, consequent, alternate) {\n  const node = new ASTNode(SyntaxConditionalExpression);\n  node.test = test;\n  node.consequent = consequent;\n  node.alternate = alternate;\n  return node;\n}\n\nfunction finishIdentifier(name) {\n  const node = new ASTNode(SyntaxIdentifier);\n  node.name = name;\n  return node;\n}\n\nfunction finishLiteral(token) {\n  const node = new ASTNode(SyntaxLiteral);\n  node.value = token.value;\n  node.raw = source.slice(token.start, token.end);\n\n  if (token.regex) {\n    if (node.raw === '//') {\n      node.raw = '/(?:)/';\n    }\n\n    node.regex = token.regex;\n  }\n\n  return node;\n}\n\nfunction finishMemberExpression(accessor, object, property) {\n  const node = new ASTNode(SyntaxMemberExpression);\n  node.computed = accessor === '[';\n  node.object = object;\n  node.property = property;\n  if (!node.computed) property.member = true;\n  return node;\n}\n\nfunction finishObjectExpression(properties) {\n  const node = new ASTNode(SyntaxObjectExpression);\n  node.properties = properties;\n  return node;\n}\n\nfunction finishProperty(kind, key, value) {\n  const node = new ASTNode(SyntaxProperty);\n  node.key = key;\n  node.value = value;\n  node.kind = kind;\n  return node;\n}\n\nfunction finishUnaryExpression(operator, argument) {\n  const node = new ASTNode(SyntaxUnaryExpression);\n  node.operator = operator;\n  node.argument = argument;\n  node.prefix = true;\n  return node;\n} // Throw an exception\n\n\nfunction throwError(token, messageFormat) {\n  var error,\n      args = Array.prototype.slice.call(arguments, 2),\n      msg = messageFormat.replace(/%(\\d)/g, (whole, index) => {\n    assert(index < args.length, 'Message reference must be in range');\n    return args[index];\n  });\n  error = new Error(msg);\n  error.index = index;\n  error.description = msg;\n  throw error;\n} // Throw an exception because of the token.\n\n\nfunction throwUnexpected(token) {\n  if (token.type === TokenEOF) {\n    throwError(token, MessageUnexpectedEOS);\n  }\n\n  if (token.type === TokenNumericLiteral) {\n    throwError(token, MessageUnexpectedNumber);\n  }\n\n  if (token.type === TokenStringLiteral) {\n    throwError(token, MessageUnexpectedString);\n  }\n\n  if (token.type === TokenIdentifier) {\n    throwError(token, MessageUnexpectedIdentifier);\n  }\n\n  if (token.type === TokenKeyword) {\n    throwError(token, MessageUnexpectedReserved);\n  } // BooleanLiteral, NullLiteral, or Punctuator.\n\n\n  throwError(token, MessageUnexpectedToken, token.value);\n} // Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\n\nfunction expect(value) {\n  const token = lex();\n\n  if (token.type !== TokenPunctuator || token.value !== value) {\n    throwUnexpected(token);\n  }\n} // Return true if the next token matches the specified punctuator.\n\n\nfunction match(value) {\n  return lookahead.type === TokenPunctuator && lookahead.value === value;\n} // Return true if the next token matches the specified keyword\n\n\nfunction matchKeyword(keyword) {\n  return lookahead.type === TokenKeyword && lookahead.value === keyword;\n} // 11.1.4 Array Initialiser\n\n\nfunction parseArrayInitialiser() {\n  const elements = [];\n  index = lookahead.start;\n  expect('[');\n\n  while (!match(']')) {\n    if (match(',')) {\n      lex();\n      elements.push(null);\n    } else {\n      elements.push(parseConditionalExpression());\n\n      if (!match(']')) {\n        expect(',');\n      }\n    }\n  }\n\n  lex();\n  return finishArrayExpression(elements);\n} // 11.1.5 Object Initialiser\n\n\nfunction parseObjectPropertyKey() {\n  index = lookahead.start;\n  const token = lex(); // Note: This function is called only from parseObjectProperty(), where\n  // EOF and Punctuator tokens are already filtered out.\n\n  if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n    if (token.octal) {\n      throwError(token, MessageStrictOctalLiteral);\n    }\n\n    return finishLiteral(token);\n  }\n\n  return finishIdentifier(token.value);\n}\n\nfunction parseObjectProperty() {\n  var token, key, id, value;\n  index = lookahead.start;\n  token = lookahead;\n\n  if (token.type === TokenIdentifier) {\n    id = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', id, value);\n  }\n\n  if (token.type === TokenEOF || token.type === TokenPunctuator) {\n    throwUnexpected(token);\n  } else {\n    key = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', key, value);\n  }\n}\n\nfunction parseObjectInitialiser() {\n  var properties = [],\n      property,\n      name,\n      key,\n      map = {},\n      toString = String;\n  index = lookahead.start;\n  expect('{');\n\n  while (!match('}')) {\n    property = parseObjectProperty();\n\n    if (property.key.type === SyntaxIdentifier) {\n      name = property.key.name;\n    } else {\n      name = toString(property.key.value);\n    }\n\n    key = '$' + name;\n\n    if (Object.prototype.hasOwnProperty.call(map, key)) {\n      throwError({}, MessageStrictDuplicateProperty);\n    } else {\n      map[key] = true;\n    }\n\n    properties.push(property);\n\n    if (!match('}')) {\n      expect(',');\n    }\n  }\n\n  expect('}');\n  return finishObjectExpression(properties);\n} // 11.1.6 The Grouping Operator\n\n\nfunction parseGroupExpression() {\n  expect('(');\n  const expr = parseExpression();\n  expect(')');\n  return expr;\n} // 11.1 Primary Expressions\n\n\nconst legalKeywords = {\n  'if': 1\n};\n\nfunction parsePrimaryExpression() {\n  var type, token, expr;\n\n  if (match('(')) {\n    return parseGroupExpression();\n  }\n\n  if (match('[')) {\n    return parseArrayInitialiser();\n  }\n\n  if (match('{')) {\n    return parseObjectInitialiser();\n  }\n\n  type = lookahead.type;\n  index = lookahead.start;\n\n  if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n    expr = finishIdentifier(lex().value);\n  } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n    if (lookahead.octal) {\n      throwError(lookahead, MessageStrictOctalLiteral);\n    }\n\n    expr = finishLiteral(lex());\n  } else if (type === TokenKeyword) {\n    throw new Error(DISABLED);\n  } else if (type === TokenBooleanLiteral) {\n    token = lex();\n    token.value = token.value === 'true';\n    expr = finishLiteral(token);\n  } else if (type === TokenNullLiteral) {\n    token = lex();\n    token.value = null;\n    expr = finishLiteral(token);\n  } else if (match('/') || match('/=')) {\n    expr = finishLiteral(scanRegExp());\n    peek();\n  } else {\n    throwUnexpected(lex());\n  }\n\n  return expr;\n} // 11.2 Left-Hand-Side Expressions\n\n\nfunction parseArguments() {\n  const args = [];\n  expect('(');\n\n  if (!match(')')) {\n    while (index < length) {\n      args.push(parseConditionalExpression());\n\n      if (match(')')) {\n        break;\n      }\n\n      expect(',');\n    }\n  }\n\n  expect(')');\n  return args;\n}\n\nfunction parseNonComputedProperty() {\n  index = lookahead.start;\n  const token = lex();\n\n  if (!isIdentifierName(token)) {\n    throwUnexpected(token);\n  }\n\n  return finishIdentifier(token.value);\n}\n\nfunction parseNonComputedMember() {\n  expect('.');\n  return parseNonComputedProperty();\n}\n\nfunction parseComputedMember() {\n  expect('[');\n  const expr = parseExpression();\n  expect(']');\n  return expr;\n}\n\nfunction parseLeftHandSideExpressionAllowCall() {\n  var expr, args, property;\n  expr = parsePrimaryExpression();\n\n  for (;;) {\n    if (match('.')) {\n      property = parseNonComputedMember();\n      expr = finishMemberExpression('.', expr, property);\n    } else if (match('(')) {\n      args = parseArguments();\n      expr = finishCallExpression(expr, args);\n    } else if (match('[')) {\n      property = parseComputedMember();\n      expr = finishMemberExpression('[', expr, property);\n    } else {\n      break;\n    }\n  }\n\n  return expr;\n} // 11.3 Postfix Expressions\n\n\nfunction parsePostfixExpression() {\n  const expr = parseLeftHandSideExpressionAllowCall();\n\n  if (lookahead.type === TokenPunctuator) {\n    if (match('++') || match('--')) {\n      throw new Error(DISABLED);\n    }\n  }\n\n  return expr;\n} // 11.4 Unary Operators\n\n\nfunction parseUnaryExpression() {\n  var token, expr;\n\n  if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n    expr = parsePostfixExpression();\n  } else if (match('++') || match('--')) {\n    throw new Error(DISABLED);\n  } else if (match('+') || match('-') || match('~') || match('!')) {\n    token = lex();\n    expr = parseUnaryExpression();\n    expr = finishUnaryExpression(token.value, expr);\n  } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n    throw new Error(DISABLED);\n  } else {\n    expr = parsePostfixExpression();\n  }\n\n  return expr;\n}\n\nfunction binaryPrecedence(token) {\n  let prec = 0;\n\n  if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n    return 0;\n  }\n\n  switch (token.value) {\n    case '||':\n      prec = 1;\n      break;\n\n    case '&&':\n      prec = 2;\n      break;\n\n    case '|':\n      prec = 3;\n      break;\n\n    case '^':\n      prec = 4;\n      break;\n\n    case '&':\n      prec = 5;\n      break;\n\n    case '==':\n    case '!=':\n    case '===':\n    case '!==':\n      prec = 6;\n      break;\n\n    case '<':\n    case '>':\n    case '<=':\n    case '>=':\n    case 'instanceof':\n    case 'in':\n      prec = 7;\n      break;\n\n    case '<<':\n    case '>>':\n    case '>>>':\n      prec = 8;\n      break;\n\n    case '+':\n    case '-':\n      prec = 9;\n      break;\n\n    case '*':\n    case '/':\n    case '%':\n      prec = 11;\n      break;\n  }\n\n  return prec;\n} // 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\n\nfunction parseBinaryExpression() {\n  var marker, markers, expr, token, prec, stack, right, operator, left, i;\n  marker = lookahead;\n  left = parseUnaryExpression();\n  token = lookahead;\n  prec = binaryPrecedence(token);\n\n  if (prec === 0) {\n    return left;\n  }\n\n  token.prec = prec;\n  lex();\n  markers = [marker, lookahead];\n  right = parseUnaryExpression();\n  stack = [left, token, right];\n\n  while ((prec = binaryPrecedence(lookahead)) > 0) {\n    // Reduce: make a binary expression from the three topmost entries.\n    while (stack.length > 2 && prec <= stack[stack.length - 2].prec) {\n      right = stack.pop();\n      operator = stack.pop().value;\n      left = stack.pop();\n      markers.pop();\n      expr = finishBinaryExpression(operator, left, right);\n      stack.push(expr);\n    } // Shift.\n\n\n    token = lex();\n    token.prec = prec;\n    stack.push(token);\n    markers.push(lookahead);\n    expr = parseUnaryExpression();\n    stack.push(expr);\n  } // Final reduce to clean-up the stack.\n\n\n  i = stack.length - 1;\n  expr = stack[i];\n  markers.pop();\n\n  while (i > 1) {\n    markers.pop();\n    expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n    i -= 2;\n  }\n\n  return expr;\n} // 11.12 Conditional Operator\n\n\nfunction parseConditionalExpression() {\n  var expr, consequent, alternate;\n  expr = parseBinaryExpression();\n\n  if (match('?')) {\n    lex();\n    consequent = parseConditionalExpression();\n    expect(':');\n    alternate = parseConditionalExpression();\n    expr = finishConditionalExpression(expr, consequent, alternate);\n  }\n\n  return expr;\n} // 11.14 Comma Operator\n\n\nfunction parseExpression() {\n  const expr = parseConditionalExpression();\n\n  if (match(',')) {\n    throw new Error(DISABLED); // no sequence expressions\n  }\n\n  return expr;\n}\n\nfunction parser (code) {\n  source = code;\n  index = 0;\n  length = source.length;\n  lookahead = null;\n  peek();\n  const expr = parseExpression();\n\n  if (lookahead.type !== TokenEOF) {\n    throw new Error('Unexpect token after expression.');\n  }\n\n  return expr;\n}\n\nvar Constants = {\n  NaN: 'NaN',\n  E: 'Math.E',\n  LN2: 'Math.LN2',\n  LN10: 'Math.LN10',\n  LOG2E: 'Math.LOG2E',\n  LOG10E: 'Math.LOG10E',\n  PI: 'Math.PI',\n  SQRT1_2: 'Math.SQRT1_2',\n  SQRT2: 'Math.SQRT2',\n  MIN_VALUE: 'Number.MIN_VALUE',\n  MAX_VALUE: 'Number.MAX_VALUE'\n};\n\nfunction Functions (codegen) {\n  function fncall(name, args, cast, type) {\n    let obj = codegen(args[0]);\n\n    if (cast) {\n      obj = cast + '(' + obj + ')';\n      if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n    }\n\n    return obj + '.' + name + (type < 0 ? '' : type === 0 ? '()' : '(' + args.slice(1).map(codegen).join(',') + ')');\n  }\n\n  function fn(name, cast, type) {\n    return args => fncall(name, args, cast, type);\n  }\n\n  const DATE = 'new Date',\n        STRING = 'String',\n        REGEXP = 'RegExp';\n  return {\n    // MATH functions\n    isNaN: 'Number.isNaN',\n    isFinite: 'Number.isFinite',\n    abs: 'Math.abs',\n    acos: 'Math.acos',\n    asin: 'Math.asin',\n    atan: 'Math.atan',\n    atan2: 'Math.atan2',\n    ceil: 'Math.ceil',\n    cos: 'Math.cos',\n    exp: 'Math.exp',\n    floor: 'Math.floor',\n    log: 'Math.log',\n    max: 'Math.max',\n    min: 'Math.min',\n    pow: 'Math.pow',\n    random: 'Math.random',\n    round: 'Math.round',\n    sin: 'Math.sin',\n    sqrt: 'Math.sqrt',\n    tan: 'Math.tan',\n    clamp: function (args) {\n      if (args.length < 3) error('Missing arguments to clamp function.');\n      if (args.length > 3) error('Too many arguments to clamp function.');\n      const a = args.map(codegen);\n      return 'Math.max(' + a[1] + ', Math.min(' + a[2] + ',' + a[0] + '))';\n    },\n    // DATE functions\n    now: 'Date.now',\n    utc: 'Date.UTC',\n    datetime: DATE,\n    date: fn('getDate', DATE, 0),\n    day: fn('getDay', DATE, 0),\n    year: fn('getFullYear', DATE, 0),\n    month: fn('getMonth', DATE, 0),\n    hours: fn('getHours', DATE, 0),\n    minutes: fn('getMinutes', DATE, 0),\n    seconds: fn('getSeconds', DATE, 0),\n    milliseconds: fn('getMilliseconds', DATE, 0),\n    time: fn('getTime', DATE, 0),\n    timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n    utcdate: fn('getUTCDate', DATE, 0),\n    utcday: fn('getUTCDay', DATE, 0),\n    utcyear: fn('getUTCFullYear', DATE, 0),\n    utcmonth: fn('getUTCMonth', DATE, 0),\n    utchours: fn('getUTCHours', DATE, 0),\n    utcminutes: fn('getUTCMinutes', DATE, 0),\n    utcseconds: fn('getUTCSeconds', DATE, 0),\n    utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n    // sequence functions\n    length: fn('length', null, -1),\n    // STRING functions\n    parseFloat: 'parseFloat',\n    parseInt: 'parseInt',\n    upper: fn('toUpperCase', STRING, 0),\n    lower: fn('toLowerCase', STRING, 0),\n    substring: fn('substring', STRING),\n    split: fn('split', STRING),\n    trim: fn('trim', STRING, 0),\n    // REGEXP functions\n    regexp: REGEXP,\n    test: fn('test', REGEXP),\n    // Control Flow functions\n    if: function (args) {\n      if (args.length < 3) error('Missing arguments to if function.');\n      if (args.length > 3) error('Too many arguments to if function.');\n      const a = args.map(codegen);\n      return '(' + a[0] + '?' + a[1] + ':' + a[2] + ')';\n    }\n  };\n}\n\nfunction stripQuotes(s) {\n  const n = s && s.length - 1;\n  return n && (s[0] === '\"' && s[n] === '\"' || s[0] === '\\'' && s[n] === '\\'') ? s.slice(1, -1) : s;\n}\n\nfunction codegen (opt) {\n  opt = opt || {};\n  const allowed = opt.allowed ? toSet(opt.allowed) : {},\n        forbidden = opt.forbidden ? toSet(opt.forbidden) : {},\n        constants = opt.constants || Constants,\n        functions = (opt.functions || Functions)(visit),\n        globalvar = opt.globalvar,\n        fieldvar = opt.fieldvar,\n        outputGlobal = isFunction(globalvar) ? globalvar : id => `${globalvar}[\"${id}\"]`;\n  let globals = {},\n      fields = {},\n      memberDepth = 0;\n\n  function visit(ast) {\n    if (isString(ast)) return ast;\n    const generator = Generators[ast.type];\n    if (generator == null) error('Unsupported type: ' + ast.type);\n    return generator(ast);\n  }\n\n  const Generators = {\n    Literal: n => n.raw,\n    Identifier: n => {\n      const id = n.name;\n\n      if (memberDepth > 0) {\n        return id;\n      } else if (hasOwnProperty(forbidden, id)) {\n        return error('Illegal identifier: ' + id);\n      } else if (hasOwnProperty(constants, id)) {\n        return constants[id];\n      } else if (hasOwnProperty(allowed, id)) {\n        return id;\n      } else {\n        globals[id] = 1;\n        return outputGlobal(id);\n      }\n    },\n    MemberExpression: n => {\n      const d = !n.computed,\n            o = visit(n.object);\n      if (d) memberDepth += 1;\n      const p = visit(n.property);\n\n      if (o === fieldvar) {\n        // strip quotes to sanitize field name (#1653)\n        fields[stripQuotes(p)] = 1;\n      }\n\n      if (d) memberDepth -= 1;\n      return o + (d ? '.' + p : '[' + p + ']');\n    },\n    CallExpression: n => {\n      if (n.callee.type !== 'Identifier') {\n        error('Illegal callee type: ' + n.callee.type);\n      }\n\n      const callee = n.callee.name,\n            args = n.arguments,\n            fn = hasOwnProperty(functions, callee) && functions[callee];\n      if (!fn) error('Unrecognized function: ' + callee);\n      return isFunction(fn) ? fn(args) : fn + '(' + args.map(visit).join(',') + ')';\n    },\n    ArrayExpression: n => '[' + n.elements.map(visit).join(',') + ']',\n    BinaryExpression: n => '(' + visit(n.left) + ' ' + n.operator + ' ' + visit(n.right) + ')',\n    UnaryExpression: n => '(' + n.operator + visit(n.argument) + ')',\n    ConditionalExpression: n => '(' + visit(n.test) + '?' + visit(n.consequent) + ':' + visit(n.alternate) + ')',\n    LogicalExpression: n => '(' + visit(n.left) + n.operator + visit(n.right) + ')',\n    ObjectExpression: n => '{' + n.properties.map(visit).join(',') + '}',\n    Property: n => {\n      memberDepth += 1;\n      const k = visit(n.key);\n      memberDepth -= 1;\n      return k + ':' + visit(n.value);\n    }\n  };\n\n  function codegen(ast) {\n    const result = {\n      code: visit(ast),\n      globals: Object.keys(globals),\n      fields: Object.keys(fields)\n    };\n    globals = {};\n    fields = {};\n    return result;\n  }\n\n  codegen.functions = functions;\n  codegen.constants = constants;\n  return codegen;\n}\n\nexport { ASTNode, ArrayExpression, BinaryExpression, CallExpression, ConditionalExpression, Identifier, Literal, LogicalExpression, MemberExpression, ObjectExpression, Property, RawCode, UnaryExpression, codegen as codegenExpression, Constants as constants, Functions as functions, parser as parseExpression };\n","import {Adder} from \"d3-array\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = new Adder();\n\n// hello?\n\nvar areaSum = new Adder(),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nexport var areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaRingSum = new Adder();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = noop;\n  },\n  sphere: function() {\n    areaSum.add(tau);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = cos(phi),\n      sinPhi = sin(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * cos(adLambda),\n      v = k * sdLambda * sin(adLambda);\n  areaRingSum.add(atan2(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n  areaSum = new Adder();\n  stream(object, areaStream);\n  return areaSum * 2;\n}\n","import {Adder} from \"d3-array\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum,\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum = new Adder();\n    areaStream.polygonStart();\n  },\n  polygonEnd: function() {\n    areaStream.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > epsilon) phi1 = 90;\n    else if (deltaSum < -epsilon) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  },\n  sphere: function() {\n    lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = cartesian([lambda * radians, phi * radians]);\n  if (p0) {\n    var normal = cartesianCross(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = cartesianCross(equatorial, normal);\n    cartesianNormalizeInPlace(inflection);\n    inflection = spherical(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * degrees * sign,\n        phii,\n        antimeridian = abs(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * degrees;\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * degrees;\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  areaStream.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  areaStream.lineEnd();\n  if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  stream(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {Adder} from \"d3-array\";\nimport {asin, atan2, cos, degrees, epsilon, epsilon2, hypot, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n    X0, Y0, Z0,\n    X1, Y1, Z1,\n    X2, Y2, Z2,\n    lambda00, phi00, // first point\n    x0, y0, z0; // previous point\n\nvar centroidStream = {\n  sphere: noop,\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00, phi00);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = hypot(cx, cy, cz),\n      w = asin(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2.add(v * cx);\n  Y2.add(v * cy);\n  Z2.add(v * cz);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 = 0;\n  X2 = new Adder();\n  Y2 = new Adder();\n  Z2 = new Adder();\n  stream(object, centroidStream);\n\n  var x = +X2,\n      y = +Y2,\n      z = +Z2,\n      m = hypot(x, y, z);\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m < epsilon2) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n    m = hypot(x, y, z);\n    // If the feature still has an undefined ccentroid, then return.\n    if (m < epsilon2) return [NaN, NaN];\n  }\n\n  return [atan2(y, x) * degrees, asin(z / m) * degrees];\n}\n","import { error, toSet, isFunction, isString, hasOwnProperty } from 'vega-util';\n\nconst RawCode = 'RawCode';\nconst Literal = 'Literal';\nconst Property = 'Property';\nconst Identifier = 'Identifier';\nconst ArrayExpression = 'ArrayExpression';\nconst BinaryExpression = 'BinaryExpression';\nconst CallExpression = 'CallExpression';\nconst ConditionalExpression = 'ConditionalExpression';\nconst LogicalExpression = 'LogicalExpression';\nconst MemberExpression = 'MemberExpression';\nconst ObjectExpression = 'ObjectExpression';\nconst UnaryExpression = 'UnaryExpression';\nfunction ASTNode(type) {\n  this.type = type;\n}\n\nASTNode.prototype.visit = function (visitor) {\n  let c, i, n;\n  if (visitor(this)) return 1;\n\n  for (c = children(this), i = 0, n = c.length; i < n; ++i) {\n    if (c[i].visit(visitor)) return 1;\n  }\n};\n\nfunction children(node) {\n  switch (node.type) {\n    case ArrayExpression:\n      return node.elements;\n\n    case BinaryExpression:\n    case LogicalExpression:\n      return [node.left, node.right];\n\n    case CallExpression:\n      return [node.callee].concat(node.arguments);\n\n    case ConditionalExpression:\n      return [node.test, node.consequent, node.alternate];\n\n    case MemberExpression:\n      return [node.object, node.property];\n\n    case ObjectExpression:\n      return node.properties;\n\n    case Property:\n      return [node.key, node.value];\n\n    case UnaryExpression:\n      return [node.argument];\n\n    case Identifier:\n    case Literal:\n    case RawCode:\n    default:\n      return [];\n  }\n}\n\n/*\n  The following expression parser is based on Esprima (http://esprima.org/).\n  Original header comment and license for Esprima is included here:\n\n  Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>\n  Copyright (C) 2013 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>\n  Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>\n  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>\n  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>\n  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar TokenName, source, index, length, lookahead;\nvar TokenBooleanLiteral = 1,\n    TokenEOF = 2,\n    TokenIdentifier = 3,\n    TokenKeyword = 4,\n    TokenNullLiteral = 5,\n    TokenNumericLiteral = 6,\n    TokenPunctuator = 7,\n    TokenStringLiteral = 8,\n    TokenRegularExpression = 9;\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '<end>';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\nvar SyntaxArrayExpression = 'ArrayExpression',\n    SyntaxBinaryExpression = 'BinaryExpression',\n    SyntaxCallExpression = 'CallExpression',\n    SyntaxConditionalExpression = 'ConditionalExpression',\n    SyntaxIdentifier = 'Identifier',\n    SyntaxLiteral = 'Literal',\n    SyntaxLogicalExpression = 'LogicalExpression',\n    SyntaxMemberExpression = 'MemberExpression',\n    SyntaxObjectExpression = 'ObjectExpression',\n    SyntaxProperty = 'Property',\n    SyntaxUnaryExpression = 'UnaryExpression'; // Error messages should be identical to V8.\n\nvar MessageUnexpectedToken = 'Unexpected token %0',\n    MessageUnexpectedNumber = 'Unexpected number',\n    MessageUnexpectedString = 'Unexpected string',\n    MessageUnexpectedIdentifier = 'Unexpected identifier',\n    MessageUnexpectedReserved = 'Unexpected reserved word',\n    MessageUnexpectedEOS = 'Unexpected end of input',\n    MessageInvalidRegExp = 'Invalid regular expression',\n    MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n    MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n    MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\nvar ILLEGAL = 'ILLEGAL',\n    DISABLED = 'Disabled.'; // See also tools/generate-unicode-regex.py.\n\nvar RegexNonAsciiIdentifierStart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'),\n    // eslint-disable-next-line no-misleading-character-class\nRegexNonAsciiIdentifierPart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'); // Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n  /* istanbul ignore next */\n  if (!condition) {\n    throw new Error('ASSERT: ' + message);\n  }\n}\n\nfunction isDecimalDigit(ch) {\n  return ch >= 0x30 && ch <= 0x39; // 0..9\n}\n\nfunction isHexDigit(ch) {\n  return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\n\nfunction isOctalDigit(ch) {\n  return '01234567'.indexOf(ch) >= 0;\n} // 7.2 White Space\n\n\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0;\n} // 7.3 Line Terminators\n\n\nfunction isLineTerminator(ch) {\n  return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n} // 7.6 Identifier Names and Identifiers\n\n\nfunction isIdentifierStart(ch) {\n  return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch));\n}\n\nfunction isIdentifierPart(ch) {\n  return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch >= 0x30 && ch <= 0x39 || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch));\n} // 7.6.1.1 Keywords\n\n\nconst keywords = {\n  'if': 1,\n  'in': 1,\n  'do': 1,\n  'var': 1,\n  'for': 1,\n  'new': 1,\n  'try': 1,\n  'let': 1,\n  'this': 1,\n  'else': 1,\n  'case': 1,\n  'void': 1,\n  'with': 1,\n  'enum': 1,\n  'while': 1,\n  'break': 1,\n  'catch': 1,\n  'throw': 1,\n  'const': 1,\n  'yield': 1,\n  'class': 1,\n  'super': 1,\n  'return': 1,\n  'typeof': 1,\n  'delete': 1,\n  'switch': 1,\n  'export': 1,\n  'import': 1,\n  'public': 1,\n  'static': 1,\n  'default': 1,\n  'finally': 1,\n  'extends': 1,\n  'package': 1,\n  'private': 1,\n  'function': 1,\n  'continue': 1,\n  'debugger': 1,\n  'interface': 1,\n  'protected': 1,\n  'instanceof': 1,\n  'implements': 1\n};\n\nfunction skipComment() {\n  while (index < length) {\n    const ch = source.charCodeAt(index);\n\n    if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n}\n\nfunction scanHexEscape(prefix) {\n  var i,\n      len,\n      ch,\n      code = 0;\n  len = prefix === 'u' ? 4 : 2;\n\n  for (i = 0; i < len; ++i) {\n    if (index < length && isHexDigit(source[index])) {\n      ch = source[index++];\n      code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n\n  return String.fromCharCode(code);\n}\n\nfunction scanUnicodeCodePointEscape() {\n  var ch, code, cu1, cu2;\n  ch = source[index];\n  code = 0; // At least, one hex digit is required.\n\n  if (ch === '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  while (index < length) {\n    ch = source[index++];\n\n    if (!isHexDigit(ch)) {\n      break;\n    }\n\n    code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n  }\n\n  if (code > 0x10FFFF || ch !== '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  } // UTF-16 Encoding\n\n\n  if (code <= 0xFFFF) {\n    return String.fromCharCode(code);\n  }\n\n  cu1 = (code - 0x10000 >> 10) + 0xD800;\n  cu2 = (code - 0x10000 & 1023) + 0xDC00;\n  return String.fromCharCode(cu1, cu2);\n}\n\nfunction getEscapedIdentifier() {\n  var ch, id;\n  ch = source.charCodeAt(index++);\n  id = String.fromCharCode(ch); // '\\u' (U+005C, U+0075) denotes an escaped character.\n\n  if (ch === 0x5C) {\n    if (source.charCodeAt(index) !== 0x75) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n\n    ++index;\n    ch = scanHexEscape('u');\n\n    if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n\n    id = ch;\n  }\n\n  while (index < length) {\n    ch = source.charCodeAt(index);\n\n    if (!isIdentifierPart(ch)) {\n      break;\n    }\n\n    ++index;\n    id += String.fromCharCode(ch); // '\\u' (U+005C, U+0075) denotes an escaped character.\n\n    if (ch === 0x5C) {\n      id = id.substr(0, id.length - 1);\n\n      if (source.charCodeAt(index) !== 0x75) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n\n      ++index;\n      ch = scanHexEscape('u');\n\n      if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n\n      id += ch;\n    }\n  }\n\n  return id;\n}\n\nfunction getIdentifier() {\n  var start, ch;\n  start = index++;\n\n  while (index < length) {\n    ch = source.charCodeAt(index);\n\n    if (ch === 0x5C) {\n      // Blackslash (U+005C) marks Unicode escape sequence.\n      index = start;\n      return getEscapedIdentifier();\n    }\n\n    if (isIdentifierPart(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n\n  return source.slice(start, index);\n}\n\nfunction scanIdentifier() {\n  var start, id, type;\n  start = index; // Backslash (U+005C) starts an escaped character.\n\n  id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier(); // There is no keyword or literal with only one character.\n  // Thus, it must be an identifier.\n\n  if (id.length === 1) {\n    type = TokenIdentifier;\n  } else if (keywords.hasOwnProperty(id)) {\n    // eslint-disable-line no-prototype-builtins\n    type = TokenKeyword;\n  } else if (id === 'null') {\n    type = TokenNullLiteral;\n  } else if (id === 'true' || id === 'false') {\n    type = TokenBooleanLiteral;\n  } else {\n    type = TokenIdentifier;\n  }\n\n  return {\n    type: type,\n    value: id,\n    start: start,\n    end: index\n  };\n} // 7.7 Punctuators\n\n\nfunction scanPunctuator() {\n  var start = index,\n      code = source.charCodeAt(index),\n      code2,\n      ch1 = source[index],\n      ch2,\n      ch3,\n      ch4;\n\n  switch (code) {\n    // Check for most common single-character punctuators.\n    case 0x2E: // . dot\n\n    case 0x28: // ( open bracket\n\n    case 0x29: // ) close bracket\n\n    case 0x3B: // ; semicolon\n\n    case 0x2C: // , comma\n\n    case 0x7B: // { open curly brace\n\n    case 0x7D: // } close curly brace\n\n    case 0x5B: // [\n\n    case 0x5D: // ]\n\n    case 0x3A: // :\n\n    case 0x3F: // ?\n\n    case 0x7E:\n      // ~\n      ++index;\n      return {\n        type: TokenPunctuator,\n        value: String.fromCharCode(code),\n        start: start,\n        end: index\n      };\n\n    default:\n      code2 = source.charCodeAt(index + 1); // '=' (U+003D) marks an assignment or comparison operator.\n\n      if (code2 === 0x3D) {\n        switch (code) {\n          case 0x2B: // +\n\n          case 0x2D: // -\n\n          case 0x2F: // /\n\n          case 0x3C: // <\n\n          case 0x3E: // >\n\n          case 0x5E: // ^\n\n          case 0x7C: // |\n\n          case 0x25: // %\n\n          case 0x26: // &\n\n          case 0x2A:\n            // *\n            index += 2;\n            return {\n              type: TokenPunctuator,\n              value: String.fromCharCode(code) + String.fromCharCode(code2),\n              start: start,\n              end: index\n            };\n\n          case 0x21: // !\n\n          case 0x3D:\n            // =\n            index += 2; // !== and ===\n\n            if (source.charCodeAt(index) === 0x3D) {\n              ++index;\n            }\n\n            return {\n              type: TokenPunctuator,\n              value: source.slice(start, index),\n              start: start,\n              end: index\n            };\n        }\n      }\n\n  } // 4-character punctuator: >>>=\n\n\n  ch4 = source.substr(index, 4);\n\n  if (ch4 === '>>>=') {\n    index += 4;\n    return {\n      type: TokenPunctuator,\n      value: ch4,\n      start: start,\n      end: index\n    };\n  } // 3-character punctuators: === !== >>> <<= >>=\n\n\n  ch3 = ch4.substr(0, 3);\n\n  if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n    index += 3;\n    return {\n      type: TokenPunctuator,\n      value: ch3,\n      start: start,\n      end: index\n    };\n  } // Other 2-character punctuators: ++ -- << >> && ||\n\n\n  ch2 = ch3.substr(0, 2);\n\n  if (ch1 === ch2[1] && '+-<>&|'.indexOf(ch1) >= 0 || ch2 === '=>') {\n    index += 2;\n    return {\n      type: TokenPunctuator,\n      value: ch2,\n      start: start,\n      end: index\n    };\n  }\n\n  if (ch2 === '//') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  } // 1-character punctuators: < > = ! + - * % & | ^ /\n\n\n  if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n    ++index;\n    return {\n      type: TokenPunctuator,\n      value: ch1,\n      start: start,\n      end: index\n    };\n  }\n\n  throwError({}, MessageUnexpectedToken, ILLEGAL);\n} // 7.8.3 Numeric Literals\n\n\nfunction scanHexLiteral(start) {\n  let number = '';\n\n  while (index < length) {\n    if (!isHexDigit(source[index])) {\n      break;\n    }\n\n    number += source[index++];\n  }\n\n  if (number.length === 0) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt('0x' + number, 16),\n    start: start,\n    end: index\n  };\n}\n\nfunction scanOctalLiteral(start) {\n  let number = '0' + source[index++];\n\n  while (index < length) {\n    if (!isOctalDigit(source[index])) {\n      break;\n    }\n\n    number += source[index++];\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt(number, 8),\n    octal: true,\n    start: start,\n    end: index\n  };\n}\n\nfunction scanNumericLiteral() {\n  var number, start, ch;\n  ch = source[index];\n  assert(isDecimalDigit(ch.charCodeAt(0)) || ch === '.', 'Numeric literal must start with a decimal digit or a decimal point');\n  start = index;\n  number = '';\n\n  if (ch !== '.') {\n    number = source[index++];\n    ch = source[index]; // Hex number starts with '0x'.\n    // Octal number starts with '0'.\n\n    if (number === '0') {\n      if (ch === 'x' || ch === 'X') {\n        ++index;\n        return scanHexLiteral(start);\n      }\n\n      if (isOctalDigit(ch)) {\n        return scanOctalLiteral(start);\n      } // decimal number starts with '0' such as '09' is illegal.\n\n\n      if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n    }\n\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n\n    ch = source[index];\n  }\n\n  if (ch === '.') {\n    number += source[index++];\n\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n\n    ch = source[index];\n  }\n\n  if (ch === 'e' || ch === 'E') {\n    number += source[index++];\n    ch = source[index];\n\n    if (ch === '+' || ch === '-') {\n      number += source[index++];\n    }\n\n    if (isDecimalDigit(source.charCodeAt(index))) {\n      while (isDecimalDigit(source.charCodeAt(index))) {\n        number += source[index++];\n      }\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseFloat(number),\n    start: start,\n    end: index\n  };\n} // 7.8.4 String Literals\n\n\nfunction scanStringLiteral() {\n  var str = '',\n      quote,\n      start,\n      ch,\n      code,\n      octal = false;\n  quote = source[index];\n  assert(quote === '\\'' || quote === '\"', 'String literal must starts with a quote');\n  start = index;\n  ++index;\n\n  while (index < length) {\n    ch = source[index++];\n\n    if (ch === quote) {\n      quote = '';\n      break;\n    } else if (ch === '\\\\') {\n      ch = source[index++];\n\n      if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n        switch (ch) {\n          case 'u':\n          case 'x':\n            if (source[index] === '{') {\n              ++index;\n              str += scanUnicodeCodePointEscape();\n            } else {\n              str += scanHexEscape(ch);\n            }\n\n            break;\n\n          case 'n':\n            str += '\\n';\n            break;\n\n          case 'r':\n            str += '\\r';\n            break;\n\n          case 't':\n            str += '\\t';\n            break;\n\n          case 'b':\n            str += '\\b';\n            break;\n\n          case 'f':\n            str += '\\f';\n            break;\n\n          case 'v':\n            str += '\\x0B';\n            break;\n\n          default:\n            if (isOctalDigit(ch)) {\n              code = '01234567'.indexOf(ch); // \\0 is not octal escape sequence\n\n              if (code !== 0) {\n                octal = true;\n              }\n\n              if (index < length && isOctalDigit(source[index])) {\n                octal = true;\n                code = code * 8 + '01234567'.indexOf(source[index++]); // 3 digits are only allowed when string starts\n                // with 0, 1, 2, 3\n\n                if ('0123'.indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) {\n                  code = code * 8 + '01234567'.indexOf(source[index++]);\n                }\n              }\n\n              str += String.fromCharCode(code);\n            } else {\n              str += ch;\n            }\n\n            break;\n        }\n      } else {\n        if (ch === '\\r' && source[index] === '\\n') {\n          ++index;\n        }\n      }\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      break;\n    } else {\n      str += ch;\n    }\n  }\n\n  if (quote !== '') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenStringLiteral,\n    value: str,\n    octal: octal,\n    start: start,\n    end: index\n  };\n}\n\nfunction testRegExp(pattern, flags) {\n  let tmp = pattern;\n\n  if (flags.indexOf('u') >= 0) {\n    // Replace each astral symbol and every Unicode code point\n    // escape sequence with a single ASCII symbol to avoid throwing on\n    // regular expressions that are only valid in combination with the\n    // `/u` flag.\n    // Note: replacing with the ASCII symbol `x` might cause false\n    // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n    // perfectly valid pattern that is equivalent to `[a-b]`, but it\n    // would be replaced by `[x-b]` which throws an error.\n    tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, ($0, $1) => {\n      if (parseInt($1, 16) <= 0x10FFFF) {\n        return 'x';\n      }\n\n      throwError({}, MessageInvalidRegExp);\n    }).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n  } // First, detect invalid regular expressions.\n\n\n  try {\n    new RegExp(tmp);\n  } catch (e) {\n    throwError({}, MessageInvalidRegExp);\n  } // Return a regular expression object for this pattern-flag pair, or\n  // `null` in case the current environment doesn't support the flags it\n  // uses.\n\n\n  try {\n    return new RegExp(pattern, flags);\n  } catch (exception) {\n    return null;\n  }\n}\n\nfunction scanRegExpBody() {\n  var ch, str, classMarker, terminated, body;\n  ch = source[index];\n  assert(ch === '/', 'Regular expression literal must start with a slash');\n  str = source[index++];\n  classMarker = false;\n  terminated = false;\n\n  while (index < length) {\n    ch = source[index++];\n    str += ch;\n\n    if (ch === '\\\\') {\n      ch = source[index++]; // ECMA-262 7.8.5\n\n      if (isLineTerminator(ch.charCodeAt(0))) {\n        throwError({}, MessageUnterminatedRegExp);\n      }\n\n      str += ch;\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      throwError({}, MessageUnterminatedRegExp);\n    } else if (classMarker) {\n      if (ch === ']') {\n        classMarker = false;\n      }\n    } else {\n      if (ch === '/') {\n        terminated = true;\n        break;\n      } else if (ch === '[') {\n        classMarker = true;\n      }\n    }\n  }\n\n  if (!terminated) {\n    throwError({}, MessageUnterminatedRegExp);\n  } // Exclude leading and trailing slash.\n\n\n  body = str.substr(1, str.length - 2);\n  return {\n    value: body,\n    literal: str\n  };\n}\n\nfunction scanRegExpFlags() {\n  var ch, str, flags;\n  str = '';\n  flags = '';\n\n  while (index < length) {\n    ch = source[index];\n\n    if (!isIdentifierPart(ch.charCodeAt(0))) {\n      break;\n    }\n\n    ++index;\n\n    if (ch === '\\\\' && index < length) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    } else {\n      flags += ch;\n      str += ch;\n    }\n  }\n\n  if (flags.search(/[^gimuy]/g) >= 0) {\n    throwError({}, MessageInvalidRegExp, flags);\n  }\n\n  return {\n    value: flags,\n    literal: str\n  };\n}\n\nfunction scanRegExp() {\n  var start, body, flags, value;\n  lookahead = null;\n  skipComment();\n  start = index;\n  body = scanRegExpBody();\n  flags = scanRegExpFlags();\n  value = testRegExp(body.value, flags.value);\n  return {\n    literal: body.literal + flags.literal,\n    value: value,\n    regex: {\n      pattern: body.value,\n      flags: flags.value\n    },\n    start: start,\n    end: index\n  };\n}\n\nfunction isIdentifierName(token) {\n  return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral;\n}\n\nfunction advance() {\n  skipComment();\n\n  if (index >= length) {\n    return {\n      type: TokenEOF,\n      start: index,\n      end: index\n    };\n  }\n\n  const ch = source.charCodeAt(index);\n\n  if (isIdentifierStart(ch)) {\n    return scanIdentifier();\n  } // Very common: ( and ) and ;\n\n\n  if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n    return scanPunctuator();\n  } // String literal starts with single quote (U+0027) or double quote (U+0022).\n\n\n  if (ch === 0x27 || ch === 0x22) {\n    return scanStringLiteral();\n  } // Dot (.) U+002E can also start a floating-point number, hence the need\n  // to check the next character.\n\n\n  if (ch === 0x2E) {\n    if (isDecimalDigit(source.charCodeAt(index + 1))) {\n      return scanNumericLiteral();\n    }\n\n    return scanPunctuator();\n  }\n\n  if (isDecimalDigit(ch)) {\n    return scanNumericLiteral();\n  }\n\n  return scanPunctuator();\n}\n\nfunction lex() {\n  const token = lookahead;\n  index = token.end;\n  lookahead = advance();\n  index = token.end;\n  return token;\n}\n\nfunction peek() {\n  const pos = index;\n  lookahead = advance();\n  index = pos;\n}\n\nfunction finishArrayExpression(elements) {\n  const node = new ASTNode(SyntaxArrayExpression);\n  node.elements = elements;\n  return node;\n}\n\nfunction finishBinaryExpression(operator, left, right) {\n  const node = new ASTNode(operator === '||' || operator === '&&' ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n  node.operator = operator;\n  node.left = left;\n  node.right = right;\n  return node;\n}\n\nfunction finishCallExpression(callee, args) {\n  const node = new ASTNode(SyntaxCallExpression);\n  node.callee = callee;\n  node.arguments = args;\n  return node;\n}\n\nfunction finishConditionalExpression(test, consequent, alternate) {\n  const node = new ASTNode(SyntaxConditionalExpression);\n  node.test = test;\n  node.consequent = consequent;\n  node.alternate = alternate;\n  return node;\n}\n\nfunction finishIdentifier(name) {\n  const node = new ASTNode(SyntaxIdentifier);\n  node.name = name;\n  return node;\n}\n\nfunction finishLiteral(token) {\n  const node = new ASTNode(SyntaxLiteral);\n  node.value = token.value;\n  node.raw = source.slice(token.start, token.end);\n\n  if (token.regex) {\n    if (node.raw === '//') {\n      node.raw = '/(?:)/';\n    }\n\n    node.regex = token.regex;\n  }\n\n  return node;\n}\n\nfunction finishMemberExpression(accessor, object, property) {\n  const node = new ASTNode(SyntaxMemberExpression);\n  node.computed = accessor === '[';\n  node.object = object;\n  node.property = property;\n  if (!node.computed) property.member = true;\n  return node;\n}\n\nfunction finishObjectExpression(properties) {\n  const node = new ASTNode(SyntaxObjectExpression);\n  node.properties = properties;\n  return node;\n}\n\nfunction finishProperty(kind, key, value) {\n  const node = new ASTNode(SyntaxProperty);\n  node.key = key;\n  node.value = value;\n  node.kind = kind;\n  return node;\n}\n\nfunction finishUnaryExpression(operator, argument) {\n  const node = new ASTNode(SyntaxUnaryExpression);\n  node.operator = operator;\n  node.argument = argument;\n  node.prefix = true;\n  return node;\n} // Throw an exception\n\n\nfunction throwError(token, messageFormat) {\n  var error,\n      args = Array.prototype.slice.call(arguments, 2),\n      msg = messageFormat.replace(/%(\\d)/g, (whole, index) => {\n    assert(index < args.length, 'Message reference must be in range');\n    return args[index];\n  });\n  error = new Error(msg);\n  error.index = index;\n  error.description = msg;\n  throw error;\n} // Throw an exception because of the token.\n\n\nfunction throwUnexpected(token) {\n  if (token.type === TokenEOF) {\n    throwError(token, MessageUnexpectedEOS);\n  }\n\n  if (token.type === TokenNumericLiteral) {\n    throwError(token, MessageUnexpectedNumber);\n  }\n\n  if (token.type === TokenStringLiteral) {\n    throwError(token, MessageUnexpectedString);\n  }\n\n  if (token.type === TokenIdentifier) {\n    throwError(token, MessageUnexpectedIdentifier);\n  }\n\n  if (token.type === TokenKeyword) {\n    throwError(token, MessageUnexpectedReserved);\n  } // BooleanLiteral, NullLiteral, or Punctuator.\n\n\n  throwError(token, MessageUnexpectedToken, token.value);\n} // Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\n\nfunction expect(value) {\n  const token = lex();\n\n  if (token.type !== TokenPunctuator || token.value !== value) {\n    throwUnexpected(token);\n  }\n} // Return true if the next token matches the specified punctuator.\n\n\nfunction match(value) {\n  return lookahead.type === TokenPunctuator && lookahead.value === value;\n} // Return true if the next token matches the specified keyword\n\n\nfunction matchKeyword(keyword) {\n  return lookahead.type === TokenKeyword && lookahead.value === keyword;\n} // 11.1.4 Array Initialiser\n\n\nfunction parseArrayInitialiser() {\n  const elements = [];\n  index = lookahead.start;\n  expect('[');\n\n  while (!match(']')) {\n    if (match(',')) {\n      lex();\n      elements.push(null);\n    } else {\n      elements.push(parseConditionalExpression());\n\n      if (!match(']')) {\n        expect(',');\n      }\n    }\n  }\n\n  lex();\n  return finishArrayExpression(elements);\n} // 11.1.5 Object Initialiser\n\n\nfunction parseObjectPropertyKey() {\n  index = lookahead.start;\n  const token = lex(); // Note: This function is called only from parseObjectProperty(), where\n  // EOF and Punctuator tokens are already filtered out.\n\n  if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n    if (token.octal) {\n      throwError(token, MessageStrictOctalLiteral);\n    }\n\n    return finishLiteral(token);\n  }\n\n  return finishIdentifier(token.value);\n}\n\nfunction parseObjectProperty() {\n  var token, key, id, value;\n  index = lookahead.start;\n  token = lookahead;\n\n  if (token.type === TokenIdentifier) {\n    id = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', id, value);\n  }\n\n  if (token.type === TokenEOF || token.type === TokenPunctuator) {\n    throwUnexpected(token);\n  } else {\n    key = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', key, value);\n  }\n}\n\nfunction parseObjectInitialiser() {\n  var properties = [],\n      property,\n      name,\n      key,\n      map = {},\n      toString = String;\n  index = lookahead.start;\n  expect('{');\n\n  while (!match('}')) {\n    property = parseObjectProperty();\n\n    if (property.key.type === SyntaxIdentifier) {\n      name = property.key.name;\n    } else {\n      name = toString(property.key.value);\n    }\n\n    key = '$' + name;\n\n    if (Object.prototype.hasOwnProperty.call(map, key)) {\n      throwError({}, MessageStrictDuplicateProperty);\n    } else {\n      map[key] = true;\n    }\n\n    properties.push(property);\n\n    if (!match('}')) {\n      expect(',');\n    }\n  }\n\n  expect('}');\n  return finishObjectExpression(properties);\n} // 11.1.6 The Grouping Operator\n\n\nfunction parseGroupExpression() {\n  expect('(');\n  const expr = parseExpression();\n  expect(')');\n  return expr;\n} // 11.1 Primary Expressions\n\n\nconst legalKeywords = {\n  'if': 1\n};\n\nfunction parsePrimaryExpression() {\n  var type, token, expr;\n\n  if (match('(')) {\n    return parseGroupExpression();\n  }\n\n  if (match('[')) {\n    return parseArrayInitialiser();\n  }\n\n  if (match('{')) {\n    return parseObjectInitialiser();\n  }\n\n  type = lookahead.type;\n  index = lookahead.start;\n\n  if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n    expr = finishIdentifier(lex().value);\n  } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n    if (lookahead.octal) {\n      throwError(lookahead, MessageStrictOctalLiteral);\n    }\n\n    expr = finishLiteral(lex());\n  } else if (type === TokenKeyword) {\n    throw new Error(DISABLED);\n  } else if (type === TokenBooleanLiteral) {\n    token = lex();\n    token.value = token.value === 'true';\n    expr = finishLiteral(token);\n  } else if (type === TokenNullLiteral) {\n    token = lex();\n    token.value = null;\n    expr = finishLiteral(token);\n  } else if (match('/') || match('/=')) {\n    expr = finishLiteral(scanRegExp());\n    peek();\n  } else {\n    throwUnexpected(lex());\n  }\n\n  return expr;\n} // 11.2 Left-Hand-Side Expressions\n\n\nfunction parseArguments() {\n  const args = [];\n  expect('(');\n\n  if (!match(')')) {\n    while (index < length) {\n      args.push(parseConditionalExpression());\n\n      if (match(')')) {\n        break;\n      }\n\n      expect(',');\n    }\n  }\n\n  expect(')');\n  return args;\n}\n\nfunction parseNonComputedProperty() {\n  index = lookahead.start;\n  const token = lex();\n\n  if (!isIdentifierName(token)) {\n    throwUnexpected(token);\n  }\n\n  return finishIdentifier(token.value);\n}\n\nfunction parseNonComputedMember() {\n  expect('.');\n  return parseNonComputedProperty();\n}\n\nfunction parseComputedMember() {\n  expect('[');\n  const expr = parseExpression();\n  expect(']');\n  return expr;\n}\n\nfunction parseLeftHandSideExpressionAllowCall() {\n  var expr, args, property;\n  expr = parsePrimaryExpression();\n\n  for (;;) {\n    if (match('.')) {\n      property = parseNonComputedMember();\n      expr = finishMemberExpression('.', expr, property);\n    } else if (match('(')) {\n      args = parseArguments();\n      expr = finishCallExpression(expr, args);\n    } else if (match('[')) {\n      property = parseComputedMember();\n      expr = finishMemberExpression('[', expr, property);\n    } else {\n      break;\n    }\n  }\n\n  return expr;\n} // 11.3 Postfix Expressions\n\n\nfunction parsePostfixExpression() {\n  const expr = parseLeftHandSideExpressionAllowCall();\n\n  if (lookahead.type === TokenPunctuator) {\n    if (match('++') || match('--')) {\n      throw new Error(DISABLED);\n    }\n  }\n\n  return expr;\n} // 11.4 Unary Operators\n\n\nfunction parseUnaryExpression() {\n  var token, expr;\n\n  if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n    expr = parsePostfixExpression();\n  } else if (match('++') || match('--')) {\n    throw new Error(DISABLED);\n  } else if (match('+') || match('-') || match('~') || match('!')) {\n    token = lex();\n    expr = parseUnaryExpression();\n    expr = finishUnaryExpression(token.value, expr);\n  } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n    throw new Error(DISABLED);\n  } else {\n    expr = parsePostfixExpression();\n  }\n\n  return expr;\n}\n\nfunction binaryPrecedence(token) {\n  let prec = 0;\n\n  if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n    return 0;\n  }\n\n  switch (token.value) {\n    case '||':\n      prec = 1;\n      break;\n\n    case '&&':\n      prec = 2;\n      break;\n\n    case '|':\n      prec = 3;\n      break;\n\n    case '^':\n      prec = 4;\n      break;\n\n    case '&':\n      prec = 5;\n      break;\n\n    case '==':\n    case '!=':\n    case '===':\n    case '!==':\n      prec = 6;\n      break;\n\n    case '<':\n    case '>':\n    case '<=':\n    case '>=':\n    case 'instanceof':\n    case 'in':\n      prec = 7;\n      break;\n\n    case '<<':\n    case '>>':\n    case '>>>':\n      prec = 8;\n      break;\n\n    case '+':\n    case '-':\n      prec = 9;\n      break;\n\n    case '*':\n    case '/':\n    case '%':\n      prec = 11;\n      break;\n  }\n\n  return prec;\n} // 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\n\nfunction parseBinaryExpression() {\n  var marker, markers, expr, token, prec, stack, right, operator, left, i;\n  marker = lookahead;\n  left = parseUnaryExpression();\n  token = lookahead;\n  prec = binaryPrecedence(token);\n\n  if (prec === 0) {\n    return left;\n  }\n\n  token.prec = prec;\n  lex();\n  markers = [marker, lookahead];\n  right = parseUnaryExpression();\n  stack = [left, token, right];\n\n  while ((prec = binaryPrecedence(lookahead)) > 0) {\n    // Reduce: make a binary expression from the three topmost entries.\n    while (stack.length > 2 && prec <= stack[stack.length - 2].prec) {\n      right = stack.pop();\n      operator = stack.pop().value;\n      left = stack.pop();\n      markers.pop();\n      expr = finishBinaryExpression(operator, left, right);\n      stack.push(expr);\n    } // Shift.\n\n\n    token = lex();\n    token.prec = prec;\n    stack.push(token);\n    markers.push(lookahead);\n    expr = parseUnaryExpression();\n    stack.push(expr);\n  } // Final reduce to clean-up the stack.\n\n\n  i = stack.length - 1;\n  expr = stack[i];\n  markers.pop();\n\n  while (i > 1) {\n    markers.pop();\n    expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n    i -= 2;\n  }\n\n  return expr;\n} // 11.12 Conditional Operator\n\n\nfunction parseConditionalExpression() {\n  var expr, consequent, alternate;\n  expr = parseBinaryExpression();\n\n  if (match('?')) {\n    lex();\n    consequent = parseConditionalExpression();\n    expect(':');\n    alternate = parseConditionalExpression();\n    expr = finishConditionalExpression(expr, consequent, alternate);\n  }\n\n  return expr;\n} // 11.14 Comma Operator\n\n\nfunction parseExpression() {\n  const expr = parseConditionalExpression();\n\n  if (match(',')) {\n    throw new Error(DISABLED); // no sequence expressions\n  }\n\n  return expr;\n}\n\nfunction parser (code) {\n  source = code;\n  index = 0;\n  length = source.length;\n  lookahead = null;\n  peek();\n  const expr = parseExpression();\n\n  if (lookahead.type !== TokenEOF) {\n    throw new Error('Unexpect token after expression.');\n  }\n\n  return expr;\n}\n\nvar Constants = {\n  NaN: 'NaN',\n  E: 'Math.E',\n  LN2: 'Math.LN2',\n  LN10: 'Math.LN10',\n  LOG2E: 'Math.LOG2E',\n  LOG10E: 'Math.LOG10E',\n  PI: 'Math.PI',\n  SQRT1_2: 'Math.SQRT1_2',\n  SQRT2: 'Math.SQRT2',\n  MIN_VALUE: 'Number.MIN_VALUE',\n  MAX_VALUE: 'Number.MAX_VALUE'\n};\n\nfunction Functions (codegen) {\n  function fncall(name, args, cast, type) {\n    let obj = codegen(args[0]);\n\n    if (cast) {\n      obj = cast + '(' + obj + ')';\n      if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n    }\n\n    return obj + '.' + name + (type < 0 ? '' : type === 0 ? '()' : '(' + args.slice(1).map(codegen).join(',') + ')');\n  }\n\n  function fn(name, cast, type) {\n    return args => fncall(name, args, cast, type);\n  }\n\n  const DATE = 'new Date',\n        STRING = 'String',\n        REGEXP = 'RegExp';\n  return {\n    // MATH functions\n    isNaN: 'Number.isNaN',\n    isFinite: 'Number.isFinite',\n    abs: 'Math.abs',\n    acos: 'Math.acos',\n    asin: 'Math.asin',\n    atan: 'Math.atan',\n    atan2: 'Math.atan2',\n    ceil: 'Math.ceil',\n    cos: 'Math.cos',\n    exp: 'Math.exp',\n    floor: 'Math.floor',\n    log: 'Math.log',\n    max: 'Math.max',\n    min: 'Math.min',\n    pow: 'Math.pow',\n    random: 'Math.random',\n    round: 'Math.round',\n    sin: 'Math.sin',\n    sqrt: 'Math.sqrt',\n    tan: 'Math.tan',\n    clamp: function (args) {\n      if (args.length < 3) error('Missing arguments to clamp function.');\n      if (args.length > 3) error('Too many arguments to clamp function.');\n      const a = args.map(codegen);\n      return 'Math.max(' + a[1] + ', Math.min(' + a[2] + ',' + a[0] + '))';\n    },\n    // DATE functions\n    now: 'Date.now',\n    utc: 'Date.UTC',\n    datetime: DATE,\n    date: fn('getDate', DATE, 0),\n    day: fn('getDay', DATE, 0),\n    year: fn('getFullYear', DATE, 0),\n    month: fn('getMonth', DATE, 0),\n    hours: fn('getHours', DATE, 0),\n    minutes: fn('getMinutes', DATE, 0),\n    seconds: fn('getSeconds', DATE, 0),\n    milliseconds: fn('getMilliseconds', DATE, 0),\n    time: fn('getTime', DATE, 0),\n    timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n    utcdate: fn('getUTCDate', DATE, 0),\n    utcday: fn('getUTCDay', DATE, 0),\n    utcyear: fn('getUTCFullYear', DATE, 0),\n    utcmonth: fn('getUTCMonth', DATE, 0),\n    utchours: fn('getUTCHours', DATE, 0),\n    utcminutes: fn('getUTCMinutes', DATE, 0),\n    utcseconds: fn('getUTCSeconds', DATE, 0),\n    utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n    // sequence functions\n    length: fn('length', null, -1),\n    // STRING functions\n    parseFloat: 'parseFloat',\n    parseInt: 'parseInt',\n    upper: fn('toUpperCase', STRING, 0),\n    lower: fn('toLowerCase', STRING, 0),\n    substring: fn('substring', STRING),\n    split: fn('split', STRING),\n    trim: fn('trim', STRING, 0),\n    // REGEXP functions\n    regexp: REGEXP,\n    test: fn('test', REGEXP),\n    // Control Flow functions\n    if: function (args) {\n      if (args.length < 3) error('Missing arguments to if function.');\n      if (args.length > 3) error('Too many arguments to if function.');\n      const a = args.map(codegen);\n      return '(' + a[0] + '?' + a[1] + ':' + a[2] + ')';\n    }\n  };\n}\n\nfunction stripQuotes(s) {\n  const n = s && s.length - 1;\n  return n && (s[0] === '\"' && s[n] === '\"' || s[0] === '\\'' && s[n] === '\\'') ? s.slice(1, -1) : s;\n}\n\nfunction codegen (opt) {\n  opt = opt || {};\n  const allowed = opt.allowed ? toSet(opt.allowed) : {},\n        forbidden = opt.forbidden ? toSet(opt.forbidden) : {},\n        constants = opt.constants || Constants,\n        functions = (opt.functions || Functions)(visit),\n        globalvar = opt.globalvar,\n        fieldvar = opt.fieldvar,\n        outputGlobal = isFunction(globalvar) ? globalvar : id => `${globalvar}[\"${id}\"]`;\n  let globals = {},\n      fields = {},\n      memberDepth = 0;\n\n  function visit(ast) {\n    if (isString(ast)) return ast;\n    const generator = Generators[ast.type];\n    if (generator == null) error('Unsupported type: ' + ast.type);\n    return generator(ast);\n  }\n\n  const Generators = {\n    Literal: n => n.raw,\n    Identifier: n => {\n      const id = n.name;\n\n      if (memberDepth > 0) {\n        return id;\n      } else if (hasOwnProperty(forbidden, id)) {\n        return error('Illegal identifier: ' + id);\n      } else if (hasOwnProperty(constants, id)) {\n        return constants[id];\n      } else if (hasOwnProperty(allowed, id)) {\n        return id;\n      } else {\n        globals[id] = 1;\n        return outputGlobal(id);\n      }\n    },\n    MemberExpression: n => {\n      const d = !n.computed,\n            o = visit(n.object);\n      if (d) memberDepth += 1;\n      const p = visit(n.property);\n\n      if (o === fieldvar) {\n        // strip quotes to sanitize field name (#1653)\n        fields[stripQuotes(p)] = 1;\n      }\n\n      if (d) memberDepth -= 1;\n      return o + (d ? '.' + p : '[' + p + ']');\n    },\n    CallExpression: n => {\n      if (n.callee.type !== 'Identifier') {\n        error('Illegal callee type: ' + n.callee.type);\n      }\n\n      const callee = n.callee.name,\n            args = n.arguments,\n            fn = hasOwnProperty(functions, callee) && functions[callee];\n      if (!fn) error('Unrecognized function: ' + callee);\n      return isFunction(fn) ? fn(args) : fn + '(' + args.map(visit).join(',') + ')';\n    },\n    ArrayExpression: n => '[' + n.elements.map(visit).join(',') + ']',\n    BinaryExpression: n => '(' + visit(n.left) + ' ' + n.operator + ' ' + visit(n.right) + ')',\n    UnaryExpression: n => '(' + n.operator + visit(n.argument) + ')',\n    ConditionalExpression: n => '(' + visit(n.test) + '?' + visit(n.consequent) + ':' + visit(n.alternate) + ')',\n    LogicalExpression: n => '(' + visit(n.left) + n.operator + visit(n.right) + ')',\n    ObjectExpression: n => '{' + n.properties.map(visit).join(',') + '}',\n    Property: n => {\n      memberDepth += 1;\n      const k = visit(n.key);\n      memberDepth -= 1;\n      return k + ':' + visit(n.value);\n    }\n  };\n\n  function codegen(ast) {\n    const result = {\n      code: visit(ast),\n      globals: Object.keys(globals),\n      fields: Object.keys(fields)\n    };\n    globals = {};\n    fields = {};\n    return result;\n  }\n\n  codegen.functions = functions;\n  codegen.constants = constants;\n  return codegen;\n}\n\nexport { ASTNode, ArrayExpression, BinaryExpression, CallExpression, ConditionalExpression, Identifier, Literal, LogicalExpression, MemberExpression, ObjectExpression, Property, RawCode, UnaryExpression, codegen as codegenExpression, Constants as constants, Functions as functions, parser as parseExpression };\n","import { field, isDate, toNumber, isArray, inrange, extend, array, error, peek, hasOwnProperty } from 'vega-util';\nimport { Literal } from 'vega-expression';\n\nfunction ascending (a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\nfunction bisector (f) {\n  let delta = f;\n  let compare = f;\n\n  if (f.length === 1) {\n    delta = (d, x) => f(d) - x;\n\n    compare = ascendingComparator(f);\n  }\n\n  function left(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n\n    while (lo < hi) {\n      const mid = lo + hi >>> 1;\n      if (compare(a[mid], x) < 0) lo = mid + 1;else hi = mid;\n    }\n\n    return lo;\n  }\n\n  function right(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n\n    while (lo < hi) {\n      const mid = lo + hi >>> 1;\n      if (compare(a[mid], x) > 0) hi = mid;else lo = mid + 1;\n    }\n\n    return lo;\n  }\n\n  function center(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {\n    left,\n    center,\n    right\n  };\n}\n\nfunction ascendingComparator(f) {\n  return (d, x) => ascending(f(d), x);\n}\n\nconst Intersect = 'intersect';\nconst Union = 'union';\nconst VlMulti = 'vlMulti';\nconst VlPoint = 'vlPoint';\nconst Or = 'or';\nconst And = 'and';\n\nconst SELECTION_ID = '_vgsid_',\n      TYPE_ENUM = 'E',\n      TYPE_RANGE_INC = 'R',\n      TYPE_RANGE_EXC = 'R-E',\n      TYPE_RANGE_LE = 'R-LE',\n      TYPE_RANGE_RE = 'R-RE',\n      UNIT_INDEX = 'index:unit'; // TODO: revisit date coercion?\n\nfunction testPoint(datum, entry) {\n  var fields = entry.fields,\n      values = entry.values,\n      n = fields.length,\n      i = 0,\n      dval,\n      f;\n\n  for (; i < n; ++i) {\n    f = fields[i];\n    f.getter = field.getter || field(f.field);\n    dval = f.getter(datum);\n    if (isDate(dval)) dval = toNumber(dval);\n    if (isDate(values[i])) values[i] = toNumber(values[i]);\n    if (isDate(values[i][0])) values[i] = values[i].map(toNumber);\n\n    if (f.type === TYPE_ENUM) {\n      // Enumerated fields can either specify individual values (single/multi selections)\n      // or an array of values (interval selections).\n      if (isArray(values[i]) ? values[i].indexOf(dval) < 0 : dval !== values[i]) {\n        return false;\n      }\n    } else {\n      if (f.type === TYPE_RANGE_INC) {\n        if (!inrange(dval, values[i])) return false;\n      } else if (f.type === TYPE_RANGE_RE) {\n        // Discrete selection of bins test within the range [bin_start, bin_end).\n        if (!inrange(dval, values[i], true, false)) return false;\n      } else if (f.type === TYPE_RANGE_EXC) {\n        // 'R-E'/'R-LE' included for completeness.\n        if (!inrange(dval, values[i], false, false)) return false;\n      } else if (f.type === TYPE_RANGE_LE) {\n        if (!inrange(dval, values[i], false, true)) return false;\n      }\n    }\n  }\n\n  return true;\n}\n/**\n * Tests if a tuple is contained within an interactive selection.\n * @param {string} name - The name of the data set representing the selection.\n *  Tuples in the dataset are of the form\n *  {unit: string, fields: array<fielddef>, values: array<*>}.\n *  Fielddef is of the form\n *  {field: string, channel: string, type: 'E' | 'R'} where\n *  'type' identifies whether tuples in the dataset enumerate\n *  values for the field, or specify a continuous range.\n * @param {object} datum - The tuple to test for inclusion.\n * @param {string} op - The set operation for combining selections.\n *   One of 'intersect' or 'union' (default).\n * @return {boolean} - True if the datum is in the selection, false otherwise.\n */\n\n\nfunction selectionTest(name, datum, op) {\n  var data = this.context.data[name],\n      entries = data ? data.values.value : [],\n      unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n      intersect = op === Intersect,\n      n = entries.length,\n      i = 0,\n      entry,\n      miss,\n      count,\n      unit,\n      b;\n\n  for (; i < n; ++i) {\n    entry = entries[i];\n\n    if (unitIdx && intersect) {\n      // multi selections union within the same unit and intersect across units.\n      miss = miss || {};\n      count = miss[unit = entry.unit] || 0; // if we've already matched this unit, skip.\n\n      if (count === -1) continue;\n      b = testPoint(datum, entry);\n      miss[unit] = b ? -1 : ++count; // if we match and there are no other units return true\n      // if we've missed against all tuples in this unit return false\n\n      if (b && unitIdx.size === 1) return true;\n      if (!b && count === unitIdx.get(unit).count) return false;\n    } else {\n      b = testPoint(datum, entry); // if we find a miss and we do require intersection return false\n      // if we find a match and we don't require intersection return true\n\n      if (intersect ^ b) return b;\n    }\n  } // if intersecting and we made it here, then we saw no misses\n  // if not intersecting, then we saw no matches\n  // if no active selections, return false\n\n\n  return n && intersect;\n}\nconst selectionId = field(SELECTION_ID),\n      bisect = bisector(selectionId),\n      bisectLeft = bisect.left,\n      bisectRight = bisect.right;\nfunction selectionIdTest(name, datum, op) {\n  const data = this.context.data[name],\n        entries = data ? data.values.value : [],\n        unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n        intersect = op === Intersect,\n        value = selectionId(datum),\n        index = bisectLeft(entries, value);\n  if (index === entries.length) return false;\n  if (selectionId(entries[index]) !== value) return false;\n\n  if (unitIdx && intersect) {\n    if (unitIdx.size === 1) return true;\n    if (bisectRight(entries, value) - index < unitIdx.size) return false;\n  }\n\n  return true;\n}\n\n/**\n * Maps an array of scene graph items to an array of selection tuples.\n * @param {string} name  - The name of the dataset representing the selection.\n * @param {string} unit  - The name of the unit view.\n *\n * @returns {array} An array of selection entries for the given unit.\n */\n\nfunction selectionTuples(array, base) {\n  return array.map(x => extend({\n    values: base.fields.map(f => (f.getter || (f.getter = field(f.field)))(x.datum))\n  }, base));\n}\n\n/**\n * Resolves selection for use as a scale domain or reads via the API.\n * @param {string} name - The name of the dataset representing the selection\n * @param {string} [op='union'] - The set operation for combining selections.\n *                 One of 'intersect' or 'union' (default).\n * @param {boolean} isMulti - Identifies a \"multi\" selection to perform more\n *                 expensive resolution computation.\n * @param {boolean} vl5 - With Vega-Lite v5, \"multi\" selections are now called \"point\"\n *                 selections, and thus the resolved tuple should reflect this name.\n *                 This parameter allows us to reflect this change without triggering\n *                 a major version bump for Vega.\n * @returns {object} An object of selected fields and values.\n */\n\nfunction selectionResolve(name, op, isMulti, vl5) {\n  var data = this.context.data[name],\n      entries = data ? data.values.value : [],\n      resolved = {},\n      multiRes = {},\n      types = {},\n      entry,\n      fields,\n      values,\n      unit,\n      field,\n      res,\n      resUnit,\n      type,\n      union,\n      n = entries.length,\n      i = 0,\n      j,\n      m; // First union all entries within the same unit.\n\n  for (; i < n; ++i) {\n    entry = entries[i];\n    unit = entry.unit;\n    fields = entry.fields;\n    values = entry.values;\n\n    for (j = 0, m = fields.length; j < m; ++j) {\n      field = fields[j];\n      res = resolved[field.field] || (resolved[field.field] = {});\n      resUnit = res[unit] || (res[unit] = []);\n      types[field.field] = type = field.type.charAt(0);\n      union = ops[type + '_union'];\n      res[unit] = union(resUnit, array(values[j]));\n    } // If the same multi-selection is repeated over views and projected over\n    // an encoding, it may operate over different fields making it especially\n    // tricky to reliably resolve it. At best, we can de-dupe identical entries\n    // but doing so may be more computationally expensive than it is worth.\n    // Instead, for now, we simply transform our store representation into\n    // a more human-friendly one.\n\n\n    if (isMulti) {\n      resUnit = multiRes[unit] || (multiRes[unit] = []);\n      resUnit.push(array(values).reduce((obj, curr, j) => (obj[fields[j].field] = curr, obj), {}));\n    }\n  } // Then resolve fields across units as per the op.\n\n\n  op = op || Union;\n  Object.keys(resolved).forEach(field => {\n    resolved[field] = Object.keys(resolved[field]).map(unit => resolved[field][unit]).reduce((acc, curr) => acc === undefined ? curr : ops[types[field] + '_' + op](acc, curr));\n  });\n  entries = Object.keys(multiRes);\n\n  if (isMulti && entries.length) {\n    const key = vl5 ? VlPoint : VlMulti;\n    resolved[key] = op === Union ? {\n      [Or]: entries.reduce((acc, k) => (acc.push(...multiRes[k]), acc), [])\n    } : {\n      [And]: entries.map(k => ({\n        [Or]: multiRes[k]\n      }))\n    };\n  }\n\n  return resolved;\n}\nvar ops = {\n  E_union: function (base, value) {\n    if (!base.length) return value;\n    var i = 0,\n        n = value.length;\n\n    for (; i < n; ++i) if (base.indexOf(value[i]) < 0) base.push(value[i]);\n\n    return base;\n  },\n  E_intersect: function (base, value) {\n    return !base.length ? value : base.filter(v => value.indexOf(v) >= 0);\n  },\n  R_union: function (base, value) {\n    var lo = toNumber(value[0]),\n        hi = toNumber(value[1]);\n\n    if (lo > hi) {\n      lo = value[1];\n      hi = value[0];\n    }\n\n    if (!base.length) return [lo, hi];\n    if (base[0] > lo) base[0] = lo;\n    if (base[1] < hi) base[1] = hi;\n    return base;\n  },\n  R_intersect: function (base, value) {\n    var lo = toNumber(value[0]),\n        hi = toNumber(value[1]);\n\n    if (lo > hi) {\n      lo = value[1];\n      hi = value[0];\n    }\n\n    if (!base.length) return [lo, hi];\n\n    if (hi < base[0] || base[1] < lo) {\n      return [];\n    } else {\n      if (base[0] < lo) base[0] = lo;\n      if (base[1] > hi) base[1] = hi;\n    }\n\n    return base;\n  }\n};\n\nconst DataPrefix = ':',\n      IndexPrefix = '@';\nfunction selectionVisitor(name, args, scope, params) {\n  if (args[0].type !== Literal) error('First argument to selection functions must be a string literal.');\n  const data = args[0].value,\n        op = args.length >= 2 && peek(args).value,\n        field = 'unit',\n        indexName = IndexPrefix + field,\n        dataName = DataPrefix + data; // eslint-disable-next-line no-prototype-builtins\n\n  if (op === Intersect && !hasOwnProperty(params, indexName)) {\n    params[indexName] = scope.getData(data).indataRef(scope, field);\n  } // eslint-disable-next-line no-prototype-builtins\n\n\n  if (!hasOwnProperty(params, dataName)) {\n    params[dataName] = scope.getData(data).tuplesRef();\n  }\n}\n\nexport { selectionIdTest, selectionResolve, selectionTest, selectionTuples, selectionVisitor };\n","import { truthy, error, hasOwnProperty, isFunction, isString, stringValue, extend, isArray, isObject, field, peek, identity, array as array$1, isBoolean, isDate, isNumber, isRegExp, toBoolean, toDate, toNumber, toString, flush, lerp, pad, span, inrange, truncate, quarter, utcquarter, extent, clampRange, panLinear, panLog, panPow, panSymlog, zoomLinear, zoomLog, zoomPow, zoomSymlog } from 'vega-util';\nimport { Literal, codegenExpression, constants, functions, parseExpression, CallExpression } from 'vega-expression';\nimport { geoBounds as geoBounds$1, geoCentroid as geoCentroid$1, geoArea as geoArea$1 } from 'd3-geo';\nimport { rgb, lab, hcl, hsl } from 'd3-color';\nimport { isTuple } from 'vega-dataflow';\nimport { bandSpace, scale as scale$1, scaleFraction } from 'vega-scale';\nimport { Gradient, pathRender, pathParse, Bounds, intersect as intersect$1 } from 'vega-scenegraph';\nimport { selectionVisitor, selectionTest, selectionIdTest, selectionResolve, selectionTuples } from 'vega-selections';\nimport { random, cumulativeNormal, cumulativeLogNormal, cumulativeUniform, densityNormal, densityLogNormal, densityUniform, quantileNormal, quantileLogNormal, quantileUniform, sampleNormal, sampleLogNormal, sampleUniform } from 'vega-statistics';\nimport { utcOffset, utcSequence, timeOffset, timeSequence, timeUnitSpecifier, week, utcweek, dayofyear, utcdayofyear } from 'vega-time';\nimport { range as range$1 } from 'd3-array';\n\nfunction data(name) {\n  const data = this.context.data[name];\n  return data ? data.values.value : [];\n}\nfunction indata(name, field, value) {\n  const index = this.context.data[name]['index:' + field],\n        entry = index ? index.value.get(value) : undefined;\n  return entry ? entry.count : entry;\n}\nfunction setdata(name, tuples) {\n  const df = this.context.dataflow,\n        data = this.context.data[name],\n        input = data.input;\n  df.pulse(input, df.changeset().remove(truthy).insert(tuples));\n  return 1;\n}\n\nfunction encode (item, name, retval) {\n  if (item) {\n    const df = this.context.dataflow,\n          target = item.mark.source;\n    df.pulse(target, df.changeset().encode(item, name));\n  }\n\n  return retval !== undefined ? retval : item;\n}\n\nconst wrap = method => function (value, spec) {\n  const locale = this.context.dataflow.locale();\n  return locale[method](spec)(value);\n};\n\nconst format = wrap('format');\nconst timeFormat = wrap('timeFormat');\nconst utcFormat = wrap('utcFormat');\nconst timeParse = wrap('timeParse');\nconst utcParse = wrap('utcParse');\nconst dateObj = new Date(2000, 0, 1);\n\nfunction time(month, day, specifier) {\n  if (!Number.isInteger(month) || !Number.isInteger(day)) return '';\n  dateObj.setYear(2000);\n  dateObj.setMonth(month);\n  dateObj.setDate(day);\n  return timeFormat.call(this, dateObj, specifier);\n}\n\nfunction monthFormat(month) {\n  return time.call(this, month, 1, '%B');\n}\nfunction monthAbbrevFormat(month) {\n  return time.call(this, month, 1, '%b');\n}\nfunction dayFormat(day) {\n  return time.call(this, 0, 2 + day, '%A');\n}\nfunction dayAbbrevFormat(day) {\n  return time.call(this, 0, 2 + day, '%a');\n}\n\nconst DataPrefix = ':';\nconst IndexPrefix = '@';\nconst ScalePrefix = '%';\nconst SignalPrefix = '$';\n\nfunction dataVisitor(name, args, scope, params) {\n  if (args[0].type !== Literal) {\n    error('First argument to data functions must be a string literal.');\n  }\n\n  const data = args[0].value,\n        dataName = DataPrefix + data;\n\n  if (!hasOwnProperty(dataName, params)) {\n    try {\n      params[dataName] = scope.getData(data).tuplesRef();\n    } catch (err) {// if data set does not exist, there's nothing to track\n    }\n  }\n}\nfunction indataVisitor(name, args, scope, params) {\n  if (args[0].type !== Literal) error('First argument to indata must be a string literal.');\n  if (args[1].type !== Literal) error('Second argument to indata must be a string literal.');\n  const data = args[0].value,\n        field = args[1].value,\n        indexName = IndexPrefix + field;\n\n  if (!hasOwnProperty(indexName, params)) {\n    params[indexName] = scope.getData(data).indataRef(scope, field);\n  }\n}\nfunction scaleVisitor(name, args, scope, params) {\n  if (args[0].type === Literal) {\n    // add scale dependency\n    addScaleDependency(scope, params, args[0].value);\n  } else {\n    // indirect scale lookup; add all scales as parameters\n    for (name in scope.scales) {\n      addScaleDependency(scope, params, name);\n    }\n  }\n}\n\nfunction addScaleDependency(scope, params, name) {\n  const scaleName = ScalePrefix + name;\n\n  if (!hasOwnProperty(params, scaleName)) {\n    try {\n      params[scaleName] = scope.scaleRef(name);\n    } catch (err) {// TODO: error handling? warning?\n    }\n  }\n}\n\nfunction getScale(name, ctx) {\n  let s;\n  return isFunction(name) ? name : isString(name) ? (s = ctx.scales[name]) && s.value : undefined;\n}\nfunction internalScaleFunctions(codegen, fnctx, visitors) {\n  // add helper method to the 'this' expression function context\n  fnctx.__bandwidth = s => s && s.bandwidth ? s.bandwidth() : 0; // register AST visitors for internal scale functions\n\n\n  visitors._bandwidth = scaleVisitor;\n  visitors._range = scaleVisitor;\n  visitors._scale = scaleVisitor; // resolve scale reference directly to the signal hash argument\n\n  const ref = arg => '_[' + (arg.type === Literal ? stringValue(ScalePrefix + arg.value) : stringValue(ScalePrefix) + '+' + codegen(arg)) + ']'; // define and return internal scale function code generators\n  // these internal functions are called by mark encoders\n\n\n  return {\n    _bandwidth: args => `this.__bandwidth(${ref(args[0])})`,\n    _range: args => `${ref(args[0])}.range()`,\n    _scale: args => `${ref(args[0])}(${codegen(args[1])})`\n  };\n}\n\nfunction geoMethod(methodName, globalMethod) {\n  return function (projection, geojson, group) {\n    if (projection) {\n      // projection defined, use it\n      const p = getScale(projection, (group || this).context);\n      return p && p.path[methodName](geojson);\n    } else {\n      // projection undefined, use global method\n      return globalMethod(geojson);\n    }\n  };\n}\n\nconst geoArea = geoMethod('area', geoArea$1);\nconst geoBounds = geoMethod('bounds', geoBounds$1);\nconst geoCentroid = geoMethod('centroid', geoCentroid$1);\n\nfunction inScope (item) {\n  const group = this.context.group;\n  let value = false;\n  if (group) while (item) {\n    if (item === group) {\n      value = true;\n      break;\n    }\n\n    item = item.mark.group;\n  }\n  return value;\n}\n\nfunction log(df, method, args) {\n  try {\n    df[method].apply(df, ['EXPRESSION'].concat([].slice.call(args)));\n  } catch (err) {\n    df.warn(err);\n  }\n\n  return args[args.length - 1];\n}\n\nfunction warn() {\n  return log(this.context.dataflow, 'warn', arguments);\n}\nfunction info() {\n  return log(this.context.dataflow, 'info', arguments);\n}\nfunction debug() {\n  return log(this.context.dataflow, 'debug', arguments);\n}\n\nfunction channel_luminance_value(channelValue) {\n  const val = channelValue / 255;\n\n  if (val <= 0.03928) {\n    return val / 12.92;\n  }\n\n  return Math.pow((val + 0.055) / 1.055, 2.4);\n}\n\nfunction luminance(color) {\n  const c = rgb(color),\n        r = channel_luminance_value(c.r),\n        g = channel_luminance_value(c.g),\n        b = channel_luminance_value(c.b);\n  return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n} // https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n\nfunction contrast(color1, color2) {\n  const lum1 = luminance(color1),\n        lum2 = luminance(color2),\n        lumL = Math.max(lum1, lum2),\n        lumD = Math.min(lum1, lum2);\n  return (lumL + 0.05) / (lumD + 0.05);\n}\n\nfunction merge () {\n  const args = [].slice.call(arguments);\n  args.unshift({});\n  return extend(...args);\n}\n\nfunction equal(a, b) {\n  return a === b || a !== a && b !== b ? true : isArray(a) ? isArray(b) && a.length === b.length ? equalArray(a, b) : false : isObject(a) && isObject(b) ? equalObject(a, b) : false;\n}\n\nfunction equalArray(a, b) {\n  for (let i = 0, n = a.length; i < n; ++i) {\n    if (!equal(a[i], b[i])) return false;\n  }\n\n  return true;\n}\n\nfunction equalObject(a, b) {\n  for (const key in a) {\n    if (!equal(a[key], b[key])) return false;\n  }\n\n  return true;\n}\n\nfunction removePredicate(props) {\n  return _ => equalObject(props, _);\n}\n\nfunction modify (name, insert, remove, toggle, modify, values) {\n  const df = this.context.dataflow,\n        data = this.context.data[name],\n        input = data.input,\n        stamp = df.stamp();\n  let changes = data.changes,\n      predicate,\n      key;\n\n  if (df._trigger === false || !(input.value.length || insert || toggle)) {\n    // nothing to do!\n    return 0;\n  }\n\n  if (!changes || changes.stamp < stamp) {\n    data.changes = changes = df.changeset();\n    changes.stamp = stamp;\n    df.runAfter(() => {\n      data.modified = true;\n      df.pulse(input, changes).run();\n    }, true, 1);\n  }\n\n  if (remove) {\n    predicate = remove === true ? truthy : isArray(remove) || isTuple(remove) ? remove : removePredicate(remove);\n    changes.remove(predicate);\n  }\n\n  if (insert) {\n    changes.insert(insert);\n  }\n\n  if (toggle) {\n    predicate = removePredicate(toggle);\n\n    if (input.value.some(predicate)) {\n      changes.remove(predicate);\n    } else {\n      changes.insert(toggle);\n    }\n  }\n\n  if (modify) {\n    for (key in values) {\n      changes.modify(modify, key, values[key]);\n    }\n  }\n\n  return 1;\n}\n\nfunction pinchDistance(event) {\n  const t = event.touches,\n        dx = t[0].clientX - t[1].clientX,\n        dy = t[0].clientY - t[1].clientY;\n  return Math.sqrt(dx * dx + dy * dy);\n}\nfunction pinchAngle(event) {\n  const t = event.touches;\n  return Math.atan2(t[0].clientY - t[1].clientY, t[0].clientX - t[1].clientX);\n}\n\nconst accessors = {};\nfunction pluck (data, name) {\n  const accessor = accessors[name] || (accessors[name] = field(name));\n  return isArray(data) ? data.map(accessor) : accessor(data);\n}\n\nfunction array(seq) {\n  return isArray(seq) || ArrayBuffer.isView(seq) ? seq : null;\n}\n\nfunction sequence(seq) {\n  return array(seq) || (isString(seq) ? seq : null);\n}\n\nfunction join(seq, ...args) {\n  return array(seq).join(...args);\n}\nfunction indexof(seq, ...args) {\n  return sequence(seq).indexOf(...args);\n}\nfunction lastindexof(seq, ...args) {\n  return sequence(seq).lastIndexOf(...args);\n}\nfunction slice(seq, ...args) {\n  return sequence(seq).slice(...args);\n}\nfunction replace(str, pattern, repl) {\n  if (isFunction(repl)) error('Function argument passed to replace.');\n  return String(str).replace(pattern, repl);\n}\nfunction reverse(seq) {\n  return array(seq).slice().reverse();\n}\n\nfunction bandspace(count, paddingInner, paddingOuter) {\n  return bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);\n}\nfunction bandwidth(name, group) {\n  const s = getScale(name, (group || this).context);\n  return s && s.bandwidth ? s.bandwidth() : 0;\n}\nfunction copy(name, group) {\n  const s = getScale(name, (group || this).context);\n  return s ? s.copy() : undefined;\n}\nfunction domain(name, group) {\n  const s = getScale(name, (group || this).context);\n  return s ? s.domain() : [];\n}\nfunction invert(name, range, group) {\n  const s = getScale(name, (group || this).context);\n  return !s ? undefined : isArray(range) ? (s.invertRange || s.invert)(range) : (s.invert || s.invertExtent)(range);\n}\nfunction range(name, group) {\n  const s = getScale(name, (group || this).context);\n  return s && s.range ? s.range() : [];\n}\nfunction scale(name, value, group) {\n  const s = getScale(name, (group || this).context);\n  return s ? s(value) : undefined;\n}\n\nfunction scaleGradient (scale, p0, p1, count, group) {\n  scale = getScale(scale, (group || this).context);\n  const gradient = Gradient(p0, p1);\n  let stops = scale.domain(),\n      min = stops[0],\n      max = peek(stops),\n      fraction = identity;\n\n  if (!(max - min)) {\n    // expand scale if domain has zero span, fix #1479\n    scale = (scale.interpolator ? scale$1('sequential')().interpolator(scale.interpolator()) : scale$1('linear')().interpolate(scale.interpolate()).range(scale.range())).domain([min = 0, max = 1]);\n  } else {\n    fraction = scaleFraction(scale, min, max);\n  }\n\n  if (scale.ticks) {\n    stops = scale.ticks(+count || 15);\n    if (min !== stops[0]) stops.unshift(min);\n    if (max !== peek(stops)) stops.push(max);\n  }\n\n  stops.forEach(_ => gradient.stop(fraction(_), scale(_)));\n  return gradient;\n}\n\nfunction geoShape(projection, geojson, group) {\n  const p = getScale(projection, (group || this).context);\n  return function (context) {\n    return p ? p.path.context(context)(geojson) : '';\n  };\n}\nfunction pathShape(path) {\n  let p = null;\n  return function (context) {\n    return context ? pathRender(context, p = p || pathParse(path)) : path;\n  };\n}\n\nconst datum = d => d.data;\n\nfunction treeNodes(name, context) {\n  const tree = data.call(context, name);\n  return tree.root && tree.root.lookup || {};\n}\n\nfunction treePath(name, source, target) {\n  const nodes = treeNodes(name, this),\n        s = nodes[source],\n        t = nodes[target];\n  return s && t ? s.path(t).map(datum) : undefined;\n}\nfunction treeAncestors(name, node) {\n  const n = treeNodes(name, this)[node];\n  return n ? n.ancestors().map(datum) : undefined;\n}\n\nconst _window = () => typeof window !== 'undefined' && window || null;\n\nfunction screen() {\n  const w = _window();\n\n  return w ? w.screen : {};\n}\nfunction windowSize() {\n  const w = _window();\n\n  return w ? [w.innerWidth, w.innerHeight] : [undefined, undefined];\n}\nfunction containerSize() {\n  const view = this.context.dataflow,\n        el = view.container && view.container();\n  return el ? [el.clientWidth, el.clientHeight] : [undefined, undefined];\n}\n\nfunction intersect (b, opt, group) {\n  if (!b) return [];\n  const [u, v] = b,\n        box = new Bounds().set(u[0], u[1], v[0], v[1]),\n        scene = group || this.context.dataflow.scenegraph().root;\n  return intersect$1(scene, box, filter(opt));\n}\n\nfunction filter(opt) {\n  let p = null;\n\n  if (opt) {\n    const types = array$1(opt.marktype),\n          names = array$1(opt.markname);\n\n    p = _ => (!types.length || types.some(t => _.marktype === t)) && (!names.length || names.some(s => _.name === s));\n  }\n\n  return p;\n}\n\nconst functionContext = {\n  random() {\n    return random();\n  },\n\n  // override default\n  cumulativeNormal,\n  cumulativeLogNormal,\n  cumulativeUniform,\n  densityNormal,\n  densityLogNormal,\n  densityUniform,\n  quantileNormal,\n  quantileLogNormal,\n  quantileUniform,\n  sampleNormal,\n  sampleLogNormal,\n  sampleUniform,\n  isArray,\n  isBoolean,\n  isDate,\n\n  isDefined(_) {\n    return _ !== undefined;\n  },\n\n  isNumber,\n  isObject,\n  isRegExp,\n  isString,\n  isTuple,\n\n  isValid(_) {\n    return _ != null && _ === _;\n  },\n\n  toBoolean,\n  toDate,\n  toNumber,\n  toString,\n  indexof,\n  join,\n  lastindexof,\n  replace,\n  reverse,\n  slice,\n  flush,\n  lerp,\n  merge,\n  pad,\n  peek,\n  pluck,\n  span,\n  inrange,\n  truncate,\n  rgb,\n  lab,\n  hcl,\n  hsl,\n  luminance,\n  contrast,\n  sequence: range$1,\n  format,\n  utcFormat,\n  utcParse,\n  utcOffset,\n  utcSequence,\n  timeFormat,\n  timeParse,\n  timeOffset,\n  timeSequence,\n  timeUnitSpecifier,\n  monthFormat,\n  monthAbbrevFormat,\n  dayFormat,\n  dayAbbrevFormat,\n  quarter,\n  utcquarter,\n  week,\n  utcweek,\n  dayofyear,\n  utcdayofyear,\n  warn,\n  info,\n  debug,\n  extent,\n  inScope,\n  intersect,\n  clampRange,\n  pinchDistance,\n  pinchAngle,\n  screen,\n  containerSize,\n  windowSize,\n  bandspace,\n  setdata,\n  pathShape,\n  panLinear,\n  panLog,\n  panPow,\n  panSymlog,\n  zoomLinear,\n  zoomLog,\n  zoomPow,\n  zoomSymlog,\n  encode,\n  modify\n};\nconst eventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'],\n      // event functions\neventPrefix = 'event.vega.',\n      // event function prefix\nthisPrefix = 'this.',\n      // function context prefix\nastVisitors = {}; // AST visitors for dependency analysis\n// export code generator parameters\n\nconst codegenParams = {\n  forbidden: ['_'],\n  allowed: ['datum', 'event', 'item'],\n  fieldvar: 'datum',\n  globalvar: id => `_[${stringValue(SignalPrefix + id)}]`,\n  functions: buildFunctions,\n  constants: constants,\n  visitors: astVisitors\n}; // export code generator\n\nconst codeGenerator = codegenExpression(codegenParams); // Build expression function registry\n\nfunction buildFunctions(codegen) {\n  const fn = functions(codegen);\n  eventFunctions.forEach(name => fn[name] = eventPrefix + name);\n\n  for (const name in functionContext) {\n    fn[name] = thisPrefix + name;\n  }\n\n  extend(fn, internalScaleFunctions(codegen, functionContext, astVisitors));\n  return fn;\n} // Register an expression function\n\n\nfunction expressionFunction(name, fn, visitor) {\n  if (arguments.length === 1) {\n    return functionContext[name];\n  } // register with the functionContext\n\n\n  functionContext[name] = fn; // if there is an astVisitor register that, too\n\n  if (visitor) astVisitors[name] = visitor; // if the code generator has already been initialized,\n  // we need to also register the function with it\n\n  if (codeGenerator) codeGenerator.functions[name] = thisPrefix + name;\n  return this;\n} // register expression functions with ast visitors\n\nexpressionFunction('bandwidth', bandwidth, scaleVisitor);\nexpressionFunction('copy', copy, scaleVisitor);\nexpressionFunction('domain', domain, scaleVisitor);\nexpressionFunction('range', range, scaleVisitor);\nexpressionFunction('invert', invert, scaleVisitor);\nexpressionFunction('scale', scale, scaleVisitor);\nexpressionFunction('gradient', scaleGradient, scaleVisitor);\nexpressionFunction('geoArea', geoArea, scaleVisitor);\nexpressionFunction('geoBounds', geoBounds, scaleVisitor);\nexpressionFunction('geoCentroid', geoCentroid, scaleVisitor);\nexpressionFunction('geoShape', geoShape, scaleVisitor);\nexpressionFunction('indata', indata, indataVisitor);\nexpressionFunction('data', data, dataVisitor);\nexpressionFunction('treePath', treePath, dataVisitor);\nexpressionFunction('treeAncestors', treeAncestors, dataVisitor); // register Vega-Lite selection functions\n\nexpressionFunction('vlSelectionTest', selectionTest, selectionVisitor);\nexpressionFunction('vlSelectionIdTest', selectionIdTest, selectionVisitor);\nexpressionFunction('vlSelectionResolve', selectionResolve, selectionVisitor);\nexpressionFunction('vlSelectionTuples', selectionTuples);\n\nfunction parser (expr, scope) {\n  const params = {}; // parse the expression to an abstract syntax tree (ast)\n\n  let ast;\n\n  try {\n    expr = isString(expr) ? expr : stringValue(expr) + '';\n    ast = parseExpression(expr);\n  } catch (err) {\n    error('Expression parse error: ' + expr);\n  } // analyze ast function calls for dependencies\n\n\n  ast.visit(node => {\n    if (node.type !== CallExpression) return;\n    const name = node.callee.name,\n          visit = codegenParams.visitors[name];\n    if (visit) visit(name, node.arguments, scope, params);\n  }); // perform code generation\n\n  const gen = codeGenerator(ast); // collect signal dependencies\n\n  gen.globals.forEach(name => {\n    const signalName = SignalPrefix + name;\n\n    if (!hasOwnProperty(params, signalName) && scope.getSignal(name)) {\n      params[signalName] = scope.signalRef(name);\n    }\n  }); // return generated expression code and dependencies\n\n  return {\n    $expr: extend({\n      code: gen.code\n    }, scope.options.ast ? {\n      ast\n    } : null),\n    $fields: gen.fields,\n    $params: params\n  };\n}\n\nexport { DataPrefix, IndexPrefix, ScalePrefix, SignalPrefix, bandspace, bandwidth, codeGenerator, codegenParams, containerSize, contrast, copy, data, dataVisitor, dayAbbrevFormat, dayFormat, debug, domain, encode, expressionFunction, format, functionContext, geoArea, geoBounds, geoCentroid, geoShape, inScope, indata, indataVisitor, indexof, info, invert, join, lastindexof, luminance, merge, modify, monthAbbrevFormat, monthFormat, parser as parseExpression, pathShape, pinchAngle, pinchDistance, pluck, range, replace, reverse, scale, scaleGradient, scaleVisitor, screen, setdata, slice, timeFormat, timeParse, treeAncestors, treePath, utcFormat, utcParse, warn, windowSize };\n","import { toSet, stringValue, error, isArray, isObject, hasOwnProperty, accessor, key, field, array, compare, truthy } from 'vega-util';\nimport { tupleid } from 'vega-dataflow';\n\n/**\n * Parse a serialized dataflow specification.\n */\nfunction parse (spec) {\n  const ctx = this,\n        operators = spec.operators || []; // parse background\n\n  if (spec.background) {\n    ctx.background = spec.background;\n  } // parse event configuration\n\n\n  if (spec.eventConfig) {\n    ctx.eventConfig = spec.eventConfig;\n  } // parse locale configuration\n\n\n  if (spec.locale) {\n    ctx.locale = spec.locale;\n  } // parse operators\n\n\n  operators.forEach(entry => ctx.parseOperator(entry)); // parse operator parameters\n\n  operators.forEach(entry => ctx.parseOperatorParameters(entry)); // parse streams\n\n  (spec.streams || []).forEach(entry => ctx.parseStream(entry)); // parse updates\n\n  (spec.updates || []).forEach(entry => ctx.parseUpdate(entry));\n  return ctx.resolve();\n}\n\nconst Skip = toSet(['rule']),\n      Swap = toSet(['group', 'image', 'rect']);\nfunction adjustSpatial(encode, marktype) {\n  let code = '';\n  if (Skip[marktype]) return code;\n\n  if (encode.x2) {\n    if (encode.x) {\n      if (Swap[marktype]) {\n        code += 'if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;';\n      }\n\n      code += 'o.width=o.x2-o.x;';\n    } else {\n      code += 'o.x=o.x2-(o.width||0);';\n    }\n  }\n\n  if (encode.xc) {\n    code += 'o.x=o.xc-(o.width||0)/2;';\n  }\n\n  if (encode.y2) {\n    if (encode.y) {\n      if (Swap[marktype]) {\n        code += 'if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;';\n      }\n\n      code += 'o.height=o.y2-o.y;';\n    } else {\n      code += 'o.y=o.y2-(o.height||0);';\n    }\n  }\n\n  if (encode.yc) {\n    code += 'o.y=o.yc-(o.height||0)/2;';\n  }\n\n  return code;\n}\nfunction canonicalType(type) {\n  return (type + '').toLowerCase();\n}\nfunction isOperator(type) {\n  return canonicalType(type) === 'operator';\n}\nfunction isCollect(type) {\n  return canonicalType(type) === 'collect';\n}\n\nfunction expression(ctx, args, code) {\n  // wrap code in return statement if expression does not terminate\n  if (code[code.length - 1] !== ';') {\n    code = 'return(' + code + ');';\n  }\n\n  const fn = Function(...args.concat(code));\n  return ctx && ctx.functions ? fn.bind(ctx.functions) : fn;\n} // generate code for comparing a single field\n\n\nfunction _compare(u, v, lt, gt) {\n  return \"((u = \".concat(u, \") < (v = \").concat(v, \") || u == null) && v != null ? \").concat(lt, \"\\n  : (u > v || v == null) && u != null ? \").concat(gt, \"\\n  : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? \").concat(lt, \"\\n  : v !== v && u === u ? \").concat(gt, \" : \");\n}\n\nvar expressionCodegen = {\n  /**\n   * Parse an expression used to update an operator value.\n   */\n  operator: (ctx, expr) => expression(ctx, ['_'], expr.code),\n\n  /**\n   * Parse an expression provided as an operator parameter value.\n   */\n  parameter: (ctx, expr) => expression(ctx, ['datum', '_'], expr.code),\n\n  /**\n   * Parse an expression applied to an event stream.\n   */\n  event: (ctx, expr) => expression(ctx, ['event'], expr.code),\n\n  /**\n   * Parse an expression used to handle an event-driven operator update.\n   */\n  handler: (ctx, expr) => {\n    const code = \"var datum=event.item&&event.item.datum;return \".concat(expr.code, \";\");\n    return expression(ctx, ['_', 'event'], code);\n  },\n\n  /**\n   * Parse an expression that performs visual encoding.\n   */\n  encode: (ctx, encode) => {\n    const {\n      marktype,\n      channels\n    } = encode;\n    let code = 'var o=item,datum=o.datum,m=0,$;';\n\n    for (const name in channels) {\n      const o = 'o[' + stringValue(name) + ']';\n      code += \"$=\".concat(channels[name].code, \";if(\").concat(o, \"!==$)\").concat(o, \"=$,m=1;\");\n    }\n\n    code += adjustSpatial(channels, marktype);\n    code += 'return m;';\n    return expression(ctx, ['item', '_'], code);\n  },\n\n  /**\n   * Optimized code generators for access and comparison.\n   */\n  codegen: {\n    get(path) {\n      const ref = \"[\".concat(path.map(stringValue).join(']['), \"]\");\n      const get = Function('_', \"return _\".concat(ref, \";\"));\n      get.path = ref;\n      return get;\n    },\n\n    comparator(fields, orders) {\n      let t;\n\n      const map = (f, i) => {\n        const o = orders[i];\n        let u, v;\n\n        if (f.path) {\n          u = \"a\".concat(f.path);\n          v = \"b\".concat(f.path);\n        } else {\n          (t = t || {})['f' + i] = f;\n          u = \"this.f\".concat(i, \"(a)\");\n          v = \"this.f\".concat(i, \"(b)\");\n        }\n\n        return _compare(u, v, -o, o);\n      };\n\n      const fn = Function('a', 'b', 'var u, v; return ' + fields.map(map).join('') + '0;');\n      return t ? fn.bind(t) : fn;\n    }\n\n  }\n};\n\n/**\n * Parse a dataflow operator.\n */\n\nfunction parseOperator(spec) {\n  const ctx = this;\n\n  if (isOperator(spec.type) || !spec.type) {\n    ctx.operator(spec, spec.update ? ctx.operatorExpression(spec.update) : null);\n  } else {\n    ctx.transform(spec, spec.type);\n  }\n}\n/**\n * Parse and assign operator parameters.\n */\n\nfunction parseOperatorParameters(spec) {\n  const ctx = this;\n\n  if (spec.params) {\n    const op = ctx.get(spec.id);\n    if (!op) error('Invalid operator id: ' + spec.id);\n    ctx.dataflow.connect(op, op.parameters(ctx.parseParameters(spec.params), spec.react, spec.initonly));\n  }\n}\n\n/**\n * Parse a set of operator parameters.\n */\n\nfunction parseParameters(spec, params) {\n  params = params || {};\n  const ctx = this;\n\n  for (const key in spec) {\n    const value = spec[key];\n    params[key] = isArray(value) ? value.map(v => parseParameter(v, ctx, params)) : parseParameter(value, ctx, params);\n  }\n\n  return params;\n}\n/**\n * Parse a single parameter.\n */\n\nfunction parseParameter(spec, ctx, params) {\n  if (!spec || !isObject(spec)) return spec;\n\n  for (let i = 0, n = PARSERS.length, p; i < n; ++i) {\n    p = PARSERS[i];\n\n    if (hasOwnProperty(spec, p.key)) {\n      return p.parse(spec, ctx, params);\n    }\n  }\n\n  return spec;\n}\n/** Reference parsers. */\n\n\nvar PARSERS = [{\n  key: '$ref',\n  parse: getOperator\n}, {\n  key: '$key',\n  parse: getKey\n}, {\n  key: '$expr',\n  parse: getExpression\n}, {\n  key: '$field',\n  parse: getField\n}, {\n  key: '$encode',\n  parse: getEncode\n}, {\n  key: '$compare',\n  parse: getCompare\n}, {\n  key: '$context',\n  parse: getContext\n}, {\n  key: '$subflow',\n  parse: getSubflow\n}, {\n  key: '$tupleid',\n  parse: getTupleId\n}];\n/**\n * Resolve an operator reference.\n */\n\nfunction getOperator(_, ctx) {\n  return ctx.get(_.$ref) || error('Operator not defined: ' + _.$ref);\n}\n/**\n * Resolve an expression reference.\n */\n\n\nfunction getExpression(_, ctx, params) {\n  if (_.$params) {\n    // parse expression parameters\n    ctx.parseParameters(_.$params, params);\n  }\n\n  const k = 'e:' + _.$expr.code + '_' + _.$name;\n  return ctx.fn[k] || (ctx.fn[k] = accessor(ctx.parameterExpression(_.$expr), _.$fields, _.$name));\n}\n/**\n * Resolve a key accessor reference.\n */\n\n\nfunction getKey(_, ctx) {\n  const k = 'k:' + _.$key + '_' + !!_.$flat;\n  return ctx.fn[k] || (ctx.fn[k] = key(_.$key, _.$flat, ctx.expr.codegen));\n}\n/**\n * Resolve a field accessor reference.\n */\n\n\nfunction getField(_, ctx) {\n  if (!_.$field) return null;\n  const k = 'f:' + _.$field + '_' + _.$name;\n  return ctx.fn[k] || (ctx.fn[k] = field(_.$field, _.$name, ctx.expr.codegen));\n}\n/**\n * Resolve a comparator function reference.\n */\n\n\nfunction getCompare(_, ctx) {\n  // As of Vega 5.5.3, $tupleid sort is no longer used.\n  // Keep here for now for backwards compatibility.\n  const k = 'c:' + _.$compare + '_' + _.$order,\n        c = array(_.$compare).map(_ => _ && _.$tupleid ? tupleid : _);\n  return ctx.fn[k] || (ctx.fn[k] = compare(c, _.$order, ctx.expr.codegen));\n}\n/**\n * Resolve an encode operator reference.\n */\n\n\nfunction getEncode(_, ctx) {\n  const spec = _.$encode,\n        encode = {};\n\n  for (const name in spec) {\n    const enc = spec[name];\n    encode[name] = accessor(ctx.encodeExpression(enc.$expr), enc.$fields);\n    encode[name].output = enc.$output;\n  }\n\n  return encode;\n}\n/**\n * Resolve a context reference.\n */\n\n\nfunction getContext(_, ctx) {\n  return ctx;\n}\n/**\n * Resolve a recursive subflow specification.\n */\n\n\nfunction getSubflow(_, ctx) {\n  const spec = _.$subflow;\n  return function (dataflow, key, parent) {\n    const subctx = ctx.fork().parse(spec),\n          op = subctx.get(spec.operators[0].id),\n          p = subctx.signals.parent;\n    if (p) p.set(parent);\n\n    op.detachSubflow = () => ctx.detach(subctx);\n\n    return op;\n  };\n}\n/**\n * Resolve a tuple id reference.\n */\n\n\nfunction getTupleId() {\n  return tupleid;\n}\n\n/**\n * Parse an event stream specification.\n */\n\nfunction parseStream (spec) {\n  var ctx = this,\n      filter = spec.filter != null ? ctx.eventExpression(spec.filter) : undefined,\n      stream = spec.stream != null ? ctx.get(spec.stream) : undefined,\n      args;\n\n  if (spec.source) {\n    stream = ctx.events(spec.source, spec.type, filter);\n  } else if (spec.merge) {\n    args = spec.merge.map(_ => ctx.get(_));\n    stream = args[0].merge.apply(args[0], args.slice(1));\n  }\n\n  if (spec.between) {\n    args = spec.between.map(_ => ctx.get(_));\n    stream = stream.between(args[0], args[1]);\n  }\n\n  if (spec.filter) {\n    stream = stream.filter(filter);\n  }\n\n  if (spec.throttle != null) {\n    stream = stream.throttle(+spec.throttle);\n  }\n\n  if (spec.debounce != null) {\n    stream = stream.debounce(+spec.debounce);\n  }\n\n  if (stream == null) {\n    error('Invalid stream definition: ' + JSON.stringify(spec));\n  }\n\n  if (spec.consume) stream.consume(true);\n  ctx.stream(spec, stream);\n}\n\n/**\n * Parse an event-driven operator update.\n */\n\nfunction parseUpdate (spec) {\n  var ctx = this,\n      srcid = isObject(srcid = spec.source) ? srcid.$ref : srcid,\n      source = ctx.get(srcid),\n      target = null,\n      update = spec.update,\n      params = undefined;\n  if (!source) error('Source not defined: ' + spec.source);\n  target = spec.target && spec.target.$expr ? ctx.eventExpression(spec.target.$expr) : ctx.get(spec.target);\n\n  if (update && update.$expr) {\n    if (update.$params) {\n      params = ctx.parseParameters(update.$params);\n    }\n\n    update = ctx.handlerExpression(update.$expr);\n  }\n\n  ctx.update(spec, source, target, update, params);\n}\n\nconst SKIP = {\n  skip: true\n};\nfunction getState(options) {\n  var ctx = this,\n      state = {};\n\n  if (options.signals) {\n    var signals = state.signals = {};\n    Object.keys(ctx.signals).forEach(key => {\n      const op = ctx.signals[key];\n\n      if (options.signals(key, op)) {\n        signals[key] = op.value;\n      }\n    });\n  }\n\n  if (options.data) {\n    var data = state.data = {};\n    Object.keys(ctx.data).forEach(key => {\n      const dataset = ctx.data[key];\n\n      if (options.data(key, dataset)) {\n        data[key] = dataset.input.value;\n      }\n    });\n  }\n\n  if (ctx.subcontext && options.recurse !== false) {\n    state.subcontext = ctx.subcontext.map(ctx => ctx.getState(options));\n  }\n\n  return state;\n}\nfunction setState(state) {\n  var ctx = this,\n      df = ctx.dataflow,\n      data = state.data,\n      signals = state.signals;\n  Object.keys(signals || {}).forEach(key => {\n    df.update(ctx.signals[key], signals[key], SKIP);\n  });\n  Object.keys(data || {}).forEach(key => {\n    df.pulse(ctx.data[key].input, df.changeset().remove(truthy).insert(data[key]));\n  });\n  (state.subcontext || []).forEach((substate, i) => {\n    const subctx = ctx.subcontext[i];\n    if (subctx) subctx.setState(substate);\n  });\n}\n\n/**\n * Context objects store the current parse state.\n * Enables lookup of parsed operators, event streams, accessors, etc.\n * Provides a 'fork' method for creating child contexts for subflows.\n */\n\nfunction context (df, transforms, functions, expr) {\n  return new Context(df, transforms, functions, expr);\n}\n\nfunction Context(df, transforms, functions, expr) {\n  this.dataflow = df;\n  this.transforms = transforms;\n  this.events = df.events.bind(df);\n  this.expr = expr || expressionCodegen, this.signals = {};\n  this.scales = {};\n  this.nodes = {};\n  this.data = {};\n  this.fn = {};\n\n  if (functions) {\n    this.functions = Object.create(functions);\n    this.functions.context = this;\n  }\n}\n\nfunction Subcontext(ctx) {\n  this.dataflow = ctx.dataflow;\n  this.transforms = ctx.transforms;\n  this.events = ctx.events;\n  this.expr = ctx.expr;\n  this.signals = Object.create(ctx.signals);\n  this.scales = Object.create(ctx.scales);\n  this.nodes = Object.create(ctx.nodes);\n  this.data = Object.create(ctx.data);\n  this.fn = Object.create(ctx.fn);\n\n  if (ctx.functions) {\n    this.functions = Object.create(ctx.functions);\n    this.functions.context = this;\n  }\n}\n\nContext.prototype = Subcontext.prototype = {\n  fork() {\n    const ctx = new Subcontext(this);\n    (this.subcontext || (this.subcontext = [])).push(ctx);\n    return ctx;\n  },\n\n  detach(ctx) {\n    this.subcontext = this.subcontext.filter(c => c !== ctx); // disconnect all nodes in the subcontext\n    // wipe out targets first for better efficiency\n\n    const keys = Object.keys(ctx.nodes);\n\n    for (const key of keys) ctx.nodes[key]._targets = null;\n\n    for (const key of keys) ctx.nodes[key].detach();\n\n    ctx.nodes = null;\n  },\n\n  get(id) {\n    return this.nodes[id];\n  },\n\n  set(id, node) {\n    return this.nodes[id] = node;\n  },\n\n  add(spec, op) {\n    const ctx = this,\n          df = ctx.dataflow,\n          data = spec.value;\n    ctx.set(spec.id, op);\n\n    if (isCollect(spec.type) && data) {\n      if (data.$ingest) {\n        df.ingest(op, data.$ingest, data.$format);\n      } else if (data.$request) {\n        df.preload(op, data.$request, data.$format);\n      } else {\n        df.pulse(op, df.changeset().insert(data));\n      }\n    }\n\n    if (spec.root) {\n      ctx.root = op;\n    }\n\n    if (spec.parent) {\n      let p = ctx.get(spec.parent.$ref);\n\n      if (p) {\n        df.connect(p, [op]);\n        op.targets().add(p);\n      } else {\n        (ctx.unresolved = ctx.unresolved || []).push(() => {\n          p = ctx.get(spec.parent.$ref);\n          df.connect(p, [op]);\n          op.targets().add(p);\n        });\n      }\n    }\n\n    if (spec.signal) {\n      ctx.signals[spec.signal] = op;\n    }\n\n    if (spec.scale) {\n      ctx.scales[spec.scale] = op;\n    }\n\n    if (spec.data) {\n      for (const name in spec.data) {\n        const data = ctx.data[name] || (ctx.data[name] = {});\n        spec.data[name].forEach(role => data[role] = op);\n      }\n    }\n  },\n\n  resolve() {\n    (this.unresolved || []).forEach(fn => fn());\n    delete this.unresolved;\n    return this;\n  },\n\n  operator(spec, update) {\n    this.add(spec, this.dataflow.add(spec.value, update));\n  },\n\n  transform(spec, type) {\n    this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)]));\n  },\n\n  stream(spec, stream) {\n    this.set(spec.id, stream);\n  },\n\n  update(spec, stream, target, update, params) {\n    this.dataflow.on(stream, target, update, params, spec.options);\n  },\n\n  // expression parsing\n  operatorExpression(expr) {\n    return this.expr.operator(this, expr);\n  },\n\n  parameterExpression(expr) {\n    return this.expr.parameter(this, expr);\n  },\n\n  eventExpression(expr) {\n    return this.expr.event(this, expr);\n  },\n\n  handlerExpression(expr) {\n    return this.expr.handler(this, expr);\n  },\n\n  encodeExpression(encode) {\n    return this.expr.encode(this, encode);\n  },\n\n  // parse methods\n  parse,\n  parseOperator,\n  parseOperatorParameters,\n  parseParameters,\n  parseStream,\n  parseUpdate,\n  // state methods\n  getState,\n  setState\n};\n\nexport { context };\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer, total = delay;\n  if (delay == null) return t.restart(callback, delay, time), t;\n  t._restart = t.restart;\n  t.restart = function(callback, delay, time) {\n    delay = +delay, time = time == null ? now() : +time;\n    t._restart(function tick(elapsed) {\n      elapsed += total;\n      t._restart(tick, total += delay, time);\n      callback(elapsed);\n    }, delay, time);\n  }\n  t.restart(callback, delay, time);\n  return t;\n}\n","import { isString, hasOwnProperty, error, truthy, constant, extend, isArray, toSet, array, isObject, debounce, isDate, inherits, stringValue } from 'vega-util';\nimport { changeset, isChangeSet, EventStream, transforms, Dataflow, asyncCallback } from 'vega-dataflow';\nimport { point, renderModule, CanvasHandler, RenderType, Scenegraph } from 'vega-scenegraph';\nimport { tickStep } from 'd3-array';\nimport { functionContext } from 'vega-functions';\nimport { context } from 'vega-runtime';\nimport { interval } from 'd3-timer';\nimport { locale } from 'vega-format';\n\n// initialize aria role and label attributes\nfunction initializeAria(view) {\n  const el = view.container();\n\n  if (el) {\n    el.setAttribute('role', 'graphics-document');\n    el.setAttribute('aria-roleDescription', 'visualization');\n    ariaLabel(el, view.description());\n  }\n} // update aria-label if we have a DOM container element\n\nfunction ariaLabel(el, desc) {\n  if (el) desc == null ? el.removeAttribute('aria-label') : el.setAttribute('aria-label', desc);\n}\n\nfunction background (view) {\n  // respond to background signal\n  view.add(null, _ => {\n    view._background = _.bg;\n    view._resize = 1;\n    return _.bg;\n  }, {\n    bg: view._signals.background\n  });\n}\n\nconst Default = 'default';\nfunction cursor (view) {\n  // get cursor signal, add to dataflow if needed\n  const cursor = view._signals.cursor || (view._signals.cursor = view.add({\n    user: Default,\n    item: null\n  })); // evaluate cursor on each mousemove event\n\n  view.on(view.events('view', 'mousemove'), cursor, (_, event) => {\n    const value = cursor.value,\n          user = value ? isString(value) ? value : value.user : Default,\n          item = event.item && event.item.cursor || null;\n    return value && user === value.user && item == value.item ? value : {\n      user: user,\n      item: item\n    };\n  }); // when cursor signal updates, set visible cursor\n\n  view.add(null, function (_) {\n    let user = _.cursor,\n        item = this.value;\n\n    if (!isString(user)) {\n      item = user.item;\n      user = user.user;\n    }\n\n    setCursor(view, user && user !== Default ? user : item || user);\n    return item;\n  }, {\n    cursor: cursor\n  });\n}\nfunction setCursor(view, cursor) {\n  const el = view.globalCursor() ? typeof document !== 'undefined' && document.body : view.container();\n\n  if (el) {\n    return cursor == null ? el.style.removeProperty('cursor') : el.style.cursor = cursor;\n  }\n}\n\nfunction dataref(view, name) {\n  var data = view._runtime.data;\n\n  if (!hasOwnProperty(data, name)) {\n    error('Unrecognized data set: ' + name);\n  }\n\n  return data[name];\n}\nfunction data(name, values) {\n  return arguments.length < 2 ? dataref(this, name).values.value : change.call(this, name, changeset().remove(truthy).insert(values));\n}\nfunction change(name, changes) {\n  if (!isChangeSet(changes)) {\n    error('Second argument to changes must be a changeset.');\n  }\n\n  const dataset = dataref(this, name);\n  dataset.modified = true;\n  return this.pulse(dataset.input, changes);\n}\nfunction insert(name, _) {\n  return change.call(this, name, changeset().insert(_));\n}\nfunction remove(name, _) {\n  return change.call(this, name, changeset().remove(_));\n}\n\nfunction width(view) {\n  var padding = view.padding();\n  return Math.max(0, view._viewWidth + padding.left + padding.right);\n}\nfunction height(view) {\n  var padding = view.padding();\n  return Math.max(0, view._viewHeight + padding.top + padding.bottom);\n}\nfunction offset(view) {\n  var padding = view.padding(),\n      origin = view._origin;\n  return [padding.left + origin[0], padding.top + origin[1]];\n}\nfunction resizeRenderer(view) {\n  var origin = offset(view),\n      w = width(view),\n      h = height(view);\n\n  view._renderer.background(view.background());\n\n  view._renderer.resize(w, h, origin);\n\n  view._handler.origin(origin);\n\n  view._resizeListeners.forEach(handler => {\n    try {\n      handler(w, h);\n    } catch (error) {\n      view.error(error);\n    }\n  });\n}\n\n/**\n * Extend an event with additional view-specific methods.\n * Adds a new property ('vega') to an event that provides a number\n * of methods for querying information about the current interaction.\n * The vega object provides the following methods:\n *   view - Returns the backing View instance.\n *   item - Returns the currently active scenegraph item (if any).\n *   group - Returns the currently active scenegraph group (if any).\n *     This method accepts a single string-typed argument indicating the name\n *     of the desired parent group. The scenegraph will be traversed from\n *     the item up towards the root to search for a matching group. If no\n *     argument is provided the enclosing group for the active item is\n *     returned, unless the item it itself a group, in which case it is\n *     returned directly.\n *   xy - Returns a two-element array containing the x and y coordinates for\n *     mouse or touch events. For touch events, this is based on the first\n *     elements in the changedTouches array. This method accepts a single\n *     argument: either an item instance or mark name that should serve as\n *     the reference coordinate system. If no argument is provided the\n *     top-level view coordinate system is assumed.\n *   x - Returns the current x-coordinate, accepts the same arguments as xy.\n *   y - Returns the current y-coordinate, accepts the same arguments as xy.\n * @param {Event} event - The input event to extend.\n * @param {Item} item - The currently active scenegraph item (if any).\n * @return {Event} - The extended input event.\n */\n\nfunction eventExtend (view, event, item) {\n  var r = view._renderer,\n      el = r && r.canvas(),\n      p,\n      e,\n      translate;\n\n  if (el) {\n    translate = offset(view);\n    e = event.changedTouches ? event.changedTouches[0] : event;\n    p = point(e, el);\n    p[0] -= translate[0];\n    p[1] -= translate[1];\n  }\n\n  event.dataflow = view;\n  event.item = item;\n  event.vega = extension(view, item, p);\n  return event;\n}\n\nfunction extension(view, item, point) {\n  const itemGroup = item ? item.mark.marktype === 'group' ? item : item.mark.group : null;\n\n  function group(name) {\n    var g = itemGroup,\n        i;\n    if (name) for (i = item; i; i = i.mark.group) {\n      if (i.mark.name === name) {\n        g = i;\n        break;\n      }\n    }\n    return g && g.mark && g.mark.interactive ? g : {};\n  }\n\n  function xy(item) {\n    if (!item) return point;\n    if (isString(item)) item = group(item);\n    const p = point.slice();\n\n    while (item) {\n      p[0] -= item.x || 0;\n      p[1] -= item.y || 0;\n      item = item.mark && item.mark.group;\n    }\n\n    return p;\n  }\n\n  return {\n    view: constant(view),\n    item: constant(item || {}),\n    group: group,\n    xy: xy,\n    x: item => xy(item)[0],\n    y: item => xy(item)[1]\n  };\n}\n\nconst VIEW = 'view',\n      TIMER = 'timer',\n      WINDOW = 'window',\n      NO_TRAP = {\n  trap: false\n};\n/**\n * Initialize event handling configuration.\n * @param {object} config - The configuration settings.\n * @return {object}\n */\n\nfunction initializeEventConfig(config) {\n  const events = extend({\n    defaults: {}\n  }, config);\n\n  const unpack = (obj, keys) => {\n    keys.forEach(k => {\n      if (isArray(obj[k])) obj[k] = toSet(obj[k]);\n    });\n  };\n\n  unpack(events.defaults, ['prevent', 'allow']);\n  unpack(events, ['view', 'window', 'selector']);\n  return events;\n}\nfunction trackEventListener(view, sources, type, handler) {\n  view._eventListeners.push({\n    type: type,\n    sources: array(sources),\n    handler: handler\n  });\n}\n\nfunction prevent(view, type) {\n  var def = view._eventConfig.defaults,\n      prevent = def.prevent,\n      allow = def.allow;\n  return prevent === false || allow === true ? false : prevent === true || allow === false ? true : prevent ? prevent[type] : allow ? !allow[type] : view.preventDefault();\n}\n\nfunction permit(view, key, type) {\n  const rule = view._eventConfig && view._eventConfig[key];\n\n  if (rule === false || isObject(rule) && !rule[type]) {\n    view.warn(`Blocked ${key} ${type} event listener.`);\n    return false;\n  }\n\n  return true;\n}\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @return {EventStream}\n */\n\n\nfunction events(source, type, filter) {\n  var view = this,\n      s = new EventStream(filter),\n      send = function (e, item) {\n    view.runAsync(null, () => {\n      if (source === VIEW && prevent(view, type)) {\n        e.preventDefault();\n      }\n\n      s.receive(eventExtend(view, e, item));\n    });\n  },\n      sources;\n\n  if (source === TIMER) {\n    if (permit(view, 'timer', type)) {\n      view.timer(send, type);\n    }\n  } else if (source === VIEW) {\n    if (permit(view, 'view', type)) {\n      // send traps errors, so use {trap: false} option\n      view.addEventListener(type, send, NO_TRAP);\n    }\n  } else {\n    if (source === WINDOW) {\n      if (permit(view, 'window', type) && typeof window !== 'undefined') {\n        sources = [window];\n      }\n    } else if (typeof document !== 'undefined') {\n      if (permit(view, 'selector', type)) {\n        sources = document.querySelectorAll(source);\n      }\n    }\n\n    if (!sources) {\n      view.warn('Can not resolve event source: ' + source);\n    } else {\n      for (var i = 0, n = sources.length; i < n; ++i) {\n        sources[i].addEventListener(type, send);\n      }\n\n      trackEventListener(view, sources, type, send);\n    }\n  }\n\n  return s;\n}\n\nfunction itemFilter(event) {\n  return event.item;\n}\n\nfunction markTarget(event) {\n  // grab upstream collector feeding the mark operator\n  return event.item.mark.source;\n}\n\nfunction invoke(name) {\n  return function (_, event) {\n    return event.vega.view().changeset().encode(event.item, name);\n  };\n}\n\nfunction hover (hoverSet, leaveSet) {\n  hoverSet = [hoverSet || 'hover'];\n  leaveSet = [leaveSet || 'update', hoverSet[0]]; // invoke hover set upon mouseover\n\n  this.on(this.events('view', 'mouseover', itemFilter), markTarget, invoke(hoverSet)); // invoke leave set upon mouseout\n\n  this.on(this.events('view', 'mouseout', itemFilter), markTarget, invoke(leaveSet));\n  return this;\n}\n\n/**\n * Finalize a View instance that is being removed.\n * Cancel any running timers.\n * Remove all external event listeners.\n * Remove any currently displayed tooltip.\n */\nfunction finalize () {\n  var tooltip = this._tooltip,\n      timers = this._timers,\n      listeners = this._eventListeners,\n      n,\n      m,\n      e;\n  n = timers.length;\n\n  while (--n >= 0) {\n    timers[n].stop();\n  }\n\n  n = listeners.length;\n\n  while (--n >= 0) {\n    e = listeners[n];\n    m = e.sources.length;\n\n    while (--m >= 0) {\n      e.sources[m].removeEventListener(e.type, e.handler);\n    }\n  }\n\n  if (tooltip) {\n    tooltip.call(this, this._handler, null, null, null);\n  }\n\n  return this;\n}\n\nfunction element (tag, attr, text) {\n  const el = document.createElement(tag);\n\n  for (const key in attr) el.setAttribute(key, attr[key]);\n\n  if (text != null) el.textContent = text;\n  return el;\n}\n\nconst BindClass = 'vega-bind',\n      NameClass = 'vega-bind-name',\n      RadioClass = 'vega-bind-radio';\n/**\n * Bind a signal to an external HTML input element. The resulting two-way\n * binding will propagate input changes to signals, and propagate signal\n * changes to the input element state. If this view instance has no parent\n * element, we assume the view is headless and no bindings are created.\n * @param {Element|string} el - The parent DOM element to which the input\n *   element should be appended as a child. If string-valued, this argument\n *   will be treated as a CSS selector. If null or undefined, the parent\n *   element of this view will be used as the element.\n * @param {object} param - The binding parameters which specify the signal\n *   to bind to, the input element type, and type-specific configuration.\n * @return {View} - This view instance.\n */\n\nfunction bind (view, el, binding) {\n  if (!el) return;\n  const param = binding.param;\n  let bind = binding.state;\n\n  if (!bind) {\n    bind = binding.state = {\n      elements: null,\n      active: false,\n      set: null,\n      update: value => {\n        if (value != view.signal(param.signal)) {\n          view.runAsync(null, () => {\n            bind.source = true;\n            view.signal(param.signal, value);\n          });\n        }\n      }\n    };\n\n    if (param.debounce) {\n      bind.update = debounce(param.debounce, bind.update);\n    }\n  }\n\n  const create = param.input == null && param.element ? target : generate;\n  create(bind, el, param, view);\n\n  if (!bind.active) {\n    view.on(view._signals[param.signal], null, () => {\n      bind.source ? bind.source = false : bind.set(view.signal(param.signal));\n    });\n    bind.active = true;\n  }\n\n  return bind;\n}\n/**\n * Bind the signal to an external EventTarget.\n */\n\nfunction target(bind, node, param, view) {\n  const type = param.event || 'input';\n\n  const handler = () => bind.update(node.value); // initialize signal value to external input value\n\n\n  view.signal(param.signal, node.value); // listen for changes on the element\n\n  node.addEventListener(type, handler); // register with view, so we can remove it upon finalization\n\n  trackEventListener(view, node, type, handler); // propagate change to element\n\n  bind.set = value => {\n    node.value = value;\n    node.dispatchEvent(event(type));\n  };\n}\n\nfunction event(type) {\n  return typeof Event !== 'undefined' ? new Event(type) : {\n    type\n  };\n}\n/**\n * Generate an HTML input form element and bind it to a signal.\n */\n\n\nfunction generate(bind, el, param, view) {\n  const value = view.signal(param.signal);\n  const div = element('div', {\n    'class': BindClass\n  });\n  const wrapper = param.input === 'radio' ? div : div.appendChild(element('label'));\n  wrapper.appendChild(element('span', {\n    'class': NameClass\n  }, param.name || param.signal));\n  el.appendChild(div);\n  let input = form;\n\n  switch (param.input) {\n    case 'checkbox':\n      input = checkbox;\n      break;\n\n    case 'select':\n      input = select;\n      break;\n\n    case 'radio':\n      input = radio;\n      break;\n\n    case 'range':\n      input = range;\n      break;\n  }\n\n  input(bind, wrapper, param, value);\n}\n/**\n * Generates an arbitrary input form element.\n * The input type is controlled via user-provided parameters.\n */\n\n\nfunction form(bind, el, param, value) {\n  const node = element('input');\n\n  for (const key in param) {\n    if (key !== 'signal' && key !== 'element') {\n      node.setAttribute(key === 'input' ? 'type' : key, param[key]);\n    }\n  }\n\n  node.setAttribute('name', param.signal);\n  node.value = value;\n  el.appendChild(node);\n  node.addEventListener('input', () => bind.update(node.value));\n  bind.elements = [node];\n\n  bind.set = value => node.value = value;\n}\n/**\n * Generates a checkbox input element.\n */\n\n\nfunction checkbox(bind, el, param, value) {\n  const attr = {\n    type: 'checkbox',\n    name: param.signal\n  };\n  if (value) attr.checked = true;\n  const node = element('input', attr);\n  el.appendChild(node);\n  node.addEventListener('change', () => bind.update(node.checked));\n  bind.elements = [node];\n\n  bind.set = value => node.checked = !!value || null;\n}\n/**\n * Generates a selection list input element.\n */\n\n\nfunction select(bind, el, param, value) {\n  const node = element('select', {\n    name: param.signal\n  }),\n        labels = param.labels || [];\n  param.options.forEach((option, i) => {\n    const attr = {\n      value: option\n    };\n    if (valuesEqual(option, value)) attr.selected = true;\n    node.appendChild(element('option', attr, (labels[i] || option) + ''));\n  });\n  el.appendChild(node);\n  node.addEventListener('change', () => {\n    bind.update(param.options[node.selectedIndex]);\n  });\n  bind.elements = [node];\n\n  bind.set = value => {\n    for (let i = 0, n = param.options.length; i < n; ++i) {\n      if (valuesEqual(param.options[i], value)) {\n        node.selectedIndex = i;\n        return;\n      }\n    }\n  };\n}\n/**\n * Generates a radio button group.\n */\n\n\nfunction radio(bind, el, param, value) {\n  const group = element('span', {\n    'class': RadioClass\n  }),\n        labels = param.labels || [];\n  el.appendChild(group);\n  bind.elements = param.options.map((option, i) => {\n    const attr = {\n      type: 'radio',\n      name: param.signal,\n      value: option\n    };\n    if (valuesEqual(option, value)) attr.checked = true;\n    const input = element('input', attr);\n    input.addEventListener('change', () => bind.update(option));\n    const label = element('label', {}, (labels[i] || option) + '');\n    label.prepend(input);\n    group.appendChild(label);\n    return input;\n  });\n\n  bind.set = value => {\n    const nodes = bind.elements,\n          n = nodes.length;\n\n    for (let i = 0; i < n; ++i) {\n      if (valuesEqual(nodes[i].value, value)) nodes[i].checked = true;\n    }\n  };\n}\n/**\n * Generates a slider input element.\n */\n\n\nfunction range(bind, el, param, value) {\n  value = value !== undefined ? value : (+param.max + +param.min) / 2;\n  const max = param.max != null ? param.max : Math.max(100, +value) || 100,\n        min = param.min || Math.min(0, max, +value) || 0,\n        step = param.step || tickStep(min, max, 100);\n  const node = element('input', {\n    type: 'range',\n    name: param.signal,\n    min: min,\n    max: max,\n    step: step\n  });\n  node.value = value;\n  const span = element('span', {}, +value);\n  el.appendChild(node);\n  el.appendChild(span);\n\n  const update = () => {\n    span.textContent = node.value;\n    bind.update(+node.value);\n  }; // subscribe to both input and change\n\n\n  node.addEventListener('input', update);\n  node.addEventListener('change', update);\n  bind.elements = [node];\n\n  bind.set = value => {\n    node.value = value;\n    span.textContent = value;\n  };\n}\n\nfunction valuesEqual(a, b) {\n  return a === b || a + '' === b + '';\n}\n\nfunction initializeRenderer (view, r, el, constructor, scaleFactor, opt) {\n  r = r || new constructor(view.loader());\n  return r.initialize(el, width(view), height(view), offset(view), scaleFactor, opt).background(view.background());\n}\n\nfunction trap (view, fn) {\n  return !fn ? null : function () {\n    try {\n      fn.apply(this, arguments);\n    } catch (error) {\n      view.error(error);\n    }\n  };\n}\n\nfunction initializeHandler (view, prevHandler, el, constructor) {\n  // instantiate scenegraph handler\n  const handler = new constructor(view.loader(), trap(view, view.tooltip())).scene(view.scenegraph().root).initialize(el, offset(view), view); // transfer event handlers\n\n  if (prevHandler) {\n    prevHandler.handlers().forEach(h => {\n      handler.on(h.type, h.handler);\n    });\n  }\n\n  return handler;\n}\n\nfunction initialize (el, elBind) {\n  const view = this,\n        type = view._renderType,\n        config = view._eventConfig.bind,\n        module = renderModule(type); // containing dom element\n\n  el = view._el = el ? lookup(view, el, true) : null; // initialize aria attributes\n\n  initializeAria(view); // select appropriate renderer & handler\n\n  if (!module) view.error('Unrecognized renderer type: ' + type);\n  const Handler = module.handler || CanvasHandler,\n        Renderer = el ? module.renderer : module.headless; // initialize renderer and input handler\n\n  view._renderer = !Renderer ? null : initializeRenderer(view, view._renderer, el, Renderer);\n  view._handler = initializeHandler(view, view._handler, el, Handler);\n  view._redraw = true; // initialize signal bindings\n\n  if (el && config !== 'none') {\n    elBind = elBind ? view._elBind = lookup(view, elBind, true) : el.appendChild(element('form', {\n      'class': 'vega-bindings'\n    }));\n\n    view._bind.forEach(_ => {\n      if (_.param.element && config !== 'container') {\n        _.element = lookup(view, _.param.element, !!_.param.input);\n      }\n    });\n\n    view._bind.forEach(_ => {\n      bind(view, _.element || elBind, _);\n    });\n  }\n\n  return view;\n}\n\nfunction lookup(view, el, clear) {\n  if (typeof el === 'string') {\n    if (typeof document !== 'undefined') {\n      el = document.querySelector(el);\n\n      if (!el) {\n        view.error('Signal bind element not found: ' + el);\n        return null;\n      }\n    } else {\n      view.error('DOM document instance not found.');\n      return null;\n    }\n  }\n\n  if (el && clear) {\n    try {\n      el.innerHTML = '';\n    } catch (e) {\n      el = null;\n      view.error(e);\n    }\n  }\n\n  return el;\n}\n\nconst number = _ => +_ || 0;\n\nconst paddingObject = _ => ({\n  top: _,\n  bottom: _,\n  left: _,\n  right: _\n});\n\nfunction padding (_) {\n  return isObject(_) ? {\n    top: number(_.top),\n    bottom: number(_.bottom),\n    left: number(_.left),\n    right: number(_.right)\n  } : paddingObject(number(_));\n}\n\n/**\n * Render the current scene in a headless fashion.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A Promise that resolves to a renderer.\n */\n\nasync function renderHeadless (view, type, scaleFactor, opt) {\n  const module = renderModule(type),\n        ctr = module && module.headless;\n  if (!ctr) error('Unrecognized renderer type: ' + type);\n  await view.runAsync();\n  return initializeRenderer(view, null, null, ctr, scaleFactor, opt).renderAsync(view._scenegraph.root);\n}\n\n/**\n * Produce an image URL for the visualization. Depending on the type\n * parameter, the generated URL contains data for either a PNG or SVG image.\n * The URL can be used (for example) to download images of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @param {string} type - The image type. One of 'svg', 'png' or 'canvas'.\n *   The 'canvas' and 'png' types are synonyms for a PNG image.\n * @return {Promise} - A promise that resolves to an image URL.\n */\n\nasync function renderToImageURL (type, scaleFactor) {\n  if (type !== RenderType.Canvas && type !== RenderType.SVG && type !== RenderType.PNG) {\n    error('Unrecognized image type: ' + type);\n  }\n\n  const r = await renderHeadless(this, type, scaleFactor);\n  return type === RenderType.SVG ? toBlobURL(r.svg(), 'image/svg+xml') : r.canvas().toDataURL('image/png');\n}\n\nfunction toBlobURL(data, mime) {\n  const blob = new Blob([data], {\n    type: mime\n  });\n  return window.URL.createObjectURL(blob);\n}\n\n/**\n * Produce a Canvas instance containing a rendered visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to a Canvas instance.\n */\n\nasync function renderToCanvas (scaleFactor, opt) {\n  const r = await renderHeadless(this, RenderType.Canvas, scaleFactor, opt);\n  return r.canvas();\n}\n\n/**\n * Produce a rendered SVG string of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to an SVG string.\n */\n\nasync function renderToSVG (scaleFactor) {\n  const r = await renderHeadless(this, RenderType.SVG, scaleFactor);\n  return r.svg();\n}\n\nfunction runtime (view, spec, expr) {\n  return context(view, transforms, functionContext, expr).parse(spec);\n}\n\nfunction scale(name) {\n  var scales = this._runtime.scales;\n\n  if (!hasOwnProperty(scales, name)) {\n    error('Unrecognized scale or projection: ' + name);\n  }\n\n  return scales[name].value;\n}\n\nvar Width = 'width',\n    Height = 'height',\n    Padding = 'padding',\n    Skip = {\n  skip: true\n};\nfunction viewWidth(view, width) {\n  var a = view.autosize(),\n      p = view.padding();\n  return width - (a && a.contains === Padding ? p.left + p.right : 0);\n}\nfunction viewHeight(view, height) {\n  var a = view.autosize(),\n      p = view.padding();\n  return height - (a && a.contains === Padding ? p.top + p.bottom : 0);\n}\nfunction initializeResize(view) {\n  var s = view._signals,\n      w = s[Width],\n      h = s[Height],\n      p = s[Padding];\n\n  function resetSize() {\n    view._autosize = view._resize = 1;\n  } // respond to width signal\n\n\n  view._resizeWidth = view.add(null, _ => {\n    view._width = _.size;\n    view._viewWidth = viewWidth(view, _.size);\n    resetSize();\n  }, {\n    size: w\n  }); // respond to height signal\n\n  view._resizeHeight = view.add(null, _ => {\n    view._height = _.size;\n    view._viewHeight = viewHeight(view, _.size);\n    resetSize();\n  }, {\n    size: h\n  }); // respond to padding signal\n\n  const resizePadding = view.add(null, resetSize, {\n    pad: p\n  }); // set rank to run immediately after source signal\n\n  view._resizeWidth.rank = w.rank + 1;\n  view._resizeHeight.rank = h.rank + 1;\n  resizePadding.rank = p.rank + 1;\n}\nfunction resizeView(viewWidth, viewHeight, width, height, origin, auto) {\n  this.runAfter(view => {\n    let rerun = 0; // reset autosize flag\n\n    view._autosize = 0; // width value changed: update signal, skip resize op\n\n    if (view.width() !== width) {\n      rerun = 1;\n      view.signal(Width, width, Skip); // set width, skip update calc\n\n      view._resizeWidth.skip(true); // skip width resize handler\n\n    } // height value changed: update signal, skip resize op\n\n\n    if (view.height() !== height) {\n      rerun = 1;\n      view.signal(Height, height, Skip); // set height, skip update calc\n\n      view._resizeHeight.skip(true); // skip height resize handler\n\n    } // view width changed: update view property, set resize flag\n\n\n    if (view._viewWidth !== viewWidth) {\n      view._resize = 1;\n      view._viewWidth = viewWidth;\n    } // view height changed: update view property, set resize flag\n\n\n    if (view._viewHeight !== viewHeight) {\n      view._resize = 1;\n      view._viewHeight = viewHeight;\n    } // origin changed: update view property, set resize flag\n\n\n    if (view._origin[0] !== origin[0] || view._origin[1] !== origin[1]) {\n      view._resize = 1;\n      view._origin = origin;\n    } // run dataflow on width/height signal change\n\n\n    if (rerun) view.run('enter');\n    if (auto) view.runAfter(v => v.resize());\n  }, false, 1);\n}\n\n/**\n * Get the current view state, consisting of signal values and/or data sets.\n * @param {object} [options] - Options flags indicating which state to export.\n *   If unspecified, all signals and data sets will be exported.\n * @param {function(string, Operator):boolean} [options.signals] - Optional\n *   predicate function for testing if a signal should be included in the\n *   exported state. If unspecified, all signals will be included, except for\n *   those named 'parent' or those which refer to a Transform value.\n * @param {function(string, object):boolean} [options.data] - Optional\n *   predicate function for testing if a data set's input should be included\n *   in the exported state. If unspecified, all data sets that have been\n *   explicitly modified will be included.\n * @param {boolean} [options.recurse=true] - Flag indicating if the exported\n *   state should recursively include state from group mark sub-contexts.\n * @return {object} - An object containing the exported state values.\n */\n\nfunction getState(options) {\n  return this._runtime.getState(options || {\n    data: dataTest,\n    signals: signalTest,\n    recurse: true\n  });\n}\n\nfunction dataTest(name, data) {\n  return data.modified && isArray(data.input.value) && name.indexOf('_:vega:_');\n}\n\nfunction signalTest(name, op) {\n  return !(name === 'parent' || op instanceof transforms.proxy);\n}\n/**\n * Sets the current view state and updates the view by invoking run.\n * @param {object} state - A state object containing signal and/or\n *   data set values, following the format used by the getState method.\n * @return {View} - This view instance.\n */\n\n\nfunction setState(state) {\n  this.runAsync(null, v => {\n    v._trigger = false;\n\n    v._runtime.setState(state);\n  }, v => {\n    v._trigger = true;\n  });\n  return this;\n}\n\nfunction timer (callback, delay) {\n  function tick(elapsed) {\n    callback({\n      timestamp: Date.now(),\n      elapsed: elapsed\n    });\n  }\n\n  this._timers.push(interval(tick, delay));\n}\n\nfunction defaultTooltip (handler, event, item, value) {\n  const el = handler.element();\n  if (el) el.setAttribute('title', formatTooltip(value));\n}\n\nfunction formatTooltip(value) {\n  return value == null ? '' : isArray(value) ? formatArray(value) : isObject(value) && !isDate(value) ? formatObject(value) : value + '';\n}\n\nfunction formatObject(obj) {\n  return Object.keys(obj).map(key => {\n    const v = obj[key];\n    return key + ': ' + (isArray(v) ? formatArray(v) : formatValue(v));\n  }).join('\\n');\n}\n\nfunction formatArray(value) {\n  return '[' + value.map(formatValue).join(', ') + ']';\n}\n\nfunction formatValue(value) {\n  return isArray(value) ? '[\\u2026]' : isObject(value) && !isDate(value) ? '{\\u2026}' : value;\n}\n\n/**\n * Create a new View instance from a Vega dataflow runtime specification.\n * The generated View will not immediately be ready for display. Callers\n * should also invoke the initialize method (e.g., to set the parent\n * DOM element in browser-based deployment) and then invoke the run\n * method to evaluate the dataflow graph. Rendering will automatically\n * be performed upon dataflow runs.\n * @constructor\n * @param {object} spec - The Vega dataflow runtime specification.\n */\n\nfunction View(spec, options) {\n  const view = this;\n  options = options || {};\n  Dataflow.call(view);\n  if (options.loader) view.loader(options.loader);\n  if (options.logger) view.logger(options.logger);\n  if (options.logLevel != null) view.logLevel(options.logLevel);\n\n  if (options.locale || spec.locale) {\n    const loc = extend({}, spec.locale, options.locale);\n    view.locale(locale(loc.number, loc.time));\n  }\n\n  view._el = null;\n  view._elBind = null;\n  view._renderType = options.renderer || RenderType.Canvas;\n  view._scenegraph = new Scenegraph();\n  const root = view._scenegraph.root; // initialize renderer, handler and event management\n\n  view._renderer = null;\n  view._tooltip = options.tooltip || defaultTooltip, view._redraw = true;\n  view._handler = new CanvasHandler().scene(root);\n  view._globalCursor = false;\n  view._preventDefault = false;\n  view._timers = [];\n  view._eventListeners = [];\n  view._resizeListeners = []; // initialize event configuration\n\n  view._eventConfig = initializeEventConfig(spec.eventConfig);\n  view.globalCursor(view._eventConfig.globalCursor); // initialize dataflow graph\n\n  const ctx = runtime(view, spec, options.expr);\n  view._runtime = ctx;\n  view._signals = ctx.signals;\n  view._bind = (spec.bindings || []).map(_ => ({\n    state: null,\n    param: extend({}, _)\n  })); // initialize scenegraph\n\n  if (ctx.root) ctx.root.set(root);\n  root.source = ctx.data.root.input;\n  view.pulse(ctx.data.root.input, view.changeset().insert(root.items)); // initialize view size\n\n  view._width = view.width();\n  view._height = view.height();\n  view._viewWidth = viewWidth(view, view._width);\n  view._viewHeight = viewHeight(view, view._height);\n  view._origin = [0, 0];\n  view._resize = 0;\n  view._autosize = 1;\n  initializeResize(view); // initialize background color\n\n  background(view); // initialize cursor\n\n  cursor(view); // initialize view description\n\n  view.description(spec.description); // initialize hover proessing, if requested\n\n  if (options.hover) view.hover(); // initialize DOM container(s) and renderer\n\n  if (options.container) view.initialize(options.container, options.bind);\n}\n\nfunction lookupSignal(view, name) {\n  return hasOwnProperty(view._signals, name) ? view._signals[name] : error('Unrecognized signal name: ' + stringValue(name));\n}\n\nfunction findOperatorHandler(op, handler) {\n  const h = (op._targets || []).filter(op => op._update && op._update.handler === handler);\n  return h.length ? h[0] : null;\n}\n\nfunction addOperatorListener(view, name, op, handler) {\n  let h = findOperatorHandler(op, handler);\n\n  if (!h) {\n    h = trap(view, () => handler(name, op.value));\n    h.handler = handler;\n    view.on(op, null, h);\n  }\n\n  return view;\n}\n\nfunction removeOperatorListener(view, op, handler) {\n  const h = findOperatorHandler(op, handler);\n  if (h) op._targets.remove(h);\n  return view;\n}\n\ninherits(View, Dataflow, {\n  // -- DATAFLOW / RENDERING ----\n  async evaluate(encode, prerun, postrun) {\n    // evaluate dataflow and prerun\n    await Dataflow.prototype.evaluate.call(this, encode, prerun); // render as needed\n\n    if (this._redraw || this._resize) {\n      try {\n        if (this._renderer) {\n          if (this._resize) {\n            this._resize = 0;\n            resizeRenderer(this);\n          }\n\n          await this._renderer.renderAsync(this._scenegraph.root);\n        }\n\n        this._redraw = false;\n      } catch (e) {\n        this.error(e);\n      }\n    } // evaluate postrun\n\n\n    if (postrun) asyncCallback(this, postrun);\n    return this;\n  },\n\n  dirty(item) {\n    this._redraw = true;\n    this._renderer && this._renderer.dirty(item);\n  },\n\n  // -- GET / SET ----\n  description(text) {\n    if (arguments.length) {\n      const desc = text != null ? text + '' : null;\n      if (desc !== this._desc) ariaLabel(this._el, this._desc = desc);\n      return this;\n    }\n\n    return this._desc;\n  },\n\n  container() {\n    return this._el;\n  },\n\n  scenegraph() {\n    return this._scenegraph;\n  },\n\n  origin() {\n    return this._origin.slice();\n  },\n\n  signal(name, value, options) {\n    const op = lookupSignal(this, name);\n    return arguments.length === 1 ? op.value : this.update(op, value, options);\n  },\n\n  width(_) {\n    return arguments.length ? this.signal('width', _) : this.signal('width');\n  },\n\n  height(_) {\n    return arguments.length ? this.signal('height', _) : this.signal('height');\n  },\n\n  padding(_) {\n    return arguments.length ? this.signal('padding', padding(_)) : padding(this.signal('padding'));\n  },\n\n  autosize(_) {\n    return arguments.length ? this.signal('autosize', _) : this.signal('autosize');\n  },\n\n  background(_) {\n    return arguments.length ? this.signal('background', _) : this.signal('background');\n  },\n\n  renderer(type) {\n    if (!arguments.length) return this._renderType;\n    if (!renderModule(type)) error('Unrecognized renderer type: ' + type);\n\n    if (type !== this._renderType) {\n      this._renderType = type;\n\n      this._resetRenderer();\n    }\n\n    return this;\n  },\n\n  tooltip(handler) {\n    if (!arguments.length) return this._tooltip;\n\n    if (handler !== this._tooltip) {\n      this._tooltip = handler;\n\n      this._resetRenderer();\n    }\n\n    return this;\n  },\n\n  loader(loader) {\n    if (!arguments.length) return this._loader;\n\n    if (loader !== this._loader) {\n      Dataflow.prototype.loader.call(this, loader);\n\n      this._resetRenderer();\n    }\n\n    return this;\n  },\n\n  resize() {\n    // set flag to perform autosize\n    this._autosize = 1; // touch autosize signal to ensure top-level ViewLayout runs\n\n    return this.touch(lookupSignal(this, 'autosize'));\n  },\n\n  _resetRenderer() {\n    if (this._renderer) {\n      this._renderer = null;\n      this.initialize(this._el, this._elBind);\n    }\n  },\n\n  // -- SIZING ----\n  _resizeView: resizeView,\n\n  // -- EVENT HANDLING ----\n  addEventListener(type, handler, options) {\n    let callback = handler;\n\n    if (!(options && options.trap === false)) {\n      // wrap callback in error handler\n      callback = trap(this, handler);\n      callback.raw = handler;\n    }\n\n    this._handler.on(type, callback);\n\n    return this;\n  },\n\n  removeEventListener(type, handler) {\n    var handlers = this._handler.handlers(type),\n        i = handlers.length,\n        h,\n        t; // search registered handlers, remove if match found\n\n\n    while (--i >= 0) {\n      t = handlers[i].type;\n      h = handlers[i].handler;\n\n      if (type === t && (handler === h || handler === h.raw)) {\n        this._handler.off(t, h);\n\n        break;\n      }\n    }\n\n    return this;\n  },\n\n  addResizeListener(handler) {\n    const l = this._resizeListeners;\n\n    if (l.indexOf(handler) < 0) {\n      // add handler if it isn't already registered\n      // note: error trapping handled elsewhere, so\n      // no need to wrap handlers here\n      l.push(handler);\n    }\n\n    return this;\n  },\n\n  removeResizeListener(handler) {\n    var l = this._resizeListeners,\n        i = l.indexOf(handler);\n\n    if (i >= 0) {\n      l.splice(i, 1);\n    }\n\n    return this;\n  },\n\n  addSignalListener(name, handler) {\n    return addOperatorListener(this, name, lookupSignal(this, name), handler);\n  },\n\n  removeSignalListener(name, handler) {\n    return removeOperatorListener(this, lookupSignal(this, name), handler);\n  },\n\n  addDataListener(name, handler) {\n    return addOperatorListener(this, name, dataref(this, name).values, handler);\n  },\n\n  removeDataListener(name, handler) {\n    return removeOperatorListener(this, dataref(this, name).values, handler);\n  },\n\n  globalCursor(_) {\n    if (arguments.length) {\n      if (this._globalCursor !== !!_) {\n        const prev = setCursor(this, null); // clear previous cursor\n\n        this._globalCursor = !!_;\n        if (prev) setCursor(this, prev); // swap cursor\n      }\n\n      return this;\n    } else {\n      return this._globalCursor;\n    }\n  },\n\n  preventDefault(_) {\n    if (arguments.length) {\n      this._preventDefault = _;\n      return this;\n    } else {\n      return this._preventDefault;\n    }\n  },\n\n  timer,\n  events,\n  finalize,\n  hover,\n  // -- DATA ----\n  data,\n  change,\n  insert,\n  remove,\n  // -- SCALES --\n  scale,\n  // -- INITIALIZATION ----\n  initialize,\n  // -- HEADLESS RENDERING ----\n  toImageURL: renderToImageURL,\n  toCanvas: renderToCanvas,\n  toSVG: renderToSVG,\n  // -- SAVE / RESTORE STATE ----\n  getState,\n  setState\n});\n\nexport { View };\n","const VIEW = 'view',\n      LBRACK = '[',\n      RBRACK = ']',\n      LBRACE = '{',\n      RBRACE = '}',\n      COLON = ':',\n      COMMA = ',',\n      NAME = '@',\n      GT = '>',\n      ILLEGAL = /[[\\]{}]/,\n      DEFAULT_MARKS = {\n  '*': 1,\n  arc: 1,\n  area: 1,\n  group: 1,\n  image: 1,\n  line: 1,\n  path: 1,\n  rect: 1,\n  rule: 1,\n  shape: 1,\n  symbol: 1,\n  text: 1,\n  trail: 1\n};\nlet DEFAULT_SOURCE, MARKS;\n/**\n * Parse an event selector string.\n * Returns an array of event stream definitions.\n */\n\nfunction eventSelector (selector, source, marks) {\n  DEFAULT_SOURCE = source || VIEW;\n  MARKS = marks || DEFAULT_MARKS;\n  return parseMerge(selector.trim()).map(parseSelector);\n}\n\nfunction isMarkType(type) {\n  return MARKS[type];\n}\n\nfunction find(s, i, endChar, pushChar, popChar) {\n  const n = s.length;\n  let count = 0,\n      c;\n\n  for (; i < n; ++i) {\n    c = s[i];\n    if (!count && c === endChar) return i;else if (popChar && popChar.indexOf(c) >= 0) --count;else if (pushChar && pushChar.indexOf(c) >= 0) ++count;\n  }\n\n  return i;\n}\n\nfunction parseMerge(s) {\n  const output = [],\n        n = s.length;\n  let start = 0,\n      i = 0;\n\n  while (i < n) {\n    i = find(s, i, COMMA, LBRACK + LBRACE, RBRACK + RBRACE);\n    output.push(s.substring(start, i).trim());\n    start = ++i;\n  }\n\n  if (output.length === 0) {\n    throw 'Empty event selector: ' + s;\n  }\n\n  return output;\n}\n\nfunction parseSelector(s) {\n  return s[0] === '[' ? parseBetween(s) : parseStream(s);\n}\n\nfunction parseBetween(s) {\n  const n = s.length;\n  let i = 1,\n      b;\n  i = find(s, i, RBRACK, LBRACK, RBRACK);\n\n  if (i === n) {\n    throw 'Empty between selector: ' + s;\n  }\n\n  b = parseMerge(s.substring(1, i));\n\n  if (b.length !== 2) {\n    throw 'Between selector must have two elements: ' + s;\n  }\n\n  s = s.slice(i + 1).trim();\n\n  if (s[0] !== GT) {\n    throw 'Expected \\'>\\' after between selector: ' + s;\n  }\n\n  b = b.map(parseSelector);\n  const stream = parseSelector(s.slice(1).trim());\n\n  if (stream.between) {\n    return {\n      between: b,\n      stream: stream\n    };\n  } else {\n    stream.between = b;\n  }\n\n  return stream;\n}\n\nfunction parseStream(s) {\n  const stream = {\n    source: DEFAULT_SOURCE\n  },\n        source = [];\n  let throttle = [0, 0],\n      markname = 0,\n      start = 0,\n      n = s.length,\n      i = 0,\n      j,\n      filter; // extract throttle from end\n\n  if (s[n - 1] === RBRACE) {\n    i = s.lastIndexOf(LBRACE);\n\n    if (i >= 0) {\n      try {\n        throttle = parseThrottle(s.substring(i + 1, n - 1));\n      } catch (e) {\n        throw 'Invalid throttle specification: ' + s;\n      }\n\n      s = s.slice(0, i).trim();\n      n = s.length;\n    } else throw 'Unmatched right brace: ' + s;\n\n    i = 0;\n  }\n\n  if (!n) throw s; // set name flag based on first char\n\n  if (s[0] === NAME) markname = ++i; // extract first part of multi-part stream selector\n\n  j = find(s, i, COLON);\n\n  if (j < n) {\n    source.push(s.substring(start, j).trim());\n    start = i = ++j;\n  } // extract remaining part of stream selector\n\n\n  i = find(s, i, LBRACK);\n\n  if (i === n) {\n    source.push(s.substring(start, n).trim());\n  } else {\n    source.push(s.substring(start, i).trim());\n    filter = [];\n    start = ++i;\n    if (start === n) throw 'Unmatched left bracket: ' + s;\n  } // extract filters\n\n\n  while (i < n) {\n    i = find(s, i, RBRACK);\n    if (i === n) throw 'Unmatched left bracket: ' + s;\n    filter.push(s.substring(start, i).trim());\n    if (i < n - 1 && s[++i] !== LBRACK) throw 'Expected left bracket: ' + s;\n    start = ++i;\n  } // marshall event stream specification\n\n\n  if (!(n = source.length) || ILLEGAL.test(source[n - 1])) {\n    throw 'Invalid event selector: ' + s;\n  }\n\n  if (n > 1) {\n    stream.type = source[1];\n\n    if (markname) {\n      stream.markname = source[0].slice(1);\n    } else if (isMarkType(source[0])) {\n      stream.marktype = source[0];\n    } else {\n      stream.source = source[0];\n    }\n  } else {\n    stream.type = source[0];\n  }\n\n  if (stream.type.slice(-1) === '!') {\n    stream.consume = true;\n    stream.type = stream.type.slice(0, -1);\n  }\n\n  if (filter != null) stream.filter = filter;\n  if (throttle[0]) stream.throttle = throttle[0];\n  if (throttle[1]) stream.debounce = throttle[1];\n  return stream;\n}\n\nfunction parseThrottle(s) {\n  const a = s.split(COMMA);\n  if (!s.length || a.length > 2) throw s;\n  return a.map(_ => {\n    const x = +_;\n    if (x !== x) throw s;\n    return x;\n  });\n}\n\nexport { eventSelector as parseSelector };\n","import { isObject, isArray, extend, hasOwnProperty, array, stringValue, peek, isString, error, splitAccessPath, mergeConfig } from 'vega-util';\nimport { parseExpression } from 'vega-functions';\nimport { parseSelector } from 'vega-event-selector';\nimport { isValidScaleType, isDiscrete, isQuantile, isDiscretizing, isContinuous } from 'vega-scale';\nimport { definition as definition$1 } from 'vega-dataflow';\n\nfunction parseAutosize (spec) {\n  return isObject(spec) ? spec : {\n    type: spec || 'pad'\n  };\n}\n\nconst number = _ => +_ || 0;\n\nconst paddingObject = _ => ({\n  top: _,\n  bottom: _,\n  left: _,\n  right: _\n});\n\nfunction parsePadding (spec) {\n  return !isObject(spec) ? paddingObject(number(spec)) : spec.signal ? spec : {\n    top: number(spec.top),\n    bottom: number(spec.bottom),\n    left: number(spec.left),\n    right: number(spec.right)\n  };\n}\n\nconst encoder = _ => isObject(_) && !isArray(_) ? extend({}, _) : {\n  value: _\n};\nfunction addEncode(object, name, value, set) {\n  if (value != null) {\n    const isEncoder = isObject(value) && !isArray(value) || isArray(value) && value.length && isObject(value[0]); // Always assign signal to update, even if the signal is from the enter block\n\n    if (isEncoder) {\n      object.update[name] = value;\n    } else {\n      object[set || 'enter'][name] = {\n        value: value\n      };\n    }\n\n    return 1;\n  } else {\n    return 0;\n  }\n}\nfunction addEncoders(object, enter, update) {\n  for (const name in enter) {\n    addEncode(object, name, enter[name]);\n  }\n\n  for (const name in update) {\n    addEncode(object, name, update[name], 'update');\n  }\n}\nfunction extendEncode(encode, extra, skip) {\n  for (const name in extra) {\n    if (skip && hasOwnProperty(skip, name)) continue;\n    encode[name] = extend(encode[name] || {}, extra[name]);\n  }\n\n  return encode;\n}\nfunction has(key, encode) {\n  return encode && (encode.enter && encode.enter[key] || encode.update && encode.update[key]);\n}\n\nconst MarkRole = 'mark';\nconst FrameRole = 'frame';\nconst ScopeRole = 'scope';\nconst AxisRole = 'axis';\nconst AxisDomainRole = 'axis-domain';\nconst AxisGridRole = 'axis-grid';\nconst AxisLabelRole = 'axis-label';\nconst AxisTickRole = 'axis-tick';\nconst AxisTitleRole = 'axis-title';\nconst LegendRole = 'legend';\nconst LegendBandRole = 'legend-band';\nconst LegendEntryRole = 'legend-entry';\nconst LegendGradientRole = 'legend-gradient';\nconst LegendLabelRole = 'legend-label';\nconst LegendSymbolRole = 'legend-symbol';\nconst LegendTitleRole = 'legend-title';\nconst TitleRole = 'title';\nconst TitleTextRole = 'title-text';\nconst TitleSubtitleRole = 'title-subtitle';\n\nfunction applyDefaults (encode, type, role, style, config) {\n  const defaults = {},\n        enter = {};\n  let update, key, skip, props; // if text mark, apply global lineBreak settings (#2370)\n\n  key = 'lineBreak';\n\n  if (type === 'text' && config[key] != null && !has(key, encode)) {\n    applyDefault(defaults, key, config[key]);\n  } // ignore legend and axis roles\n\n\n  if (role == 'legend' || String(role).startsWith('axis')) {\n    role = null;\n  } // resolve mark config\n\n\n  props = role === FrameRole ? config.group : role === MarkRole ? extend({}, config.mark, config[type]) : null;\n\n  for (key in props) {\n    // do not apply defaults if relevant fields are defined\n    skip = has(key, encode) || (key === 'fill' || key === 'stroke') && (has('fill', encode) || has('stroke', encode));\n    if (!skip) applyDefault(defaults, key, props[key]);\n  } // resolve styles, apply with increasing precedence\n\n\n  array(style).forEach(name => {\n    const props = config.style && config.style[name];\n\n    for (const key in props) {\n      if (!has(key, encode)) {\n        applyDefault(defaults, key, props[key]);\n      }\n    }\n  });\n  encode = extend({}, encode); // defensive copy\n\n  for (key in defaults) {\n    props = defaults[key];\n\n    if (props.signal) {\n      (update = update || {})[key] = props;\n    } else {\n      enter[key] = props;\n    }\n  }\n\n  encode.enter = extend(enter, encode.enter);\n  if (update) encode.update = extend(update, encode.update);\n  return encode;\n}\n\nfunction applyDefault(defaults, key, value) {\n  defaults[key] = value && value.signal ? {\n    signal: value.signal\n  } : {\n    value: value\n  };\n}\n\nconst scaleRef = scale => isString(scale) ? stringValue(scale) : scale.signal ? `(${scale.signal})` : field(scale);\n\nfunction entry$1(enc) {\n  if (enc.gradient != null) {\n    return gradient(enc);\n  }\n\n  let value = enc.signal ? `(${enc.signal})` : enc.color ? color(enc.color) : enc.field != null ? field(enc.field) : enc.value !== undefined ? stringValue(enc.value) : undefined;\n\n  if (enc.scale != null) {\n    value = scale(enc, value);\n  }\n\n  if (value === undefined) {\n    value = null;\n  }\n\n  if (enc.exponent != null) {\n    value = `pow(${value},${property(enc.exponent)})`;\n  }\n\n  if (enc.mult != null) {\n    value += `*${property(enc.mult)}`;\n  }\n\n  if (enc.offset != null) {\n    value += `+${property(enc.offset)}`;\n  }\n\n  if (enc.round) {\n    value = `round(${value})`;\n  }\n\n  return value;\n}\n\nconst _color = (type, x, y, z) => `(${type}(${[x, y, z].map(entry$1).join(',')})+'')`;\n\nfunction color(enc) {\n  return enc.c ? _color('hcl', enc.h, enc.c, enc.l) : enc.h || enc.s ? _color('hsl', enc.h, enc.s, enc.l) : enc.l || enc.a ? _color('lab', enc.l, enc.a, enc.b) : enc.r || enc.g || enc.b ? _color('rgb', enc.r, enc.g, enc.b) : null;\n}\n\nfunction gradient(enc) {\n  // map undefined to null; expression lang does not allow undefined\n  const args = [enc.start, enc.stop, enc.count].map(_ => _ == null ? null : stringValue(_)); // trim null inputs from the end\n\n  while (args.length && peek(args) == null) args.pop();\n\n  args.unshift(scaleRef(enc.gradient));\n  return `gradient(${args.join(',')})`;\n}\n\nfunction property(property) {\n  return isObject(property) ? '(' + entry$1(property) + ')' : property;\n}\n\nfunction field(ref) {\n  return resolveField(isObject(ref) ? ref : {\n    datum: ref\n  });\n}\n\nfunction resolveField(ref) {\n  let object, level, field;\n\n  if (ref.signal) {\n    object = 'datum';\n    field = ref.signal;\n  } else if (ref.group || ref.parent) {\n    level = Math.max(1, ref.level || 1);\n    object = 'item';\n\n    while (level-- > 0) {\n      object += '.mark.group';\n    }\n\n    if (ref.parent) {\n      field = ref.parent;\n      object += '.datum';\n    } else {\n      field = ref.group;\n    }\n  } else if (ref.datum) {\n    object = 'datum';\n    field = ref.datum;\n  } else {\n    error('Invalid field reference: ' + stringValue(ref));\n  }\n\n  if (!ref.signal) {\n    field = isString(field) ? splitAccessPath(field).map(stringValue).join('][') : resolveField(field);\n  }\n\n  return object + '[' + field + ']';\n}\n\nfunction scale(enc, value) {\n  const scale = scaleRef(enc.scale);\n\n  if (enc.range != null) {\n    // pull value from scale range\n    value = `lerp(_range(${scale}), ${+enc.range})`;\n  } else {\n    // run value through scale and/or pull scale bandwidth\n    if (value !== undefined) value = `_scale(${scale}, ${value})`;\n\n    if (enc.band) {\n      value = (value ? value + '+' : '') + `_bandwidth(${scale})` + (+enc.band === 1 ? '' : '*' + property(enc.band));\n\n      if (enc.extra) {\n        // include logic to handle extraneous elements\n        value = `(datum.extra ? _scale(${scale}, datum.extra.value) : ${value})`;\n      }\n    }\n\n    if (value == null) value = '0';\n  }\n\n  return value;\n}\n\nfunction rule (enc) {\n  let code = '';\n  enc.forEach(rule => {\n    const value = entry$1(rule);\n    code += rule.test ? `(${rule.test})?${value}:` : value;\n  }); // if no else clause, terminate with null (#1366)\n\n  if (peek(code) === ':') {\n    code += 'null';\n  }\n\n  return code;\n}\n\nfunction parseEncode (encode, type, role, style, scope, params) {\n  const enc = {};\n  params = params || {};\n  params.encoders = {\n    $encode: enc\n  };\n  encode = applyDefaults(encode, type, role, style, scope.config);\n\n  for (const key in encode) {\n    enc[key] = parseBlock(encode[key], type, params, scope);\n  }\n\n  return params;\n}\n\nfunction parseBlock(block, marktype, params, scope) {\n  const channels = {},\n        fields = {};\n\n  for (const name in block) {\n    if (block[name] != null) {\n      // skip any null entries\n      channels[name] = parse$1(expr(block[name]), scope, params, fields);\n    }\n  }\n\n  return {\n    $expr: {\n      marktype,\n      channels\n    },\n    $fields: Object.keys(fields),\n    $output: Object.keys(block)\n  };\n}\n\nfunction expr(enc) {\n  return isArray(enc) ? rule(enc) : entry$1(enc);\n}\n\nfunction parse$1(code, scope, params, fields) {\n  const expr = parseExpression(code, scope);\n  expr.$fields.forEach(name => fields[name] = 1);\n  extend(params, expr.$params);\n  return expr.$expr;\n}\n\nconst OUTER = 'outer',\n      OUTER_INVALID = ['value', 'update', 'init', 'react', 'bind'];\n\nfunction outerError(prefix, name) {\n  error(prefix + ' for \"outer\" push: ' + stringValue(name));\n}\n\nfunction parseSignal (signal, scope) {\n  const name = signal.name;\n\n  if (signal.push === OUTER) {\n    // signal must already be defined, raise error if not\n    if (!scope.signals[name]) outerError('No prior signal definition', name); // signal push must not use properties reserved for standard definition\n\n    OUTER_INVALID.forEach(prop => {\n      if (signal[prop] !== undefined) outerError('Invalid property ', prop);\n    });\n  } else {\n    // define a new signal in the current scope\n    const op = scope.addSignal(name, signal.value);\n    if (signal.react === false) op.react = false;\n    if (signal.bind) scope.addBinding(name, signal.bind);\n  }\n}\n\nfunction Entry(type, value, params, parent) {\n  this.id = -1;\n  this.type = type;\n  this.value = value;\n  this.params = params;\n  if (parent) this.parent = parent;\n}\nfunction entry(type, value, params, parent) {\n  return new Entry(type, value, params, parent);\n}\nfunction operator(value, params) {\n  return entry('operator', value, params);\n} // -----\n\nfunction ref(op) {\n  const ref = {\n    $ref: op.id\n  }; // if operator not yet registered, cache ref to resolve later\n\n  if (op.id < 0) (op.refs = op.refs || []).push(ref);\n  return ref;\n}\nfunction fieldRef$1(field, name) {\n  return name ? {\n    $field: field,\n    $name: name\n  } : {\n    $field: field\n  };\n}\nconst keyFieldRef = fieldRef$1('key');\nfunction compareRef(fields, orders) {\n  return {\n    $compare: fields,\n    $order: orders\n  };\n}\nfunction keyRef(fields, flat) {\n  const ref = {\n    $key: fields\n  };\n  if (flat) ref.$flat = true;\n  return ref;\n} // -----\n\nconst Ascending = 'ascending';\nconst Descending = 'descending';\nfunction sortKey(sort) {\n  return !isObject(sort) ? '' : (sort.order === Descending ? '-' : '+') + aggrField(sort.op, sort.field);\n}\nfunction aggrField(op, field) {\n  return (op && op.signal ? '$' + op.signal : op || '') + (op && field ? '_' : '') + (field && field.signal ? '$' + field.signal : field || '');\n} // -----\n\nconst Scope$1 = 'scope';\nconst View = 'view';\nfunction isSignal(_) {\n  return _ && _.signal;\n}\nfunction isExpr$1(_) {\n  return _ && _.expr;\n}\nfunction hasSignal(_) {\n  if (isSignal(_)) return true;\n  if (isObject(_)) for (const key in _) {\n    if (hasSignal(_[key])) return true;\n  }\n  return false;\n}\nfunction value(specValue, defaultValue) {\n  return specValue != null ? specValue : defaultValue;\n}\nfunction deref(v) {\n  return v && v.signal || v;\n}\n\nconst Timer = 'timer';\nfunction parseStream(stream, scope) {\n  const method = stream.merge ? mergeStream : stream.stream ? nestedStream : stream.type ? eventStream : error('Invalid stream specification: ' + stringValue(stream));\n  return method(stream, scope);\n}\n\nfunction eventSource(source) {\n  return source === Scope$1 ? View : source || View;\n}\n\nfunction mergeStream(stream, scope) {\n  const list = stream.merge.map(s => parseStream(s, scope)),\n        entry = streamParameters({\n    merge: list\n  }, stream, scope);\n  return scope.addStream(entry).id;\n}\n\nfunction nestedStream(stream, scope) {\n  const id = parseStream(stream.stream, scope),\n        entry = streamParameters({\n    stream: id\n  }, stream, scope);\n  return scope.addStream(entry).id;\n}\n\nfunction eventStream(stream, scope) {\n  let id;\n\n  if (stream.type === Timer) {\n    id = scope.event(Timer, stream.throttle);\n    stream = {\n      between: stream.between,\n      filter: stream.filter\n    };\n  } else {\n    id = scope.event(eventSource(stream.source), stream.type);\n  }\n\n  const entry = streamParameters({\n    stream: id\n  }, stream, scope);\n  return Object.keys(entry).length === 1 ? id : scope.addStream(entry).id;\n}\n\nfunction streamParameters(entry, stream, scope) {\n  let param = stream.between;\n\n  if (param) {\n    if (param.length !== 2) {\n      error('Stream \"between\" parameter must have 2 entries: ' + stringValue(stream));\n    }\n\n    entry.between = [parseStream(param[0], scope), parseStream(param[1], scope)];\n  }\n\n  param = stream.filter ? [].concat(stream.filter) : [];\n\n  if (stream.marktype || stream.markname || stream.markrole) {\n    // add filter for mark type, name and/or role\n    param.push(filterMark(stream.marktype, stream.markname, stream.markrole));\n  }\n\n  if (stream.source === Scope$1) {\n    // add filter to limit events from sub-scope only\n    param.push('inScope(event.item)');\n  }\n\n  if (param.length) {\n    entry.filter = parseExpression('(' + param.join(')&&(') + ')', scope).$expr;\n  }\n\n  if ((param = stream.throttle) != null) {\n    entry.throttle = +param;\n  }\n\n  if ((param = stream.debounce) != null) {\n    entry.debounce = +param;\n  }\n\n  if (stream.consume) {\n    entry.consume = true;\n  }\n\n  return entry;\n}\n\nfunction filterMark(type, name, role) {\n  const item = 'event.item';\n  return item + (type && type !== '*' ? '&&' + item + '.mark.marktype===\\'' + type + '\\'' : '') + (role ? '&&' + item + '.mark.role===\\'' + role + '\\'' : '') + (name ? '&&' + item + '.mark.name===\\'' + name + '\\'' : '');\n}\n\nconst OP_VALUE_EXPR = {\n  code: '_.$value',\n  ast: {\n    type: 'Identifier',\n    value: 'value'\n  }\n};\nfunction parseUpdate (spec, scope, target) {\n  const encode = spec.encode,\n        entry = {\n    target: target\n  };\n  let events = spec.events,\n      update = spec.update,\n      sources = [];\n\n  if (!events) {\n    error('Signal update missing events specification.');\n  } // interpret as an event selector string\n\n\n  if (isString(events)) {\n    events = parseSelector(events, scope.isSubscope() ? Scope$1 : View);\n  } // separate event streams from signal updates\n\n\n  events = array(events).filter(s => s.signal || s.scale ? (sources.push(s), 0) : 1); // merge internal operator listeners\n\n  if (sources.length > 1) {\n    sources = [mergeSources(sources)];\n  } // merge event streams, include as source\n\n\n  if (events.length) {\n    sources.push(events.length > 1 ? {\n      merge: events\n    } : events[0]);\n  }\n\n  if (encode != null) {\n    if (update) error('Signal encode and update are mutually exclusive.');\n    update = 'encode(item(),' + stringValue(encode) + ')';\n  } // resolve update value\n\n\n  entry.update = isString(update) ? parseExpression(update, scope) : update.expr != null ? parseExpression(update.expr, scope) : update.value != null ? update.value : update.signal != null ? {\n    $expr: OP_VALUE_EXPR,\n    $params: {\n      $value: scope.signalRef(update.signal)\n    }\n  } : error('Invalid signal update specification.');\n\n  if (spec.force) {\n    entry.options = {\n      force: true\n    };\n  }\n\n  sources.forEach(source => scope.addUpdate(extend(streamSource(source, scope), entry)));\n}\n\nfunction streamSource(stream, scope) {\n  return {\n    source: stream.signal ? scope.signalRef(stream.signal) : stream.scale ? scope.scaleRef(stream.scale) : parseStream(stream, scope)\n  };\n}\n\nfunction mergeSources(sources) {\n  return {\n    signal: '[' + sources.map(s => s.scale ? 'scale(\"' + s.scale + '\")' : s.signal) + ']'\n  };\n}\n\nfunction parseSignalUpdates (signal, scope) {\n  const op = scope.getSignal(signal.name);\n  let expr = signal.update;\n\n  if (signal.init) {\n    if (expr) {\n      error('Signals can not include both init and update expressions.');\n    } else {\n      expr = signal.init;\n      op.initonly = true;\n    }\n  }\n\n  if (expr) {\n    expr = parseExpression(expr, scope);\n    op.update = expr.$expr;\n    op.params = expr.$params;\n  }\n\n  if (signal.on) {\n    signal.on.forEach(_ => parseUpdate(_, scope, op.id));\n  }\n}\n\nconst transform = name => (params, value, parent) => entry(name, value, params || undefined, parent);\n\nconst Aggregate = transform('aggregate');\nconst AxisTicks = transform('axisticks');\nconst Bound = transform('bound');\nconst Collect = transform('collect');\nconst Compare = transform('compare');\nconst DataJoin = transform('datajoin');\nconst Encode = transform('encode');\nconst Expression = transform('expression');\nconst Facet = transform('facet');\nconst Field = transform('field');\nconst Key = transform('key');\nconst LegendEntries = transform('legendentries');\nconst Load = transform('load');\nconst Mark = transform('mark');\nconst MultiExtent = transform('multiextent');\nconst MultiValues = transform('multivalues');\nconst Overlap = transform('overlap');\nconst Params = transform('params');\nconst PreFacet = transform('prefacet');\nconst Projection = transform('projection');\nconst Proxy = transform('proxy');\nconst Relay = transform('relay');\nconst Render = transform('render');\nconst Scale = transform('scale');\nconst Sieve = transform('sieve');\nconst SortItems = transform('sortitems');\nconst ViewLayout = transform('viewlayout');\nconst Values = transform('values');\n\nlet FIELD_REF_ID = 0;\nconst MULTIDOMAIN_SORT_OPS = {\n  min: 'min',\n  max: 'max',\n  count: 'sum'\n};\nfunction initScale(spec, scope) {\n  const type = spec.type || 'linear';\n\n  if (!isValidScaleType(type)) {\n    error('Unrecognized scale type: ' + stringValue(type));\n  }\n\n  scope.addScale(spec.name, {\n    type,\n    domain: undefined\n  });\n}\nfunction parseScale(spec, scope) {\n  const params = scope.getScale(spec.name).params;\n  let key;\n  params.domain = parseScaleDomain(spec.domain, spec, scope);\n\n  if (spec.range != null) {\n    params.range = parseScaleRange(spec, scope, params);\n  }\n\n  if (spec.interpolate != null) {\n    parseScaleInterpolate(spec.interpolate, params);\n  }\n\n  if (spec.nice != null) {\n    params.nice = parseScaleNice(spec.nice);\n  }\n\n  if (spec.bins != null) {\n    params.bins = parseScaleBins(spec.bins, scope);\n  }\n\n  for (key in spec) {\n    if (hasOwnProperty(params, key) || key === 'name') continue;\n    params[key] = parseLiteral(spec[key], scope);\n  }\n}\n\nfunction parseLiteral(v, scope) {\n  return !isObject(v) ? v : v.signal ? scope.signalRef(v.signal) : error('Unsupported object: ' + stringValue(v));\n}\n\nfunction parseArray(v, scope) {\n  return v.signal ? scope.signalRef(v.signal) : v.map(v => parseLiteral(v, scope));\n}\n\nfunction dataLookupError(name) {\n  error('Can not find data set: ' + stringValue(name));\n} // -- SCALE DOMAIN ----\n\n\nfunction parseScaleDomain(domain, spec, scope) {\n  if (!domain) {\n    if (spec.domainMin != null || spec.domainMax != null) {\n      error('No scale domain defined for domainMin/domainMax to override.');\n    }\n\n    return; // default domain\n  }\n\n  return domain.signal ? scope.signalRef(domain.signal) : (isArray(domain) ? explicitDomain : domain.fields ? multipleDomain : singularDomain)(domain, spec, scope);\n}\n\nfunction explicitDomain(domain, spec, scope) {\n  return domain.map(v => parseLiteral(v, scope));\n}\n\nfunction singularDomain(domain, spec, scope) {\n  const data = scope.getData(domain.data);\n  if (!data) dataLookupError(domain.data);\n  return isDiscrete(spec.type) ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false)) : isQuantile(spec.type) ? data.domainRef(scope, domain.field) : data.extentRef(scope, domain.field);\n}\n\nfunction multipleDomain(domain, spec, scope) {\n  const data = domain.data,\n        fields = domain.fields.reduce((dom, d) => {\n    d = isString(d) ? {\n      data: data,\n      field: d\n    } : isArray(d) || d.signal ? fieldRef(d, scope) : d;\n    dom.push(d);\n    return dom;\n  }, []);\n  return (isDiscrete(spec.type) ? ordinalMultipleDomain : isQuantile(spec.type) ? quantileMultipleDomain : numericMultipleDomain)(domain, scope, fields);\n}\n\nfunction fieldRef(data, scope) {\n  const name = '_:vega:_' + FIELD_REF_ID++,\n        coll = Collect({});\n\n  if (isArray(data)) {\n    coll.value = {\n      $ingest: data\n    };\n  } else if (data.signal) {\n    const code = 'setdata(' + stringValue(name) + ',' + data.signal + ')';\n    coll.params.input = scope.signalRef(code);\n  }\n\n  scope.addDataPipeline(name, [coll, Sieve({})]);\n  return {\n    data: name,\n    field: 'data'\n  };\n}\n\nfunction ordinalMultipleDomain(domain, scope, fields) {\n  const sort = parseSort(domain.sort, true);\n  let a, v; // get value counts for each domain field\n\n  const counts = fields.map(f => {\n    const data = scope.getData(f.data);\n    if (!data) dataLookupError(f.data);\n    return data.countsRef(scope, f.field, sort);\n  }); // aggregate the results from each domain field\n\n  const p = {\n    groupby: keyFieldRef,\n    pulse: counts\n  };\n\n  if (sort) {\n    a = sort.op || 'count';\n    v = sort.field ? aggrField(a, sort.field) : 'count';\n    p.ops = [MULTIDOMAIN_SORT_OPS[a]];\n    p.fields = [scope.fieldRef(v)];\n    p.as = [v];\n  }\n\n  a = scope.add(Aggregate(p)); // collect aggregate output\n\n  const c = scope.add(Collect({\n    pulse: ref(a)\n  })); // extract values for combined domain\n\n  v = scope.add(Values({\n    field: keyFieldRef,\n    sort: scope.sortRef(sort),\n    pulse: ref(c)\n  }));\n  return ref(v);\n}\n\nfunction parseSort(sort, multidomain) {\n  if (sort) {\n    if (!sort.field && !sort.op) {\n      if (isObject(sort)) sort.field = 'key';else sort = {\n        field: 'key'\n      };\n    } else if (!sort.field && sort.op !== 'count') {\n      error('No field provided for sort aggregate op: ' + sort.op);\n    } else if (multidomain && sort.field) {\n      if (sort.op && !MULTIDOMAIN_SORT_OPS[sort.op]) {\n        error('Multiple domain scales can not be sorted using ' + sort.op);\n      }\n    }\n  }\n\n  return sort;\n}\n\nfunction quantileMultipleDomain(domain, scope, fields) {\n  // get value arrays for each domain field\n  const values = fields.map(f => {\n    const data = scope.getData(f.data);\n    if (!data) dataLookupError(f.data);\n    return data.domainRef(scope, f.field);\n  }); // combine value arrays\n\n  return ref(scope.add(MultiValues({\n    values: values\n  })));\n}\n\nfunction numericMultipleDomain(domain, scope, fields) {\n  // get extents for each domain field\n  const extents = fields.map(f => {\n    const data = scope.getData(f.data);\n    if (!data) dataLookupError(f.data);\n    return data.extentRef(scope, f.field);\n  }); // combine extents\n\n  return ref(scope.add(MultiExtent({\n    extents: extents\n  })));\n} // -- SCALE BINS -----\n\n\nfunction parseScaleBins(v, scope) {\n  return v.signal || isArray(v) ? parseArray(v, scope) : scope.objectProperty(v);\n} // -- SCALE NICE -----\n\n\nfunction parseScaleNice(nice) {\n  return isObject(nice) ? {\n    interval: parseLiteral(nice.interval),\n    step: parseLiteral(nice.step)\n  } : parseLiteral(nice);\n} // -- SCALE INTERPOLATION -----\n\n\nfunction parseScaleInterpolate(interpolate, params) {\n  params.interpolate = parseLiteral(interpolate.type || interpolate);\n\n  if (interpolate.gamma != null) {\n    params.interpolateGamma = parseLiteral(interpolate.gamma);\n  }\n} // -- SCALE RANGE -----\n\n\nfunction parseScaleRange(spec, scope, params) {\n  const config = scope.config.range;\n  let range = spec.range;\n\n  if (range.signal) {\n    return scope.signalRef(range.signal);\n  } else if (isString(range)) {\n    if (config && hasOwnProperty(config, range)) {\n      spec = extend({}, spec, {\n        range: config[range]\n      });\n      return parseScaleRange(spec, scope, params);\n    } else if (range === 'width') {\n      range = [0, {\n        signal: 'width'\n      }];\n    } else if (range === 'height') {\n      range = isDiscrete(spec.type) ? [0, {\n        signal: 'height'\n      }] : [{\n        signal: 'height'\n      }, 0];\n    } else {\n      error('Unrecognized scale range value: ' + stringValue(range));\n    }\n  } else if (range.scheme) {\n    params.scheme = isArray(range.scheme) ? parseArray(range.scheme, scope) : parseLiteral(range.scheme, scope);\n    if (range.extent) params.schemeExtent = parseArray(range.extent, scope);\n    if (range.count) params.schemeCount = parseLiteral(range.count, scope);\n    return;\n  } else if (range.step) {\n    params.rangeStep = parseLiteral(range.step, scope);\n    return;\n  } else if (isDiscrete(spec.type) && !isArray(range)) {\n    return parseScaleDomain(range, spec, scope);\n  } else if (!isArray(range)) {\n    error('Unsupported range type: ' + stringValue(range));\n  }\n\n  return range.map(v => (isArray(v) ? parseArray : parseLiteral)(v, scope));\n}\n\nfunction parseProjection (proj, scope) {\n  const config = scope.config.projection || {},\n        params = {};\n\n  for (const name in proj) {\n    if (name === 'name') continue;\n    params[name] = parseParameter$1(proj[name], name, scope);\n  } // apply projection defaults from config\n\n\n  for (const name in config) {\n    if (params[name] == null) {\n      params[name] = parseParameter$1(config[name], name, scope);\n    }\n  }\n\n  scope.addProjection(proj.name, params);\n}\n\nfunction parseParameter$1(_, name, scope) {\n  return isArray(_) ? _.map(_ => parseParameter$1(_, name, scope)) : !isObject(_) ? _ : _.signal ? scope.signalRef(_.signal) : name === 'fit' ? _ : error('Unsupported parameter object: ' + stringValue(_));\n}\n\nconst Top = 'top';\nconst Left = 'left';\nconst Right = 'right';\nconst Bottom = 'bottom';\nconst Center = 'center';\nconst Vertical = 'vertical';\nconst Start = 'start';\nconst Middle = 'middle';\nconst End = 'end';\nconst Index = 'index';\nconst Label = 'label';\nconst Offset = 'offset';\nconst Perc = 'perc';\nconst Perc2 = 'perc2';\nconst Value = 'value';\nconst GuideLabelStyle = 'guide-label';\nconst GuideTitleStyle = 'guide-title';\nconst GroupTitleStyle = 'group-title';\nconst GroupSubtitleStyle = 'group-subtitle';\nconst Symbols = 'symbol';\nconst Gradient = 'gradient';\nconst Discrete = 'discrete';\nconst Size = 'size';\nconst Shape = 'shape';\nconst Fill = 'fill';\nconst Stroke = 'stroke';\nconst StrokeWidth = 'strokeWidth';\nconst StrokeDash = 'strokeDash';\nconst Opacity = 'opacity'; // Encoding channels supported by legends\n// In priority order of 'canonical' scale\n\nconst LegendScales = [Size, Shape, Fill, Stroke, StrokeWidth, StrokeDash, Opacity];\nconst Skip = {\n  name: 1,\n  style: 1,\n  interactive: 1\n};\nconst zero = {\n  value: 0\n};\nconst one = {\n  value: 1\n};\n\nconst GroupMark = 'group';\nconst RectMark = 'rect';\nconst RuleMark = 'rule';\nconst SymbolMark = 'symbol';\nconst TextMark = 'text';\n\nfunction guideGroup (mark) {\n  mark.type = GroupMark;\n  mark.interactive = mark.interactive || false;\n  return mark;\n}\n\nfunction lookup(spec, config) {\n  const _ = (name, dflt) => value(spec[name], value(config[name], dflt));\n\n  _.isVertical = s => Vertical === value(spec.direction, config.direction || (s ? config.symbolDirection : config.gradientDirection));\n\n  _.gradientLength = () => value(spec.gradientLength, config.gradientLength || config.gradientWidth);\n\n  _.gradientThickness = () => value(spec.gradientThickness, config.gradientThickness || config.gradientHeight);\n\n  _.entryColumns = () => value(spec.columns, value(config.columns, +_.isVertical(true)));\n\n  return _;\n}\nfunction getEncoding(name, encode) {\n  const v = encode && (encode.update && encode.update[name] || encode.enter && encode.enter[name]);\n  return v && v.signal ? v : v ? v.value : null;\n}\nfunction getStyle(name, scope, style) {\n  const s = scope.config.style[style];\n  return s && s[name];\n}\nfunction anchorExpr(s, e, m) {\n  return `item.anchor === '${Start}' ? ${s} : item.anchor === '${End}' ? ${e} : ${m}`;\n}\nconst alignExpr$1 = anchorExpr(stringValue(Left), stringValue(Right), stringValue(Center));\nfunction tickBand(_) {\n  const v = _('tickBand');\n\n  let offset = _('tickOffset'),\n      band,\n      extra;\n\n  if (!v) {\n    // if no tick band entry, fall back on other properties\n    band = _('bandPosition');\n    extra = _('tickExtra');\n  } else if (v.signal) {\n    // if signal, augment code to interpret values\n    band = {\n      signal: `(${v.signal}) === 'extent' ? 1 : 0.5`\n    };\n    extra = {\n      signal: `(${v.signal}) === 'extent'`\n    };\n\n    if (!isObject(offset)) {\n      offset = {\n        signal: `(${v.signal}) === 'extent' ? 0 : ${offset}`\n      };\n    }\n  } else if (v === 'extent') {\n    // if constant, simply set values\n    band = 1;\n    extra = true;\n    offset = 0;\n  } else {\n    band = 0.5;\n    extra = false;\n  }\n\n  return {\n    extra,\n    band,\n    offset\n  };\n}\nfunction extendOffset(value, offset) {\n  return !offset ? value : !value ? offset : !isObject(value) ? {\n    value,\n    offset\n  } : Object.assign({}, value, {\n    offset: extendOffset(value.offset, offset)\n  });\n}\n\nfunction guideMark (mark, extras) {\n  if (extras) {\n    mark.name = extras.name;\n    mark.style = extras.style || mark.style;\n    mark.interactive = !!extras.interactive;\n    mark.encode = extendEncode(mark.encode, extras, Skip);\n  } else {\n    mark.interactive = false;\n  }\n\n  return mark;\n}\n\nfunction legendGradient (spec, scale, config, userEncode) {\n  const _ = lookup(spec, config),\n        vertical = _.isVertical(),\n        thickness = _.gradientThickness(),\n        length = _.gradientLength();\n\n  let enter, start, stop, width, height;\n\n  if (vertical) {\n    start = [0, 1];\n    stop = [0, 0];\n    width = thickness;\n    height = length;\n  } else {\n    start = [0, 0];\n    stop = [1, 0];\n    width = length;\n    height = thickness;\n  }\n\n  const encode = {\n    enter: enter = {\n      opacity: zero,\n      x: zero,\n      y: zero,\n      width: encoder(width),\n      height: encoder(height)\n    },\n    update: extend({}, enter, {\n      opacity: one,\n      fill: {\n        gradient: scale,\n        start: start,\n        stop: stop\n      }\n    }),\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('gradientStrokeColor'),\n    strokeWidth: _('gradientStrokeWidth')\n  }, {\n    // update\n    opacity: _('gradientOpacity')\n  });\n  return guideMark({\n    type: RectMark,\n    role: LegendGradientRole,\n    encode\n  }, userEncode);\n}\n\nfunction legendGradientDiscrete (spec, scale, config, userEncode, dataRef) {\n  const _ = lookup(spec, config),\n        vertical = _.isVertical(),\n        thickness = _.gradientThickness(),\n        length = _.gradientLength();\n\n  let u,\n      v,\n      uu,\n      vv,\n      adjust = '';\n  vertical ? (u = 'y', uu = 'y2', v = 'x', vv = 'width', adjust = '1-') : (u = 'x', uu = 'x2', v = 'y', vv = 'height');\n  const enter = {\n    opacity: zero,\n    fill: {\n      scale: scale,\n      field: Value\n    }\n  };\n  enter[u] = {\n    signal: adjust + 'datum.' + Perc,\n    mult: length\n  };\n  enter[v] = zero;\n  enter[uu] = {\n    signal: adjust + 'datum.' + Perc2,\n    mult: length\n  };\n  enter[vv] = encoder(thickness);\n  const encode = {\n    enter: enter,\n    update: extend({}, enter, {\n      opacity: one\n    }),\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('gradientStrokeColor'),\n    strokeWidth: _('gradientStrokeWidth')\n  }, {\n    // update\n    opacity: _('gradientOpacity')\n  });\n  return guideMark({\n    type: RectMark,\n    role: LegendBandRole,\n    key: Value,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nconst alignExpr = `datum.${Perc}<=0?\"${Left}\":datum.${Perc}>=1?\"${Right}\":\"${Center}\"`,\n      baselineExpr = `datum.${Perc}<=0?\"${Bottom}\":datum.${Perc}>=1?\"${Top}\":\"${Middle}\"`;\nfunction legendGradientLabels (spec, config, userEncode, dataRef) {\n  const _ = lookup(spec, config),\n        vertical = _.isVertical(),\n        thickness = encoder(_.gradientThickness()),\n        length = _.gradientLength();\n\n  let overlap = _('labelOverlap'),\n      enter,\n      update,\n      u,\n      v,\n      adjust = '';\n\n  const encode = {\n    enter: enter = {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one,\n      text: {\n        field: Label\n      }\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    fill: _('labelColor'),\n    fillOpacity: _('labelOpacity'),\n    font: _('labelFont'),\n    fontSize: _('labelFontSize'),\n    fontStyle: _('labelFontStyle'),\n    fontWeight: _('labelFontWeight'),\n    limit: value(spec.labelLimit, config.gradientLabelLimit)\n  });\n\n  if (vertical) {\n    enter.align = {\n      value: 'left'\n    };\n    enter.baseline = update.baseline = {\n      signal: baselineExpr\n    };\n    u = 'y';\n    v = 'x';\n    adjust = '1-';\n  } else {\n    enter.align = update.align = {\n      signal: alignExpr\n    };\n    enter.baseline = {\n      value: 'top'\n    };\n    u = 'x';\n    v = 'y';\n  }\n\n  enter[u] = update[u] = {\n    signal: adjust + 'datum.' + Perc,\n    mult: length\n  };\n  enter[v] = update[v] = thickness;\n  thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0;\n  overlap = overlap ? {\n    separation: _('labelSeparation'),\n    method: overlap,\n    order: 'datum.' + Index\n  } : undefined; // type, role, style, key, dataRef, encode, extras\n\n  return guideMark({\n    type: TextMark,\n    role: LegendLabelRole,\n    style: GuideLabelStyle,\n    key: Value,\n    from: dataRef,\n    encode,\n    overlap\n  }, userEncode);\n}\n\nfunction legendSymbolGroups (spec, config, userEncode, dataRef, columns) {\n  const _ = lookup(spec, config),\n        entries = userEncode.entries,\n        interactive = !!(entries && entries.interactive),\n        name = entries ? entries.name : undefined,\n        height = _('clipHeight'),\n        symbolOffset = _('symbolOffset'),\n        valueRef = {\n    data: 'value'\n  },\n        xSignal = `(${columns}) ? datum.${Offset} : datum.${Size}`,\n        yEncode = height ? encoder(height) : {\n    field: Size\n  },\n        index = `datum.${Index}`,\n        ncols = `max(1, ${columns})`;\n\n  let encode, enter, update, nrows, sort;\n  yEncode.mult = 0.5; // -- LEGEND SYMBOLS --\n\n  encode = {\n    enter: enter = {\n      opacity: zero,\n      x: {\n        signal: xSignal,\n        mult: 0.5,\n        offset: symbolOffset\n      },\n      y: yEncode\n    },\n    update: update = {\n      opacity: one,\n      x: enter.x,\n      y: enter.y\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  let baseFill = null,\n      baseStroke = null;\n\n  if (!spec.fill) {\n    baseFill = config.symbolBaseFillColor;\n    baseStroke = config.symbolBaseStrokeColor;\n  }\n\n  addEncoders(encode, {\n    fill: _('symbolFillColor', baseFill),\n    shape: _('symbolType'),\n    size: _('symbolSize'),\n    stroke: _('symbolStrokeColor', baseStroke),\n    strokeDash: _('symbolDash'),\n    strokeDashOffset: _('symbolDashOffset'),\n    strokeWidth: _('symbolStrokeWidth')\n  }, {\n    // update\n    opacity: _('symbolOpacity')\n  });\n  LegendScales.forEach(scale => {\n    if (spec[scale]) {\n      update[scale] = enter[scale] = {\n        scale: spec[scale],\n        field: Value\n      };\n    }\n  });\n  const symbols = guideMark({\n    type: SymbolMark,\n    role: LegendSymbolRole,\n    key: Value,\n    from: valueRef,\n    clip: height ? true : undefined,\n    encode\n  }, userEncode.symbols); // -- LEGEND LABELS --\n\n  const labelOffset = encoder(symbolOffset);\n  labelOffset.offset = _('labelOffset');\n  encode = {\n    enter: enter = {\n      opacity: zero,\n      x: {\n        signal: xSignal,\n        offset: labelOffset\n      },\n      y: yEncode\n    },\n    update: update = {\n      opacity: one,\n      text: {\n        field: Label\n      },\n      x: enter.x,\n      y: enter.y\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    align: _('labelAlign'),\n    baseline: _('labelBaseline'),\n    fill: _('labelColor'),\n    fillOpacity: _('labelOpacity'),\n    font: _('labelFont'),\n    fontSize: _('labelFontSize'),\n    fontStyle: _('labelFontStyle'),\n    fontWeight: _('labelFontWeight'),\n    limit: _('labelLimit')\n  });\n  const labels = guideMark({\n    type: TextMark,\n    role: LegendLabelRole,\n    style: GuideLabelStyle,\n    key: Value,\n    from: valueRef,\n    encode\n  }, userEncode.labels); // -- LEGEND ENTRY GROUPS --\n\n  encode = {\n    enter: {\n      noBound: {\n        value: !height\n      },\n      // ignore width/height in bounds calc\n      width: zero,\n      height: height ? encoder(height) : zero,\n      opacity: zero\n    },\n    exit: {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one,\n      row: {\n        signal: null\n      },\n      column: {\n        signal: null\n      }\n    }\n  }; // annotate and sort groups to ensure correct ordering\n\n  if (_.isVertical(true)) {\n    nrows = `ceil(item.mark.items.length / ${ncols})`;\n    update.row.signal = `${index}%${nrows}`;\n    update.column.signal = `floor(${index} / ${nrows})`;\n    sort = {\n      field: ['row', index]\n    };\n  } else {\n    update.row.signal = `floor(${index} / ${ncols})`;\n    update.column.signal = `${index} % ${ncols}`;\n    sort = {\n      field: index\n    };\n  } // handle zero column case (implies infinite columns)\n\n\n  update.column.signal = `(${columns})?${update.column.signal}:${index}`; // facet legend entries into sub-groups\n\n  dataRef = {\n    facet: {\n      data: dataRef,\n      name: 'value',\n      groupby: Index\n    }\n  };\n  return guideGroup({\n    role: ScopeRole,\n    from: dataRef,\n    encode: extendEncode(encode, entries, Skip),\n    marks: [symbols, labels],\n    name,\n    interactive,\n    sort\n  });\n}\nfunction legendSymbolLayout(spec, config) {\n  const _ = lookup(spec, config); // layout parameters for legend entries\n\n\n  return {\n    align: _('gridAlign'),\n    columns: _.entryColumns(),\n    center: {\n      row: true,\n      column: false\n    },\n    padding: {\n      row: _('rowPadding'),\n      column: _('columnPadding')\n    }\n  };\n}\n\nconst isL = 'item.orient === \"left\"',\n      isR = 'item.orient === \"right\"',\n      isLR = `(${isL} || ${isR})`,\n      isVG = `datum.vgrad && ${isLR}`,\n      baseline = anchorExpr('\"top\"', '\"bottom\"', '\"middle\"'),\n      alignFlip = anchorExpr('\"right\"', '\"left\"', '\"center\"'),\n      exprAlign = `datum.vgrad && ${isR} ? (${alignFlip}) : (${isLR} && !(datum.vgrad && ${isL})) ? \"left\" : ${alignExpr$1}`,\n      exprAnchor = `item._anchor || (${isLR} ? \"middle\" : \"start\")`,\n      exprAngle = `${isVG} ? (${isL} ? -90 : 90) : 0`,\n      exprBaseline = `${isLR} ? (datum.vgrad ? (${isR} ? \"bottom\" : \"top\") : ${baseline}) : \"top\"`;\nfunction legendTitle (spec, config, userEncode, dataRef) {\n  const _ = lookup(spec, config);\n\n  const encode = {\n    enter: {\n      opacity: zero\n    },\n    update: {\n      opacity: one,\n      x: {\n        field: {\n          group: 'padding'\n        }\n      },\n      y: {\n        field: {\n          group: 'padding'\n        }\n      }\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    orient: _('titleOrient'),\n    _anchor: _('titleAnchor'),\n    anchor: {\n      signal: exprAnchor\n    },\n    angle: {\n      signal: exprAngle\n    },\n    align: {\n      signal: exprAlign\n    },\n    baseline: {\n      signal: exprBaseline\n    },\n    text: spec.title,\n    fill: _('titleColor'),\n    fillOpacity: _('titleOpacity'),\n    font: _('titleFont'),\n    fontSize: _('titleFontSize'),\n    fontStyle: _('titleFontStyle'),\n    fontWeight: _('titleFontWeight'),\n    limit: _('titleLimit'),\n    lineHeight: _('titleLineHeight')\n  }, {\n    // require update\n    align: _('titleAlign'),\n    baseline: _('titleBaseline')\n  });\n  return guideMark({\n    type: TextMark,\n    role: LegendTitleRole,\n    style: GuideTitleStyle,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction clip (clip, scope) {\n  let expr;\n\n  if (isObject(clip)) {\n    if (clip.signal) {\n      expr = clip.signal;\n    } else if (clip.path) {\n      expr = 'pathShape(' + param(clip.path) + ')';\n    } else if (clip.sphere) {\n      expr = 'geoShape(' + param(clip.sphere) + ', {type: \"Sphere\"})';\n    }\n  }\n\n  return expr ? scope.signalRef(expr) : !!clip;\n}\n\nfunction param(value) {\n  return isObject(value) && value.signal ? value.signal : stringValue(value);\n}\n\nfunction getRole (spec) {\n  const role = spec.role || '';\n  return !role.indexOf('axis') || !role.indexOf('legend') || !role.indexOf('title') ? role : spec.type === GroupMark ? ScopeRole : role || MarkRole;\n}\n\nfunction definition (spec) {\n  return {\n    marktype: spec.type,\n    name: spec.name || undefined,\n    role: spec.role || getRole(spec),\n    zindex: +spec.zindex || undefined,\n    aria: spec.aria,\n    description: spec.description\n  };\n}\n\nfunction interactive (spec, scope) {\n  return spec && spec.signal ? scope.signalRef(spec.signal) : spec === false ? false : true;\n}\n\n/**\n * Parse a data transform specification.\n */\n\nfunction parseTransform (spec, scope) {\n  const def = definition$1(spec.type);\n  if (!def) error('Unrecognized transform type: ' + stringValue(spec.type));\n  const t = entry(def.type.toLowerCase(), null, parseParameters(def, spec, scope));\n  if (spec.signal) scope.addSignal(spec.signal, scope.proxy(t));\n  t.metadata = def.metadata || {};\n  return t;\n}\n/**\n * Parse all parameters of a data transform.\n */\n\nfunction parseParameters(def, spec, scope) {\n  const params = {},\n        n = def.params.length;\n\n  for (let i = 0; i < n; ++i) {\n    const pdef = def.params[i];\n    params[pdef.name] = parseParameter(pdef, spec, scope);\n  }\n\n  return params;\n}\n/**\n * Parse a data transform parameter.\n */\n\n\nfunction parseParameter(def, spec, scope) {\n  const type = def.type,\n        value = spec[def.name];\n\n  if (type === 'index') {\n    return parseIndexParameter(def, spec, scope);\n  } else if (value === undefined) {\n    if (def.required) {\n      error('Missing required ' + stringValue(spec.type) + ' parameter: ' + stringValue(def.name));\n    }\n\n    return;\n  } else if (type === 'param') {\n    return parseSubParameters(def, spec, scope);\n  } else if (type === 'projection') {\n    return scope.projectionRef(spec[def.name]);\n  }\n\n  return def.array && !isSignal(value) ? value.map(v => parameterValue(def, v, scope)) : parameterValue(def, value, scope);\n}\n/**\n * Parse a single parameter value.\n */\n\n\nfunction parameterValue(def, value, scope) {\n  const type = def.type;\n\n  if (isSignal(value)) {\n    return isExpr(type) ? error('Expression references can not be signals.') : isField(type) ? scope.fieldRef(value) : isCompare(type) ? scope.compareRef(value) : scope.signalRef(value.signal);\n  } else {\n    const expr = def.expr || isField(type);\n    return expr && outerExpr(value) ? scope.exprRef(value.expr, value.as) : expr && outerField(value) ? fieldRef$1(value.field, value.as) : isExpr(type) ? parseExpression(value, scope) : isData(type) ? ref(scope.getData(value).values) : isField(type) ? fieldRef$1(value) : isCompare(type) ? scope.compareRef(value) : value;\n  }\n}\n/**\n * Parse parameter for accessing an index of another data set.\n */\n\n\nfunction parseIndexParameter(def, spec, scope) {\n  if (!isString(spec.from)) {\n    error('Lookup \"from\" parameter must be a string literal.');\n  }\n\n  return scope.getData(spec.from).lookupRef(scope, spec.key);\n}\n/**\n * Parse a parameter that contains one or more sub-parameter objects.\n */\n\n\nfunction parseSubParameters(def, spec, scope) {\n  const value = spec[def.name];\n\n  if (def.array) {\n    if (!isArray(value)) {\n      // signals not allowed!\n      error('Expected an array of sub-parameters. Instead: ' + stringValue(value));\n    }\n\n    return value.map(v => parseSubParameter(def, v, scope));\n  } else {\n    return parseSubParameter(def, value, scope);\n  }\n}\n/**\n * Parse a sub-parameter object.\n */\n\n\nfunction parseSubParameter(def, value, scope) {\n  const n = def.params.length;\n  let pdef; // loop over defs to find matching key\n\n  for (let i = 0; i < n; ++i) {\n    pdef = def.params[i];\n\n    for (const k in pdef.key) {\n      if (pdef.key[k] !== value[k]) {\n        pdef = null;\n        break;\n      }\n    }\n\n    if (pdef) break;\n  } // raise error if matching key not found\n\n\n  if (!pdef) error('Unsupported parameter: ' + stringValue(value)); // parse params, create Params transform, return ref\n\n  const params = extend(parseParameters(pdef, value, scope), pdef.key);\n  return ref(scope.add(Params(params)));\n} // -- Utilities -----\n\n\nconst outerExpr = _ => _ && _.expr;\nconst outerField = _ => _ && _.field;\nconst isData = _ => _ === 'data';\nconst isExpr = _ => _ === 'expr';\nconst isField = _ => _ === 'field';\nconst isCompare = _ => _ === 'compare';\n\nfunction parseData$1 (from, group, scope) {\n  let facet, key, op, dataRef, parent; // if no source data, generate singleton datum\n\n  if (!from) {\n    dataRef = ref(scope.add(Collect(null, [{}])));\n  } // if faceted, process facet specification\n  else if (facet = from.facet) {\n    if (!group) error('Only group marks can be faceted.'); // use pre-faceted source data, if available\n\n    if (facet.field != null) {\n      dataRef = parent = getDataRef(facet, scope);\n    } else {\n      // generate facet aggregates if no direct data specification\n      if (!from.data) {\n        op = parseTransform(extend({\n          type: 'aggregate',\n          groupby: array(facet.groupby)\n        }, facet.aggregate), scope);\n        op.params.key = scope.keyRef(facet.groupby);\n        op.params.pulse = getDataRef(facet, scope);\n        dataRef = parent = ref(scope.add(op));\n      } else {\n        parent = ref(scope.getData(from.data).aggregate);\n      }\n\n      key = scope.keyRef(facet.groupby, true);\n    }\n  } // if not yet defined, get source data reference\n\n\n  if (!dataRef) {\n    dataRef = getDataRef(from, scope);\n  }\n\n  return {\n    key: key,\n    pulse: dataRef,\n    parent: parent\n  };\n}\nfunction getDataRef(from, scope) {\n  return from.$ref ? from : from.data && from.data.$ref ? from.data : ref(scope.getData(from.data).output);\n}\n\nfunction DataScope(scope, input, output, values, aggr) {\n  this.scope = scope; // parent scope object\n\n  this.input = input; // first operator in pipeline (tuple input)\n\n  this.output = output; // last operator in pipeline (tuple output)\n\n  this.values = values; // operator for accessing tuples (but not tuple flow)\n  // last aggregate in transform pipeline\n\n  this.aggregate = aggr; // lookup table of field indices\n\n  this.index = {};\n}\n\nDataScope.fromEntries = function (scope, entries) {\n  const n = entries.length,\n        values = entries[n - 1],\n        output = entries[n - 2];\n  let input = entries[0],\n      aggr = null,\n      i = 1;\n\n  if (input && input.type === 'load') {\n    input = entries[1];\n  } // add operator entries to this scope, wire up pulse chain\n\n\n  scope.add(entries[0]);\n\n  for (; i < n; ++i) {\n    entries[i].params.pulse = ref(entries[i - 1]);\n    scope.add(entries[i]);\n    if (entries[i].type === 'aggregate') aggr = entries[i];\n  }\n\n  return new DataScope(scope, input, output, values, aggr);\n};\n\nfunction fieldKey(field) {\n  return isString(field) ? field : null;\n}\n\nfunction addSortField(scope, p, sort) {\n  const as = aggrField(sort.op, sort.field);\n  let s;\n\n  if (p.ops) {\n    for (let i = 0, n = p.as.length; i < n; ++i) {\n      if (p.as[i] === as) return;\n    }\n  } else {\n    p.ops = ['count'];\n    p.fields = [null];\n    p.as = ['count'];\n  }\n\n  if (sort.op) {\n    p.ops.push((s = sort.op.signal) ? scope.signalRef(s) : sort.op);\n    p.fields.push(scope.fieldRef(sort.field));\n    p.as.push(as);\n  }\n}\n\nfunction cache(scope, ds, name, optype, field, counts, index) {\n  const cache = ds[name] || (ds[name] = {}),\n        sort = sortKey(counts);\n  let k = fieldKey(field),\n      v,\n      op;\n\n  if (k != null) {\n    scope = ds.scope;\n    k = k + (sort ? '|' + sort : '');\n    v = cache[k];\n  }\n\n  if (!v) {\n    const params = counts ? {\n      field: keyFieldRef,\n      pulse: ds.countsRef(scope, field, counts)\n    } : {\n      field: scope.fieldRef(field),\n      pulse: ref(ds.output)\n    };\n    if (sort) params.sort = scope.sortRef(counts);\n    op = scope.add(entry(optype, undefined, params));\n    if (index) ds.index[field] = op;\n    v = ref(op);\n    if (k != null) cache[k] = v;\n  }\n\n  return v;\n}\n\nDataScope.prototype = {\n  countsRef(scope, field, sort) {\n    const ds = this,\n          cache = ds.counts || (ds.counts = {}),\n          k = fieldKey(field);\n    let v, a, p;\n\n    if (k != null) {\n      scope = ds.scope;\n      v = cache[k];\n    }\n\n    if (!v) {\n      p = {\n        groupby: scope.fieldRef(field, 'key'),\n        pulse: ref(ds.output)\n      };\n      if (sort && sort.field) addSortField(scope, p, sort);\n      a = scope.add(Aggregate(p));\n      v = scope.add(Collect({\n        pulse: ref(a)\n      }));\n      v = {\n        agg: a,\n        ref: ref(v)\n      };\n      if (k != null) cache[k] = v;\n    } else if (sort && sort.field) {\n      addSortField(scope, v.agg.params, sort);\n    }\n\n    return v.ref;\n  },\n\n  tuplesRef() {\n    return ref(this.values);\n  },\n\n  extentRef(scope, field) {\n    return cache(scope, this, 'extent', 'extent', field, false);\n  },\n\n  domainRef(scope, field) {\n    return cache(scope, this, 'domain', 'values', field, false);\n  },\n\n  valuesRef(scope, field, sort) {\n    return cache(scope, this, 'vals', 'values', field, sort || true);\n  },\n\n  lookupRef(scope, field) {\n    return cache(scope, this, 'lookup', 'tupleindex', field, false);\n  },\n\n  indataRef(scope, field) {\n    return cache(scope, this, 'indata', 'tupleindex', field, true, true);\n  }\n\n};\n\nfunction parseFacet (spec, scope, group) {\n  const facet = spec.from.facet,\n        name = facet.name,\n        data = getDataRef(facet, scope);\n  let op;\n\n  if (!facet.name) {\n    error('Facet must have a name: ' + stringValue(facet));\n  }\n\n  if (!facet.data) {\n    error('Facet must reference a data set: ' + stringValue(facet));\n  }\n\n  if (facet.field) {\n    op = scope.add(PreFacet({\n      field: scope.fieldRef(facet.field),\n      pulse: data\n    }));\n  } else if (facet.groupby) {\n    op = scope.add(Facet({\n      key: scope.keyRef(facet.groupby),\n      group: ref(scope.proxy(group.parent)),\n      pulse: data\n    }));\n  } else {\n    error('Facet must specify groupby or field: ' + stringValue(facet));\n  } // initialize facet subscope\n\n\n  const subscope = scope.fork(),\n        source = subscope.add(Collect()),\n        values = subscope.add(Sieve({\n    pulse: ref(source)\n  }));\n  subscope.addData(name, new DataScope(subscope, source, source, values));\n  subscope.addSignal('parent', null); // parse faceted subflow\n\n  op.params.subflow = {\n    $subflow: subscope.parse(spec).toRuntime()\n  };\n}\n\nfunction parseSubflow (spec, scope, input) {\n  const op = scope.add(PreFacet({\n    pulse: input.pulse\n  })),\n        subscope = scope.fork();\n  subscope.add(Sieve());\n  subscope.addSignal('parent', null); // parse group mark subflow\n\n  op.params.subflow = {\n    $subflow: subscope.parse(spec).toRuntime()\n  };\n}\n\nfunction parseTrigger (spec, scope, name) {\n  const remove = spec.remove,\n        insert = spec.insert,\n        toggle = spec.toggle,\n        modify = spec.modify,\n        values = spec.values,\n        op = scope.add(operator());\n  const update = 'if(' + spec.trigger + ',modify(\"' + name + '\",' + [insert, remove, toggle, modify, values].map(_ => _ == null ? 'null' : _).join(',') + '),0)';\n  const expr = parseExpression(update, scope);\n  op.update = expr.$expr;\n  op.params = expr.$params;\n}\n\nfunction parseMark (spec, scope) {\n  const role = getRole(spec),\n        group = spec.type === GroupMark,\n        facet = spec.from && spec.from.facet,\n        overlap = spec.overlap;\n  let layout = spec.layout || role === ScopeRole || role === FrameRole,\n      ops,\n      op,\n      store,\n      enc,\n      name,\n      layoutRef,\n      boundRef;\n  const nested = role === MarkRole || layout || facet; // resolve input data\n\n  const input = parseData$1(spec.from, group, scope); // data join to map tuples to visual items\n\n  op = scope.add(DataJoin({\n    key: input.key || (spec.key ? fieldRef$1(spec.key) : undefined),\n    pulse: input.pulse,\n    clean: !group\n  }));\n  const joinRef = ref(op); // collect visual items\n\n  op = store = scope.add(Collect({\n    pulse: joinRef\n  })); // connect visual items to scenegraph\n\n  op = scope.add(Mark({\n    markdef: definition(spec),\n    interactive: interactive(spec.interactive, scope),\n    clip: clip(spec.clip, scope),\n    context: {\n      $context: true\n    },\n    groups: scope.lookup(),\n    parent: scope.signals.parent ? scope.signalRef('parent') : null,\n    index: scope.markpath(),\n    pulse: ref(op)\n  }));\n  const markRef = ref(op); // add visual encoders\n\n  op = enc = scope.add(Encode(parseEncode(spec.encode, spec.type, role, spec.style, scope, {\n    mod: false,\n    pulse: markRef\n  }))); // monitor parent marks to propagate changes\n\n  op.params.parent = scope.encode(); // add post-encoding transforms, if defined\n\n  if (spec.transform) {\n    spec.transform.forEach(_ => {\n      const tx = parseTransform(_, scope),\n            md = tx.metadata;\n\n      if (md.generates || md.changes) {\n        error('Mark transforms should not generate new data.');\n      }\n\n      if (!md.nomod) enc.params.mod = true; // update encode mod handling\n\n      tx.params.pulse = ref(op);\n      scope.add(op = tx);\n    });\n  } // if item sort specified, perform post-encoding\n\n\n  if (spec.sort) {\n    op = scope.add(SortItems({\n      sort: scope.compareRef(spec.sort),\n      pulse: ref(op)\n    }));\n  }\n\n  const encodeRef = ref(op); // add view layout operator if needed\n\n  if (facet || layout) {\n    layout = scope.add(ViewLayout({\n      layout: scope.objectProperty(spec.layout),\n      legends: scope.legends,\n      mark: markRef,\n      pulse: encodeRef\n    }));\n    layoutRef = ref(layout);\n  } // compute bounding boxes\n\n\n  const bound = scope.add(Bound({\n    mark: markRef,\n    pulse: layoutRef || encodeRef\n  }));\n  boundRef = ref(bound); // if group mark, recurse to parse nested content\n\n  if (group) {\n    // juggle layout & bounds to ensure they run *after* any faceting transforms\n    if (nested) {\n      ops = scope.operators;\n      ops.pop();\n      if (layout) ops.pop();\n    }\n\n    scope.pushState(encodeRef, layoutRef || boundRef, joinRef);\n    facet ? parseFacet(spec, scope, input) // explicit facet\n    : nested ? parseSubflow(spec, scope, input) // standard mark group\n    : scope.parse(spec); // guide group, we can avoid nested scopes\n\n    scope.popState();\n\n    if (nested) {\n      if (layout) ops.push(layout);\n      ops.push(bound);\n    }\n  } // if requested, add overlap removal transform\n\n\n  if (overlap) {\n    boundRef = parseOverlap(overlap, boundRef, scope);\n  } // render / sieve items\n\n\n  const render = scope.add(Render({\n    pulse: boundRef\n  })),\n        sieve = scope.add(Sieve({\n    pulse: ref(render)\n  }, undefined, scope.parent())); // if mark is named, make accessible as reactive geometry\n  // add trigger updates if defined\n\n  if (spec.name != null) {\n    name = spec.name;\n    scope.addData(name, new DataScope(scope, store, render, sieve));\n    if (spec.on) spec.on.forEach(on => {\n      if (on.insert || on.remove || on.toggle) {\n        error('Marks only support modify triggers.');\n      }\n\n      parseTrigger(on, scope, name);\n    });\n  }\n}\n\nfunction parseOverlap(overlap, source, scope) {\n  const method = overlap.method,\n        bound = overlap.bound,\n        sep = overlap.separation;\n  const params = {\n    separation: isSignal(sep) ? scope.signalRef(sep.signal) : sep,\n    method: isSignal(method) ? scope.signalRef(method.signal) : method,\n    pulse: source\n  };\n\n  if (overlap.order) {\n    params.sort = scope.compareRef({\n      field: overlap.order\n    });\n  }\n\n  if (bound) {\n    const tol = bound.tolerance;\n    params.boundTolerance = isSignal(tol) ? scope.signalRef(tol.signal) : +tol;\n    params.boundScale = scope.scaleRef(bound.scale);\n    params.boundOrient = bound.orient;\n  }\n\n  return ref(scope.add(Overlap(params)));\n}\n\nfunction parseLegend (spec, scope) {\n  const config = scope.config.legend,\n        encode = spec.encode || {},\n        _ = lookup(spec, config),\n        legendEncode = encode.legend || {},\n        name = legendEncode.name || undefined,\n        interactive = legendEncode.interactive,\n        style = legendEncode.style,\n        scales = {};\n\n  let scale = 0,\n      entryLayout,\n      params,\n      children; // resolve scales and 'canonical' scale name\n\n  LegendScales.forEach(s => spec[s] ? (scales[s] = spec[s], scale = scale || spec[s]) : 0);\n  if (!scale) error('Missing valid scale for legend.'); // resolve legend type (symbol, gradient, or discrete gradient)\n\n  const type = legendType(spec, scope.scaleType(scale)); // single-element data source for legend group\n\n  const datum = {\n    title: spec.title != null,\n    scales: scales,\n    type: type,\n    vgrad: type !== 'symbol' && _.isVertical()\n  };\n  const dataRef = ref(scope.add(Collect(null, [datum]))); // encoding properties for legend entry sub-group\n\n  const entryEncode = {\n    enter: {\n      x: {\n        value: 0\n      },\n      y: {\n        value: 0\n      }\n    }\n  }; // data source for legend values\n\n  const entryRef = ref(scope.add(LegendEntries(params = {\n    type: type,\n    scale: scope.scaleRef(scale),\n    count: scope.objectProperty(_('tickCount')),\n    limit: scope.property(_('symbolLimit')),\n    values: scope.objectProperty(spec.values),\n    minstep: scope.property(spec.tickMinStep),\n    formatType: scope.property(spec.formatType),\n    formatSpecifier: scope.property(spec.format)\n  }))); // continuous gradient legend\n\n  if (type === Gradient) {\n    children = [legendGradient(spec, scale, config, encode.gradient), legendGradientLabels(spec, config, encode.labels, entryRef)]; // adjust default tick count based on the gradient length\n\n    params.count = params.count || scope.signalRef(`max(2,2*floor((${deref(_.gradientLength())})/100))`);\n  } // discrete gradient legend\n  else if (type === Discrete) {\n    children = [legendGradientDiscrete(spec, scale, config, encode.gradient, entryRef), legendGradientLabels(spec, config, encode.labels, entryRef)];\n  } // symbol legend\n  else {\n    // determine legend symbol group layout\n    entryLayout = legendSymbolLayout(spec, config);\n    children = [legendSymbolGroups(spec, config, encode, entryRef, deref(entryLayout.columns))]; // pass symbol size information to legend entry generator\n\n    params.size = sizeExpression(spec, scope, children[0].marks);\n  } // generate legend marks\n\n\n  children = [guideGroup({\n    role: LegendEntryRole,\n    from: dataRef,\n    encode: entryEncode,\n    marks: children,\n    layout: entryLayout,\n    interactive\n  })]; // include legend title if defined\n\n  if (datum.title) {\n    children.push(legendTitle(spec, config, encode.title, dataRef));\n  } // parse legend specification\n\n\n  return parseMark(guideGroup({\n    role: LegendRole,\n    from: dataRef,\n    encode: extendEncode(buildLegendEncode(_, spec, config), legendEncode, Skip),\n    marks: children,\n    aria: _('aria'),\n    description: _('description'),\n    zindex: _('zindex'),\n    name,\n    interactive,\n    style\n  }), scope);\n}\n\nfunction legendType(spec, scaleType) {\n  let type = spec.type || Symbols;\n\n  if (!spec.type && scaleCount(spec) === 1 && (spec.fill || spec.stroke)) {\n    type = isContinuous(scaleType) ? Gradient : isDiscretizing(scaleType) ? Discrete : Symbols;\n  }\n\n  return type !== Gradient ? type : isDiscretizing(scaleType) ? Discrete : Gradient;\n}\n\nfunction scaleCount(spec) {\n  return LegendScales.reduce((count, type) => count + (spec[type] ? 1 : 0), 0);\n}\n\nfunction buildLegendEncode(_, spec, config) {\n  const encode = {\n    enter: {},\n    update: {}\n  };\n  addEncoders(encode, {\n    orient: _('orient'),\n    offset: _('offset'),\n    padding: _('padding'),\n    titlePadding: _('titlePadding'),\n    cornerRadius: _('cornerRadius'),\n    fill: _('fillColor'),\n    stroke: _('strokeColor'),\n    strokeWidth: config.strokeWidth,\n    strokeDash: config.strokeDash,\n    x: _('legendX'),\n    y: _('legendY'),\n    // accessibility support\n    format: spec.format,\n    formatType: spec.formatType\n  });\n  return encode;\n}\n\nfunction sizeExpression(spec, scope, marks) {\n  const size = deref(getChannel('size', spec, marks)),\n        strokeWidth = deref(getChannel('strokeWidth', spec, marks)),\n        fontSize = deref(getFontSize(marks[1].encode, scope, GuideLabelStyle));\n  return parseExpression(`max(ceil(sqrt(${size})+${strokeWidth}),${fontSize})`, scope);\n}\n\nfunction getChannel(name, spec, marks) {\n  return spec[name] ? `scale(\"${spec[name]}\",datum)` : getEncoding(name, marks[0].encode);\n}\n\nfunction getFontSize(encode, scope, style) {\n  return getEncoding('fontSize', encode) || getStyle('fontSize', scope, style);\n}\n\nconst angleExpr = `item.orient===\"${Left}\"?-90:item.orient===\"${Right}\"?90:0`;\nfunction parseTitle (spec, scope) {\n  spec = isString(spec) ? {\n    text: spec\n  } : spec;\n\n  const _ = lookup(spec, scope.config.title),\n        encode = spec.encode || {},\n        userEncode = encode.group || {},\n        name = userEncode.name || undefined,\n        interactive = userEncode.interactive,\n        style = userEncode.style,\n        children = []; // single-element data source for group title\n\n\n  const datum = {},\n        dataRef = ref(scope.add(Collect(null, [datum]))); // include title text\n\n  children.push(buildTitle(spec, _, titleEncode(spec), dataRef)); // include subtitle text\n\n  if (spec.subtitle) {\n    children.push(buildSubTitle(spec, _, encode.subtitle, dataRef));\n  } // parse title specification\n\n\n  return parseMark(guideGroup({\n    role: TitleRole,\n    from: dataRef,\n    encode: groupEncode(_, userEncode),\n    marks: children,\n    aria: _('aria'),\n    description: _('description'),\n    zindex: _('zindex'),\n    name,\n    interactive,\n    style\n  }), scope);\n} // provide backwards-compatibility for title custom encode;\n// the top-level encode block has been *deprecated*.\n\nfunction titleEncode(spec) {\n  const encode = spec.encode;\n  return encode && encode.title || extend({\n    name: spec.name,\n    interactive: spec.interactive,\n    style: spec.style\n  }, encode);\n}\n\nfunction groupEncode(_, userEncode) {\n  const encode = {\n    enter: {},\n    update: {}\n  };\n  addEncoders(encode, {\n    orient: _('orient'),\n    anchor: _('anchor'),\n    align: {\n      signal: alignExpr$1\n    },\n    angle: {\n      signal: angleExpr\n    },\n    limit: _('limit'),\n    frame: _('frame'),\n    offset: _('offset') || 0,\n    padding: _('subtitlePadding')\n  });\n  return extendEncode(encode, userEncode, Skip);\n}\n\nfunction buildTitle(spec, _, userEncode, dataRef) {\n  const zero = {\n    value: 0\n  },\n        text = spec.text,\n        encode = {\n    enter: {\n      opacity: zero\n    },\n    update: {\n      opacity: {\n        value: 1\n      }\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    text: text,\n    align: {\n      signal: 'item.mark.group.align'\n    },\n    angle: {\n      signal: 'item.mark.group.angle'\n    },\n    limit: {\n      signal: 'item.mark.group.limit'\n    },\n    baseline: 'top',\n    dx: _('dx'),\n    dy: _('dy'),\n    fill: _('color'),\n    font: _('font'),\n    fontSize: _('fontSize'),\n    fontStyle: _('fontStyle'),\n    fontWeight: _('fontWeight'),\n    lineHeight: _('lineHeight')\n  }, {\n    // update\n    align: _('align'),\n    angle: _('angle'),\n    baseline: _('baseline')\n  });\n  return guideMark({\n    type: TextMark,\n    role: TitleTextRole,\n    style: GroupTitleStyle,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction buildSubTitle(spec, _, userEncode, dataRef) {\n  const zero = {\n    value: 0\n  },\n        text = spec.subtitle,\n        encode = {\n    enter: {\n      opacity: zero\n    },\n    update: {\n      opacity: {\n        value: 1\n      }\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    text: text,\n    align: {\n      signal: 'item.mark.group.align'\n    },\n    angle: {\n      signal: 'item.mark.group.angle'\n    },\n    limit: {\n      signal: 'item.mark.group.limit'\n    },\n    baseline: 'top',\n    dx: _('dx'),\n    dy: _('dy'),\n    fill: _('subtitleColor'),\n    font: _('subtitleFont'),\n    fontSize: _('subtitleFontSize'),\n    fontStyle: _('subtitleFontStyle'),\n    fontWeight: _('subtitleFontWeight'),\n    lineHeight: _('subtitleLineHeight')\n  }, {\n    // update\n    align: _('align'),\n    angle: _('angle'),\n    baseline: _('baseline')\n  });\n  return guideMark({\n    type: TextMark,\n    role: TitleSubtitleRole,\n    style: GroupSubtitleStyle,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction parseData(data, scope) {\n  const transforms = [];\n\n  if (data.transform) {\n    data.transform.forEach(tx => {\n      transforms.push(parseTransform(tx, scope));\n    });\n  }\n\n  if (data.on) {\n    data.on.forEach(on => {\n      parseTrigger(on, scope, data.name);\n    });\n  }\n\n  scope.addDataPipeline(data.name, analyze(data, scope, transforms));\n}\n/**\n * Analyze a data pipeline, add needed operators.\n */\n\nfunction analyze(data, scope, ops) {\n  const output = [];\n  let source = null,\n      modify = false,\n      generate = false,\n      upstream,\n      i,\n      n,\n      t,\n      m;\n\n  if (data.values) {\n    // hard-wired input data set\n    if (isSignal(data.values) || hasSignal(data.format)) {\n      // if either values is signal or format has signal, use dynamic loader\n      output.push(load(scope, data));\n      output.push(source = collect());\n    } else {\n      // otherwise, ingest upon dataflow init\n      output.push(source = collect({\n        $ingest: data.values,\n        $format: data.format\n      }));\n    }\n  } else if (data.url) {\n    // load data from external source\n    if (hasSignal(data.url) || hasSignal(data.format)) {\n      // if either url or format has signal, use dynamic loader\n      output.push(load(scope, data));\n      output.push(source = collect());\n    } else {\n      // otherwise, request load upon dataflow init\n      output.push(source = collect({\n        $request: data.url,\n        $format: data.format\n      }));\n    }\n  } else if (data.source) {\n    // derives from one or more other data sets\n    source = upstream = array(data.source).map(d => ref(scope.getData(d).output));\n    output.push(null); // populate later\n  } // scan data transforms, add collectors as needed\n\n\n  for (i = 0, n = ops.length; i < n; ++i) {\n    t = ops[i];\n    m = t.metadata;\n\n    if (!source && !m.source) {\n      output.push(source = collect());\n    }\n\n    output.push(t);\n    if (m.generates) generate = true;\n    if (m.modifies && !generate) modify = true;\n    if (m.source) source = t;else if (m.changes) source = null;\n  }\n\n  if (upstream) {\n    n = upstream.length - 1;\n    output[0] = Relay({\n      derive: modify,\n      pulse: n ? upstream : upstream[0]\n    });\n\n    if (modify || n) {\n      // collect derived and multi-pulse tuples\n      output.splice(1, 0, collect());\n    }\n  }\n\n  if (!source) output.push(collect());\n  output.push(Sieve({}));\n  return output;\n}\n\nfunction collect(values) {\n  const s = Collect({}, values);\n  s.metadata = {\n    source: true\n  };\n  return s;\n}\n\nfunction load(scope, data) {\n  return Load({\n    url: data.url ? scope.property(data.url) : undefined,\n    async: data.async ? scope.property(data.async) : undefined,\n    values: data.values ? scope.property(data.values) : undefined,\n    format: scope.objectProperty(data.format)\n  });\n}\n\nconst isX = orient => orient === Bottom || orient === Top; // get sign coefficient based on axis orient\n\n\nconst getSign = (orient, a, b) => isSignal(orient) ? ifLeftTopExpr(orient.signal, a, b) : orient === Left || orient === Top ? a : b; // condition on axis x-direction\n\nconst ifX = (orient, a, b) => isSignal(orient) ? ifXEnc(orient.signal, a, b) : isX(orient) ? a : b; // condition on axis y-direction\n\nconst ifY = (orient, a, b) => isSignal(orient) ? ifYEnc(orient.signal, a, b) : isX(orient) ? b : a;\nconst ifTop = (orient, a, b) => isSignal(orient) ? ifTopExpr(orient.signal, a, b) : orient === Top ? {\n  value: a\n} : {\n  value: b\n};\nconst ifRight = (orient, a, b) => isSignal(orient) ? ifRightExpr(orient.signal, a, b) : orient === Right ? {\n  value: a\n} : {\n  value: b\n};\n\nconst ifXEnc = ($orient, a, b) => ifEnc(`${$orient} === '${Top}' || ${$orient} === '${Bottom}'`, a, b);\n\nconst ifYEnc = ($orient, a, b) => ifEnc(`${$orient} !== '${Top}' && ${$orient} !== '${Bottom}'`, a, b);\n\nconst ifLeftTopExpr = ($orient, a, b) => ifExpr(`${$orient} === '${Left}' || ${$orient} === '${Top}'`, a, b);\n\nconst ifTopExpr = ($orient, a, b) => ifExpr(`${$orient} === '${Top}'`, a, b);\n\nconst ifRightExpr = ($orient, a, b) => ifExpr(`${$orient} === '${Right}'`, a, b);\n\nconst ifEnc = (test, a, b) => {\n  // ensure inputs are encoder objects (or null)\n  a = a != null ? encoder(a) : a;\n  b = b != null ? encoder(b) : b;\n\n  if (isSimple(a) && isSimple(b)) {\n    // if possible generate simple signal expression\n    a = a ? a.signal || stringValue(a.value) : null;\n    b = b ? b.signal || stringValue(b.value) : null;\n    return {\n      signal: `${test} ? (${a}) : (${b})`\n    };\n  } else {\n    // otherwise generate rule set\n    return [extend({\n      test\n    }, a)].concat(b || []);\n  }\n};\n\nconst isSimple = enc => enc == null || Object.keys(enc).length === 1;\n\nconst ifExpr = (test, a, b) => ({\n  signal: `${test} ? (${toExpr(a)}) : (${toExpr(b)})`\n});\n\nconst ifOrient = ($orient, t, b, l, r) => ({\n  signal: (l != null ? `${$orient} === '${Left}' ? (${toExpr(l)}) : ` : '') + (b != null ? `${$orient} === '${Bottom}' ? (${toExpr(b)}) : ` : '') + (r != null ? `${$orient} === '${Right}' ? (${toExpr(r)}) : ` : '') + (t != null ? `${$orient} === '${Top}' ? (${toExpr(t)}) : ` : '') + '(null)'\n});\n\nconst toExpr = v => isSignal(v) ? v.signal : v == null ? null : stringValue(v);\n\nconst mult = (sign, value) => value === 0 ? 0 : isSignal(sign) ? {\n  signal: `(${sign.signal}) * ${value}`\n} : {\n  value: sign * value\n};\nconst patch = (value, base) => {\n  const s = value.signal;\n  return s && s.endsWith('(null)') ? {\n    signal: s.slice(0, -6) + base.signal\n  } : value;\n};\n\nfunction fallback(prop, config, axisConfig, style) {\n  let styleProp;\n\n  if (config && hasOwnProperty(config, prop)) {\n    return config[prop];\n  } else if (hasOwnProperty(axisConfig, prop)) {\n    return axisConfig[prop];\n  } else if (prop.startsWith('title')) {\n    switch (prop) {\n      case 'titleColor':\n        styleProp = 'fill';\n        break;\n\n      case 'titleFont':\n      case 'titleFontSize':\n      case 'titleFontWeight':\n        styleProp = prop[5].toLowerCase() + prop.slice(6);\n    }\n\n    return style[GuideTitleStyle][styleProp];\n  } else if (prop.startsWith('label')) {\n    switch (prop) {\n      case 'labelColor':\n        styleProp = 'fill';\n        break;\n\n      case 'labelFont':\n      case 'labelFontSize':\n        styleProp = prop[5].toLowerCase() + prop.slice(6);\n    }\n\n    return style[GuideLabelStyle][styleProp];\n  }\n\n  return null;\n}\n\nfunction keys(objects) {\n  const map = {};\n\n  for (const obj of objects) {\n    if (!obj) continue;\n\n    for (const key in obj) map[key] = 1;\n  }\n\n  return Object.keys(map);\n}\n\nfunction axisConfig (spec, scope) {\n  var config = scope.config,\n      style = config.style,\n      axis = config.axis,\n      band = scope.scaleType(spec.scale) === 'band' && config.axisBand,\n      orient = spec.orient,\n      xy,\n      or,\n      key;\n\n  if (isSignal(orient)) {\n    const xyKeys = keys([config.axisX, config.axisY]),\n          orientKeys = keys([config.axisTop, config.axisBottom, config.axisLeft, config.axisRight]);\n    xy = {};\n\n    for (key of xyKeys) {\n      xy[key] = ifX(orient, fallback(key, config.axisX, axis, style), fallback(key, config.axisY, axis, style));\n    }\n\n    or = {};\n\n    for (key of orientKeys) {\n      or[key] = ifOrient(orient.signal, fallback(key, config.axisTop, axis, style), fallback(key, config.axisBottom, axis, style), fallback(key, config.axisLeft, axis, style), fallback(key, config.axisRight, axis, style));\n    }\n  } else {\n    xy = orient === Top || orient === Bottom ? config.axisX : config.axisY;\n    or = config['axis' + orient[0].toUpperCase() + orient.slice(1)];\n  }\n\n  const result = xy || or || band ? extend({}, axis, xy, or, band) : axis;\n  return result;\n}\n\nfunction axisDomain (spec, config, userEncode, dataRef) {\n  const _ = lookup(spec, config),\n        orient = spec.orient;\n\n  let enter, update;\n  const encode = {\n    enter: enter = {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('domainColor'),\n    strokeCap: _('domainCap'),\n    strokeDash: _('domainDash'),\n    strokeDashOffset: _('domainDashOffset'),\n    strokeWidth: _('domainWidth'),\n    strokeOpacity: _('domainOpacity')\n  });\n  const pos0 = position(spec, 0);\n  const pos1 = position(spec, 1);\n  enter.x = update.x = ifX(orient, pos0, zero);\n  enter.x2 = update.x2 = ifX(orient, pos1);\n  enter.y = update.y = ifY(orient, pos0, zero);\n  enter.y2 = update.y2 = ifY(orient, pos1);\n  return guideMark({\n    type: RuleMark,\n    role: AxisDomainRole,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction position(spec, pos) {\n  return {\n    scale: spec.scale,\n    range: pos\n  };\n}\n\nfunction axisGrid (spec, config, userEncode, dataRef, band) {\n  const _ = lookup(spec, config),\n        orient = spec.orient,\n        vscale = spec.gridScale,\n        sign = getSign(orient, 1, -1),\n        offset = offsetValue(spec.offset, sign);\n\n  let enter, exit, update;\n  const encode = {\n    enter: enter = {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one\n    },\n    exit: exit = {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('gridColor'),\n    strokeCap: _('gridCap'),\n    strokeDash: _('gridDash'),\n    strokeDashOffset: _('gridDashOffset'),\n    strokeOpacity: _('gridOpacity'),\n    strokeWidth: _('gridWidth')\n  });\n  const tickPos = {\n    scale: spec.scale,\n    field: Value,\n    band: band.band,\n    extra: band.extra,\n    offset: band.offset,\n    round: _('tickRound')\n  };\n  const sz = ifX(orient, {\n    signal: 'height'\n  }, {\n    signal: 'width'\n  });\n  const gridStart = vscale ? {\n    scale: vscale,\n    range: 0,\n    mult: sign,\n    offset: offset\n  } : {\n    value: 0,\n    offset: offset\n  };\n  const gridEnd = vscale ? {\n    scale: vscale,\n    range: 1,\n    mult: sign,\n    offset: offset\n  } : extend(sz, {\n    mult: sign,\n    offset: offset\n  });\n  enter.x = update.x = ifX(orient, tickPos, gridStart);\n  enter.y = update.y = ifY(orient, tickPos, gridStart);\n  enter.x2 = update.x2 = ifY(orient, gridEnd);\n  enter.y2 = update.y2 = ifX(orient, gridEnd);\n  exit.x = ifX(orient, tickPos);\n  exit.y = ifY(orient, tickPos);\n  return guideMark({\n    type: RuleMark,\n    role: AxisGridRole,\n    key: Value,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction offsetValue(offset, sign) {\n  if (sign === 1) ; else if (!isObject(offset)) {\n    offset = isSignal(sign) ? {\n      signal: `(${sign.signal}) * (${offset || 0})`\n    } : sign * (offset || 0);\n  } else {\n    let entry = offset = extend({}, offset);\n\n    while (entry.mult != null) {\n      if (!isObject(entry.mult)) {\n        entry.mult = isSignal(sign) // no offset if sign === 1\n        ? {\n          signal: `(${entry.mult}) * (${sign.signal})`\n        } : entry.mult * sign;\n        return offset;\n      } else {\n        entry = entry.mult = extend({}, entry.mult);\n      }\n    }\n\n    entry.mult = sign;\n  }\n\n  return offset;\n}\n\nfunction axisTicks (spec, config, userEncode, dataRef, size, band) {\n  const _ = lookup(spec, config),\n        orient = spec.orient,\n        sign = getSign(orient, -1, 1);\n\n  let enter, exit, update;\n  const encode = {\n    enter: enter = {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one\n    },\n    exit: exit = {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('tickColor'),\n    strokeCap: _('tickCap'),\n    strokeDash: _('tickDash'),\n    strokeDashOffset: _('tickDashOffset'),\n    strokeOpacity: _('tickOpacity'),\n    strokeWidth: _('tickWidth')\n  });\n  const tickSize = encoder(size);\n  tickSize.mult = sign;\n  const tickPos = {\n    scale: spec.scale,\n    field: Value,\n    band: band.band,\n    extra: band.extra,\n    offset: band.offset,\n    round: _('tickRound')\n  };\n  update.y = enter.y = ifX(orient, zero, tickPos);\n  update.y2 = enter.y2 = ifX(orient, tickSize);\n  exit.x = ifX(orient, tickPos);\n  update.x = enter.x = ifY(orient, zero, tickPos);\n  update.x2 = enter.x2 = ifY(orient, tickSize);\n  exit.y = ifY(orient, tickPos);\n  return guideMark({\n    type: RuleMark,\n    role: AxisTickRole,\n    key: Value,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction flushExpr(scale, threshold, a, b, c) {\n  return {\n    signal: 'flush(range(\"' + scale + '\"), ' + 'scale(\"' + scale + '\", datum.value), ' + threshold + ',' + a + ',' + b + ',' + c + ')'\n  };\n}\n\nfunction axisLabels (spec, config, userEncode, dataRef, size, band) {\n  const _ = lookup(spec, config),\n        orient = spec.orient,\n        scale = spec.scale,\n        sign = getSign(orient, -1, 1),\n        flush = deref(_('labelFlush')),\n        flushOffset = deref(_('labelFlushOffset')),\n        labelAlign = _('labelAlign'),\n        labelBaseline = _('labelBaseline');\n\n  let flushOn = flush === 0 || !!flush,\n      update;\n  const tickSize = encoder(size);\n  tickSize.mult = sign;\n  tickSize.offset = encoder(_('labelPadding') || 0);\n  tickSize.offset.mult = sign;\n  const tickPos = {\n    scale: scale,\n    field: Value,\n    band: 0.5,\n    offset: extendOffset(band.offset, _('labelOffset'))\n  };\n  const align = ifX(orient, flushOn ? flushExpr(scale, flush, '\"left\"', '\"right\"', '\"center\"') : {\n    value: 'center'\n  }, ifRight(orient, 'left', 'right'));\n  const baseline = ifX(orient, ifTop(orient, 'bottom', 'top'), flushOn ? flushExpr(scale, flush, '\"top\"', '\"bottom\"', '\"middle\"') : {\n    value: 'middle'\n  });\n  const offsetExpr = flushExpr(scale, flush, `-(${flushOffset})`, flushOffset, 0);\n  flushOn = flushOn && flushOffset;\n  const enter = {\n    opacity: zero,\n    x: ifX(orient, tickPos, tickSize),\n    y: ifY(orient, tickPos, tickSize)\n  };\n  const encode = {\n    enter: enter,\n    update: update = {\n      opacity: one,\n      text: {\n        field: Label\n      },\n      x: enter.x,\n      y: enter.y,\n      align,\n      baseline\n    },\n    exit: {\n      opacity: zero,\n      x: enter.x,\n      y: enter.y\n    }\n  };\n  addEncoders(encode, {\n    dx: !labelAlign && flushOn ? ifX(orient, offsetExpr) : null,\n    dy: !labelBaseline && flushOn ? ifY(orient, offsetExpr) : null\n  });\n  addEncoders(encode, {\n    angle: _('labelAngle'),\n    fill: _('labelColor'),\n    fillOpacity: _('labelOpacity'),\n    font: _('labelFont'),\n    fontSize: _('labelFontSize'),\n    fontWeight: _('labelFontWeight'),\n    fontStyle: _('labelFontStyle'),\n    limit: _('labelLimit'),\n    lineHeight: _('labelLineHeight')\n  }, {\n    align: labelAlign,\n    baseline: labelBaseline\n  });\n\n  const bound = _('labelBound');\n\n  let overlap = _('labelOverlap'); // if overlap method or bound defined, request label overlap removal\n\n\n  overlap = overlap || bound ? {\n    separation: _('labelSeparation'),\n    method: overlap,\n    order: 'datum.index',\n    bound: bound ? {\n      scale,\n      orient,\n      tolerance: bound\n    } : null\n  } : undefined;\n\n  if (update.align !== align) {\n    update.align = patch(update.align, align);\n  }\n\n  if (update.baseline !== baseline) {\n    update.baseline = patch(update.baseline, baseline);\n  }\n\n  return guideMark({\n    type: TextMark,\n    role: AxisLabelRole,\n    style: GuideLabelStyle,\n    key: Value,\n    from: dataRef,\n    encode,\n    overlap\n  }, userEncode);\n}\n\nfunction axisTitle (spec, config, userEncode, dataRef) {\n  const _ = lookup(spec, config),\n        orient = spec.orient,\n        sign = getSign(orient, -1, 1);\n\n  let enter, update;\n  const encode = {\n    enter: enter = {\n      opacity: zero,\n      anchor: encoder(_('titleAnchor', null)),\n      align: {\n        signal: alignExpr$1\n      }\n    },\n    update: update = extend({}, enter, {\n      opacity: one,\n      text: encoder(spec.title)\n    }),\n    exit: {\n      opacity: zero\n    }\n  };\n  const titlePos = {\n    signal: `lerp(range(\"${spec.scale}\"), ${anchorExpr(0, 1, 0.5)})`\n  };\n  update.x = ifX(orient, titlePos);\n  update.y = ifY(orient, titlePos);\n  enter.angle = ifX(orient, zero, mult(sign, 90));\n  enter.baseline = ifX(orient, ifTop(orient, Bottom, Top), {\n    value: Bottom\n  });\n  update.angle = enter.angle;\n  update.baseline = enter.baseline;\n  addEncoders(encode, {\n    fill: _('titleColor'),\n    fillOpacity: _('titleOpacity'),\n    font: _('titleFont'),\n    fontSize: _('titleFontSize'),\n    fontStyle: _('titleFontStyle'),\n    fontWeight: _('titleFontWeight'),\n    limit: _('titleLimit'),\n    lineHeight: _('titleLineHeight')\n  }, {\n    // require update\n    align: _('titleAlign'),\n    angle: _('titleAngle'),\n    baseline: _('titleBaseline')\n  });\n  autoLayout(_, orient, encode, userEncode);\n  encode.update.align = patch(encode.update.align, enter.align);\n  encode.update.angle = patch(encode.update.angle, enter.angle);\n  encode.update.baseline = patch(encode.update.baseline, enter.baseline);\n  return guideMark({\n    type: TextMark,\n    role: AxisTitleRole,\n    style: GuideTitleStyle,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction autoLayout(_, orient, encode, userEncode) {\n  const auto = (value, dim) => value != null ? (encode.update[dim] = patch(encoder(value), encode.update[dim]), false) : !has(dim, userEncode) ? true : false;\n\n  const autoY = auto(_('titleX'), 'x'),\n        autoX = auto(_('titleY'), 'y');\n  encode.enter.auto = autoX === autoY ? encoder(autoX) : ifX(orient, encoder(autoX), encoder(autoY));\n}\n\nfunction parseAxis (spec, scope) {\n  const config = axisConfig(spec, scope),\n        encode = spec.encode || {},\n        axisEncode = encode.axis || {},\n        name = axisEncode.name || undefined,\n        interactive = axisEncode.interactive,\n        style = axisEncode.style,\n        _ = lookup(spec, config),\n        band = tickBand(_); // single-element data source for axis group\n\n\n  const datum = {\n    scale: spec.scale,\n    ticks: !!_('ticks'),\n    labels: !!_('labels'),\n    grid: !!_('grid'),\n    domain: !!_('domain'),\n    title: spec.title != null\n  };\n  const dataRef = ref(scope.add(Collect({}, [datum]))); // data source for axis ticks\n\n  const ticksRef = ref(scope.add(AxisTicks({\n    scale: scope.scaleRef(spec.scale),\n    extra: scope.property(band.extra),\n    count: scope.objectProperty(spec.tickCount),\n    values: scope.objectProperty(spec.values),\n    minstep: scope.property(spec.tickMinStep),\n    formatType: scope.property(spec.formatType),\n    formatSpecifier: scope.property(spec.format)\n  }))); // generate axis marks\n\n  const children = [];\n  let size; // include axis gridlines if requested\n\n  if (datum.grid) {\n    children.push(axisGrid(spec, config, encode.grid, ticksRef, band));\n  } // include axis ticks if requested\n\n\n  if (datum.ticks) {\n    size = _('tickSize');\n    children.push(axisTicks(spec, config, encode.ticks, ticksRef, size, band));\n  } // include axis labels if requested\n\n\n  if (datum.labels) {\n    size = datum.ticks ? size : 0;\n    children.push(axisLabels(spec, config, encode.labels, ticksRef, size, band));\n  } // include axis domain path if requested\n\n\n  if (datum.domain) {\n    children.push(axisDomain(spec, config, encode.domain, dataRef));\n  } // include axis title if defined\n\n\n  if (datum.title) {\n    children.push(axisTitle(spec, config, encode.title, dataRef));\n  } // parse axis specification\n\n\n  return parseMark(guideGroup({\n    role: AxisRole,\n    from: dataRef,\n    encode: extendEncode(buildAxisEncode(_, spec), axisEncode, Skip),\n    marks: children,\n    aria: _('aria'),\n    description: _('description'),\n    zindex: _('zindex'),\n    name,\n    interactive,\n    style\n  }), scope);\n}\n\nfunction buildAxisEncode(_, spec) {\n  const encode = {\n    enter: {},\n    update: {}\n  };\n  addEncoders(encode, {\n    orient: _('orient'),\n    offset: _('offset') || 0,\n    position: value(spec.position, 0),\n    titlePadding: _('titlePadding'),\n    minExtent: _('minExtent'),\n    maxExtent: _('maxExtent'),\n    range: {\n      signal: `abs(span(range(\"${spec.scale}\")))`\n    },\n    translate: _('translate'),\n    // accessibility support\n    format: spec.format,\n    formatType: spec.formatType\n  });\n  return encode;\n}\n\nfunction parseScope (spec, scope, preprocessed) {\n  const signals = array(spec.signals),\n        scales = array(spec.scales); // parse signal definitions, if not already preprocessed\n\n  if (!preprocessed) signals.forEach(_ => parseSignal(_, scope)); // parse cartographic projection definitions\n\n  array(spec.projections).forEach(_ => parseProjection(_, scope)); // initialize scale references\n\n  scales.forEach(_ => initScale(_, scope)); // parse data sources\n\n  array(spec.data).forEach(_ => parseData(_, scope)); // parse scale definitions\n\n  scales.forEach(_ => parseScale(_, scope)); // parse signal updates\n\n  (preprocessed || signals).forEach(_ => parseSignalUpdates(_, scope)); // parse axis definitions\n\n  array(spec.axes).forEach(_ => parseAxis(_, scope)); // parse mark definitions\n\n  array(spec.marks).forEach(_ => parseMark(_, scope)); // parse legend definitions\n\n  array(spec.legends).forEach(_ => parseLegend(_, scope)); // parse title, if defined\n\n  if (spec.title) parseTitle(spec.title, scope); // parse collected lambda (anonymous) expressions\n\n  scope.parseLambdas();\n  return scope;\n}\n\nconst rootEncode = spec => extendEncode({\n  enter: {\n    x: {\n      value: 0\n    },\n    y: {\n      value: 0\n    }\n  },\n  update: {\n    width: {\n      signal: 'width'\n    },\n    height: {\n      signal: 'height'\n    }\n  }\n}, spec);\n\nfunction parseView(spec, scope) {\n  const config = scope.config; // add scenegraph root\n\n  const root = ref(scope.root = scope.add(operator())); // parse top-level signal definitions\n\n  const signals = collectSignals(spec, config);\n  signals.forEach(_ => parseSignal(_, scope)); // assign description, event, legend, and locale configuration\n\n  scope.description = spec.description || config.description;\n  scope.eventConfig = config.events;\n  scope.legends = scope.objectProperty(config.legend && config.legend.layout);\n  scope.locale = config.locale; // store root group item\n\n  const input = scope.add(Collect()); // encode root group item\n\n  const encode = scope.add(Encode(parseEncode(rootEncode(spec.encode), GroupMark, FrameRole, spec.style, scope, {\n    pulse: ref(input)\n  }))); // perform view layout\n\n  const parent = scope.add(ViewLayout({\n    layout: scope.objectProperty(spec.layout),\n    legends: scope.legends,\n    autosize: scope.signalRef('autosize'),\n    mark: root,\n    pulse: ref(encode)\n  }));\n  scope.operators.pop(); // parse remainder of specification\n\n  scope.pushState(ref(encode), ref(parent), null);\n  parseScope(spec, scope, signals);\n  scope.operators.push(parent); // bound / render / sieve root item\n\n  let op = scope.add(Bound({\n    mark: root,\n    pulse: ref(parent)\n  }));\n  op = scope.add(Render({\n    pulse: ref(op)\n  }));\n  op = scope.add(Sieve({\n    pulse: ref(op)\n  })); // track metadata for root item\n\n  scope.addData('root', new DataScope(scope, input, input, op));\n  return scope;\n}\n\nfunction signalObject(name, value) {\n  return value && value.signal ? {\n    name,\n    update: value.signal\n  } : {\n    name,\n    value\n  };\n}\n/**\n * Collect top-level signals, merging values as needed. Signals\n * defined in the config signals arrays are added only if that\n * signal is not explicitly defined in the specification.\n * Built-in signals (autosize, background, padding, width, height)\n * receive special treatment. They are initialized using the\n * top-level spec property, or, if undefined in the spec, using\n * the corresponding top-level config property. If this property\n * is a signal reference object, the signal expression maps to the\n * signal 'update' property. If the spec's top-level signal array\n * contains an entry that matches a built-in signal, that entry\n * will be merged with the built-in specification, potentially\n * overwriting existing 'value' or 'update' properties.\n */\n\n\nfunction collectSignals(spec, config) {\n  const _ = name => value(spec[name], config[name]),\n        signals = [signalObject('background', _('background')), signalObject('autosize', parseAutosize(_('autosize'))), signalObject('padding', parsePadding(_('padding'))), signalObject('width', _('width') || 0), signalObject('height', _('height') || 0)],\n        pre = signals.reduce((p, s) => (p[s.name] = s, p), {}),\n        map = {}; // add spec signal array\n\n\n  array(spec.signals).forEach(s => {\n    if (hasOwnProperty(pre, s.name)) {\n      // merge if built-in signal\n      s = extend(pre[s.name], s);\n    } else {\n      // otherwise add to signal list\n      signals.push(s);\n    }\n\n    map[s.name] = s;\n  }); // add config signal array\n\n  array(config.signals).forEach(s => {\n    if (!hasOwnProperty(map, s.name) && !hasOwnProperty(pre, s.name)) {\n      // add to signal list if not already defined\n      signals.push(s);\n    }\n  });\n  return signals;\n}\n\nfunction Scope(config, options) {\n  this.config = config || {};\n  this.options = options || {};\n  this.bindings = [];\n  this.field = {};\n  this.signals = {};\n  this.lambdas = {};\n  this.scales = {};\n  this.events = {};\n  this.data = {};\n  this.streams = [];\n  this.updates = [];\n  this.operators = [];\n  this.eventConfig = null;\n  this.locale = null;\n  this._id = 0;\n  this._subid = 0;\n  this._nextsub = [0];\n  this._parent = [];\n  this._encode = [];\n  this._lookup = [];\n  this._markpath = [];\n}\n\nfunction Subscope(scope) {\n  this.config = scope.config;\n  this.options = scope.options;\n  this.legends = scope.legends;\n  this.field = Object.create(scope.field);\n  this.signals = Object.create(scope.signals);\n  this.lambdas = Object.create(scope.lambdas);\n  this.scales = Object.create(scope.scales);\n  this.events = Object.create(scope.events);\n  this.data = Object.create(scope.data);\n  this.streams = [];\n  this.updates = [];\n  this.operators = [];\n  this._id = 0;\n  this._subid = ++scope._nextsub[0];\n  this._nextsub = scope._nextsub;\n  this._parent = scope._parent.slice();\n  this._encode = scope._encode.slice();\n  this._lookup = scope._lookup.slice();\n  this._markpath = scope._markpath;\n}\n\nScope.prototype = Subscope.prototype = {\n  parse(spec) {\n    return parseScope(spec, this);\n  },\n\n  fork() {\n    return new Subscope(this);\n  },\n\n  isSubscope() {\n    return this._subid > 0;\n  },\n\n  toRuntime() {\n    this.finish();\n    return {\n      description: this.description,\n      operators: this.operators,\n      streams: this.streams,\n      updates: this.updates,\n      bindings: this.bindings,\n      eventConfig: this.eventConfig,\n      locale: this.locale\n    };\n  },\n\n  id() {\n    return (this._subid ? this._subid + ':' : 0) + this._id++;\n  },\n\n  add(op) {\n    this.operators.push(op);\n    op.id = this.id(); // if pre-registration references exist, resolve them now\n\n    if (op.refs) {\n      op.refs.forEach(ref => {\n        ref.$ref = op.id;\n      });\n      op.refs = null;\n    }\n\n    return op;\n  },\n\n  proxy(op) {\n    const vref = op instanceof Entry ? ref(op) : op;\n    return this.add(Proxy({\n      value: vref\n    }));\n  },\n\n  addStream(stream) {\n    this.streams.push(stream);\n    stream.id = this.id();\n    return stream;\n  },\n\n  addUpdate(update) {\n    this.updates.push(update);\n    return update;\n  },\n\n  // Apply metadata\n  finish() {\n    let name, ds; // annotate root\n\n    if (this.root) this.root.root = true; // annotate signals\n\n    for (name in this.signals) {\n      this.signals[name].signal = name;\n    } // annotate scales\n\n\n    for (name in this.scales) {\n      this.scales[name].scale = name;\n    } // annotate data sets\n\n\n    function annotate(op, name, type) {\n      let data, list;\n\n      if (op) {\n        data = op.data || (op.data = {});\n        list = data[name] || (data[name] = []);\n        list.push(type);\n      }\n    }\n\n    for (name in this.data) {\n      ds = this.data[name];\n      annotate(ds.input, name, 'input');\n      annotate(ds.output, name, 'output');\n      annotate(ds.values, name, 'values');\n\n      for (const field in ds.index) {\n        annotate(ds.index[field], name, 'index:' + field);\n      }\n    }\n\n    return this;\n  },\n\n  // ----\n  pushState(encode, parent, lookup) {\n    this._encode.push(ref(this.add(Sieve({\n      pulse: encode\n    }))));\n\n    this._parent.push(parent);\n\n    this._lookup.push(lookup ? ref(this.proxy(lookup)) : null);\n\n    this._markpath.push(-1);\n  },\n\n  popState() {\n    this._encode.pop();\n\n    this._parent.pop();\n\n    this._lookup.pop();\n\n    this._markpath.pop();\n  },\n\n  parent() {\n    return peek(this._parent);\n  },\n\n  encode() {\n    return peek(this._encode);\n  },\n\n  lookup() {\n    return peek(this._lookup);\n  },\n\n  markpath() {\n    const p = this._markpath;\n    return ++p[p.length - 1];\n  },\n\n  // ----\n  fieldRef(field, name) {\n    if (isString(field)) return fieldRef$1(field, name);\n\n    if (!field.signal) {\n      error('Unsupported field reference: ' + stringValue(field));\n    }\n\n    const s = field.signal;\n    let f = this.field[s];\n\n    if (!f) {\n      const params = {\n        name: this.signalRef(s)\n      };\n      if (name) params.as = name;\n      this.field[s] = f = ref(this.add(Field(params)));\n    }\n\n    return f;\n  },\n\n  compareRef(cmp) {\n    let signal = false;\n\n    const check = _ => isSignal(_) ? (signal = true, this.signalRef(_.signal)) : isExpr$1(_) ? (signal = true, this.exprRef(_.expr)) : _;\n\n    const fields = array(cmp.field).map(check),\n          orders = array(cmp.order).map(check);\n    return signal ? ref(this.add(Compare({\n      fields: fields,\n      orders: orders\n    }))) : compareRef(fields, orders);\n  },\n\n  keyRef(fields, flat) {\n    let signal = false;\n\n    const check = _ => isSignal(_) ? (signal = true, ref(sig[_.signal])) : _;\n\n    const sig = this.signals;\n    fields = array(fields).map(check);\n    return signal ? ref(this.add(Key({\n      fields: fields,\n      flat: flat\n    }))) : keyRef(fields, flat);\n  },\n\n  sortRef(sort) {\n    if (!sort) return sort; // including id ensures stable sorting\n\n    const a = aggrField(sort.op, sort.field),\n          o = sort.order || Ascending;\n    return o.signal ? ref(this.add(Compare({\n      fields: a,\n      orders: this.signalRef(o.signal)\n    }))) : compareRef(a, o);\n  },\n\n  // ----\n  event(source, type) {\n    const key = source + ':' + type;\n\n    if (!this.events[key]) {\n      const id = this.id();\n      this.streams.push({\n        id: id,\n        source: source,\n        type: type\n      });\n      this.events[key] = id;\n    }\n\n    return this.events[key];\n  },\n\n  // ----\n  hasOwnSignal(name) {\n    return hasOwnProperty(this.signals, name);\n  },\n\n  addSignal(name, value) {\n    if (this.hasOwnSignal(name)) {\n      error('Duplicate signal name: ' + stringValue(name));\n    }\n\n    const op = value instanceof Entry ? value : this.add(operator(value));\n    return this.signals[name] = op;\n  },\n\n  getSignal(name) {\n    if (!this.signals[name]) {\n      error('Unrecognized signal name: ' + stringValue(name));\n    }\n\n    return this.signals[name];\n  },\n\n  signalRef(s) {\n    if (this.signals[s]) {\n      return ref(this.signals[s]);\n    } else if (!hasOwnProperty(this.lambdas, s)) {\n      this.lambdas[s] = this.add(operator(null));\n    }\n\n    return ref(this.lambdas[s]);\n  },\n\n  parseLambdas() {\n    const code = Object.keys(this.lambdas);\n\n    for (let i = 0, n = code.length; i < n; ++i) {\n      const s = code[i],\n            e = parseExpression(s, this),\n            op = this.lambdas[s];\n      op.params = e.$params;\n      op.update = e.$expr;\n    }\n  },\n\n  property(spec) {\n    return spec && spec.signal ? this.signalRef(spec.signal) : spec;\n  },\n\n  objectProperty(spec) {\n    return !spec || !isObject(spec) ? spec : this.signalRef(spec.signal || propertyLambda(spec));\n  },\n\n  exprRef(code, name) {\n    const params = {\n      expr: parseExpression(code, this)\n    };\n    if (name) params.expr.$name = name;\n    return ref(this.add(Expression(params)));\n  },\n\n  addBinding(name, bind) {\n    if (!this.bindings) {\n      error('Nested signals do not support binding: ' + stringValue(name));\n    }\n\n    this.bindings.push(extend({\n      signal: name\n    }, bind));\n  },\n\n  // ----\n  addScaleProj(name, transform) {\n    if (hasOwnProperty(this.scales, name)) {\n      error('Duplicate scale or projection name: ' + stringValue(name));\n    }\n\n    this.scales[name] = this.add(transform);\n  },\n\n  addScale(name, params) {\n    this.addScaleProj(name, Scale(params));\n  },\n\n  addProjection(name, params) {\n    this.addScaleProj(name, Projection(params));\n  },\n\n  getScale(name) {\n    if (!this.scales[name]) {\n      error('Unrecognized scale name: ' + stringValue(name));\n    }\n\n    return this.scales[name];\n  },\n\n  scaleRef(name) {\n    return ref(this.getScale(name));\n  },\n\n  scaleType(name) {\n    return this.getScale(name).params.type;\n  },\n\n  projectionRef(name) {\n    return this.scaleRef(name);\n  },\n\n  projectionType(name) {\n    return this.scaleType(name);\n  },\n\n  // ----\n  addData(name, dataScope) {\n    if (hasOwnProperty(this.data, name)) {\n      error('Duplicate data set name: ' + stringValue(name));\n    }\n\n    return this.data[name] = dataScope;\n  },\n\n  getData(name) {\n    if (!this.data[name]) {\n      error('Undefined data set name: ' + stringValue(name));\n    }\n\n    return this.data[name];\n  },\n\n  addDataPipeline(name, entries) {\n    if (hasOwnProperty(this.data, name)) {\n      error('Duplicate data set name: ' + stringValue(name));\n    }\n\n    return this.addData(name, DataScope.fromEntries(this, entries));\n  }\n\n};\n\nfunction propertyLambda(spec) {\n  return (isArray(spec) ? arrayLambda : objectLambda)(spec);\n}\n\nfunction arrayLambda(array) {\n  const n = array.length;\n  let code = '[';\n\n  for (let i = 0; i < n; ++i) {\n    const value = array[i];\n    code += (i > 0 ? ',' : '') + (isObject(value) ? value.signal || propertyLambda(value) : stringValue(value));\n  }\n\n  return code + ']';\n}\n\nfunction objectLambda(obj) {\n  let code = '{',\n      i = 0,\n      key,\n      value;\n\n  for (key in obj) {\n    value = obj[key];\n    code += (++i > 1 ? ',' : '') + stringValue(key) + ':' + (isObject(value) ? value.signal || propertyLambda(value) : stringValue(value));\n  }\n\n  return code + '}';\n}\n\n/**\n * Standard configuration defaults for Vega specification parsing.\n * Users can provide their own (sub-)set of these default values\n * by passing in a config object to the top-level parse method.\n */\nfunction defaults () {\n  const defaultFont = 'sans-serif',\n        defaultSymbolSize = 30,\n        defaultStrokeWidth = 2,\n        defaultColor = '#4c78a8',\n        black = '#000',\n        gray = '#888',\n        lightGray = '#ddd';\n  return {\n    // default visualization description\n    description: 'Vega visualization',\n    // default padding around visualization\n    padding: 0,\n    // default for automatic sizing; options: 'none', 'pad', 'fit'\n    // or provide an object (e.g., {'type': 'pad', 'resize': true})\n    autosize: 'pad',\n    // default view background color\n    // covers the entire view component\n    background: null,\n    // default event handling configuration\n    // preventDefault for view-sourced event types except 'wheel'\n    events: {\n      defaults: {\n        allow: ['wheel']\n      }\n    },\n    // defaults for top-level group marks\n    // accepts mark properties (fill, stroke, etc)\n    // covers the data rectangle within group width/height\n    group: null,\n    // defaults for basic mark types\n    // each subset accepts mark properties (fill, stroke, etc)\n    mark: null,\n    arc: {\n      fill: defaultColor\n    },\n    area: {\n      fill: defaultColor\n    },\n    image: null,\n    line: {\n      stroke: defaultColor,\n      strokeWidth: defaultStrokeWidth\n    },\n    path: {\n      stroke: defaultColor\n    },\n    rect: {\n      fill: defaultColor\n    },\n    rule: {\n      stroke: black\n    },\n    shape: {\n      stroke: defaultColor\n    },\n    symbol: {\n      fill: defaultColor,\n      size: 64\n    },\n    text: {\n      fill: black,\n      font: defaultFont,\n      fontSize: 11\n    },\n    trail: {\n      fill: defaultColor,\n      size: defaultStrokeWidth\n    },\n    // style definitions\n    style: {\n      // axis & legend labels\n      'guide-label': {\n        fill: black,\n        font: defaultFont,\n        fontSize: 10\n      },\n      // axis & legend titles\n      'guide-title': {\n        fill: black,\n        font: defaultFont,\n        fontSize: 11,\n        fontWeight: 'bold'\n      },\n      // headers, including chart title\n      'group-title': {\n        fill: black,\n        font: defaultFont,\n        fontSize: 13,\n        fontWeight: 'bold'\n      },\n      // chart subtitle\n      'group-subtitle': {\n        fill: black,\n        font: defaultFont,\n        fontSize: 12\n      },\n      // defaults for styled point marks in Vega-Lite\n      point: {\n        size: defaultSymbolSize,\n        strokeWidth: defaultStrokeWidth,\n        shape: 'circle'\n      },\n      circle: {\n        size: defaultSymbolSize,\n        strokeWidth: defaultStrokeWidth\n      },\n      square: {\n        size: defaultSymbolSize,\n        strokeWidth: defaultStrokeWidth,\n        shape: 'square'\n      },\n      // defaults for styled group marks in Vega-Lite\n      cell: {\n        fill: 'transparent',\n        stroke: lightGray\n      }\n    },\n    // defaults for title\n    title: {\n      orient: 'top',\n      anchor: 'middle',\n      offset: 4,\n      subtitlePadding: 3\n    },\n    // defaults for axes\n    axis: {\n      minExtent: 0,\n      maxExtent: 200,\n      bandPosition: 0.5,\n      domain: true,\n      domainWidth: 1,\n      domainColor: gray,\n      grid: false,\n      gridWidth: 1,\n      gridColor: lightGray,\n      labels: true,\n      labelAngle: 0,\n      labelLimit: 180,\n      labelOffset: 0,\n      labelPadding: 2,\n      ticks: true,\n      tickColor: gray,\n      tickOffset: 0,\n      tickRound: true,\n      tickSize: 5,\n      tickWidth: 1,\n      titlePadding: 4\n    },\n    // correction for centering bias\n    axisBand: {\n      tickOffset: -0.5\n    },\n    // defaults for cartographic projection\n    projection: {\n      type: 'mercator'\n    },\n    // defaults for legends\n    legend: {\n      orient: 'right',\n      padding: 0,\n      gridAlign: 'each',\n      columnPadding: 10,\n      rowPadding: 2,\n      symbolDirection: 'vertical',\n      gradientDirection: 'vertical',\n      gradientLength: 200,\n      gradientThickness: 16,\n      gradientStrokeColor: lightGray,\n      gradientStrokeWidth: 0,\n      gradientLabelOffset: 2,\n      labelAlign: 'left',\n      labelBaseline: 'middle',\n      labelLimit: 160,\n      labelOffset: 4,\n      labelOverlap: true,\n      symbolLimit: 30,\n      symbolType: 'circle',\n      symbolSize: 100,\n      symbolOffset: 0,\n      symbolStrokeWidth: 1.5,\n      symbolBaseFillColor: 'transparent',\n      symbolBaseStrokeColor: gray,\n      titleLimit: 180,\n      titleOrient: 'top',\n      titlePadding: 5,\n      layout: {\n        offset: 18,\n        direction: 'horizontal',\n        left: {\n          direction: 'vertical'\n        },\n        right: {\n          direction: 'vertical'\n        }\n      }\n    },\n    // defaults for scale ranges\n    range: {\n      category: {\n        scheme: 'tableau10'\n      },\n      ordinal: {\n        scheme: 'blues'\n      },\n      heatmap: {\n        scheme: 'yellowgreenblue'\n      },\n      ramp: {\n        scheme: 'blues'\n      },\n      diverging: {\n        scheme: 'blueorange',\n        extent: [1, 0]\n      },\n      symbol: ['circle', 'square', 'triangle-up', 'cross', 'diamond', 'triangle-right', 'triangle-down', 'triangle-left']\n    }\n  };\n}\n\nfunction parse (spec, config, options) {\n  if (!isObject(spec)) {\n    error('Input Vega specification must be an object.');\n  }\n\n  config = mergeConfig(defaults(), config, spec.config);\n  return parseView(spec, new Scope(config, options)).toRuntime();\n}\n\nexport { AxisDomainRole, AxisGridRole, AxisLabelRole, AxisRole, AxisTickRole, AxisTitleRole, DataScope, FrameRole, LegendEntryRole, LegendLabelRole, LegendRole, LegendSymbolRole, LegendTitleRole, MarkRole, Scope, ScopeRole, defaults as config, parse, parseSignal as signal, parseSignalUpdates as signalUpdates, parseStream as stream };\n","import { error, toSet, isFunction, isString, hasOwnProperty } from 'vega-util';\n\nconst RawCode = 'RawCode';\nconst Literal = 'Literal';\nconst Property = 'Property';\nconst Identifier = 'Identifier';\nconst ArrayExpression = 'ArrayExpression';\nconst BinaryExpression = 'BinaryExpression';\nconst CallExpression = 'CallExpression';\nconst ConditionalExpression = 'ConditionalExpression';\nconst LogicalExpression = 'LogicalExpression';\nconst MemberExpression = 'MemberExpression';\nconst ObjectExpression = 'ObjectExpression';\nconst UnaryExpression = 'UnaryExpression';\nfunction ASTNode(type) {\n  this.type = type;\n}\n\nASTNode.prototype.visit = function (visitor) {\n  let c, i, n;\n  if (visitor(this)) return 1;\n\n  for (c = children(this), i = 0, n = c.length; i < n; ++i) {\n    if (c[i].visit(visitor)) return 1;\n  }\n};\n\nfunction children(node) {\n  switch (node.type) {\n    case ArrayExpression:\n      return node.elements;\n\n    case BinaryExpression:\n    case LogicalExpression:\n      return [node.left, node.right];\n\n    case CallExpression:\n      return [node.callee].concat(node.arguments);\n\n    case ConditionalExpression:\n      return [node.test, node.consequent, node.alternate];\n\n    case MemberExpression:\n      return [node.object, node.property];\n\n    case ObjectExpression:\n      return node.properties;\n\n    case Property:\n      return [node.key, node.value];\n\n    case UnaryExpression:\n      return [node.argument];\n\n    case Identifier:\n    case Literal:\n    case RawCode:\n    default:\n      return [];\n  }\n}\n\n/*\n  The following expression parser is based on Esprima (http://esprima.org/).\n  Original header comment and license for Esprima is included here:\n\n  Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>\n  Copyright (C) 2013 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>\n  Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>\n  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>\n  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>\n  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar TokenName, source, index, length, lookahead;\nvar TokenBooleanLiteral = 1,\n    TokenEOF = 2,\n    TokenIdentifier = 3,\n    TokenKeyword = 4,\n    TokenNullLiteral = 5,\n    TokenNumericLiteral = 6,\n    TokenPunctuator = 7,\n    TokenStringLiteral = 8,\n    TokenRegularExpression = 9;\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '<end>';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\nvar SyntaxArrayExpression = 'ArrayExpression',\n    SyntaxBinaryExpression = 'BinaryExpression',\n    SyntaxCallExpression = 'CallExpression',\n    SyntaxConditionalExpression = 'ConditionalExpression',\n    SyntaxIdentifier = 'Identifier',\n    SyntaxLiteral = 'Literal',\n    SyntaxLogicalExpression = 'LogicalExpression',\n    SyntaxMemberExpression = 'MemberExpression',\n    SyntaxObjectExpression = 'ObjectExpression',\n    SyntaxProperty = 'Property',\n    SyntaxUnaryExpression = 'UnaryExpression'; // Error messages should be identical to V8.\n\nvar MessageUnexpectedToken = 'Unexpected token %0',\n    MessageUnexpectedNumber = 'Unexpected number',\n    MessageUnexpectedString = 'Unexpected string',\n    MessageUnexpectedIdentifier = 'Unexpected identifier',\n    MessageUnexpectedReserved = 'Unexpected reserved word',\n    MessageUnexpectedEOS = 'Unexpected end of input',\n    MessageInvalidRegExp = 'Invalid regular expression',\n    MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n    MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n    MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\nvar ILLEGAL = 'ILLEGAL',\n    DISABLED = 'Disabled.'; // See also tools/generate-unicode-regex.py.\n\nvar RegexNonAsciiIdentifierStart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'),\n    // eslint-disable-next-line no-misleading-character-class\nRegexNonAsciiIdentifierPart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'); // Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n  /* istanbul ignore next */\n  if (!condition) {\n    throw new Error('ASSERT: ' + message);\n  }\n}\n\nfunction isDecimalDigit(ch) {\n  return ch >= 0x30 && ch <= 0x39; // 0..9\n}\n\nfunction isHexDigit(ch) {\n  return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\n\nfunction isOctalDigit(ch) {\n  return '01234567'.indexOf(ch) >= 0;\n} // 7.2 White Space\n\n\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0;\n} // 7.3 Line Terminators\n\n\nfunction isLineTerminator(ch) {\n  return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n} // 7.6 Identifier Names and Identifiers\n\n\nfunction isIdentifierStart(ch) {\n  return ch === 0x24 || ch === 0x5F || // $ (dollar) and _ (underscore)\n  ch >= 0x41 && ch <= 0x5A || // A..Z\n  ch >= 0x61 && ch <= 0x7A || // a..z\n  ch === 0x5C || // \\ (backslash)\n  ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch));\n}\n\nfunction isIdentifierPart(ch) {\n  return ch === 0x24 || ch === 0x5F || // $ (dollar) and _ (underscore)\n  ch >= 0x41 && ch <= 0x5A || // A..Z\n  ch >= 0x61 && ch <= 0x7A || // a..z\n  ch >= 0x30 && ch <= 0x39 || // 0..9\n  ch === 0x5C || // \\ (backslash)\n  ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch));\n} // 7.6.1.1 Keywords\n\n\nconst keywords = {\n  'if': 1,\n  'in': 1,\n  'do': 1,\n  'var': 1,\n  'for': 1,\n  'new': 1,\n  'try': 1,\n  'let': 1,\n  'this': 1,\n  'else': 1,\n  'case': 1,\n  'void': 1,\n  'with': 1,\n  'enum': 1,\n  'while': 1,\n  'break': 1,\n  'catch': 1,\n  'throw': 1,\n  'const': 1,\n  'yield': 1,\n  'class': 1,\n  'super': 1,\n  'return': 1,\n  'typeof': 1,\n  'delete': 1,\n  'switch': 1,\n  'export': 1,\n  'import': 1,\n  'public': 1,\n  'static': 1,\n  'default': 1,\n  'finally': 1,\n  'extends': 1,\n  'package': 1,\n  'private': 1,\n  'function': 1,\n  'continue': 1,\n  'debugger': 1,\n  'interface': 1,\n  'protected': 1,\n  'instanceof': 1,\n  'implements': 1\n};\n\nfunction skipComment() {\n  while (index < length) {\n    const ch = source.charCodeAt(index);\n\n    if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n}\n\nfunction scanHexEscape(prefix) {\n  var i,\n      len,\n      ch,\n      code = 0;\n  len = prefix === 'u' ? 4 : 2;\n\n  for (i = 0; i < len; ++i) {\n    if (index < length && isHexDigit(source[index])) {\n      ch = source[index++];\n      code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n\n  return String.fromCharCode(code);\n}\n\nfunction scanUnicodeCodePointEscape() {\n  var ch, code, cu1, cu2;\n  ch = source[index];\n  code = 0; // At least, one hex digit is required.\n\n  if (ch === '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  while (index < length) {\n    ch = source[index++];\n\n    if (!isHexDigit(ch)) {\n      break;\n    }\n\n    code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n  }\n\n  if (code > 0x10FFFF || ch !== '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  } // UTF-16 Encoding\n\n\n  if (code <= 0xFFFF) {\n    return String.fromCharCode(code);\n  }\n\n  cu1 = (code - 0x10000 >> 10) + 0xD800;\n  cu2 = (code - 0x10000 & 1023) + 0xDC00;\n  return String.fromCharCode(cu1, cu2);\n}\n\nfunction getEscapedIdentifier() {\n  var ch, id;\n  ch = source.charCodeAt(index++);\n  id = String.fromCharCode(ch); // '\\u' (U+005C, U+0075) denotes an escaped character.\n\n  if (ch === 0x5C) {\n    if (source.charCodeAt(index) !== 0x75) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n\n    ++index;\n    ch = scanHexEscape('u');\n\n    if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n\n    id = ch;\n  }\n\n  while (index < length) {\n    ch = source.charCodeAt(index);\n\n    if (!isIdentifierPart(ch)) {\n      break;\n    }\n\n    ++index;\n    id += String.fromCharCode(ch); // '\\u' (U+005C, U+0075) denotes an escaped character.\n\n    if (ch === 0x5C) {\n      id = id.substr(0, id.length - 1);\n\n      if (source.charCodeAt(index) !== 0x75) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n\n      ++index;\n      ch = scanHexEscape('u');\n\n      if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n\n      id += ch;\n    }\n  }\n\n  return id;\n}\n\nfunction getIdentifier() {\n  var start, ch;\n  start = index++;\n\n  while (index < length) {\n    ch = source.charCodeAt(index);\n\n    if (ch === 0x5C) {\n      // Blackslash (U+005C) marks Unicode escape sequence.\n      index = start;\n      return getEscapedIdentifier();\n    }\n\n    if (isIdentifierPart(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n\n  return source.slice(start, index);\n}\n\nfunction scanIdentifier() {\n  var start, id, type;\n  start = index; // Backslash (U+005C) starts an escaped character.\n\n  id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier(); // There is no keyword or literal with only one character.\n  // Thus, it must be an identifier.\n\n  if (id.length === 1) {\n    type = TokenIdentifier;\n  } else if (keywords.hasOwnProperty(id)) {\n    // eslint-disable-line no-prototype-builtins\n    type = TokenKeyword;\n  } else if (id === 'null') {\n    type = TokenNullLiteral;\n  } else if (id === 'true' || id === 'false') {\n    type = TokenBooleanLiteral;\n  } else {\n    type = TokenIdentifier;\n  }\n\n  return {\n    type: type,\n    value: id,\n    start: start,\n    end: index\n  };\n} // 7.7 Punctuators\n\n\nfunction scanPunctuator() {\n  var start = index,\n      code = source.charCodeAt(index),\n      code2,\n      ch1 = source[index],\n      ch2,\n      ch3,\n      ch4;\n\n  switch (code) {\n    // Check for most common single-character punctuators.\n    case 0x2E: // . dot\n\n    case 0x28: // ( open bracket\n\n    case 0x29: // ) close bracket\n\n    case 0x3B: // ; semicolon\n\n    case 0x2C: // , comma\n\n    case 0x7B: // { open curly brace\n\n    case 0x7D: // } close curly brace\n\n    case 0x5B: // [\n\n    case 0x5D: // ]\n\n    case 0x3A: // :\n\n    case 0x3F: // ?\n\n    case 0x7E:\n      // ~\n      ++index;\n      return {\n        type: TokenPunctuator,\n        value: String.fromCharCode(code),\n        start: start,\n        end: index\n      };\n\n    default:\n      code2 = source.charCodeAt(index + 1); // '=' (U+003D) marks an assignment or comparison operator.\n\n      if (code2 === 0x3D) {\n        switch (code) {\n          case 0x2B: // +\n\n          case 0x2D: // -\n\n          case 0x2F: // /\n\n          case 0x3C: // <\n\n          case 0x3E: // >\n\n          case 0x5E: // ^\n\n          case 0x7C: // |\n\n          case 0x25: // %\n\n          case 0x26: // &\n\n          case 0x2A:\n            // *\n            index += 2;\n            return {\n              type: TokenPunctuator,\n              value: String.fromCharCode(code) + String.fromCharCode(code2),\n              start: start,\n              end: index\n            };\n\n          case 0x21: // !\n\n          case 0x3D:\n            // =\n            index += 2; // !== and ===\n\n            if (source.charCodeAt(index) === 0x3D) {\n              ++index;\n            }\n\n            return {\n              type: TokenPunctuator,\n              value: source.slice(start, index),\n              start: start,\n              end: index\n            };\n        }\n      }\n\n  } // 4-character punctuator: >>>=\n\n\n  ch4 = source.substr(index, 4);\n\n  if (ch4 === '>>>=') {\n    index += 4;\n    return {\n      type: TokenPunctuator,\n      value: ch4,\n      start: start,\n      end: index\n    };\n  } // 3-character punctuators: === !== >>> <<= >>=\n\n\n  ch3 = ch4.substr(0, 3);\n\n  if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n    index += 3;\n    return {\n      type: TokenPunctuator,\n      value: ch3,\n      start: start,\n      end: index\n    };\n  } // Other 2-character punctuators: ++ -- << >> && ||\n\n\n  ch2 = ch3.substr(0, 2);\n\n  if (ch1 === ch2[1] && '+-<>&|'.indexOf(ch1) >= 0 || ch2 === '=>') {\n    index += 2;\n    return {\n      type: TokenPunctuator,\n      value: ch2,\n      start: start,\n      end: index\n    };\n  }\n\n  if (ch2 === '//') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  } // 1-character punctuators: < > = ! + - * % & | ^ /\n\n\n  if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n    ++index;\n    return {\n      type: TokenPunctuator,\n      value: ch1,\n      start: start,\n      end: index\n    };\n  }\n\n  throwError({}, MessageUnexpectedToken, ILLEGAL);\n} // 7.8.3 Numeric Literals\n\n\nfunction scanHexLiteral(start) {\n  let number = '';\n\n  while (index < length) {\n    if (!isHexDigit(source[index])) {\n      break;\n    }\n\n    number += source[index++];\n  }\n\n  if (number.length === 0) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt('0x' + number, 16),\n    start: start,\n    end: index\n  };\n}\n\nfunction scanOctalLiteral(start) {\n  let number = '0' + source[index++];\n\n  while (index < length) {\n    if (!isOctalDigit(source[index])) {\n      break;\n    }\n\n    number += source[index++];\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt(number, 8),\n    octal: true,\n    start: start,\n    end: index\n  };\n}\n\nfunction scanNumericLiteral() {\n  var number, start, ch;\n  ch = source[index];\n  assert(isDecimalDigit(ch.charCodeAt(0)) || ch === '.', 'Numeric literal must start with a decimal digit or a decimal point');\n  start = index;\n  number = '';\n\n  if (ch !== '.') {\n    number = source[index++];\n    ch = source[index]; // Hex number starts with '0x'.\n    // Octal number starts with '0'.\n\n    if (number === '0') {\n      if (ch === 'x' || ch === 'X') {\n        ++index;\n        return scanHexLiteral(start);\n      }\n\n      if (isOctalDigit(ch)) {\n        return scanOctalLiteral(start);\n      } // decimal number starts with '0' such as '09' is illegal.\n\n\n      if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n    }\n\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n\n    ch = source[index];\n  }\n\n  if (ch === '.') {\n    number += source[index++];\n\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n\n    ch = source[index];\n  }\n\n  if (ch === 'e' || ch === 'E') {\n    number += source[index++];\n    ch = source[index];\n\n    if (ch === '+' || ch === '-') {\n      number += source[index++];\n    }\n\n    if (isDecimalDigit(source.charCodeAt(index))) {\n      while (isDecimalDigit(source.charCodeAt(index))) {\n        number += source[index++];\n      }\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseFloat(number),\n    start: start,\n    end: index\n  };\n} // 7.8.4 String Literals\n\n\nfunction scanStringLiteral() {\n  var str = '',\n      quote,\n      start,\n      ch,\n      code,\n      octal = false;\n  quote = source[index];\n  assert(quote === '\\'' || quote === '\"', 'String literal must starts with a quote');\n  start = index;\n  ++index;\n\n  while (index < length) {\n    ch = source[index++];\n\n    if (ch === quote) {\n      quote = '';\n      break;\n    } else if (ch === '\\\\') {\n      ch = source[index++];\n\n      if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n        switch (ch) {\n          case 'u':\n          case 'x':\n            if (source[index] === '{') {\n              ++index;\n              str += scanUnicodeCodePointEscape();\n            } else {\n              str += scanHexEscape(ch);\n            }\n\n            break;\n\n          case 'n':\n            str += '\\n';\n            break;\n\n          case 'r':\n            str += '\\r';\n            break;\n\n          case 't':\n            str += '\\t';\n            break;\n\n          case 'b':\n            str += '\\b';\n            break;\n\n          case 'f':\n            str += '\\f';\n            break;\n\n          case 'v':\n            str += '\\x0B';\n            break;\n\n          default:\n            if (isOctalDigit(ch)) {\n              code = '01234567'.indexOf(ch); // \\0 is not octal escape sequence\n\n              if (code !== 0) {\n                octal = true;\n              }\n\n              if (index < length && isOctalDigit(source[index])) {\n                octal = true;\n                code = code * 8 + '01234567'.indexOf(source[index++]); // 3 digits are only allowed when string starts\n                // with 0, 1, 2, 3\n\n                if ('0123'.indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) {\n                  code = code * 8 + '01234567'.indexOf(source[index++]);\n                }\n              }\n\n              str += String.fromCharCode(code);\n            } else {\n              str += ch;\n            }\n\n            break;\n        }\n      } else {\n        if (ch === '\\r' && source[index] === '\\n') {\n          ++index;\n        }\n      }\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      break;\n    } else {\n      str += ch;\n    }\n  }\n\n  if (quote !== '') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenStringLiteral,\n    value: str,\n    octal: octal,\n    start: start,\n    end: index\n  };\n}\n\nfunction testRegExp(pattern, flags) {\n  let tmp = pattern;\n\n  if (flags.indexOf('u') >= 0) {\n    // Replace each astral symbol and every Unicode code point\n    // escape sequence with a single ASCII symbol to avoid throwing on\n    // regular expressions that are only valid in combination with the\n    // `/u` flag.\n    // Note: replacing with the ASCII symbol `x` might cause false\n    // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n    // perfectly valid pattern that is equivalent to `[a-b]`, but it\n    // would be replaced by `[x-b]` which throws an error.\n    tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, ($0, $1) => {\n      if (parseInt($1, 16) <= 0x10FFFF) {\n        return 'x';\n      }\n\n      throwError({}, MessageInvalidRegExp);\n    }).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n  } // First, detect invalid regular expressions.\n\n\n  try {\n    new RegExp(tmp);\n  } catch (e) {\n    throwError({}, MessageInvalidRegExp);\n  } // Return a regular expression object for this pattern-flag pair, or\n  // `null` in case the current environment doesn't support the flags it\n  // uses.\n\n\n  try {\n    return new RegExp(pattern, flags);\n  } catch (exception) {\n    return null;\n  }\n}\n\nfunction scanRegExpBody() {\n  var ch, str, classMarker, terminated, body;\n  ch = source[index];\n  assert(ch === '/', 'Regular expression literal must start with a slash');\n  str = source[index++];\n  classMarker = false;\n  terminated = false;\n\n  while (index < length) {\n    ch = source[index++];\n    str += ch;\n\n    if (ch === '\\\\') {\n      ch = source[index++]; // ECMA-262 7.8.5\n\n      if (isLineTerminator(ch.charCodeAt(0))) {\n        throwError({}, MessageUnterminatedRegExp);\n      }\n\n      str += ch;\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      throwError({}, MessageUnterminatedRegExp);\n    } else if (classMarker) {\n      if (ch === ']') {\n        classMarker = false;\n      }\n    } else {\n      if (ch === '/') {\n        terminated = true;\n        break;\n      } else if (ch === '[') {\n        classMarker = true;\n      }\n    }\n  }\n\n  if (!terminated) {\n    throwError({}, MessageUnterminatedRegExp);\n  } // Exclude leading and trailing slash.\n\n\n  body = str.substr(1, str.length - 2);\n  return {\n    value: body,\n    literal: str\n  };\n}\n\nfunction scanRegExpFlags() {\n  var ch, str, flags;\n  str = '';\n  flags = '';\n\n  while (index < length) {\n    ch = source[index];\n\n    if (!isIdentifierPart(ch.charCodeAt(0))) {\n      break;\n    }\n\n    ++index;\n\n    if (ch === '\\\\' && index < length) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    } else {\n      flags += ch;\n      str += ch;\n    }\n  }\n\n  if (flags.search(/[^gimuy]/g) >= 0) {\n    throwError({}, MessageInvalidRegExp, flags);\n  }\n\n  return {\n    value: flags,\n    literal: str\n  };\n}\n\nfunction scanRegExp() {\n  var start, body, flags, value;\n  lookahead = null;\n  skipComment();\n  start = index;\n  body = scanRegExpBody();\n  flags = scanRegExpFlags();\n  value = testRegExp(body.value, flags.value);\n  return {\n    literal: body.literal + flags.literal,\n    value: value,\n    regex: {\n      pattern: body.value,\n      flags: flags.value\n    },\n    start: start,\n    end: index\n  };\n}\n\nfunction isIdentifierName(token) {\n  return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral;\n}\n\nfunction advance() {\n  skipComment();\n\n  if (index >= length) {\n    return {\n      type: TokenEOF,\n      start: index,\n      end: index\n    };\n  }\n\n  const ch = source.charCodeAt(index);\n\n  if (isIdentifierStart(ch)) {\n    return scanIdentifier();\n  } // Very common: ( and ) and ;\n\n\n  if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n    return scanPunctuator();\n  } // String literal starts with single quote (U+0027) or double quote (U+0022).\n\n\n  if (ch === 0x27 || ch === 0x22) {\n    return scanStringLiteral();\n  } // Dot (.) U+002E can also start a floating-point number, hence the need\n  // to check the next character.\n\n\n  if (ch === 0x2E) {\n    if (isDecimalDigit(source.charCodeAt(index + 1))) {\n      return scanNumericLiteral();\n    }\n\n    return scanPunctuator();\n  }\n\n  if (isDecimalDigit(ch)) {\n    return scanNumericLiteral();\n  }\n\n  return scanPunctuator();\n}\n\nfunction lex() {\n  const token = lookahead;\n  index = token.end;\n  lookahead = advance();\n  index = token.end;\n  return token;\n}\n\nfunction peek() {\n  const pos = index;\n  lookahead = advance();\n  index = pos;\n}\n\nfunction finishArrayExpression(elements) {\n  const node = new ASTNode(SyntaxArrayExpression);\n  node.elements = elements;\n  return node;\n}\n\nfunction finishBinaryExpression(operator, left, right) {\n  const node = new ASTNode(operator === '||' || operator === '&&' ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n  node.operator = operator;\n  node.left = left;\n  node.right = right;\n  return node;\n}\n\nfunction finishCallExpression(callee, args) {\n  const node = new ASTNode(SyntaxCallExpression);\n  node.callee = callee;\n  node.arguments = args;\n  return node;\n}\n\nfunction finishConditionalExpression(test, consequent, alternate) {\n  const node = new ASTNode(SyntaxConditionalExpression);\n  node.test = test;\n  node.consequent = consequent;\n  node.alternate = alternate;\n  return node;\n}\n\nfunction finishIdentifier(name) {\n  const node = new ASTNode(SyntaxIdentifier);\n  node.name = name;\n  return node;\n}\n\nfunction finishLiteral(token) {\n  const node = new ASTNode(SyntaxLiteral);\n  node.value = token.value;\n  node.raw = source.slice(token.start, token.end);\n\n  if (token.regex) {\n    if (node.raw === '//') {\n      node.raw = '/(?:)/';\n    }\n\n    node.regex = token.regex;\n  }\n\n  return node;\n}\n\nfunction finishMemberExpression(accessor, object, property) {\n  const node = new ASTNode(SyntaxMemberExpression);\n  node.computed = accessor === '[';\n  node.object = object;\n  node.property = property;\n  if (!node.computed) property.member = true;\n  return node;\n}\n\nfunction finishObjectExpression(properties) {\n  const node = new ASTNode(SyntaxObjectExpression);\n  node.properties = properties;\n  return node;\n}\n\nfunction finishProperty(kind, key, value) {\n  const node = new ASTNode(SyntaxProperty);\n  node.key = key;\n  node.value = value;\n  node.kind = kind;\n  return node;\n}\n\nfunction finishUnaryExpression(operator, argument) {\n  const node = new ASTNode(SyntaxUnaryExpression);\n  node.operator = operator;\n  node.argument = argument;\n  node.prefix = true;\n  return node;\n} // Throw an exception\n\n\nfunction throwError(token, messageFormat) {\n  var error,\n      args = Array.prototype.slice.call(arguments, 2),\n      msg = messageFormat.replace(/%(\\d)/g, (whole, index) => {\n    assert(index < args.length, 'Message reference must be in range');\n    return args[index];\n  });\n  error = new Error(msg);\n  error.index = index;\n  error.description = msg;\n  throw error;\n} // Throw an exception because of the token.\n\n\nfunction throwUnexpected(token) {\n  if (token.type === TokenEOF) {\n    throwError(token, MessageUnexpectedEOS);\n  }\n\n  if (token.type === TokenNumericLiteral) {\n    throwError(token, MessageUnexpectedNumber);\n  }\n\n  if (token.type === TokenStringLiteral) {\n    throwError(token, MessageUnexpectedString);\n  }\n\n  if (token.type === TokenIdentifier) {\n    throwError(token, MessageUnexpectedIdentifier);\n  }\n\n  if (token.type === TokenKeyword) {\n    throwError(token, MessageUnexpectedReserved);\n  } // BooleanLiteral, NullLiteral, or Punctuator.\n\n\n  throwError(token, MessageUnexpectedToken, token.value);\n} // Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\n\nfunction expect(value) {\n  const token = lex();\n\n  if (token.type !== TokenPunctuator || token.value !== value) {\n    throwUnexpected(token);\n  }\n} // Return true if the next token matches the specified punctuator.\n\n\nfunction match(value) {\n  return lookahead.type === TokenPunctuator && lookahead.value === value;\n} // Return true if the next token matches the specified keyword\n\n\nfunction matchKeyword(keyword) {\n  return lookahead.type === TokenKeyword && lookahead.value === keyword;\n} // 11.1.4 Array Initialiser\n\n\nfunction parseArrayInitialiser() {\n  const elements = [];\n  index = lookahead.start;\n  expect('[');\n\n  while (!match(']')) {\n    if (match(',')) {\n      lex();\n      elements.push(null);\n    } else {\n      elements.push(parseConditionalExpression());\n\n      if (!match(']')) {\n        expect(',');\n      }\n    }\n  }\n\n  lex();\n  return finishArrayExpression(elements);\n} // 11.1.5 Object Initialiser\n\n\nfunction parseObjectPropertyKey() {\n  index = lookahead.start;\n  const token = lex(); // Note: This function is called only from parseObjectProperty(), where\n  // EOF and Punctuator tokens are already filtered out.\n\n  if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n    if (token.octal) {\n      throwError(token, MessageStrictOctalLiteral);\n    }\n\n    return finishLiteral(token);\n  }\n\n  return finishIdentifier(token.value);\n}\n\nfunction parseObjectProperty() {\n  var token, key, id, value;\n  index = lookahead.start;\n  token = lookahead;\n\n  if (token.type === TokenIdentifier) {\n    id = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', id, value);\n  }\n\n  if (token.type === TokenEOF || token.type === TokenPunctuator) {\n    throwUnexpected(token);\n  } else {\n    key = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', key, value);\n  }\n}\n\nfunction parseObjectInitialiser() {\n  var properties = [],\n      property,\n      name,\n      key,\n      map = {},\n      toString = String;\n  index = lookahead.start;\n  expect('{');\n\n  while (!match('}')) {\n    property = parseObjectProperty();\n\n    if (property.key.type === SyntaxIdentifier) {\n      name = property.key.name;\n    } else {\n      name = toString(property.key.value);\n    }\n\n    key = '$' + name;\n\n    if (Object.prototype.hasOwnProperty.call(map, key)) {\n      throwError({}, MessageStrictDuplicateProperty);\n    } else {\n      map[key] = true;\n    }\n\n    properties.push(property);\n\n    if (!match('}')) {\n      expect(',');\n    }\n  }\n\n  expect('}');\n  return finishObjectExpression(properties);\n} // 11.1.6 The Grouping Operator\n\n\nfunction parseGroupExpression() {\n  expect('(');\n  const expr = parseExpression();\n  expect(')');\n  return expr;\n} // 11.1 Primary Expressions\n\n\nconst legalKeywords = {\n  'if': 1\n};\n\nfunction parsePrimaryExpression() {\n  var type, token, expr;\n\n  if (match('(')) {\n    return parseGroupExpression();\n  }\n\n  if (match('[')) {\n    return parseArrayInitialiser();\n  }\n\n  if (match('{')) {\n    return parseObjectInitialiser();\n  }\n\n  type = lookahead.type;\n  index = lookahead.start;\n\n  if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n    expr = finishIdentifier(lex().value);\n  } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n    if (lookahead.octal) {\n      throwError(lookahead, MessageStrictOctalLiteral);\n    }\n\n    expr = finishLiteral(lex());\n  } else if (type === TokenKeyword) {\n    throw new Error(DISABLED);\n  } else if (type === TokenBooleanLiteral) {\n    token = lex();\n    token.value = token.value === 'true';\n    expr = finishLiteral(token);\n  } else if (type === TokenNullLiteral) {\n    token = lex();\n    token.value = null;\n    expr = finishLiteral(token);\n  } else if (match('/') || match('/=')) {\n    expr = finishLiteral(scanRegExp());\n    peek();\n  } else {\n    throwUnexpected(lex());\n  }\n\n  return expr;\n} // 11.2 Left-Hand-Side Expressions\n\n\nfunction parseArguments() {\n  const args = [];\n  expect('(');\n\n  if (!match(')')) {\n    while (index < length) {\n      args.push(parseConditionalExpression());\n\n      if (match(')')) {\n        break;\n      }\n\n      expect(',');\n    }\n  }\n\n  expect(')');\n  return args;\n}\n\nfunction parseNonComputedProperty() {\n  index = lookahead.start;\n  const token = lex();\n\n  if (!isIdentifierName(token)) {\n    throwUnexpected(token);\n  }\n\n  return finishIdentifier(token.value);\n}\n\nfunction parseNonComputedMember() {\n  expect('.');\n  return parseNonComputedProperty();\n}\n\nfunction parseComputedMember() {\n  expect('[');\n  const expr = parseExpression();\n  expect(']');\n  return expr;\n}\n\nfunction parseLeftHandSideExpressionAllowCall() {\n  var expr, args, property;\n  expr = parsePrimaryExpression();\n\n  for (;;) {\n    if (match('.')) {\n      property = parseNonComputedMember();\n      expr = finishMemberExpression('.', expr, property);\n    } else if (match('(')) {\n      args = parseArguments();\n      expr = finishCallExpression(expr, args);\n    } else if (match('[')) {\n      property = parseComputedMember();\n      expr = finishMemberExpression('[', expr, property);\n    } else {\n      break;\n    }\n  }\n\n  return expr;\n} // 11.3 Postfix Expressions\n\n\nfunction parsePostfixExpression() {\n  const expr = parseLeftHandSideExpressionAllowCall();\n\n  if (lookahead.type === TokenPunctuator) {\n    if (match('++') || match('--')) {\n      throw new Error(DISABLED);\n    }\n  }\n\n  return expr;\n} // 11.4 Unary Operators\n\n\nfunction parseUnaryExpression() {\n  var token, expr;\n\n  if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n    expr = parsePostfixExpression();\n  } else if (match('++') || match('--')) {\n    throw new Error(DISABLED);\n  } else if (match('+') || match('-') || match('~') || match('!')) {\n    token = lex();\n    expr = parseUnaryExpression();\n    expr = finishUnaryExpression(token.value, expr);\n  } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n    throw new Error(DISABLED);\n  } else {\n    expr = parsePostfixExpression();\n  }\n\n  return expr;\n}\n\nfunction binaryPrecedence(token) {\n  let prec = 0;\n\n  if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n    return 0;\n  }\n\n  switch (token.value) {\n    case '||':\n      prec = 1;\n      break;\n\n    case '&&':\n      prec = 2;\n      break;\n\n    case '|':\n      prec = 3;\n      break;\n\n    case '^':\n      prec = 4;\n      break;\n\n    case '&':\n      prec = 5;\n      break;\n\n    case '==':\n    case '!=':\n    case '===':\n    case '!==':\n      prec = 6;\n      break;\n\n    case '<':\n    case '>':\n    case '<=':\n    case '>=':\n    case 'instanceof':\n    case 'in':\n      prec = 7;\n      break;\n\n    case '<<':\n    case '>>':\n    case '>>>':\n      prec = 8;\n      break;\n\n    case '+':\n    case '-':\n      prec = 9;\n      break;\n\n    case '*':\n    case '/':\n    case '%':\n      prec = 11;\n      break;\n  }\n\n  return prec;\n} // 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\n\nfunction parseBinaryExpression() {\n  var marker, markers, expr, token, prec, stack, right, operator, left, i;\n  marker = lookahead;\n  left = parseUnaryExpression();\n  token = lookahead;\n  prec = binaryPrecedence(token);\n\n  if (prec === 0) {\n    return left;\n  }\n\n  token.prec = prec;\n  lex();\n  markers = [marker, lookahead];\n  right = parseUnaryExpression();\n  stack = [left, token, right];\n\n  while ((prec = binaryPrecedence(lookahead)) > 0) {\n    // Reduce: make a binary expression from the three topmost entries.\n    while (stack.length > 2 && prec <= stack[stack.length - 2].prec) {\n      right = stack.pop();\n      operator = stack.pop().value;\n      left = stack.pop();\n      markers.pop();\n      expr = finishBinaryExpression(operator, left, right);\n      stack.push(expr);\n    } // Shift.\n\n\n    token = lex();\n    token.prec = prec;\n    stack.push(token);\n    markers.push(lookahead);\n    expr = parseUnaryExpression();\n    stack.push(expr);\n  } // Final reduce to clean-up the stack.\n\n\n  i = stack.length - 1;\n  expr = stack[i];\n  markers.pop();\n\n  while (i > 1) {\n    markers.pop();\n    expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n    i -= 2;\n  }\n\n  return expr;\n} // 11.12 Conditional Operator\n\n\nfunction parseConditionalExpression() {\n  var expr, consequent, alternate;\n  expr = parseBinaryExpression();\n\n  if (match('?')) {\n    lex();\n    consequent = parseConditionalExpression();\n    expect(':');\n    alternate = parseConditionalExpression();\n    expr = finishConditionalExpression(expr, consequent, alternate);\n  }\n\n  return expr;\n} // 11.14 Comma Operator\n\n\nfunction parseExpression() {\n  const expr = parseConditionalExpression();\n\n  if (match(',')) {\n    throw new Error(DISABLED); // no sequence expressions\n  }\n\n  return expr;\n}\n\nfunction parser (code) {\n  source = code;\n  index = 0;\n  length = source.length;\n  lookahead = null;\n  peek();\n  const expr = parseExpression();\n\n  if (lookahead.type !== TokenEOF) {\n    throw new Error('Unexpect token after expression.');\n  }\n\n  return expr;\n}\n\nvar Constants = {\n  NaN: 'NaN',\n  E: 'Math.E',\n  LN2: 'Math.LN2',\n  LN10: 'Math.LN10',\n  LOG2E: 'Math.LOG2E',\n  LOG10E: 'Math.LOG10E',\n  PI: 'Math.PI',\n  SQRT1_2: 'Math.SQRT1_2',\n  SQRT2: 'Math.SQRT2',\n  MIN_VALUE: 'Number.MIN_VALUE',\n  MAX_VALUE: 'Number.MAX_VALUE'\n};\n\nfunction Functions (codegen) {\n  function fncall(name, args, cast, type) {\n    let obj = codegen(args[0]);\n\n    if (cast) {\n      obj = cast + '(' + obj + ')';\n      if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n    }\n\n    return obj + '.' + name + (type < 0 ? '' : type === 0 ? '()' : '(' + args.slice(1).map(codegen).join(',') + ')');\n  }\n\n  function fn(name, cast, type) {\n    return args => fncall(name, args, cast, type);\n  }\n\n  const DATE = 'new Date',\n        STRING = 'String',\n        REGEXP = 'RegExp';\n  return {\n    // MATH functions\n    isNaN: 'Number.isNaN',\n    isFinite: 'Number.isFinite',\n    abs: 'Math.abs',\n    acos: 'Math.acos',\n    asin: 'Math.asin',\n    atan: 'Math.atan',\n    atan2: 'Math.atan2',\n    ceil: 'Math.ceil',\n    cos: 'Math.cos',\n    exp: 'Math.exp',\n    floor: 'Math.floor',\n    log: 'Math.log',\n    max: 'Math.max',\n    min: 'Math.min',\n    pow: 'Math.pow',\n    random: 'Math.random',\n    round: 'Math.round',\n    sin: 'Math.sin',\n    sqrt: 'Math.sqrt',\n    tan: 'Math.tan',\n    clamp: function (args) {\n      if (args.length < 3) error('Missing arguments to clamp function.');\n      if (args.length > 3) error('Too many arguments to clamp function.');\n      const a = args.map(codegen);\n      return 'Math.max(' + a[1] + ', Math.min(' + a[2] + ',' + a[0] + '))';\n    },\n    // DATE functions\n    now: 'Date.now',\n    utc: 'Date.UTC',\n    datetime: DATE,\n    date: fn('getDate', DATE, 0),\n    day: fn('getDay', DATE, 0),\n    year: fn('getFullYear', DATE, 0),\n    month: fn('getMonth', DATE, 0),\n    hours: fn('getHours', DATE, 0),\n    minutes: fn('getMinutes', DATE, 0),\n    seconds: fn('getSeconds', DATE, 0),\n    milliseconds: fn('getMilliseconds', DATE, 0),\n    time: fn('getTime', DATE, 0),\n    timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n    utcdate: fn('getUTCDate', DATE, 0),\n    utcday: fn('getUTCDay', DATE, 0),\n    utcyear: fn('getUTCFullYear', DATE, 0),\n    utcmonth: fn('getUTCMonth', DATE, 0),\n    utchours: fn('getUTCHours', DATE, 0),\n    utcminutes: fn('getUTCMinutes', DATE, 0),\n    utcseconds: fn('getUTCSeconds', DATE, 0),\n    utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n    // sequence functions\n    length: fn('length', null, -1),\n    // STRING functions\n    parseFloat: 'parseFloat',\n    parseInt: 'parseInt',\n    upper: fn('toUpperCase', STRING, 0),\n    lower: fn('toLowerCase', STRING, 0),\n    substring: fn('substring', STRING),\n    split: fn('split', STRING),\n    trim: fn('trim', STRING, 0),\n    // REGEXP functions\n    regexp: REGEXP,\n    test: fn('test', REGEXP),\n    // Control Flow functions\n    if: function (args) {\n      if (args.length < 3) error('Missing arguments to if function.');\n      if (args.length > 3) error('Too many arguments to if function.');\n      const a = args.map(codegen);\n      return '(' + a[0] + '?' + a[1] + ':' + a[2] + ')';\n    }\n  };\n}\n\nfunction stripQuotes(s) {\n  const n = s && s.length - 1;\n  return n && (s[0] === '\"' && s[n] === '\"' || s[0] === '\\'' && s[n] === '\\'') ? s.slice(1, -1) : s;\n}\n\nfunction codegen (opt) {\n  opt = opt || {};\n  const allowed = opt.allowed ? toSet(opt.allowed) : {},\n        forbidden = opt.forbidden ? toSet(opt.forbidden) : {},\n        constants = opt.constants || Constants,\n        functions = (opt.functions || Functions)(visit),\n        globalvar = opt.globalvar,\n        fieldvar = opt.fieldvar,\n        outputGlobal = isFunction(globalvar) ? globalvar : id => \"\".concat(globalvar, \"[\\\"\").concat(id, \"\\\"]\");\n  let globals = {},\n      fields = {},\n      memberDepth = 0;\n\n  function visit(ast) {\n    if (isString(ast)) return ast;\n    const generator = Generators[ast.type];\n    if (generator == null) error('Unsupported type: ' + ast.type);\n    return generator(ast);\n  }\n\n  const Generators = {\n    Literal: n => n.raw,\n    Identifier: n => {\n      const id = n.name;\n\n      if (memberDepth > 0) {\n        return id;\n      } else if (hasOwnProperty(forbidden, id)) {\n        return error('Illegal identifier: ' + id);\n      } else if (hasOwnProperty(constants, id)) {\n        return constants[id];\n      } else if (hasOwnProperty(allowed, id)) {\n        return id;\n      } else {\n        globals[id] = 1;\n        return outputGlobal(id);\n      }\n    },\n    MemberExpression: n => {\n      const d = !n.computed,\n            o = visit(n.object);\n      if (d) memberDepth += 1;\n      const p = visit(n.property);\n\n      if (o === fieldvar) {\n        // strip quotes to sanitize field name (#1653)\n        fields[stripQuotes(p)] = 1;\n      }\n\n      if (d) memberDepth -= 1;\n      return o + (d ? '.' + p : '[' + p + ']');\n    },\n    CallExpression: n => {\n      if (n.callee.type !== 'Identifier') {\n        error('Illegal callee type: ' + n.callee.type);\n      }\n\n      const callee = n.callee.name,\n            args = n.arguments,\n            fn = hasOwnProperty(functions, callee) && functions[callee];\n      if (!fn) error('Unrecognized function: ' + callee);\n      return isFunction(fn) ? fn(args) : fn + '(' + args.map(visit).join(',') + ')';\n    },\n    ArrayExpression: n => '[' + n.elements.map(visit).join(',') + ']',\n    BinaryExpression: n => '(' + visit(n.left) + ' ' + n.operator + ' ' + visit(n.right) + ')',\n    UnaryExpression: n => '(' + n.operator + visit(n.argument) + ')',\n    ConditionalExpression: n => '(' + visit(n.test) + '?' + visit(n.consequent) + ':' + visit(n.alternate) + ')',\n    LogicalExpression: n => '(' + visit(n.left) + n.operator + visit(n.right) + ')',\n    ObjectExpression: n => '{' + n.properties.map(visit).join(',') + '}',\n    Property: n => {\n      memberDepth += 1;\n      const k = visit(n.key);\n      memberDepth -= 1;\n      return k + ':' + visit(n.value);\n    }\n  };\n\n  function codegen(ast) {\n    const result = {\n      code: visit(ast),\n      globals: Object.keys(globals),\n      fields: Object.keys(fields)\n    };\n    globals = {};\n    fields = {};\n    return result;\n  }\n\n  codegen.functions = functions;\n  codegen.constants = constants;\n  return codegen;\n}\n\nexport { ASTNode, ArrayExpression, BinaryExpression, CallExpression, ConditionalExpression, Identifier, Literal, LogicalExpression, MemberExpression, ObjectExpression, Property, RawCode, UnaryExpression, codegen, Constants as constants, Functions as functions, parser as parse };\n","const VIEW = 'view',\n      LBRACK = '[',\n      RBRACK = ']',\n      LBRACE = '{',\n      RBRACE = '}',\n      COLON = ':',\n      COMMA = ',',\n      NAME = '@',\n      GT = '>',\n      ILLEGAL = /[[\\]{}]/,\n      DEFAULT_MARKS = {\n  '*': 1,\n  arc: 1,\n  area: 1,\n  group: 1,\n  image: 1,\n  line: 1,\n  path: 1,\n  rect: 1,\n  rule: 1,\n  shape: 1,\n  symbol: 1,\n  text: 1,\n  trail: 1\n};\nlet DEFAULT_SOURCE, MARKS;\n/**\n * Parse an event selector string.\n * Returns an array of event stream definitions.\n */\n\nfunction eventSelector (selector, source, marks) {\n  DEFAULT_SOURCE = source || VIEW;\n  MARKS = marks || DEFAULT_MARKS;\n  return parseMerge(selector.trim()).map(parseSelector);\n}\n\nfunction isMarkType(type) {\n  return MARKS[type];\n}\n\nfunction find(s, i, endChar, pushChar, popChar) {\n  const n = s.length;\n  let count = 0,\n      c;\n\n  for (; i < n; ++i) {\n    c = s[i];\n    if (!count && c === endChar) return i;else if (popChar && popChar.indexOf(c) >= 0) --count;else if (pushChar && pushChar.indexOf(c) >= 0) ++count;\n  }\n\n  return i;\n}\n\nfunction parseMerge(s) {\n  const output = [],\n        n = s.length;\n  let start = 0,\n      i = 0;\n\n  while (i < n) {\n    i = find(s, i, COMMA, LBRACK + LBRACE, RBRACK + RBRACE);\n    output.push(s.substring(start, i).trim());\n    start = ++i;\n  }\n\n  if (output.length === 0) {\n    throw 'Empty event selector: ' + s;\n  }\n\n  return output;\n}\n\nfunction parseSelector(s) {\n  return s[0] === '[' ? parseBetween(s) : parseStream(s);\n}\n\nfunction parseBetween(s) {\n  const n = s.length;\n  let i = 1,\n      b;\n  i = find(s, i, RBRACK, LBRACK, RBRACK);\n\n  if (i === n) {\n    throw 'Empty between selector: ' + s;\n  }\n\n  b = parseMerge(s.substring(1, i));\n\n  if (b.length !== 2) {\n    throw 'Between selector must have two elements: ' + s;\n  }\n\n  s = s.slice(i + 1).trim();\n\n  if (s[0] !== GT) {\n    throw 'Expected \\'>\\' after between selector: ' + s;\n  }\n\n  b = b.map(parseSelector);\n  const stream = parseSelector(s.slice(1).trim());\n\n  if (stream.between) {\n    return {\n      between: b,\n      stream: stream\n    };\n  } else {\n    stream.between = b;\n  }\n\n  return stream;\n}\n\nfunction parseStream(s) {\n  const stream = {\n    source: DEFAULT_SOURCE\n  },\n        source = [];\n  let throttle = [0, 0],\n      markname = 0,\n      start = 0,\n      n = s.length,\n      i = 0,\n      j,\n      filter; // extract throttle from end\n\n  if (s[n - 1] === RBRACE) {\n    i = s.lastIndexOf(LBRACE);\n\n    if (i >= 0) {\n      try {\n        throttle = parseThrottle(s.substring(i + 1, n - 1));\n      } catch (e) {\n        throw 'Invalid throttle specification: ' + s;\n      }\n\n      s = s.slice(0, i).trim();\n      n = s.length;\n    } else throw 'Unmatched right brace: ' + s;\n\n    i = 0;\n  }\n\n  if (!n) throw s; // set name flag based on first char\n\n  if (s[0] === NAME) markname = ++i; // extract first part of multi-part stream selector\n\n  j = find(s, i, COLON);\n\n  if (j < n) {\n    source.push(s.substring(start, j).trim());\n    start = i = ++j;\n  } // extract remaining part of stream selector\n\n\n  i = find(s, i, LBRACK);\n\n  if (i === n) {\n    source.push(s.substring(start, n).trim());\n  } else {\n    source.push(s.substring(start, i).trim());\n    filter = [];\n    start = ++i;\n    if (start === n) throw 'Unmatched left bracket: ' + s;\n  } // extract filters\n\n\n  while (i < n) {\n    i = find(s, i, RBRACK);\n    if (i === n) throw 'Unmatched left bracket: ' + s;\n    filter.push(s.substring(start, i).trim());\n    if (i < n - 1 && s[++i] !== LBRACK) throw 'Expected left bracket: ' + s;\n    start = ++i;\n  } // marshall event stream specification\n\n\n  if (!(n = source.length) || ILLEGAL.test(source[n - 1])) {\n    throw 'Invalid event selector: ' + s;\n  }\n\n  if (n > 1) {\n    stream.type = source[1];\n\n    if (markname) {\n      stream.markname = source[0].slice(1);\n    } else if (isMarkType(source[0])) {\n      stream.marktype = source[0];\n    } else {\n      stream.source = source[0];\n    }\n  } else {\n    stream.type = source[0];\n  }\n\n  if (stream.type.slice(-1) === '!') {\n    stream.consume = true;\n    stream.type = stream.type.slice(0, -1);\n  }\n\n  if (filter != null) stream.filter = filter;\n  if (throttle[0]) stream.throttle = throttle[0];\n  if (throttle[1]) stream.debounce = throttle[1];\n  return stream;\n}\n\nfunction parseThrottle(s) {\n  const a = s.split(COMMA);\n  if (!s.length || a.length > 2) throw s;\n  return a.map(_ => {\n    const x = +_;\n    if (x !== x) throw s;\n    return x;\n  });\n}\n\nexport { eventSelector as selector };\n","import { extend } from 'vega-util';\nexport * from 'vega-util';\nimport { transforms } from 'vega-dataflow';\nexport { Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, changeset, definition, ingest, isTuple, transform, transforms, tupleid } from 'vega-dataflow';\nimport * as tx from 'vega-transforms';\nimport * as vtx from 'vega-view-transforms';\nimport * as encode from 'vega-encode';\nimport * as geo from 'vega-geo';\nimport * as force from 'vega-force';\nimport * as tree from 'vega-hierarchy';\nimport * as label from 'vega-label';\nimport * as reg from 'vega-regression';\nimport * as voronoi from 'vega-voronoi';\nimport * as wordcloud from 'vega-wordcloud';\nimport * as xf from 'vega-crossfilter';\nexport * from 'vega-statistics';\nexport * from 'vega-time';\nexport * from 'vega-loader';\nexport * from 'vega-scenegraph';\nexport { interpolate, interpolateColors, interpolateRange, quantizeInterpolator, scale, scheme } from 'vega-scale';\nexport { projection } from 'vega-projection';\nexport { View } from 'vega-view';\nexport { defaultLocale, numberFormatDefaultLocale as formatLocale, locale, resetDefaultLocale, timeFormatDefaultLocale as timeFormatLocale } from 'vega-format';\nexport { expressionFunction } from 'vega-functions';\nexport { parse } from 'vega-parser';\nexport { context as runtimeContext } from 'vega-runtime';\nexport { codegen as codegenExpression, parse as parseExpression } from 'vega-expression';\nexport { selector as parseSelector } from 'vega-event-selector';\n\nvar name = \"vega\";\nvar version$1 = \"5.20.0\";\nvar description = \"The Vega visualization grammar.\";\nvar keywords = [\n\t\"vega\",\n\t\"visualization\",\n\t\"interaction\",\n\t\"dataflow\",\n\t\"library\",\n\t\"data\",\n\t\"d3\"\n];\nvar license = \"BSD-3-Clause\";\nvar author = \"UW Interactive Data Lab (http://idl.cs.washington.edu)\";\nvar main = \"build/vega-node.js\";\nvar module = \"build/vega.module.js\";\nvar unpkg = \"build/vega.min.js\";\nvar jsdelivr = \"build/vega.min.js\";\nvar types = \"index.d.ts\";\nvar repository = \"vega/vega\";\nvar scripts = {\n\tbundle: \"rollup -c --config-bundle\",\n\tprebuild: \"rimraf build && rimraf build-es5\",\n\tbuild: \"rollup -c --config-core --config-bundle --config-ie\",\n\tpostbuild: \"node schema-copy\",\n\tpretest: \"yarn build --config-test\",\n\ttest: \"TZ=America/Los_Angeles tape 'test/**/*-test.js'\",\n\tprepublishOnly: \"yarn test && yarn build\",\n\tpostpublish: \"./schema-deploy.sh\"\n};\nvar dependencies = {\n\t\"vega-crossfilter\": \"~4.0.5\",\n\t\"vega-dataflow\": \"~5.7.3\",\n\t\"vega-encode\": \"~4.8.3\",\n\t\"vega-event-selector\": \"~2.0.6\",\n\t\"vega-expression\": \"~4.0.1\",\n\t\"vega-force\": \"~4.0.7\",\n\t\"vega-format\": \"~1.0.4\",\n\t\"vega-functions\": \"~5.12.0\",\n\t\"vega-geo\": \"~4.3.8\",\n\t\"vega-hierarchy\": \"~4.0.9\",\n\t\"vega-label\": \"~1.0.0\",\n\t\"vega-loader\": \"~4.4.0\",\n\t\"vega-parser\": \"~6.1.3\",\n\t\"vega-projection\": \"~1.4.5\",\n\t\"vega-regression\": \"~1.0.9\",\n\t\"vega-runtime\": \"~6.1.3\",\n\t\"vega-scale\": \"~7.1.1\",\n\t\"vega-scenegraph\": \"~4.9.4\",\n\t\"vega-statistics\": \"~1.7.9\",\n\t\"vega-time\": \"~2.0.4\",\n\t\"vega-transforms\": \"~4.9.3\",\n\t\"vega-typings\": \"~0.20.0\",\n\t\"vega-util\": \"~1.16.1\",\n\t\"vega-view\": \"~5.10.0\",\n\t\"vega-view-transforms\": \"~4.5.8\",\n\t\"vega-voronoi\": \"~4.1.5\",\n\t\"vega-wordcloud\": \"~4.1.3\"\n};\nvar devDependencies = {\n\t\"vega-schema\": \"*\"\n};\nvar gitHead = \"f262105e75449760b0f35fda70e6b576a31d68a4\";\nvar pkg = {\n\tname: name,\n\tversion: version$1,\n\tdescription: description,\n\tkeywords: keywords,\n\tlicense: license,\n\tauthor: author,\n\tmain: main,\n\tmodule: module,\n\tunpkg: unpkg,\n\tjsdelivr: jsdelivr,\n\ttypes: types,\n\trepository: repository,\n\tscripts: scripts,\n\tdependencies: dependencies,\n\tdevDependencies: devDependencies,\n\tgitHead: gitHead\n};\n\n// -- Transforms -----\nextend(transforms, tx, vtx, encode, geo, force, label, tree, reg, voronoi, wordcloud, xf); // -- Exports -----\n\nconst version = pkg.version;\n\nexport { version };\n","export default function(fn, fields, name) {\n  fn.fields = fields || [];\n  fn.fname = name;\n  return fn;\n}\n\nexport function accessorName(fn) {\n  return fn == null ? null : fn.fname;\n}\n\nexport function accessorFields(fn) {\n  return fn == null ? null : fn.fields;\n}\n","export default function(path) {\n  return path.length === 1 ? get1(path[0]) : getN(path);\n}\n\nconst get1 = field => function(obj) {\n  return obj[field];\n};\n\nconst getN = path => {\n  const len = path.length;\n  return function(obj) {\n    for (let i = 0; i < len; ++i) {\n      obj = obj[path[i]];\n    }\n    return obj;\n  };\n};\n\n","export default function(message) {\n  throw Error(message);\n}\n","import error from './error';\n\nexport default function(p) {\n  var path = [],\n      q = null,\n      b = 0,\n      n = p.length,\n      s = '',\n      i, j, c;\n\n  p = p + '';\n\n  function push() {\n    path.push(s + p.substring(i, j));\n    s = '';\n    i = j + 1;\n  }\n\n  for (i=j=0; j<n; ++j) {\n    c = p[j];\n    if (c === '\\\\') {\n      s += p.substring(i, j);\n      s += p.substring(++j, ++j);\n      i = j;\n    } else if (c === q) {\n      push();\n      q = null;\n      b = -1;\n    } else if (q) {\n      continue;\n    } else if (i === b && c === '\"') {\n      i = j + 1;\n      q = c;\n    } else if (i === b && c === \"'\") {\n      i = j + 1;\n      q = c;\n    } else if (c === '.' && !b) {\n      if (j > i) {\n        push();\n      } else {\n        i = j + 1;\n      }\n    } else if (c === '[') {\n      if (j > i) push();\n      b = i = j + 1;\n    } else if (c === ']') {\n      if (!b) error('Access path missing open bracket: ' + p);\n      if (b > 0) push();\n      b = 0;\n      i = j + 1;\n    }\n  }\n\n  if (b) error('Access path missing closing bracket: ' + p);\n  if (q) error('Access path missing closing quote: ' + p);\n\n  if (j > i) {\n    j++;\n    push();\n  }\n\n  return path;\n}\n","import accessor from './accessor';\nimport getter from './getter';\nimport splitAccessPath from './splitAccessPath';\n\nexport default function(field, name, opt) {\n  const path = splitAccessPath(field);\n  field = path.length === 1 ? path[0] : field;\n  return accessor(\n    (opt && opt.get || getter)(path),\n    [field],\n    name || field\n  );\n}\n","import accessor from './accessor';\nimport field from './field';\n\nvar empty = [];\n\nexport var id = field('id');\n\nexport var identity = accessor(function(_) { return _; }, empty, 'identity');\n\nexport var zero = accessor(function() { return 0; }, empty, 'zero');\n\nexport var one = accessor(function() { return 1; }, empty, 'one');\n\nexport var truthy = accessor(function() { return true; }, empty, 'true');\n\nexport var falsy = accessor(function() { return false; }, empty, 'false');\n","function log(method, level, input) {\n  var args = [level].concat([].slice.call(input));\n  console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nexport var None  = 0;\nexport var Error = 1;\nexport var Warn  = 2;\nexport var Info  = 3;\nexport var Debug = 4;\n\nexport default function(_, method) {\n  var level = _ || None;\n  return {\n    level: function(_) {\n      if (arguments.length) {\n        level = +_;\n        return this;\n      } else {\n        return level;\n      }\n    },\n    error: function() {\n      if (level >= Error) log(method || 'error', 'ERROR', arguments);\n      return this;\n    },\n    warn: function() {\n      if (level >= Warn) log(method || 'warn', 'WARN', arguments);\n      return this;\n    },\n    info: function() {\n      if (level >= Info) log(method || 'log', 'INFO', arguments);\n      return this;\n    },\n    debug: function() {\n      if (level >= Debug) log(method || 'log', 'DEBUG', arguments);\n      return this;\n    }\n  };\n}\n","export default Array.isArray;\n","export default function(_) {\n  return _ === Object(_);\n}\n","import isArray from './isArray';\nimport isObject from './isObject';\n\nconst isLegalKey = key => key !== '__proto__';\n\nexport function mergeConfig(...configs) {\n  return configs.reduce((out, source) => {\n    for (var key in source) {\n      if (key === 'signals') {\n        // for signals, we merge the signals arrays\n        // source signals take precedence over\n        // existing signals with the same name\n        out.signals = mergeNamed(out.signals, source.signals);\n      } else {\n        // otherwise, merge objects subject to recursion constraints\n        // for legend block, recurse for the layout entry only\n        // for style block, recurse for all properties\n        // otherwise, no recursion: objects overwrite, no merging\n        var r = key === 'legend' ? {layout: 1}\n          : key === 'style' ? true\n          : null;\n        writeConfig(out, key, source[key], r);\n      }\n    }\n    return out;\n  }, {});\n}\n\nexport function writeConfig(output, key, value, recurse) {\n  if (!isLegalKey(key)) return;\n\n  var k, o;\n  if (isObject(value) && !isArray(value)) {\n    o = isObject(output[key]) ? output[key] : (output[key] = {});\n    for (k in value) {\n      if (recurse && (recurse === true || recurse[k])) {\n        writeConfig(o, k, value[k]);\n      } else if (isLegalKey(k)) {\n        o[k] = value[k];\n      }\n    }\n  } else {\n    output[key] = value;\n  }\n}\n\nfunction mergeNamed(a, b) {\n  if (a == null) return b;\n\n  const map = {}, out = [];\n\n  function add(_) {\n    if (!map[_.name]) {\n      map[_.name] = 1;\n      out.push(_);\n    }\n  }\n\n  b.forEach(add);\n  a.forEach(add);\n  return out;\n}\n","export default function(array) {\n  return array[array.length - 1];\n}\n","export default function(_) {\n  return _ == null || _ === '' ? null : +_;\n}\n","import {identity} from './accessors';\nimport peek from './peek';\nimport toNumber from './toNumber';\n\nfunction exp(sign) {\n  return function(x) { return sign * Math.exp(x); };\n}\n\nfunction log(sign) {\n  return function(x) { return Math.log(sign * x); };\n}\n\nfunction symlog(c) {\n  return function(x) { return Math.sign(x) * Math.log1p(Math.abs(x / c)); };\n}\n\nfunction symexp(c) {\n  return function(x) { return Math.sign(x) * Math.expm1(Math.abs(x)) * c; };\n}\n\nfunction pow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction pan(domain, delta, lift, ground) {\n  var d0 = lift(domain[0]),\n      d1 = lift(peek(domain)),\n      dd = (d1 - d0) * delta;\n\n  return [\n    ground(d0 - dd),\n    ground(d1 - dd)\n  ];\n}\n\nexport function panLinear(domain, delta) {\n  return pan(domain, delta, toNumber, identity);\n}\n\nexport function panLog(domain, delta) {\n  var sign = Math.sign(domain[0]);\n  return pan(domain, delta, log(sign), exp(sign));\n}\n\nexport function panPow(domain, delta, exponent) {\n  return pan(domain, delta, pow(exponent), pow(1/exponent));\n}\n\nexport function panSymlog(domain, delta, constant) {\n  return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n  var d0 = lift(domain[0]),\n      d1 = lift(peek(domain)),\n      da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n\n  return [\n    ground(da + (d0 - da) * scale),\n    ground(da + (d1 - da) * scale)\n  ];\n}\n\nexport function zoomLinear(domain, anchor, scale) {\n  return zoom(domain, anchor, scale, toNumber, identity);\n}\n\nexport function zoomLog(domain, anchor, scale) {\n  var sign = Math.sign(domain[0]);\n  return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\n\nexport function zoomPow(domain, anchor, scale, exponent) {\n  return zoom(domain, anchor, scale, pow(exponent), pow(1/exponent));\n}\n\nexport function zoomSymlog(domain, anchor, scale, constant) {\n  return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n","export function quarter(date) {\n  return 1 + ~~(new Date(date).getMonth() / 3);\n}\n\nexport function utcquarter(date) {\n  return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n","import isArray from './isArray';\n\nexport default function(_) {\n  return _ != null ? (isArray(_) ? _ : [_]) : [];\n}\n","/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nexport default function(range, min, max) {\n  var lo = range[0],\n      hi = range[1],\n      span;\n\n  if (hi < lo) {\n    span = hi;\n    hi = lo;\n    lo = span;\n  }\n  span = hi - lo;\n\n  return span >= (max - min)\n    ? [min, max]\n    : [\n        (lo = Math.min(Math.max(lo, min), max - span)),\n        lo + span\n      ];\n}\n","export default function(_) {\n  return typeof _ === 'function';\n}\n","import {default as accessor, accessorFields} from './accessor';\nimport array from './array';\nimport field from './field';\nimport isFunction from './isFunction';\n\nconst DESCENDING = 'descending';\n\nexport default function(fields, orders, opt) {\n  opt = opt || {};\n  orders = array(orders) || [];\n\n  const ord = [], get = [], fmap = {},\n        gen = opt.comparator || comparator;\n\n  array(fields).forEach((f, i) => {\n    if (f == null) return;\n    ord.push(orders[i] === DESCENDING ? -1 : 1);\n    get.push(f = isFunction(f) ? f : field(f, null, opt));\n    (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n  });\n\n  return get.length === 0\n    ? null\n    : accessor(gen(get, ord), Object.keys(fmap));\n}\n\nconst compare = (u, v) => (u < v || u == null) && v != null ? -1\n  : (u > v || v == null) && u != null ? 1\n  : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? -1\n  : v !== v && u === u ? 1\n  : 0;\n\nconst comparator = (fields, orders) => fields.length === 1\n  ? compare1(fields[0], orders[0])\n  : compareN(fields, orders, fields.length);\n\nconst compare1 = (field, order) => function(a, b) {\n  return compare(field(a), field(b)) * order;\n};\n\nconst compareN = (fields, orders, n) => {\n  orders.push(0); // pad zero for convenient lookup\n  return function(a, b) {\n    let f, c = 0, i = -1;\n    while (c === 0 && ++i < n) {\n      f = fields[i];\n      c = compare(f(a), f(b));\n    }\n    return c * orders[i];\n  };\n};\n","import isFunction from './isFunction';\n\nexport default function(_) {\n  return isFunction(_) ? _ : function() { return _; };\n}\n","export default function(delay, handler) {\n  var tid, evt;\n\n  function callback() {\n    handler(evt);\n    tid = evt = null;\n  }\n\n  return function(e) {\n    evt = e;\n    if (tid) clearTimeout(tid);\n    tid = setTimeout(callback, delay);\n  };\n}\n","export default function(_) {\n  for (var x, k, i=1, len=arguments.length; i<len; ++i) {\n    x = arguments[i];\n    for (k in x) { _[k] = x[k]; }\n  }\n  return _;\n}\n","/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nexport default function(array, f) {\n  var i = 0, n, v, min, max;\n\n  if (array && (n = array.length)) {\n    if (f == null) {\n      // find first valid value\n      for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n      min = max = v;\n\n      // visit all other values\n      for (; i<n; ++i) {\n        v = array[i];\n        // skip null/undefined; NaN will fail all comparisons\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    } else {\n      // find first valid value\n      for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n      min = max = v;\n\n      // visit all other values\n      for (; i<n; ++i) {\n        v = f(array[i]);\n        // skip null/undefined; NaN will fail all comparisons\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n","export default function(array, f) {\n  var i = -1,\n      n = array.length,\n      a, b, c, u, v;\n\n  if (f == null) {\n    while (++i < n) {\n      b = array[i];\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n    if (i === n) return [-1, -1];\n    u = v = i;\n    while (++i < n) {\n      b = array[i];\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  } else {\n    while (++i < n) {\n      b = f(array[i], i, array);\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n    if (i === n) return [-1, -1];\n    u = v = i;\n    while (++i < n) {\n      b = f(array[i], i, array);\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  }\n\n  return [u, v];\n}\n","const hop = Object.prototype.hasOwnProperty;\n\nexport default function(object, property) {\n  return hop.call(object, property);\n}\n","import hasOwnProperty from './hasOwnProperty';\n\nvar NULL = {};\n\nexport default function(input) {\n  var obj = {},\n      map,\n      test;\n\n  function has(key) {\n    return hasOwnProperty(obj, key) && obj[key] !== NULL;\n  }\n\n  map = {\n    size: 0,\n    empty: 0,\n    object: obj,\n    has: has,\n    get(key) {\n      return has(key) ? obj[key] : undefined;\n    },\n    set(key, value) {\n      if (!has(key)) {\n        ++map.size;\n        if (obj[key] === NULL) --map.empty;\n      }\n      obj[key] = value;\n      return this;\n    },\n    delete(key) {\n      if (has(key)) {\n        --map.size;\n        ++map.empty;\n        obj[key] = NULL;\n      }\n      return this;\n    },\n    clear() {\n      map.size = map.empty = 0;\n      map.object = obj = {};\n    },\n    test(_) {\n      if (arguments.length) {\n        test = _;\n        return map;\n      } else {\n        return test;\n      }\n    },\n    clean() {\n      var next = {},\n          size = 0,\n          key, value;\n      for (key in obj) {\n        value = obj[key];\n        if (value !== NULL && (!test || !test(value))) {\n          next[key] = value;\n          ++size;\n        }\n      }\n      map.size = size;\n      map.empty = 0;\n      map.object = (obj = next);\n    }\n  };\n\n  if (input) Object.keys(input).forEach(function(key) {\n    map.set(key, input[key]);\n  });\n\n  return map;\n}\n","import peek from './peek';\n\nexport default function(range, value, threshold, left, right, center) {\n  if (!threshold && threshold !== 0) return center;\n\n  var a = range[0],\n      b = peek(range),\n      t = +threshold,\n      l, r;\n\n  // swap endpoints if range is reversed\n  if (b < a) {\n    l = a; a = b; b = l;\n  }\n\n  // compare value to endpoints\n  l = Math.abs(value - a);\n  r = Math.abs(b - value);\n\n  // adjust if value is within threshold distance of endpoint\n  return l < r && l <= t ? left : r <= t ? right : center;\n}\n","export default function(child, parent) {\n  var proto = (child.prototype = Object.create(parent.prototype));\n  proto.constructor = child;\n  return proto;\n}\n","/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nexport default function(value, range, left, right) {\n  var r0 = range[0], r1 = range[range.length-1], t;\n  if (r0 > r1) {\n    t = r0;\n    r0 = r1;\n    r1 = t;\n  }\n  left = left === undefined || left;\n  right = right === undefined || right;\n\n  return (left ? r0 <= value : r0 < value) &&\n    (right ? value <= r1 : value < r1);\n}\n","export default function(_) {\n  return typeof _ === 'boolean';\n}\n","export default function(_) {\n  return Object.prototype.toString.call(_) === '[object Date]';\n}\n","export default function(_) {\n  return typeof _ === 'number';\n}\n","export default function(_) {\n  return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n","export default function(_) {\n  return typeof _ === 'string';\n}\n","import accessor from './accessor';\nimport array from './array';\nimport getter from './getter';\nimport splitAccessPath from './splitAccessPath';\n\nexport default function(fields, flat, opt) {\n  if (fields) {\n    fields = flat\n      ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1'))\n      : array(fields);\n  }\n\n  const len = fields && fields.length,\n        gen = opt && opt.get || getter,\n        map = f => gen(flat ? [f] : splitAccessPath(f));\n  let fn;\n\n  if (!len) {\n    fn = function() { return ''; };\n  } else if (len === 1) {\n    const get = map(fields[0]);\n    fn = function(_) { return '' + get(_); };\n  } else {\n    const get = fields.map(map);\n    fn = function(_) {\n      let s = '' + get[0](_), i = 0;\n      while (++i < len) s += '|' + get[i](_);\n      return s;\n    };\n  }\n\n  return accessor(fn, fields, 'key');\n}\n","import peek from './peek';\n\nexport default function(array, frac) {\n  const lo = array[0],\n        hi = peek(array),\n        f = +frac;\n  return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n","import has from './hasOwnProperty';\n\nconst DEFAULT_MAX_SIZE = 10000;\n\n// adapted from https://github.com/dominictarr/hashlru/ (MIT License)\nexport default function(maxsize) {\n  maxsize = +maxsize || DEFAULT_MAX_SIZE;\n\n  let curr, prev, size;\n\n  const clear = () => {\n    curr = {};\n    prev = {};\n    size = 0;\n  };\n\n  const update = (key, value) => {\n    if (++size > maxsize) {\n      prev = curr;\n      curr = {};\n      size = 1;\n    }\n    return (curr[key] = value);\n  };\n\n  clear();\n\n  return {\n    clear,\n    has: key => has(curr, key) || has(prev, key),\n    get: key => has(curr, key) ? curr[key]\n        : has(prev, key) ? update(key, prev[key])\n        : undefined,\n    set: (key, value) => has(curr, key)\n        ? (curr[key] = value)\n        : update(key, value)\n  };\n}\n","export default function(compare, array0, array1, output) {\n  var n0 = array0.length,\n      n1 = array1.length;\n\n  if (!n1) return array0;\n  if (!n0) return array1;\n\n  var merged = output || new array0.constructor(n0 + n1),\n      i0 = 0, i1 = 0, i = 0;\n\n  for (; i0<n0 && i1<n1; ++i) {\n    merged[i] = compare(array0[i0], array1[i1]) > 0\n       ? array1[i1++]\n       : array0[i0++];\n  }\n\n  for (; i0<n0; ++i0, ++i) {\n    merged[i] = array0[i0];\n  }\n\n  for (; i1<n1; ++i1, ++i) {\n    merged[i] = array1[i1];\n  }\n\n  return merged;\n}\n","export default function(str, reps) {\n  var s = '';\n  while (--reps >= 0) s += str;\n  return s;\n}\n","import repeat from './repeat';\n\nexport default function(str, length, padchar, align) {\n  var c = padchar || ' ',\n      s = str + '',\n      n = length - s.length;\n\n  return n <= 0 ? s\n    : align === 'left' ? repeat(c, n) + s\n    : align === 'center' ? repeat(c, ~~(n/2)) + s + repeat(c, Math.ceil(n/2))\n    : s + repeat(c, n);\n}\n","import peek from './peek';\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\nexport default function(array) {\n  return array && (peek(array) - array[0]) || 0;\n}\n","import isArray from './isArray';\nimport isObject from './isObject';\nimport isString from './isString';\n\nexport default function $(x) {\n  return isArray(x) ? '[' + x.map($) + ']'\n    : isObject(x) || isString(x) ?\n      // Output valid JSON and JS source strings.\n      // See http://timelessrepo.com/json-isnt-a-javascript-subset\n      JSON.stringify(x).replace('\\u2028','\\\\u2028').replace('\\u2029', '\\\\u2029')\n    : x;\n}\n","export default function(_) {\n  return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n","import isDate from './isDate';\nimport isNumber from './isNumber';\n\nfunction defaultParser(_) {\n  return isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n}\n\nexport default function(_, parser) {\n  parser = parser || defaultParser;\n  return _ == null || _ === '' ? null : parser(_);\n}\n","export default function(_) {\n  return _ == null || _ === '' ? null : _ + '';\n}\n","export default function(_) {\n  for (var s={}, i=0, n=_.length; i<n; ++i) s[_[i]] = true;\n  return s;\n}\n","export default function(str, length, align, ellipsis) {\n  var e = ellipsis != null ? ellipsis : '\\u2026',\n      s = str + '',\n      n = s.length,\n      l = Math.max(0, length - e.length);\n\n  return n <= length ? s\n    : align === 'left' ? e + s.slice(n - l)\n    : align === 'center' ? s.slice(0, Math.ceil(l/2)) + e + s.slice(n - ~~(l/2))\n    : s.slice(0, l) + e;\n}\n","export default function(array, filter, visitor) {\n  if (array) {\n    if (filter) {\n      var i = 0, n = array.length, t;\n      for (; i<n; ++i) {\n        if (t = filter(array[i])) visitor(t, i, array);\n      }\n    } else {\n      array.forEach(visitor);\n    }\n  }\n}\n","export {\n  default as accessor,\n  accessorName,\n  accessorFields\n} from './src/accessor';\n\nexport {\n  id,\n  identity,\n  zero,\n  one,\n  truthy,\n  falsy\n} from './src/accessors';\n\nexport {\n  default as logger,\n  None,\n  Error,\n  Warn,\n  Info,\n  Debug\n} from './src/logger';\n\nexport {\n  mergeConfig,\n  writeConfig\n} from './src/mergeConfig';\n\nexport {\n  panLinear,\n  panLog,\n  panPow,\n  panSymlog,\n  zoomLinear,\n  zoomLog,\n  zoomPow,\n  zoomSymlog\n} from './src/transform';\n\nexport {\n  quarter,\n  utcquarter\n} from './src/quarter';\n\nexport {default as array} from './src/array';\nexport {default as clampRange} from './src/clampRange';\nexport {default as compare} from './src/compare';\nexport {default as constant} from './src/constant';\nexport {default as debounce} from './src/debounce';\nexport {default as error} from './src/error';\nexport {default as extend} from './src/extend';\nexport {default as extent} from './src/extent';\nexport {default as extentIndex} from './src/extentIndex';\nexport {default as fastmap} from './src/fastmap';\nexport {default as field} from './src/field';\nexport {default as flush} from './src/flush';\nexport {default as hasOwnProperty} from './src/hasOwnProperty';\nexport {default as inherits} from './src/inherits';\nexport {default as inrange} from './src/inrange';\nexport {default as isArray} from './src/isArray';\nexport {default as isBoolean} from './src/isBoolean';\nexport {default as isDate} from './src/isDate';\nexport {default as isFunction} from './src/isFunction';\nexport {default as isNumber} from './src/isNumber';\nexport {default as isObject} from './src/isObject';\nexport {default as isRegExp} from './src/isRegExp';\nexport {default as isString} from './src/isString';\nexport {default as key} from './src/key';\nexport {default as lerp} from './src/lerp';\nexport {default as lruCache} from './src/lruCache';\nexport {default as merge} from './src/merge';\nexport {default as pad} from './src/pad';\nexport {default as peek} from './src/peek';\nexport {default as repeat} from './src/repeat';\nexport {default as span} from './src/span';\nexport {default as splitAccessPath} from './src/splitAccessPath';\nexport {default as stringValue} from './src/stringValue';\nexport {default as toBoolean} from './src/toBoolean';\nexport {default as toDate} from './src/toDate';\nexport {default as toNumber} from './src/toNumber';\nexport {default as toString} from './src/toString';\nexport {default as toSet} from './src/toSet';\nexport {default as truncate} from './src/truncate';\nexport {default as visitArray} from './src/visitArray';\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    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;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","Array.prototype.flat||Object.defineProperty(Array.prototype,\"flat\",{configurable:!0,value:function r(){var t=isNaN(arguments[0])?1:Number(arguments[0]);return t?Array.prototype.reduce.call(this,function(a,e){return Array.isArray(e)?a.push.apply(a,r.call(e,t-1)):a.push(e),a},[]):Array.prototype.slice.call(this)},writable:!0}),Array.prototype.flatMap||Object.defineProperty(Array.prototype,\"flatMap\",{configurable:!0,value:function(r){return Array.prototype.map.apply(this,arguments).flat()},writable:!0})\n","export function isLogicalOr(op) {\n    return !!op.or;\n}\nexport function isLogicalAnd(op) {\n    return !!op.and;\n}\nexport function isLogicalNot(op) {\n    return !!op.not;\n}\nexport function forEachLeaf(op, fn) {\n    if (isLogicalNot(op)) {\n        forEachLeaf(op.not, fn);\n    }\n    else if (isLogicalAnd(op)) {\n        for (const subop of op.and) {\n            forEachLeaf(subop, fn);\n        }\n    }\n    else if (isLogicalOr(op)) {\n        for (const subop of op.or) {\n            forEachLeaf(subop, fn);\n        }\n    }\n    else {\n        fn(op);\n    }\n}\nexport function normalizeLogicalComposition(op, normalizer) {\n    if (isLogicalNot(op)) {\n        return { not: normalizeLogicalComposition(op.not, normalizer) };\n    }\n    else if (isLogicalAnd(op)) {\n        return { and: op.and.map(o => normalizeLogicalComposition(o, normalizer)) };\n    }\n    else if (isLogicalOr(op)) {\n        return { or: op.or.map(o => normalizeLogicalComposition(o, normalizer)) };\n    }\n    else {\n        return normalizer(op);\n    }\n}\n//# sourceMappingURL=logical.js.map","import 'array-flat-polyfill';\nimport { default as clone_ } from 'clone';\nimport deepEqual_ from 'fast-deep-equal';\nimport stableStringify from 'fast-json-stable-stringify';\nimport { hasOwnProperty, isNumber, isString, splitAccessPath, stringValue, writeConfig } from 'vega-util';\nimport { isLogicalAnd, isLogicalNot, isLogicalOr } from './logical';\nexport const deepEqual = deepEqual_;\nexport const duplicate = clone_;\n/**\n * Creates an object composed of the picked object properties.\n *\n * var object = {'a': 1, 'b': '2', 'c': 3};\n * pick(object, ['a', 'c']);\n * // → {'a': 1, 'c': 3}\n */\nexport function pick(obj, props) {\n    const copy = {};\n    for (const prop of props) {\n        if (hasOwnProperty(obj, prop)) {\n            copy[prop] = obj[prop];\n        }\n    }\n    return copy;\n}\n/**\n * The opposite of _.pick; this method creates an object composed of the own\n * and inherited enumerable string keyed properties of object that are not omitted.\n */\nexport function omit(obj, props) {\n    const copy = Object.assign({}, obj);\n    for (const prop of props) {\n        delete copy[prop];\n    }\n    return copy;\n}\n/**\n * Monkey patch Set so that `stringify` produces a string representation of sets.\n */\nSet.prototype['toJSON'] = function () {\n    return `Set(${[...this].map(x => stableStringify(x)).join(',')})`;\n};\n/**\n * Converts any object to a string representation that can be consumed by humans.\n */\nexport const stringify = stableStringify;\n/**\n * Converts any object to a string of limited size, or a number.\n */\nexport function hash(a) {\n    if (isNumber(a)) {\n        return a;\n    }\n    const str = isString(a) ? a : stableStringify(a);\n    // short strings can be used as hash directly, longer strings are hashed to reduce memory usage\n    if (str.length < 250) {\n        return str;\n    }\n    // from http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\n    let h = 0;\n    for (let i = 0; i < str.length; i++) {\n        const char = str.charCodeAt(i);\n        h = (h << 5) - h + char;\n        h = h & h; // Convert to 32bit integer\n    }\n    return h;\n}\nexport function isNullOrFalse(x) {\n    return x === false || x === null;\n}\nexport function contains(array, item) {\n    return array.indexOf(item) > -1;\n}\n/**\n * Returns true if any item returns true.\n */\nexport function some(arr, f) {\n    let i = 0;\n    for (const [k, a] of arr.entries()) {\n        if (f(a, k, i++)) {\n            return true;\n        }\n    }\n    return false;\n}\n/**\n * Returns true if all items return true.\n */\nexport function every(arr, f) {\n    let i = 0;\n    for (const [k, a] of arr.entries()) {\n        if (!f(a, k, i++)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * recursively merges src into dest\n */\nexport function mergeDeep(dest, ...src) {\n    for (const s of src) {\n        deepMerge_(dest, s !== null && s !== void 0 ? s : {});\n    }\n    return dest;\n}\nfunction deepMerge_(dest, src) {\n    for (const property of keys(src)) {\n        writeConfig(dest, property, src[property], true);\n    }\n}\nexport function unique(values, f) {\n    const results = [];\n    const u = {};\n    let v;\n    for (const val of values) {\n        v = f(val);\n        if (v in u) {\n            continue;\n        }\n        u[v] = 1;\n        results.push(val);\n    }\n    return results;\n}\n/**\n * Returns true if the two dictionaries disagree. Applies only to defined values.\n */\nexport function isEqual(dict, other) {\n    const dictKeys = keys(dict);\n    const otherKeys = keys(other);\n    if (dictKeys.length !== otherKeys.length) {\n        return false;\n    }\n    for (const key of dictKeys) {\n        if (dict[key] !== other[key]) {\n            return false;\n        }\n    }\n    return true;\n}\nexport function setEqual(a, b) {\n    if (a.size !== b.size) {\n        return false;\n    }\n    for (const e of a) {\n        if (!b.has(e)) {\n            return false;\n        }\n    }\n    return true;\n}\nexport function hasIntersection(a, b) {\n    for (const key of a) {\n        if (b.has(key)) {\n            return true;\n        }\n    }\n    return false;\n}\nexport function prefixGenerator(a) {\n    const prefixes = new Set();\n    for (const x of a) {\n        const splitField = splitAccessPath(x);\n        // Wrap every element other than the first in `[]`\n        const wrappedWithAccessors = splitField.map((y, i) => (i === 0 ? y : `[${y}]`));\n        const computedPrefixes = wrappedWithAccessors.map((_, i) => wrappedWithAccessors.slice(0, i + 1).join(''));\n        for (const y of computedPrefixes) {\n            prefixes.add(y);\n        }\n    }\n    return prefixes;\n}\n/**\n * Returns true if a and b have an intersection. Also return true if a or b are undefined\n * since this means we don't know what fields a node produces or depends on.\n */\nexport function fieldIntersection(a, b) {\n    if (a === undefined || b === undefined) {\n        return true;\n    }\n    return hasIntersection(prefixGenerator(a), prefixGenerator(b));\n}\nexport function isEmpty(obj) {\n    return keys(obj).length === 0;\n}\n// This is a stricter version of Object.keys but with better types. See https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208\nexport const keys = Object.keys;\nexport const vals = Object.values;\nexport function entries(x) {\n    const _entries = [];\n    for (const k in x) {\n        if (hasOwnProperty(x, k)) {\n            _entries.push({\n                key: k,\n                value: x[k]\n            });\n        }\n    }\n    return _entries;\n}\nexport function isBoolean(b) {\n    return b === true || b === false;\n}\n/**\n * Convert a string into a valid variable name\n */\nexport function varName(s) {\n    // Replace non-alphanumeric characters (anything besides a-zA-Z0-9_) with _\n    const alphanumericS = s.replace(/\\W/g, '_');\n    // Add _ if the string has leading numbers.\n    return (s.match(/^\\d+/) ? '_' : '') + alphanumericS;\n}\nexport function logicalExpr(op, cb) {\n    if (isLogicalNot(op)) {\n        return '!(' + logicalExpr(op.not, cb) + ')';\n    }\n    else if (isLogicalAnd(op)) {\n        return '(' + op.and.map((and) => logicalExpr(and, cb)).join(') && (') + ')';\n    }\n    else if (isLogicalOr(op)) {\n        return '(' + op.or.map((or) => logicalExpr(or, cb)).join(') || (') + ')';\n    }\n    else {\n        return cb(op);\n    }\n}\n/**\n * Delete nested property of an object, and delete the ancestors of the property if they become empty.\n */\nexport function deleteNestedProperty(obj, orderedProps) {\n    if (orderedProps.length === 0) {\n        return true;\n    }\n    const prop = orderedProps.shift(); // eslint-disable-line @typescript-eslint/no-non-null-assertion\n    if (prop in obj && deleteNestedProperty(obj[prop], orderedProps)) {\n        delete obj[prop];\n    }\n    return isEmpty(obj);\n}\nexport function titleCase(s) {\n    return s.charAt(0).toUpperCase() + s.substr(1);\n}\n/**\n * Converts a path to an access path with datum.\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nexport function accessPathWithDatum(path, datum = 'datum') {\n    const pieces = splitAccessPath(path);\n    const prefixes = [];\n    for (let i = 1; i <= pieces.length; i++) {\n        const prefix = `[${pieces.slice(0, i).map(stringValue).join('][')}]`;\n        prefixes.push(`${datum}${prefix}`);\n    }\n    return prefixes.join(' && ');\n}\n/**\n * Return access with datum to the flattened field.\n *\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nexport function flatAccessWithDatum(path, datum = 'datum') {\n    return `${datum}[${stringValue(splitAccessPath(path).join('.'))}]`;\n}\nfunction escapePathAccess(string) {\n    return string.replace(/(\\[|\\]|\\.|'|\")/g, '\\\\$1');\n}\n/**\n * Replaces path accesses with access to non-nested field.\n * For example, `foo[\"bar\"].baz` becomes `foo\\\\.bar\\\\.baz`.\n */\nexport function replacePathInField(path) {\n    return `${splitAccessPath(path).map(escapePathAccess).join('\\\\.')}`;\n}\n/**\n * Replace all occurrences of a string with another string.\n *\n * @param string the string to replace in\n * @param find the string to replace\n * @param replacement the replacement\n */\nexport function replaceAll(string, find, replacement) {\n    return string.replace(new RegExp(find.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g'), replacement);\n}\n/**\n * Remove path accesses with access from field.\n * For example, `foo[\"bar\"].baz` becomes `foo.bar.baz`.\n */\nexport function removePathFromField(path) {\n    return `${splitAccessPath(path).join('.')}`;\n}\n/**\n * Count the depth of the path. Returns 1 for fields that are not nested.\n */\nexport function accessPathDepth(path) {\n    if (!path) {\n        return 0;\n    }\n    return splitAccessPath(path).length;\n}\n/**\n * This is a replacement for chained || for numeric properties or properties that respect null so that 0 will be included.\n */\nexport function getFirstDefined(...args) {\n    for (const arg of args) {\n        if (arg !== undefined) {\n            return arg;\n        }\n    }\n    return undefined;\n}\n// variable used to generate id\nlet idCounter = 42;\n/**\n * Returns a new random id every time it gets called.\n *\n * Has side effect!\n */\nexport function uniqueId(prefix) {\n    const id = ++idCounter;\n    return prefix ? String(prefix) + id : id;\n}\n/**\n * Resets the id counter used in uniqueId. This can be useful for testing.\n */\nexport function resetIdCounter() {\n    idCounter = 42;\n}\nexport function internalField(name) {\n    return isInternalField(name) ? name : `__${name}`;\n}\nexport function isInternalField(name) {\n    return name.indexOf('__') === 0;\n}\n/**\n * Normalize angle to be within [0,360).\n */\nexport function normalizeAngle(angle) {\n    if (angle === undefined) {\n        return undefined;\n    }\n    return ((angle % 360) + 360) % 360;\n}\n/**\n * Returns whether the passed in value is a valid number.\n */\nexport function isNumeric(value) {\n    if (isNumber(value)) {\n        return true;\n    }\n    return !isNaN(value) && !isNaN(parseFloat(value));\n}\n//# sourceMappingURL=util.js.map","import { keys } from './util';\nexport const CONDITIONAL_AXIS_PROP_INDEX = {\n    domainColor: {\n        part: 'domain',\n        vgProp: 'stroke'\n    },\n    labelAlign: {\n        part: 'labels',\n        vgProp: 'align'\n    },\n    labelBaseline: {\n        part: 'labels',\n        vgProp: 'baseline'\n    },\n    labelColor: {\n        part: 'labels',\n        vgProp: 'fill'\n    },\n    labelFont: {\n        part: 'labels',\n        vgProp: 'font'\n    },\n    labelFontSize: {\n        part: 'labels',\n        vgProp: 'fontSize'\n    },\n    labelFontStyle: {\n        part: 'labels',\n        vgProp: 'fontStyle'\n    },\n    labelFontWeight: {\n        part: 'labels',\n        vgProp: 'fontWeight'\n    },\n    labelOpacity: {\n        part: 'labels',\n        vgProp: 'opacity'\n    },\n    labelOffset: null,\n    labelPadding: null,\n    gridColor: {\n        part: 'grid',\n        vgProp: 'stroke'\n    },\n    gridDash: {\n        part: 'grid',\n        vgProp: 'strokeDash'\n    },\n    gridDashOffset: {\n        part: 'grid',\n        vgProp: 'strokeDash'\n    },\n    gridOpacity: {\n        part: 'grid',\n        vgProp: 'opacity'\n    },\n    gridWidth: {\n        part: 'grid',\n        vgProp: 'strokeWidth'\n    },\n    tickColor: {\n        part: 'ticks',\n        vgProp: 'stroke'\n    },\n    tickDash: {\n        part: 'ticks',\n        vgProp: 'strokeDash'\n    },\n    tickDashOffset: {\n        part: 'ticks',\n        vgProp: 'strokeDash'\n    },\n    tickOpacity: {\n        part: 'ticks',\n        vgProp: 'opacity'\n    },\n    tickSize: null,\n    tickWidth: {\n        part: 'ticks',\n        vgProp: 'strokeWidth'\n    },\n    titleColor: {\n        part: 'title',\n        vgProp: 'fill'\n    },\n    title: null // title supports signal, let's use it.\n};\nexport function isConditionalAxisValue(v) {\n    return v && v['condition'];\n}\nexport const AXIS_PARTS = ['domain', 'grid', 'labels', 'ticks', 'title'];\n/**\n * A dictionary listing whether a certain axis property is applicable for only main axes or only grid axes.\n */\nexport const AXIS_PROPERTY_TYPE = {\n    grid: 'grid',\n    gridCap: 'grid',\n    gridColor: 'grid',\n    gridDash: 'grid',\n    gridDashOffset: 'grid',\n    gridOpacity: 'grid',\n    gridScale: 'grid',\n    gridWidth: 'grid',\n    orient: 'main',\n    bandPosition: 'both',\n    aria: 'main',\n    description: 'main',\n    domain: 'main',\n    domainCap: 'main',\n    domainColor: 'main',\n    domainDash: 'main',\n    domainDashOffset: 'main',\n    domainOpacity: 'main',\n    domainWidth: 'main',\n    format: 'main',\n    formatType: 'main',\n    labelAlign: 'main',\n    labelAngle: 'main',\n    labelBaseline: 'main',\n    labelBound: 'main',\n    labelColor: 'main',\n    labelFlush: 'main',\n    labelFlushOffset: 'main',\n    labelFont: 'main',\n    labelFontSize: 'main',\n    labelFontStyle: 'main',\n    labelFontWeight: 'main',\n    labelLimit: 'main',\n    labelLineHeight: 'main',\n    labelOffset: 'main',\n    labelOpacity: 'main',\n    labelOverlap: 'main',\n    labelPadding: 'main',\n    labels: 'main',\n    labelSeparation: 'main',\n    maxExtent: 'main',\n    minExtent: 'main',\n    offset: 'both',\n    position: 'main',\n    tickCap: 'main',\n    tickColor: 'main',\n    tickDash: 'main',\n    tickDashOffset: 'main',\n    tickMinStep: 'main',\n    tickOffset: 'both',\n    tickOpacity: 'main',\n    tickRound: 'both',\n    ticks: 'main',\n    tickSize: 'main',\n    tickWidth: 'both',\n    title: 'main',\n    titleAlign: 'main',\n    titleAnchor: 'main',\n    titleAngle: 'main',\n    titleBaseline: 'main',\n    titleColor: 'main',\n    titleFont: 'main',\n    titleFontSize: 'main',\n    titleFontStyle: 'main',\n    titleFontWeight: 'main',\n    titleLimit: 'main',\n    titleLineHeight: 'main',\n    titleOpacity: 'main',\n    titlePadding: 'main',\n    titleX: 'main',\n    titleY: 'main',\n    encode: 'both',\n    scale: 'both',\n    tickBand: 'both',\n    tickCount: 'both',\n    tickExtra: 'both',\n    translate: 'both',\n    values: 'both',\n    zindex: 'both' // this is actually set afterward, so it doesn't matter\n};\nexport const COMMON_AXIS_PROPERTIES_INDEX = {\n    orient: 1,\n    aria: 1,\n    bandPosition: 1,\n    description: 1,\n    domain: 1,\n    domainCap: 1,\n    domainColor: 1,\n    domainDash: 1,\n    domainDashOffset: 1,\n    domainOpacity: 1,\n    domainWidth: 1,\n    format: 1,\n    formatType: 1,\n    grid: 1,\n    gridCap: 1,\n    gridColor: 1,\n    gridDash: 1,\n    gridDashOffset: 1,\n    gridOpacity: 1,\n    gridWidth: 1,\n    labelAlign: 1,\n    labelAngle: 1,\n    labelBaseline: 1,\n    labelBound: 1,\n    labelColor: 1,\n    labelFlush: 1,\n    labelFlushOffset: 1,\n    labelFont: 1,\n    labelFontSize: 1,\n    labelFontStyle: 1,\n    labelFontWeight: 1,\n    labelLimit: 1,\n    labelLineHeight: 1,\n    labelOffset: 1,\n    labelOpacity: 1,\n    labelOverlap: 1,\n    labelPadding: 1,\n    labels: 1,\n    labelSeparation: 1,\n    maxExtent: 1,\n    minExtent: 1,\n    offset: 1,\n    position: 1,\n    tickBand: 1,\n    tickCap: 1,\n    tickColor: 1,\n    tickCount: 1,\n    tickDash: 1,\n    tickDashOffset: 1,\n    tickExtra: 1,\n    tickMinStep: 1,\n    tickOffset: 1,\n    tickOpacity: 1,\n    tickRound: 1,\n    ticks: 1,\n    tickSize: 1,\n    tickWidth: 1,\n    title: 1,\n    titleAlign: 1,\n    titleAnchor: 1,\n    titleAngle: 1,\n    titleBaseline: 1,\n    titleColor: 1,\n    titleFont: 1,\n    titleFontSize: 1,\n    titleFontStyle: 1,\n    titleFontWeight: 1,\n    titleLimit: 1,\n    titleLineHeight: 1,\n    titleOpacity: 1,\n    titlePadding: 1,\n    titleX: 1,\n    titleY: 1,\n    translate: 1,\n    values: 1,\n    zindex: 1\n};\nconst AXIS_PROPERTIES_INDEX = Object.assign(Object.assign({}, COMMON_AXIS_PROPERTIES_INDEX), { style: 1, labelExpr: 1, encoding: 1 });\nexport function isAxisProperty(prop) {\n    return !!AXIS_PROPERTIES_INDEX[prop];\n}\n// Export for dependent projects\nexport const AXIS_PROPERTIES = keys(AXIS_PROPERTIES_INDEX);\n//# sourceMappingURL=axis.js.map","import { toSet } from 'vega-util';\nimport { contains, keys } from './util';\n/**\n * All types of primitive marks.\n */\nexport const Mark = {\n    arc: 'arc',\n    area: 'area',\n    bar: 'bar',\n    image: 'image',\n    line: 'line',\n    point: 'point',\n    rect: 'rect',\n    rule: 'rule',\n    text: 'text',\n    tick: 'tick',\n    trail: 'trail',\n    circle: 'circle',\n    square: 'square',\n    geoshape: 'geoshape'\n};\nexport const ARC = Mark.arc;\nexport const AREA = Mark.area;\nexport const BAR = Mark.bar;\nexport const IMAGE = Mark.image;\nexport const LINE = Mark.line;\nexport const POINT = Mark.point;\nexport const RECT = Mark.rect;\nexport const RULE = Mark.rule;\nexport const TEXT = Mark.text;\nexport const TICK = Mark.tick;\nexport const TRAIL = Mark.trail;\nexport const CIRCLE = Mark.circle;\nexport const SQUARE = Mark.square;\nexport const GEOSHAPE = Mark.geoshape;\nexport function isMark(m) {\n    return m in Mark;\n}\nexport function isPathMark(m) {\n    return contains(['line', 'area', 'trail'], m);\n}\nexport function isRectBasedMark(m) {\n    return contains(['rect', 'bar', 'image', 'arc' /* arc is rect/interval in polar coordinate */], m);\n}\nexport const PRIMITIVE_MARKS = keys(Mark);\nexport function isMarkDef(mark) {\n    return mark['type'];\n}\nconst PRIMITIVE_MARK_INDEX = toSet(PRIMITIVE_MARKS);\nexport function isPrimitiveMark(mark) {\n    const markType = isMarkDef(mark) ? mark.type : mark;\n    return markType in PRIMITIVE_MARK_INDEX;\n}\nexport const STROKE_CONFIG = [\n    'stroke',\n    'strokeWidth',\n    'strokeDash',\n    'strokeDashOffset',\n    'strokeOpacity',\n    'strokeJoin',\n    'strokeMiterLimit'\n];\nexport const FILL_CONFIG = ['fill', 'fillOpacity'];\nexport const FILL_STROKE_CONFIG = [...STROKE_CONFIG, ...FILL_CONFIG];\nconst VL_ONLY_MARK_CONFIG_INDEX = {\n    color: 1,\n    filled: 1,\n    invalid: 1,\n    order: 1,\n    radius2: 1,\n    theta2: 1,\n    timeUnitBand: 1,\n    timeUnitBandPosition: 1\n};\nexport const VL_ONLY_MARK_CONFIG_PROPERTIES = keys(VL_ONLY_MARK_CONFIG_INDEX);\nexport const VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = {\n    area: ['line', 'point'],\n    bar: ['binSpacing', 'continuousBandSize', 'discreteBandSize'],\n    rect: ['binSpacing', 'continuousBandSize', 'discreteBandSize'],\n    line: ['point'],\n    tick: ['bandSize', 'thickness']\n};\nexport const defaultMarkConfig = {\n    color: '#4c78a8',\n    invalid: 'filter',\n    timeUnitBand: 1\n};\nexport const BAR_CORNER_RADIUS_INDEX = {\n    horizontal: ['cornerRadiusTopRight', 'cornerRadiusBottomRight'],\n    vertical: ['cornerRadiusTopLeft', 'cornerRadiusTopRight']\n};\nconst DEFAULT_RECT_BAND_SIZE = 5;\nexport const defaultBarConfig = {\n    binSpacing: 1,\n    continuousBandSize: DEFAULT_RECT_BAND_SIZE,\n    timeUnitBandPosition: 0.5\n};\nexport const defaultRectConfig = {\n    binSpacing: 0,\n    continuousBandSize: DEFAULT_RECT_BAND_SIZE,\n    timeUnitBandPosition: 0.5\n};\nexport const defaultTickConfig = {\n    thickness: 1\n};\nexport function getMarkType(m) {\n    return isMarkDef(m) ? m.type : m;\n}\n//# sourceMappingURL=mark.js.map","export function isUnitSpec(spec) {\n    return 'mark' in spec;\n}\n//# sourceMappingURL=unit.js.map","import { getMarkType } from '../mark';\nimport { isUnitSpec } from '../spec/unit';\nexport class CompositeMarkNormalizer {\n    constructor(name, run) {\n        this.name = name;\n        this.run = run;\n    }\n    hasMatchingType(spec) {\n        if (isUnitSpec(spec)) {\n            return getMarkType(spec.mark) === this.name;\n        }\n        return false;\n    }\n}\n//# sourceMappingURL=base.js.map","import { isString, toSet } from 'vega-util';\nimport { contains, keys } from './util';\nconst AGGREGATE_OP_INDEX = {\n    argmax: 1,\n    argmin: 1,\n    average: 1,\n    count: 1,\n    distinct: 1,\n    product: 1,\n    max: 1,\n    mean: 1,\n    median: 1,\n    min: 1,\n    missing: 1,\n    q1: 1,\n    q3: 1,\n    ci0: 1,\n    ci1: 1,\n    stderr: 1,\n    stdev: 1,\n    stdevp: 1,\n    sum: 1,\n    valid: 1,\n    values: 1,\n    variance: 1,\n    variancep: 1\n};\nexport const MULTIDOMAIN_SORT_OP_INDEX = {\n    count: 1,\n    min: 1,\n    max: 1\n};\nexport function isArgminDef(a) {\n    return !!a && !!a['argmin'];\n}\nexport function isArgmaxDef(a) {\n    return !!a && !!a['argmax'];\n}\nexport const AGGREGATE_OPS = keys(AGGREGATE_OP_INDEX);\nexport function isAggregateOp(a) {\n    return isString(a) && !!AGGREGATE_OP_INDEX[a];\n}\nexport const COUNTING_OPS = ['count', 'valid', 'missing', 'distinct'];\nexport function isCountingAggregateOp(aggregate) {\n    return isString(aggregate) && contains(COUNTING_OPS, aggregate);\n}\nexport function isMinMaxOp(aggregate) {\n    return isString(aggregate) && contains(['min', 'max'], aggregate);\n}\n/** Additive-based aggregation operations. These can be applied to stack. */\nexport const SUM_OPS = ['count', 'sum', 'distinct', 'valid', 'missing'];\n/**\n * Aggregation operators that always produce values within the range [domainMin, domainMax].\n */\nexport const SHARED_DOMAIN_OPS = ['mean', 'average', 'median', 'q1', 'q3', 'min', 'max'];\nexport const SHARED_DOMAIN_OP_INDEX = toSet(SHARED_DOMAIN_OPS);\n//# sourceMappingURL=aggregate.js.map","/*\n * Constants and utilities for encoding channels (Visual variables)\n * such as 'x', 'y', 'color'.\n */\nimport { __rest } from \"tslib\";\nimport { keys } from './util';\n// Facet\nexport const ROW = 'row';\nexport const COLUMN = 'column';\nexport const FACET = 'facet';\n// Position\nexport const X = 'x';\nexport const Y = 'y';\nexport const X2 = 'x2';\nexport const Y2 = 'y2';\n// Arc-Position\nexport const RADIUS = 'radius';\nexport const RADIUS2 = 'radius2';\nexport const THETA = 'theta';\nexport const THETA2 = 'theta2';\n// Geo Position\nexport const LATITUDE = 'latitude';\nexport const LONGITUDE = 'longitude';\nexport const LATITUDE2 = 'latitude2';\nexport const LONGITUDE2 = 'longitude2';\n// Mark property with scale\nexport const COLOR = 'color';\nexport const FILL = 'fill';\nexport const STROKE = 'stroke';\nexport const SHAPE = 'shape';\nexport const SIZE = 'size';\nexport const ANGLE = 'angle';\nexport const OPACITY = 'opacity';\nexport const FILLOPACITY = 'fillOpacity';\nexport const STROKEOPACITY = 'strokeOpacity';\nexport const STROKEWIDTH = 'strokeWidth';\nexport const STROKEDASH = 'strokeDash';\n// Non-scale channel\nexport const TEXT = 'text';\nexport const ORDER = 'order';\nexport const DETAIL = 'detail';\nexport const KEY = 'key';\nexport const TOOLTIP = 'tooltip';\nexport const HREF = 'href';\nexport const URL = 'url';\nexport const DESCRIPTION = 'description';\nconst POSITION_CHANNEL_INDEX = {\n    x: 1,\n    y: 1,\n    x2: 1,\n    y2: 1\n};\nconst POLAR_POSITION_CHANNEL_INDEX = {\n    theta: 1,\n    theta2: 1,\n    radius: 1,\n    radius2: 1\n};\nexport function isPolarPositionChannel(c) {\n    return c in POLAR_POSITION_CHANNEL_INDEX;\n}\nconst GEO_POSIITON_CHANNEL_INDEX = {\n    longitude: 1,\n    longitude2: 1,\n    latitude: 1,\n    latitude2: 1\n};\nexport function getPositionChannelFromLatLong(channel) {\n    switch (channel) {\n        case LATITUDE:\n            return 'y';\n        case LATITUDE2:\n            return 'y2';\n        case LONGITUDE:\n            return 'x';\n        case LONGITUDE2:\n            return 'x2';\n    }\n}\nexport function isGeoPositionChannel(c) {\n    return c in GEO_POSIITON_CHANNEL_INDEX;\n}\nexport const GEOPOSITION_CHANNELS = keys(GEO_POSIITON_CHANNEL_INDEX);\nconst UNIT_CHANNEL_INDEX = Object.assign(Object.assign(Object.assign(Object.assign({}, POSITION_CHANNEL_INDEX), POLAR_POSITION_CHANNEL_INDEX), GEO_POSIITON_CHANNEL_INDEX), { \n    // color\n    color: 1, fill: 1, stroke: 1, \n    // other non-position with scale\n    opacity: 1, fillOpacity: 1, strokeOpacity: 1, strokeWidth: 1, strokeDash: 1, size: 1, angle: 1, shape: 1, \n    // channels without scales\n    order: 1, text: 1, detail: 1, key: 1, tooltip: 1, href: 1, url: 1, description: 1 });\nexport function isColorChannel(channel) {\n    return channel === COLOR || channel === FILL || channel === STROKE;\n}\nconst FACET_CHANNEL_INDEX = {\n    row: 1,\n    column: 1,\n    facet: 1\n};\nexport const FACET_CHANNELS = keys(FACET_CHANNEL_INDEX);\nconst CHANNEL_INDEX = Object.assign(Object.assign({}, UNIT_CHANNEL_INDEX), FACET_CHANNEL_INDEX);\nexport const CHANNELS = keys(CHANNEL_INDEX);\nconst { order: _o, detail: _d, tooltip: _tt1 } = CHANNEL_INDEX, SINGLE_DEF_CHANNEL_INDEX = __rest(CHANNEL_INDEX, [\"order\", \"detail\", \"tooltip\"]);\nconst { row: _r, column: _c, facet: _f } = SINGLE_DEF_CHANNEL_INDEX, SINGLE_DEF_UNIT_CHANNEL_INDEX = __rest(SINGLE_DEF_CHANNEL_INDEX, [\"row\", \"column\", \"facet\"]);\n/**\n * Channels that cannot have an array of channelDef.\n * model.fieldDef, getFieldDef only work for these channels.\n *\n * (The only two channels that can have an array of channelDefs are \"detail\" and \"order\".\n * Since there can be multiple fieldDefs for detail and order, getFieldDef/model.fieldDef\n * are not applicable for them. Similarly, selection projection won't work with \"detail\" and \"order\".)\n */\nexport const SINGLE_DEF_CHANNELS = keys(SINGLE_DEF_CHANNEL_INDEX);\nexport const SINGLE_DEF_UNIT_CHANNELS = keys(SINGLE_DEF_UNIT_CHANNEL_INDEX);\nexport function isSingleDefUnitChannel(str) {\n    return !!SINGLE_DEF_UNIT_CHANNEL_INDEX[str];\n}\nexport function isChannel(str) {\n    return !!CHANNEL_INDEX[str];\n}\nexport const SECONDARY_RANGE_CHANNEL = [X2, Y2, LATITUDE2, LONGITUDE2, THETA2, RADIUS2];\nexport function isSecondaryRangeChannel(c) {\n    const main = getMainRangeChannel(c);\n    return main !== c;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nexport function getMainRangeChannel(channel) {\n    switch (channel) {\n        case X2:\n            return X;\n        case Y2:\n            return Y;\n        case LATITUDE2:\n            return LATITUDE;\n        case LONGITUDE2:\n            return LONGITUDE;\n        case THETA2:\n            return THETA;\n        case RADIUS2:\n            return RADIUS;\n    }\n    return channel;\n}\nexport function getVgPositionChannel(channel) {\n    if (isPolarPositionChannel(channel)) {\n        switch (channel) {\n            case THETA:\n                return 'startAngle';\n            case THETA2:\n                return 'endAngle';\n            case RADIUS:\n                return 'outerRadius';\n            case RADIUS2:\n                return 'innerRadius';\n        }\n    }\n    return channel;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nexport function getSecondaryRangeChannel(channel) {\n    switch (channel) {\n        case X:\n            return X2;\n        case Y:\n            return Y2;\n        case LATITUDE:\n            return LATITUDE2;\n        case LONGITUDE:\n            return LONGITUDE2;\n        case THETA:\n            return THETA2;\n        case RADIUS:\n            return RADIUS2;\n    }\n    return undefined;\n}\nexport function getSizeChannel(channel) {\n    switch (channel) {\n        case X:\n        case X2:\n            return 'width';\n        case Y:\n        case Y2:\n            return 'height';\n    }\n    return undefined;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nexport function getOffsetChannel(channel) {\n    switch (channel) {\n        case X:\n            return 'xOffset';\n        case Y:\n            return 'yOffset';\n        case X2:\n            return 'x2Offset';\n        case Y2:\n            return 'y2Offset';\n        case THETA:\n            return 'thetaOffset';\n        case RADIUS:\n            return 'radiusOffset';\n        case THETA2:\n            return 'theta2Offset';\n        case RADIUS2:\n            return 'radius2Offset';\n    }\n    return undefined;\n}\n// CHANNELS without COLUMN, ROW\nexport const UNIT_CHANNELS = keys(UNIT_CHANNEL_INDEX);\n// NONPOSITION_CHANNELS = UNIT_CHANNELS without X, Y, X2, Y2;\nconst { x: _x, y: _y, \n// x2 and y2 share the same scale as x and y\nx2: _x2, y2: _y2, latitude: _latitude, longitude: _longitude, latitude2: _latitude2, longitude2: _longitude2, theta: _theta, theta2: _theta2, radius: _radius, radius2: _radius2 } = UNIT_CHANNEL_INDEX, \n// The rest of unit channels then have scale\nNONPOSITION_CHANNEL_INDEX = __rest(UNIT_CHANNEL_INDEX, [\"x\", \"y\", \"x2\", \"y2\", \"latitude\", \"longitude\", \"latitude2\", \"longitude2\", \"theta\", \"theta2\", \"radius\", \"radius2\"]);\nexport const NONPOSITION_CHANNELS = keys(NONPOSITION_CHANNEL_INDEX);\nexport const POSITION_SCALE_CHANNEL_INDEX = {\n    x: 1,\n    y: 1\n};\nexport const POSITION_SCALE_CHANNELS = keys(POSITION_SCALE_CHANNEL_INDEX);\nexport function isXorY(channel) {\n    return channel in POSITION_SCALE_CHANNEL_INDEX;\n}\nexport const POLAR_POSITION_SCALE_CHANNEL_INDEX = {\n    theta: 1,\n    radius: 1\n};\nexport const POLAR_POSITION_SCALE_CHANNELS = keys(POLAR_POSITION_SCALE_CHANNEL_INDEX);\nexport function getPositionScaleChannel(sizeType) {\n    return sizeType === 'width' ? X : Y;\n}\n// NON_POSITION_SCALE_CHANNEL = SCALE_CHANNELS without X, Y\nconst { \n// x2 and y2 share the same scale as x and y\n// text and tooltip have format instead of scale,\n// href has neither format, nor scale\ntext: _t, tooltip: _tt, href: _hr, url: _u, description: _al, \n// detail and order have no scale\ndetail: _dd, key: _k, order: _oo } = NONPOSITION_CHANNEL_INDEX, NONPOSITION_SCALE_CHANNEL_INDEX = __rest(NONPOSITION_CHANNEL_INDEX, [\"text\", \"tooltip\", \"href\", \"url\", \"description\", \"detail\", \"key\", \"order\"]);\nexport const NONPOSITION_SCALE_CHANNELS = keys(NONPOSITION_SCALE_CHANNEL_INDEX);\nexport function isNonPositionScaleChannel(channel) {\n    return !!NONPOSITION_CHANNEL_INDEX[channel];\n}\n/**\n * @returns whether Vega supports legends for a particular channel\n */\nexport function supportLegend(channel) {\n    switch (channel) {\n        case COLOR:\n        case FILL:\n        case STROKE:\n        case SIZE:\n        case SHAPE:\n        case OPACITY:\n        case STROKEWIDTH:\n        case STROKEDASH:\n            return true;\n        case FILLOPACITY:\n        case STROKEOPACITY:\n        case ANGLE:\n            return false;\n    }\n}\n// Declare SCALE_CHANNEL_INDEX\nconst SCALE_CHANNEL_INDEX = Object.assign(Object.assign(Object.assign({}, POSITION_SCALE_CHANNEL_INDEX), POLAR_POSITION_SCALE_CHANNEL_INDEX), NONPOSITION_SCALE_CHANNEL_INDEX);\n/** List of channels with scales */\nexport const SCALE_CHANNELS = keys(SCALE_CHANNEL_INDEX);\nexport function isScaleChannel(channel) {\n    return !!SCALE_CHANNEL_INDEX[channel];\n}\n/**\n * Return whether a channel supports a particular mark type.\n * @param channel  channel name\n * @param mark the mark type\n * @return whether the mark supports the channel\n */\nexport function supportMark(channel, mark) {\n    return getSupportedMark(channel)[mark];\n}\nconst ALL_MARKS = {\n    // all marks\n    arc: 'always',\n    area: 'always',\n    bar: 'always',\n    circle: 'always',\n    geoshape: 'always',\n    image: 'always',\n    line: 'always',\n    rule: 'always',\n    point: 'always',\n    rect: 'always',\n    square: 'always',\n    trail: 'always',\n    text: 'always',\n    tick: 'always'\n};\nconst { geoshape: _g } = ALL_MARKS, ALL_MARKS_EXCEPT_GEOSHAPE = __rest(ALL_MARKS, [\"geoshape\"]);\n/**\n * Return a dictionary showing whether a channel supports mark type.\n * @param channel\n * @return A dictionary mapping mark types to 'always', 'binned', or undefined\n */\nfunction getSupportedMark(channel) {\n    switch (channel) {\n        case COLOR:\n        case FILL:\n        case STROKE:\n        // falls through\n        case DESCRIPTION:\n        case DETAIL:\n        case KEY:\n        case TOOLTIP:\n        case HREF:\n        case ORDER: // TODO: revise (order might not support rect, which is not stackable?)\n        case OPACITY:\n        case FILLOPACITY:\n        case STROKEOPACITY:\n        case STROKEWIDTH:\n        // falls through\n        case FACET:\n        case ROW: // falls through\n        case COLUMN:\n            return ALL_MARKS;\n        case X:\n        case Y:\n        case LATITUDE:\n        case LONGITUDE:\n            // all marks except geoshape. geoshape does not use X, Y -- it uses a projection\n            return ALL_MARKS_EXCEPT_GEOSHAPE;\n        case X2:\n        case Y2:\n        case LATITUDE2:\n        case LONGITUDE2:\n            return {\n                area: 'always',\n                bar: 'always',\n                image: 'always',\n                rect: 'always',\n                rule: 'always',\n                circle: 'binned',\n                point: 'binned',\n                square: 'binned',\n                tick: 'binned',\n                line: 'binned',\n                trail: 'binned'\n            };\n        case SIZE:\n            return {\n                point: 'always',\n                tick: 'always',\n                rule: 'always',\n                circle: 'always',\n                square: 'always',\n                bar: 'always',\n                text: 'always',\n                line: 'always',\n                trail: 'always'\n            };\n        case STROKEDASH:\n            return {\n                line: 'always',\n                point: 'always',\n                tick: 'always',\n                rule: 'always',\n                circle: 'always',\n                square: 'always',\n                bar: 'always',\n                geoshape: 'always'\n            };\n        case SHAPE:\n            return { point: 'always', geoshape: 'always' };\n        case TEXT:\n            return { text: 'always' };\n        case ANGLE:\n            return { point: 'always', square: 'always', text: 'always' };\n        case URL:\n            return { image: 'always' };\n        case THETA:\n            return { text: 'always', arc: 'always' };\n        case RADIUS:\n            return { text: 'always', arc: 'always' };\n        case THETA2:\n        case RADIUS2:\n            return { arc: 'always' };\n    }\n}\nexport function rangeType(channel) {\n    switch (channel) {\n        case X:\n        case Y:\n        case THETA:\n        case RADIUS:\n        case SIZE:\n        case ANGLE:\n        case STROKEWIDTH:\n        case OPACITY:\n        case FILLOPACITY:\n        case STROKEOPACITY:\n        // X2 and Y2 use X and Y scales, so they similarly have continuous range. [falls through]\n        case X2:\n        case Y2:\n        case THETA2:\n        case RADIUS2:\n            return undefined;\n        case FACET:\n        case ROW:\n        case COLUMN:\n        case SHAPE:\n        case STROKEDASH:\n        // TEXT, TOOLTIP, URL, and HREF have no scale but have discrete output [falls through]\n        case TEXT:\n        case TOOLTIP:\n        case HREF:\n        case URL:\n        case DESCRIPTION:\n            return 'discrete';\n        // Color can be either continuous or discrete, depending on scale type.\n        case COLOR:\n        case FILL:\n        case STROKE:\n            return 'flexible';\n        // No scale, no range type.\n        case LATITUDE:\n        case LONGITUDE:\n        case LATITUDE2:\n        case LONGITUDE2:\n        case DETAIL:\n        case KEY:\n        case ORDER:\n            return undefined;\n    }\n}\n//# sourceMappingURL=channel.js.map","import { isBoolean, isObject } from 'vega-util';\nimport { COLOR, COLUMN, FILL, FILLOPACITY, OPACITY, ROW, SHAPE, SIZE, STROKE, STROKEDASH, STROKEOPACITY, STROKEWIDTH } from './channel';\nimport { normalizeBin } from './channeldef';\nimport { keys, varName } from './util';\n/**\n * Create a key for the bin configuration. Not for prebinned bin.\n */\nexport function binToString(bin) {\n    if (isBoolean(bin)) {\n        bin = normalizeBin(bin, undefined);\n    }\n    return ('bin' +\n        keys(bin)\n            .map(p => (isSelectionExtent(bin[p]) ? varName(`_${p}_${Object.entries(bin[p])}`) : varName(`_${p}_${bin[p]}`)))\n            .join(''));\n}\n/**\n * Vega-Lite should bin the data.\n */\nexport function isBinning(bin) {\n    return bin === true || (isBinParams(bin) && !bin.binned);\n}\n/**\n * The data is already binned and so Vega-Lite should not bin it again.\n */\nexport function isBinned(bin) {\n    return bin === 'binned' || (isBinParams(bin) && bin.binned === true);\n}\nexport function isBinParams(bin) {\n    return isObject(bin);\n}\nexport function isSelectionExtent(extent) {\n    return extent === null || extent === void 0 ? void 0 : extent['selection'];\n}\nexport function autoMaxBins(channel) {\n    switch (channel) {\n        case ROW:\n        case COLUMN:\n        case SIZE:\n        case COLOR:\n        case FILL:\n        case STROKE:\n        case STROKEWIDTH:\n        case OPACITY:\n        case FILLOPACITY:\n        case STROKEOPACITY:\n        // Facets and Size shouldn't have too many bins\n        // We choose 6 like shape to simplify the rule [falls through]\n        case SHAPE:\n            return 6; // Vega's \"shape\" has 6 distinct values\n        case STROKEDASH:\n            return 4; // We only provide 5 different stroke dash values (but 4 is more effective)\n        default:\n            return 10;\n    }\n}\n//# sourceMappingURL=bin.js.map","/**\n * Collection of all Vega-Lite Error Messages\n */\nimport { getSizeChannel } from '../channel';\nimport { stringify } from '../util';\nexport function invalidSpec(spec) {\n    return `Invalid specification ${JSON.stringify(spec)}. Make sure the specification includes at least one of the following properties: \"mark\", \"layer\", \"facet\", \"hconcat\", \"vconcat\", \"concat\", or \"repeat\".`;\n}\n// FIT\nexport const FIT_NON_SINGLE = 'Autosize \"fit\" only works for single views and layered views.';\nexport function containerSizeNonSingle(name) {\n    const uName = name == 'width' ? 'Width' : 'Height';\n    return `${uName} \"container\" only works for single views and layered views.`;\n}\nexport function containerSizeNotCompatibleWithAutosize(name) {\n    const uName = name == 'width' ? 'Width' : 'Height';\n    const fitDirection = name == 'width' ? 'x' : 'y';\n    return `${uName} \"container\" only works well with autosize \"fit\" or \"fit-${fitDirection}\".`;\n}\nexport function droppingFit(channel) {\n    return channel\n        ? `Dropping \"fit-${channel}\" because spec has discrete ${getSizeChannel(channel)}.`\n        : `Dropping \"fit\" because spec has discrete size.`;\n}\n// SELECTION\nexport function cannotProjectOnChannelWithoutField(channel) {\n    return `Cannot project a selection on encoding channel \"${channel}\", which has no field.`;\n}\nexport function cannotProjectAggregate(channel, aggregate) {\n    return `Cannot project a selection on encoding channel \"${channel}\" as it uses an aggregate function (\"${aggregate}\").`;\n}\nexport function nearestNotSupportForContinuous(mark) {\n    return `The \"nearest\" transform is not supported for ${mark} marks.`;\n}\nexport function selectionNotSupported(mark) {\n    return `Selection not supported for ${mark} yet.`;\n}\nexport function selectionNotFound(name) {\n    return `Cannot find a selection named \"${name}\".`;\n}\nexport const SCALE_BINDINGS_CONTINUOUS = 'Scale bindings are currently only supported for scales with unbinned, continuous domains.';\nexport const LEGEND_BINDINGS_PROJECT_LENGTH = 'Legend bindings are only supported for selections over an individual field or encoding channel.';\nexport function noSameUnitLookup(name) {\n    return (`Cannot define and lookup the \"${name}\" selection in the same view. ` +\n        `Try moving the lookup into a second, layered view?`);\n}\n// REPEAT\nexport function noSuchRepeatedValue(field) {\n    return `Unknown repeated value \"${field}\".`;\n}\nexport function columnsNotSupportByRowCol(type) {\n    return `The \"columns\" property cannot be used when \"${type}\" has nested row/column.`;\n}\n// CONCAT / REPEAT\nexport const CONCAT_CANNOT_SHARE_AXIS = 'Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415).';\n// DATA\nexport function unrecognizedParse(p) {\n    return `Unrecognized parse \"${p}\".`;\n}\nexport function differentParse(field, local, ancestor) {\n    return `An ancestor parsed field \"${field}\" as ${ancestor} but a child wants to parse the field as ${local}.`;\n}\n// TRANSFORMS\nexport function invalidTransformIgnored(transform) {\n    return `Ignoring an invalid transform: ${stringify(transform)}.`;\n}\nexport const NO_FIELDS_NEEDS_AS = 'If \"from.fields\" is not specified, \"as\" has to be a string that specifies the key to be used for the data from the secondary source.';\n// ENCODING & FACET\nexport function customFormatTypeNotAllowed(channel) {\n    return `Config.customFormatTypes is not true, thus custom format type and format for channel ${channel} are dropped.`;\n}\nexport function encodingOverridden(channels) {\n    return `Layer's shared ${channels.join(',')} channel ${channels.length === 1 ? 'is' : 'are'} overriden.`;\n}\nexport function projectionOverridden(opt) {\n    const { parentProjection, projection } = opt;\n    return `Layer's shared projection ${stringify(parentProjection)} is overridden by a child projection ${stringify(projection)}.`;\n}\nexport const REPLACE_ANGLE_WITH_THETA = 'Arc marks uses theta channel rather than angle, replacing angle with theta.';\nexport function primitiveChannelDef(channel, type, value) {\n    return `Channel ${channel} is a ${type}. Converted to {value: ${stringify(value)}}.`;\n}\nexport function invalidFieldType(type) {\n    return `Invalid field type \"${type}\".`;\n}\nexport function invalidFieldTypeForCountAggregate(type, aggregate) {\n    return `Invalid field type \"${type}\" for aggregate: \"${aggregate}\", using \"quantitative\" instead.`;\n}\nexport function invalidAggregate(aggregate) {\n    return `Invalid aggregation operator \"${aggregate}\".`;\n}\nexport function missingFieldType(channel, newType) {\n    return `Missing type for channel \"${channel}\", using \"${newType}\" instead.`;\n}\nexport function droppingColor(type, opt) {\n    const { fill, stroke } = opt;\n    return `Dropping color ${type} as the plot also has ${fill && stroke ? 'fill and stroke' : fill ? 'fill' : 'stroke'}.`;\n}\nexport function emptyFieldDef(fieldDef, channel) {\n    return `Dropping ${stringify(fieldDef)} from channel \"${channel}\" since it does not contain any data field, datum, value, or signal.`;\n}\nexport function latLongDeprecated(channel, type, newChannel) {\n    return `${channel}-encoding with type ${type} is deprecated. Replacing with ${newChannel}-encoding.`;\n}\nexport const LINE_WITH_VARYING_SIZE = 'Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.';\nexport function incompatibleChannel(channel, markOrFacet, when) {\n    return `${channel} dropped as it is incompatible with \"${markOrFacet}\"${when ? ` when ${when}` : ''}.`;\n}\nexport function invalidEncodingChannel(channel) {\n    return `${channel}-encoding is dropped as ${channel} is not a valid encoding channel.`;\n}\nexport function facetChannelShouldBeDiscrete(channel) {\n    return `${channel} encoding should be discrete (ordinal / nominal / binned).`;\n}\nexport function facetChannelDropped(channels) {\n    return `Facet encoding dropped as ${channels.join(' and ')} ${channels.length > 1 ? 'are' : 'is'} also specified.`;\n}\nexport function discreteChannelCannotEncode(channel, type) {\n    return `Using discrete channel \"${channel}\" to encode \"${type}\" field can be misleading as it does not encode ${type === 'ordinal' ? 'order' : 'magnitude'}.`;\n}\n// Mark\nexport function lineWithRange(hasX2, hasY2) {\n    const channels = hasX2 && hasY2 ? 'x2 and y2' : hasX2 ? 'x2' : 'y2';\n    return `Line mark is for continuous lines and thus cannot be used with ${channels}. We will use the rule mark (line segments) instead.`;\n}\nexport function orientOverridden(original, actual) {\n    return `Specified orient \"${original}\" overridden with \"${actual}\".`;\n}\n// SCALE\nexport const CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN = 'Custom domain scale cannot be unioned with default field-based domain.';\nexport const RANGE_STEP_DEPRECATED = `Scale's \"rangeStep\" is deprecated and will be removed in Vega-Lite 5.0. Please use \"width\"/\"height\": {\"step\": ...} instead. See https://vega.github.io/vega-lite/docs/size.html.`;\nexport function cannotUseScalePropertyWithNonColor(prop) {\n    return `Cannot use the scale property \"${prop}\" with non-color channel.`;\n}\nexport function unaggregateDomainHasNoEffectForRawField(fieldDef) {\n    return `Using unaggregated domain with raw field has no effect (${stringify(fieldDef)}).`;\n}\nexport function unaggregateDomainWithNonSharedDomainOp(aggregate) {\n    return `Unaggregated domain not applicable for \"${aggregate}\" since it produces values outside the origin domain of the source data.`;\n}\nexport function unaggregatedDomainWithLogScale(fieldDef) {\n    return `Unaggregated domain is currently unsupported for log scale (${stringify(fieldDef)}).`;\n}\nexport function cannotApplySizeToNonOrientedMark(mark) {\n    return `Cannot apply size to non-oriented mark \"${mark}\".`;\n}\nexport function scaleTypeNotWorkWithChannel(channel, scaleType, defaultScaleType) {\n    return `Channel \"${channel}\" does not work with \"${scaleType}\" scale. We are using \"${defaultScaleType}\" scale instead.`;\n}\nexport function scaleTypeNotWorkWithFieldDef(scaleType, defaultScaleType) {\n    return `FieldDef does not work with \"${scaleType}\" scale. We are using \"${defaultScaleType}\" scale instead.`;\n}\nexport function scalePropertyNotWorkWithScaleType(scaleType, propName, channel) {\n    return `${channel}-scale's \"${propName}\" is dropped as it does not work with ${scaleType} scale.`;\n}\nexport function scaleTypeNotWorkWithMark(mark, scaleType) {\n    return `Scale type \"${scaleType}\" does not work with mark \"${mark}\".`;\n}\nexport function stepDropped(channel) {\n    return `The step for \"${channel}\" is dropped because the ${channel === 'width' ? 'x' : 'y'} is continuous.`;\n}\nexport function mergeConflictingProperty(property, propertyOf, v1, v2) {\n    return `Conflicting ${propertyOf.toString()} property \"${property.toString()}\" (${stringify(v1)} and ${stringify(v2)}). Using ${stringify(v1)}.`;\n}\nexport function mergeConflictingDomainProperty(property, propertyOf, v1, v2) {\n    return `Conflicting ${propertyOf.toString()} property \"${property.toString()}\" (${stringify(v1)} and ${stringify(v2)}). Using the union of the two domains.`;\n}\nexport function independentScaleMeansIndependentGuide(channel) {\n    return `Setting the scale to be independent for \"${channel}\" means we also have to set the guide (axis or legend) to be independent.`;\n}\nexport function domainSortDropped(sort) {\n    return `Dropping sort property ${stringify(sort)} as unioned domains only support boolean or op \"count\", \"min\", and \"max\".`;\n}\nexport const MORE_THAN_ONE_SORT = 'Domains that should be unioned has conflicting sort properties. Sort will be set to true.';\nexport const FACETED_INDEPENDENT_DIFFERENT_SOURCES = 'Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect.';\nexport const FACETED_INDEPENDENT_SAME_FIELDS_DIFFERENT_SOURCES = 'Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect.';\nexport const FACETED_INDEPENDENT_SAME_SOURCE = 'Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.';\n// AXIS\nexport const INVALID_CHANNEL_FOR_AXIS = 'Invalid channel for axis.';\n// STACK\nexport function cannotStackRangedMark(channel) {\n    return `Cannot stack \"${channel}\" if there is already \"${channel}2\".`;\n}\nexport function cannotStackNonLinearScale(scaleType) {\n    return `Cannot stack non-linear scale (${scaleType}).`;\n}\nexport function stackNonSummativeAggregate(aggregate) {\n    return `Stacking is applied even though the aggregate function is non-summative (\"${aggregate}\").`;\n}\n// TIMEUNIT\nexport function invalidTimeUnit(unitName, value) {\n    return `Invalid ${unitName}: ${stringify(value)}.`;\n}\nexport function droppedDay(d) {\n    return `Dropping day from datetime ${stringify(d)} as day cannot be combined with other units.`;\n}\nexport function errorBarCenterAndExtentAreNotNeeded(center, extent) {\n    return `${extent ? 'extent ' : ''}${extent && center ? 'and ' : ''}${center ? 'center ' : ''}${extent && center ? 'are ' : 'is '}not needed when data are aggregated.`;\n}\nexport function errorBarCenterIsUsedWithWrongExtent(center, extent, mark) {\n    return `${center} is not usually used with ${extent} for ${mark}.`;\n}\nexport function errorBarContinuousAxisHasCustomizedAggregate(aggregate, compositeMark) {\n    return `Continuous axis should not have customized aggregation function ${aggregate}; ${compositeMark} already agregates the axis.`;\n}\nexport function errorBarCenterIsNotNeeded(extent, mark) {\n    return `Center is not needed to be specified in ${mark} when extent is ${extent}.`;\n}\nexport function errorBand1DNotSupport(property) {\n    return `1D error band does not support ${property}.`;\n}\n// CHANNEL\nexport function channelRequiredForBinned(channel) {\n    return `Channel ${channel} is required for \"binned\" bin.`;\n}\nexport function domainRequiredForThresholdScale(channel) {\n    return `Domain for ${channel} is required for threshold scale.`;\n}\n//# sourceMappingURL=message.js.map","/**\n * Vega-Lite's singleton logger utility.\n */\nimport { logger, Warn } from 'vega-util';\nimport * as message_1 from './message';\nexport { message_1 as message };\n/**\n * Main (default) Vega Logger instance for Vega-Lite.\n */\nconst main = logger(Warn);\nlet current = main;\n/**\n * Logger tool for checking if the code throws correct warning.\n */\nexport class LocalLogger {\n    constructor() {\n        this.warns = [];\n        this.infos = [];\n        this.debugs = [];\n    }\n    level() {\n        return this;\n    }\n    warn(...args) {\n        this.warns.push(...args);\n        return this;\n    }\n    info(...args) {\n        this.infos.push(...args);\n        return this;\n    }\n    debug(...args) {\n        this.debugs.push(...args);\n        return this;\n    }\n    error(...args) {\n        throw Error(...args);\n    }\n}\nexport function wrap(f) {\n    return () => {\n        current = new LocalLogger();\n        f(current);\n        reset();\n    };\n}\n/**\n * Set the singleton logger to be a custom logger.\n */\nexport function set(newLogger) {\n    current = newLogger;\n    return current;\n}\n/**\n * Reset the main logger to use the default Vega Logger.\n */\nexport function reset() {\n    current = main;\n    return current;\n}\nexport function warn(...args) {\n    current.warn(...args);\n}\nexport function info(...args) {\n    current.info(...args);\n}\nexport function debug(...args) {\n    current.debug(...args);\n}\n//# sourceMappingURL=index.js.map","// DateTime definition object\nimport { isNumber, isObject } from 'vega-util';\nimport * as log from './log';\nimport { TIMEUNIT_PARTS } from './timeunit';\nimport { duplicate, isNumeric, keys } from './util';\nexport function isDateTime(o) {\n    if (o && isObject(o)) {\n        for (const part of TIMEUNIT_PARTS) {\n            if (part in o) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\nexport const MONTHS = [\n    'january',\n    'february',\n    'march',\n    'april',\n    'may',\n    'june',\n    'july',\n    'august',\n    'september',\n    'october',\n    'november',\n    'december'\n];\nexport const SHORT_MONTHS = MONTHS.map(m => m.substr(0, 3));\nexport const DAYS = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nexport const SHORT_DAYS = DAYS.map(d => d.substr(0, 3));\nfunction normalizeQuarter(q) {\n    if (isNumeric(q)) {\n        q = +q;\n    }\n    if (isNumber(q)) {\n        if (q > 4) {\n            log.warn(log.message.invalidTimeUnit('quarter', q));\n        }\n        // We accept 1-based quarter, so need to readjust to 0-based quarter\n        return q - 1;\n    }\n    else {\n        // Invalid quarter\n        throw new Error(log.message.invalidTimeUnit('quarter', q));\n    }\n}\nfunction normalizeMonth(m) {\n    if (isNumeric(m)) {\n        m = +m;\n    }\n    if (isNumber(m)) {\n        // We accept 1-based month, so need to readjust to 0-based month\n        return m - 1;\n    }\n    else {\n        const lowerM = m.toLowerCase();\n        const monthIndex = MONTHS.indexOf(lowerM);\n        if (monthIndex !== -1) {\n            return monthIndex; // 0 for january, ...\n        }\n        const shortM = lowerM.substr(0, 3);\n        const shortMonthIndex = SHORT_MONTHS.indexOf(shortM);\n        if (shortMonthIndex !== -1) {\n            return shortMonthIndex;\n        }\n        // Invalid month\n        throw new Error(log.message.invalidTimeUnit('month', m));\n    }\n}\nfunction normalizeDay(d) {\n    if (isNumeric(d)) {\n        d = +d;\n    }\n    if (isNumber(d)) {\n        // mod so that this can be both 0-based where 0 = sunday\n        // and 1-based where 7=sunday\n        return d % 7;\n    }\n    else {\n        const lowerD = d.toLowerCase();\n        const dayIndex = DAYS.indexOf(lowerD);\n        if (dayIndex !== -1) {\n            return dayIndex; // 0 for january, ...\n        }\n        const shortD = lowerD.substr(0, 3);\n        const shortDayIndex = SHORT_DAYS.indexOf(shortD);\n        if (shortDayIndex !== -1) {\n            return shortDayIndex;\n        }\n        // Invalid day\n        throw new Error(log.message.invalidTimeUnit('day', d));\n    }\n}\n/**\n * @param d the date.\n * @param normalize whether to normalize quarter, month, day. This should probably be true if d is a DateTime.\n * @returns array of date time parts [year, month, day, hours, minutes, seconds, milliseconds]\n */\nfunction dateTimeParts(d, normalize) {\n    const parts = [];\n    if (normalize && d.day !== undefined) {\n        if (keys(d).length > 1) {\n            log.warn(log.message.droppedDay(d));\n            d = duplicate(d);\n            delete d.day;\n        }\n    }\n    if (d.year !== undefined) {\n        parts.push(d.year);\n    }\n    else {\n        // Just like Vega's timeunit transform, set default year to 2012, so domain conversion will be compatible with Vega\n        // Note: 2012 is a leap year (and so the date February 29 is respected) that begins on a Sunday (and so days of the week will order properly at the beginning of the year).\n        parts.push(2012);\n    }\n    if (d.month !== undefined) {\n        const month = normalize ? normalizeMonth(d.month) : d.month;\n        parts.push(month);\n    }\n    else if (d.quarter !== undefined) {\n        const quarter = normalize ? normalizeQuarter(d.quarter) : d.quarter;\n        parts.push(isNumber(quarter) ? quarter * 3 : quarter + '*3');\n    }\n    else {\n        parts.push(0); // months start at zero in JS\n    }\n    if (d.date !== undefined) {\n        parts.push(d.date);\n    }\n    else if (d.day !== undefined) {\n        // HACK: Day only works as a standalone unit\n        // This is only correct because we always set year to 2006 for day\n        const day = normalize ? normalizeDay(d.day) : d.day;\n        parts.push(isNumber(day) ? day + 1 : day + '+1');\n    }\n    else {\n        parts.push(1); // Date starts at 1 in JS\n    }\n    // Note: can't use TimeUnit enum here as importing it will create\n    // circular dependency problem!\n    for (const timeUnit of ['hours', 'minutes', 'seconds', 'milliseconds']) {\n        const unit = d[timeUnit];\n        parts.push(typeof unit === 'undefined' ? 0 : unit);\n    }\n    return parts;\n}\n/**\n * Return Vega expression for a date time.\n *\n * @param d the date time.\n * @returns the Vega expression.\n */\nexport function dateTimeToExpr(d) {\n    const parts = dateTimeParts(d, true);\n    const string = parts.join(', ');\n    if (d.utc) {\n        return `utc(${string})`;\n    }\n    else {\n        return `datetime(${string})`;\n    }\n}\n/**\n * Return Vega expression for a date time expression.\n *\n * @param d the internal date time object with expression.\n * @returns the Vega expression.\n */\nexport function dateTimeExprToExpr(d) {\n    const parts = dateTimeParts(d, false);\n    const string = parts.join(', ');\n    if (d.utc) {\n        return `utc(${string})`;\n    }\n    else {\n        return `datetime(${string})`;\n    }\n}\n/**\n * @param d the date time.\n * @returns the timestamp.\n */\nexport function dateTimeToTimestamp(d) {\n    const parts = dateTimeParts(d, true);\n    if (d.utc) {\n        return +new Date(Date.UTC(...parts));\n    }\n    else {\n        return +new Date(...parts);\n    }\n}\n//# sourceMappingURL=datetime.js.map","import { __rest } from \"tslib\";\nimport stringify from 'fast-json-stable-stringify';\nimport { isObject, isString } from 'vega-util';\nimport { dateTimeExprToExpr } from './datetime';\nimport { accessPathWithDatum, keys, varName } from './util';\n/** Time Unit that only corresponds to only one part of Date objects. */\nexport const LOCAL_SINGLE_TIMEUNIT_INDEX = {\n    year: 1,\n    quarter: 1,\n    month: 1,\n    week: 1,\n    day: 1,\n    dayofyear: 1,\n    date: 1,\n    hours: 1,\n    minutes: 1,\n    seconds: 1,\n    milliseconds: 1\n};\nexport const TIMEUNIT_PARTS = keys(LOCAL_SINGLE_TIMEUNIT_INDEX);\nexport function isLocalSingleTimeUnit(timeUnit) {\n    return !!LOCAL_SINGLE_TIMEUNIT_INDEX[timeUnit];\n}\nexport const UTC_SINGLE_TIMEUNIT_INDEX = {\n    utcyear: 1,\n    utcquarter: 1,\n    utcmonth: 1,\n    utcweek: 1,\n    utcday: 1,\n    utcdayofyear: 1,\n    utcdate: 1,\n    utchours: 1,\n    utcminutes: 1,\n    utcseconds: 1,\n    utcmilliseconds: 1\n};\nexport const LOCAL_MULTI_TIMEUNIT_INDEX = {\n    yearquarter: 1,\n    yearquartermonth: 1,\n    yearmonth: 1,\n    yearmonthdate: 1,\n    yearmonthdatehours: 1,\n    yearmonthdatehoursminutes: 1,\n    yearmonthdatehoursminutesseconds: 1,\n    yearweek: 1,\n    yearweekday: 1,\n    yearweekdayhours: 1,\n    yearweekdayhoursminutes: 1,\n    yearweekdayhoursminutesseconds: 1,\n    yeardayofyear: 1,\n    quartermonth: 1,\n    monthdate: 1,\n    monthdatehours: 1,\n    monthdatehoursminutes: 1,\n    monthdatehoursminutesseconds: 1,\n    weekday: 1,\n    weeksdayhours: 1,\n    weekdayhoursminutes: 1,\n    weekdayhoursminutesseconds: 1,\n    dayhours: 1,\n    dayhoursminutes: 1,\n    dayhoursminutesseconds: 1,\n    hoursminutes: 1,\n    hoursminutesseconds: 1,\n    minutesseconds: 1,\n    secondsmilliseconds: 1\n};\nexport const UTC_MULTI_TIMEUNIT_INDEX = {\n    utcyearquarter: 1,\n    utcyearquartermonth: 1,\n    utcyearmonth: 1,\n    utcyearmonthdate: 1,\n    utcyearmonthdatehours: 1,\n    utcyearmonthdatehoursminutes: 1,\n    utcyearmonthdatehoursminutesseconds: 1,\n    utcyearweek: 1,\n    utcyearweekday: 1,\n    utcyearweekdayhours: 1,\n    utcyearweekdayhoursminutes: 1,\n    utcyearweekdayhoursminutesseconds: 1,\n    utcyeardayofyear: 1,\n    utcquartermonth: 1,\n    utcmonthdate: 1,\n    utcmonthdatehours: 1,\n    utcmonthdatehoursminutes: 1,\n    utcmonthdatehoursminutesseconds: 1,\n    utcweekday: 1,\n    utcweeksdayhours: 1,\n    utcweekdayhoursminutes: 1,\n    utcweekdayhoursminutesseconds: 1,\n    utcdayhours: 1,\n    utcdayhoursminutes: 1,\n    utcdayhoursminutesseconds: 1,\n    utchoursminutes: 1,\n    utchoursminutesseconds: 1,\n    utcminutesseconds: 1,\n    utcsecondsmilliseconds: 1\n};\nexport function isUTCTimeUnit(t) {\n    return t.startsWith('utc');\n}\nexport function getLocalTimeUnit(t) {\n    return t.substr(3);\n}\n// In order of increasing specificity\nexport const VEGALITE_TIMEFORMAT = {\n    'year-month': '%b %Y ',\n    'year-month-date': '%b %d, %Y '\n};\nexport function getTimeUnitParts(timeUnit) {\n    const parts = [];\n    for (const part of TIMEUNIT_PARTS) {\n        if (containsTimeUnit(timeUnit, part)) {\n            parts.push(part);\n        }\n    }\n    return parts;\n}\n/** Returns true if fullTimeUnit contains the timeUnit, false otherwise. */\nexport function containsTimeUnit(fullTimeUnit, timeUnit) {\n    const index = fullTimeUnit.indexOf(timeUnit);\n    if (index < 0) {\n        return false;\n    }\n    // exclude milliseconds\n    if (index > 0 && timeUnit === 'seconds' && fullTimeUnit.charAt(index - 1) === 'i') {\n        return false;\n    }\n    // exclude dayofyear\n    if (fullTimeUnit.length > index + 3 && timeUnit === 'day' && fullTimeUnit.charAt(index + 3) === 'o') {\n        return false;\n    }\n    if (index > 0 && timeUnit === 'year' && fullTimeUnit.charAt(index - 1) === 'f') {\n        return false;\n    }\n    return true;\n}\n/**\n * Returns Vega expression for a given timeUnit and fieldRef\n */\nexport function fieldExpr(fullTimeUnit, field, { end } = { end: false }) {\n    const fieldRef = accessPathWithDatum(field);\n    const utc = isUTCTimeUnit(fullTimeUnit) ? 'utc' : '';\n    function func(timeUnit) {\n        if (timeUnit === 'quarter') {\n            // quarter starting at 0 (0,3,6,9).\n            return `(${utc}quarter(${fieldRef})-1)`;\n        }\n        else {\n            return `${utc}${timeUnit}(${fieldRef})`;\n        }\n    }\n    let lastTimeUnit;\n    const dateExpr = {};\n    for (const part of TIMEUNIT_PARTS) {\n        if (containsTimeUnit(fullTimeUnit, part)) {\n            dateExpr[part] = func(part);\n            lastTimeUnit = part;\n        }\n    }\n    if (end) {\n        dateExpr[lastTimeUnit] += '+1';\n    }\n    return dateTimeExprToExpr(dateExpr);\n}\nexport function timeUnitSpecifierExpression(timeUnit) {\n    if (!timeUnit) {\n        return undefined;\n    }\n    const timeUnitParts = getTimeUnitParts(timeUnit);\n    return `timeUnitSpecifier(${stringify(timeUnitParts)}, ${stringify(VEGALITE_TIMEFORMAT)})`;\n}\n/**\n * Returns the signal expression used for axis labels for a time unit.\n */\nexport function formatExpression(timeUnit, field, isUTCScale) {\n    if (!timeUnit) {\n        return undefined;\n    }\n    const expr = timeUnitSpecifierExpression(timeUnit);\n    // We only use utcFormat for utc scale\n    // For utc time units, the data is already converted as a part of timeUnit transform.\n    // Thus, utc time units should use timeFormat to avoid shifting the time twice.\n    const utc = isUTCScale || isUTCTimeUnit(timeUnit);\n    return `${utc ? 'utc' : 'time'}Format(${field}, ${expr})`;\n}\nexport function normalizeTimeUnit(timeUnit) {\n    if (!timeUnit) {\n        return undefined;\n    }\n    let params;\n    if (isString(timeUnit)) {\n        params = {\n            unit: timeUnit\n        };\n    }\n    else if (isObject(timeUnit)) {\n        params = Object.assign(Object.assign({}, timeUnit), (timeUnit.unit ? { unit: timeUnit.unit } : {}));\n    }\n    if (isUTCTimeUnit(params.unit)) {\n        params.utc = true;\n        params.unit = getLocalTimeUnit(params.unit);\n    }\n    return params;\n}\nexport function timeUnitToString(tu) {\n    const _a = normalizeTimeUnit(tu), { utc } = _a, rest = __rest(_a, [\"utc\"]);\n    if (rest.unit) {\n        return ((utc ? 'utc' : '') +\n            keys(rest)\n                .map(p => varName(`${p === 'unit' ? '' : `_${p}_`}${rest[p]}`))\n                .join(''));\n    }\n    else {\n        // when maxbins is specified instead of units\n        return ((utc ? 'utc' : '') +\n            'timeunit' +\n            keys(rest)\n                .map(p => varName(`_${p}_${rest[p]}`))\n                .join(''));\n    }\n}\n//# sourceMappingURL=timeunit.js.map","import { isArray } from 'vega-util';\nimport { keys } from './util';\nexport function isSignalRef(o) {\n    return o && !!o['signal'];\n}\nexport function isVgRangeStep(range) {\n    return !!range['step'];\n}\nexport function isDataRefUnionedDomain(domain) {\n    if (!isArray(domain)) {\n        return 'fields' in domain && !('data' in domain);\n    }\n    return false;\n}\nexport function isFieldRefUnionDomain(domain) {\n    if (!isArray(domain)) {\n        return 'fields' in domain && 'data' in domain;\n    }\n    return false;\n}\nexport function isDataRefDomain(domain) {\n    if (!isArray(domain)) {\n        return 'field' in domain && 'data' in domain;\n    }\n    return false;\n}\nconst VG_MARK_CONFIG_INDEX = {\n    aria: 1,\n    description: 1,\n    ariaRole: 1,\n    ariaRoleDescription: 1,\n    blend: 1,\n    opacity: 1,\n    fill: 1,\n    fillOpacity: 1,\n    stroke: 1,\n    strokeCap: 1,\n    strokeWidth: 1,\n    strokeOpacity: 1,\n    strokeDash: 1,\n    strokeDashOffset: 1,\n    strokeJoin: 1,\n    strokeOffset: 1,\n    strokeMiterLimit: 1,\n    startAngle: 1,\n    endAngle: 1,\n    padAngle: 1,\n    innerRadius: 1,\n    outerRadius: 1,\n    size: 1,\n    shape: 1,\n    interpolate: 1,\n    tension: 1,\n    orient: 1,\n    align: 1,\n    baseline: 1,\n    text: 1,\n    dir: 1,\n    dx: 1,\n    dy: 1,\n    ellipsis: 1,\n    limit: 1,\n    radius: 1,\n    theta: 1,\n    angle: 1,\n    font: 1,\n    fontSize: 1,\n    fontWeight: 1,\n    fontStyle: 1,\n    lineBreak: 1,\n    lineHeight: 1,\n    cursor: 1,\n    href: 1,\n    tooltip: 1,\n    cornerRadius: 1,\n    cornerRadiusTopLeft: 1,\n    cornerRadiusTopRight: 1,\n    cornerRadiusBottomLeft: 1,\n    cornerRadiusBottomRight: 1,\n    aspect: 1,\n    width: 1,\n    height: 1\n    // commented below are vg channel that do not have mark config.\n    // x: 1,\n    // y: 1,\n    // x2: 1,\n    // y2: 1,\n    // xc'|'yc'\n    // clip: 1,\n    // path: 1,\n    // url: 1,\n};\nexport const VG_MARK_CONFIGS = keys(VG_MARK_CONFIG_INDEX);\nexport const VG_MARK_INDEX = {\n    arc: 1,\n    area: 1,\n    group: 1,\n    image: 1,\n    line: 1,\n    path: 1,\n    rect: 1,\n    rule: 1,\n    shape: 1,\n    symbol: 1,\n    text: 1,\n    trail: 1\n};\n// Vega's cornerRadius channels.\nexport const VG_CORNERRADIUS_CHANNELS = [\n    'cornerRadius',\n    'cornerRadiusTopLeft',\n    'cornerRadiusTopRight',\n    'cornerRadiusBottomLeft',\n    'cornerRadiusBottomRight'\n];\n//# sourceMappingURL=vega.schema.js.map","import { isArray } from 'vega-util';\nimport { valueExpr, vgField } from './channeldef';\nimport { fieldExpr as timeUnitFieldExpr, normalizeTimeUnit } from './timeunit';\nimport { isSignalRef } from './vega.schema';\nexport function isSelectionPredicate(predicate) {\n    return predicate === null || predicate === void 0 ? void 0 : predicate['selection'];\n}\nexport function isFieldEqualPredicate(predicate) {\n    return predicate && !!predicate.field && predicate.equal !== undefined;\n}\nexport function isFieldLTPredicate(predicate) {\n    return predicate && !!predicate.field && predicate.lt !== undefined;\n}\nexport function isFieldLTEPredicate(predicate) {\n    return predicate && !!predicate.field && predicate.lte !== undefined;\n}\nexport function isFieldGTPredicate(predicate) {\n    return predicate && !!predicate.field && predicate.gt !== undefined;\n}\nexport function isFieldGTEPredicate(predicate) {\n    return predicate && !!predicate.field && predicate.gte !== undefined;\n}\nexport function isFieldRangePredicate(predicate) {\n    if (predicate && predicate.field) {\n        if (isArray(predicate.range) && predicate.range.length === 2) {\n            return true;\n        }\n        else if (isSignalRef(predicate.range)) {\n            return true;\n        }\n    }\n    return false;\n}\nexport function isFieldOneOfPredicate(predicate) {\n    return (predicate && !!predicate.field && (isArray(predicate.oneOf) || isArray(predicate.in)) // backward compatibility\n    );\n}\nexport function isFieldValidPredicate(predicate) {\n    return predicate && !!predicate.field && predicate.valid !== undefined;\n}\nexport function isFieldPredicate(predicate) {\n    return (isFieldOneOfPredicate(predicate) ||\n        isFieldEqualPredicate(predicate) ||\n        isFieldRangePredicate(predicate) ||\n        isFieldLTPredicate(predicate) ||\n        isFieldGTPredicate(predicate) ||\n        isFieldLTEPredicate(predicate) ||\n        isFieldGTEPredicate(predicate));\n}\nfunction predicateValueExpr(v, timeUnit) {\n    return valueExpr(v, { timeUnit, wrapTime: true });\n}\nfunction predicateValuesExpr(vals, timeUnit) {\n    return vals.map(v => predicateValueExpr(v, timeUnit));\n}\n// This method is used by Voyager. Do not change its behavior without changing Voyager.\nexport function fieldFilterExpression(predicate, useInRange = true) {\n    var _a;\n    const { field } = predicate;\n    const timeUnit = (_a = normalizeTimeUnit(predicate.timeUnit)) === null || _a === void 0 ? void 0 : _a.unit;\n    const fieldExpr = timeUnit\n        ? // For timeUnit, cast into integer with time() so we can use ===, inrange, indexOf to compare values directly.\n            // TODO: We calculate timeUnit on the fly here. Consider if we would like to consolidate this with timeUnit pipeline\n            // TODO: support utc\n            'time(' + timeUnitFieldExpr(timeUnit, field) + ')'\n        : vgField(predicate, { expr: 'datum' });\n    if (isFieldEqualPredicate(predicate)) {\n        return fieldExpr + '===' + predicateValueExpr(predicate.equal, timeUnit);\n    }\n    else if (isFieldLTPredicate(predicate)) {\n        const upper = predicate.lt;\n        return `${fieldExpr}<${predicateValueExpr(upper, timeUnit)}`;\n    }\n    else if (isFieldGTPredicate(predicate)) {\n        const lower = predicate.gt;\n        return `${fieldExpr}>${predicateValueExpr(lower, timeUnit)}`;\n    }\n    else if (isFieldLTEPredicate(predicate)) {\n        const upper = predicate.lte;\n        return `${fieldExpr}<=${predicateValueExpr(upper, timeUnit)}`;\n    }\n    else if (isFieldGTEPredicate(predicate)) {\n        const lower = predicate.gte;\n        return `${fieldExpr}>=${predicateValueExpr(lower, timeUnit)}`;\n    }\n    else if (isFieldOneOfPredicate(predicate)) {\n        return `indexof([${predicateValuesExpr(predicate.oneOf, timeUnit).join(',')}], ${fieldExpr}) !== -1`;\n    }\n    else if (isFieldValidPredicate(predicate)) {\n        return fieldValidPredicate(fieldExpr, predicate.valid);\n    }\n    else if (isFieldRangePredicate(predicate)) {\n        const { range } = predicate;\n        const lower = isSignalRef(range) ? { signal: `${range.signal}[0]` } : range[0];\n        const upper = isSignalRef(range) ? { signal: `${range.signal}[1]` } : range[1];\n        if (lower !== null && upper !== null && useInRange) {\n            return ('inrange(' +\n                fieldExpr +\n                ', [' +\n                predicateValueExpr(lower, timeUnit) +\n                ', ' +\n                predicateValueExpr(upper, timeUnit) +\n                '])');\n        }\n        const exprs = [];\n        if (lower !== null) {\n            exprs.push(`${fieldExpr} >= ${predicateValueExpr(lower, timeUnit)}`);\n        }\n        if (upper !== null) {\n            exprs.push(`${fieldExpr} <= ${predicateValueExpr(upper, timeUnit)}`);\n        }\n        return exprs.length > 0 ? exprs.join(' && ') : 'true';\n    }\n    /* istanbul ignore next: it should never reach here */\n    throw new Error(`Invalid field predicate: ${JSON.stringify(predicate)}`);\n}\nexport function fieldValidPredicate(fieldExpr, valid = true) {\n    if (valid) {\n        return `isValid(${fieldExpr}) && isFinite(+${fieldExpr})`;\n    }\n    else {\n        return `!isValid(${fieldExpr}) || !isFinite(+${fieldExpr})`;\n    }\n}\nexport function normalizePredicate(f) {\n    var _a;\n    if (isFieldPredicate(f) && f.timeUnit) {\n        return Object.assign(Object.assign({}, f), { timeUnit: (_a = normalizeTimeUnit(f.timeUnit)) === null || _a === void 0 ? void 0 : _a.unit });\n    }\n    return f;\n}\n//# sourceMappingURL=predicate.js.map","import { keys } from './util';\n/**\n * Data type based on level of measurement\n */\nexport const Type = {\n    quantitative: 'quantitative',\n    ordinal: 'ordinal',\n    temporal: 'temporal',\n    nominal: 'nominal',\n    geojson: 'geojson'\n};\nexport function isType(t) {\n    return t in Type;\n}\nexport const QUANTITATIVE = Type.quantitative;\nexport const ORDINAL = Type.ordinal;\nexport const TEMPORAL = Type.temporal;\nexport const NOMINAL = Type.nominal;\nexport const GEOJSON = Type.geojson;\nexport const TYPES = keys(Type);\n/**\n * Get full, lowercase type name for a given type.\n * @param  type\n * @return Full type name.\n */\nexport function getFullName(type) {\n    if (type) {\n        type = type.toLowerCase();\n        switch (type) {\n            case 'q':\n            case QUANTITATIVE:\n                return 'quantitative';\n            case 't':\n            case TEMPORAL:\n                return 'temporal';\n            case 'o':\n            case ORDINAL:\n                return 'ordinal';\n            case 'n':\n            case NOMINAL:\n                return 'nominal';\n            case GEOJSON:\n                return 'geojson';\n        }\n    }\n    // If we get invalid input, return undefined type.\n    return undefined;\n}\n//# sourceMappingURL=type.js.map","import { __rest } from \"tslib\";\nimport { isString, toSet } from 'vega-util';\nimport * as CHANNEL from './channel';\nimport { CHANNELS, isColorChannel } from './channel';\nimport * as log from './log';\nimport { TYPES, ORDINAL, NOMINAL, TEMPORAL, QUANTITATIVE } from './type';\nimport { contains, keys } from './util';\nexport const ScaleType = {\n    // Continuous - Quantitative\n    LINEAR: 'linear',\n    LOG: 'log',\n    POW: 'pow',\n    SQRT: 'sqrt',\n    SYMLOG: 'symlog',\n    IDENTITY: 'identity',\n    SEQUENTIAL: 'sequential',\n    // Continuous - Time\n    TIME: 'time',\n    UTC: 'utc',\n    // Discretizing scales\n    QUANTILE: 'quantile',\n    QUANTIZE: 'quantize',\n    THRESHOLD: 'threshold',\n    BIN_ORDINAL: 'bin-ordinal',\n    // Discrete scales\n    ORDINAL: 'ordinal',\n    POINT: 'point',\n    BAND: 'band'\n};\n/**\n * Index for scale categories -- only scale of the same categories can be merged together.\n * Current implementation is trying to be conservative and avoid merging scale type that might not work together\n */\nconst SCALE_CATEGORY_INDEX = {\n    linear: 'numeric',\n    log: 'numeric',\n    pow: 'numeric',\n    sqrt: 'numeric',\n    symlog: 'numeric',\n    identity: 'numeric',\n    sequential: 'numeric',\n    time: 'time',\n    utc: 'time',\n    ordinal: 'ordinal',\n    'bin-ordinal': 'bin-ordinal',\n    point: 'ordinal-position',\n    band: 'ordinal-position',\n    quantile: 'discretizing',\n    quantize: 'discretizing',\n    threshold: 'discretizing'\n};\nexport const SCALE_TYPES = keys(SCALE_CATEGORY_INDEX);\n/**\n * Whether the two given scale types can be merged together.\n */\nexport function scaleCompatible(scaleType1, scaleType2) {\n    const scaleCategory1 = SCALE_CATEGORY_INDEX[scaleType1];\n    const scaleCategory2 = SCALE_CATEGORY_INDEX[scaleType2];\n    return (scaleCategory1 === scaleCategory2 ||\n        (scaleCategory1 === 'ordinal-position' && scaleCategory2 === 'time') ||\n        (scaleCategory2 === 'ordinal-position' && scaleCategory1 === 'time'));\n}\n/**\n * Index for scale precedence -- high score = higher priority for merging.\n */\nconst SCALE_PRECEDENCE_INDEX = {\n    // numeric\n    linear: 0,\n    log: 1,\n    pow: 1,\n    sqrt: 1,\n    symlog: 1,\n    identity: 1,\n    sequential: 1,\n    // time\n    time: 0,\n    utc: 0,\n    // ordinal-position -- these have higher precedence than continuous scales as they support more types of data\n    point: 10,\n    band: 11,\n    // non grouped types\n    ordinal: 0,\n    'bin-ordinal': 0,\n    quantile: 0,\n    quantize: 0,\n    threshold: 0\n};\n/**\n * Return scale categories -- only scale of the same categories can be merged together.\n */\nexport function scaleTypePrecedence(scaleType) {\n    return SCALE_PRECEDENCE_INDEX[scaleType];\n}\nexport const CONTINUOUS_TO_CONTINUOUS_SCALES = ['linear', 'log', 'pow', 'sqrt', 'symlog', 'time', 'utc'];\nconst CONTINUOUS_TO_CONTINUOUS_INDEX = toSet(CONTINUOUS_TO_CONTINUOUS_SCALES);\nexport const QUANTITATIVE_SCALES = ['linear', 'log', 'pow', 'sqrt', 'symlog'];\nconst QUANTITATIVE_SCALES_INDEX = toSet(QUANTITATIVE_SCALES);\nexport function isQuantitative(type) {\n    return type in QUANTITATIVE_SCALES_INDEX;\n}\nexport const CONTINUOUS_TO_DISCRETE_SCALES = ['quantile', 'quantize', 'threshold'];\nconst CONTINUOUS_TO_DISCRETE_INDEX = toSet(CONTINUOUS_TO_DISCRETE_SCALES);\nexport const CONTINUOUS_DOMAIN_SCALES = CONTINUOUS_TO_CONTINUOUS_SCALES.concat([\n    'quantile',\n    'quantize',\n    'threshold',\n    'sequential',\n    'identity'\n]);\nconst CONTINUOUS_DOMAIN_INDEX = toSet(CONTINUOUS_DOMAIN_SCALES);\nexport const DISCRETE_DOMAIN_SCALES = ['ordinal', 'bin-ordinal', 'point', 'band'];\nconst DISCRETE_DOMAIN_INDEX = toSet(DISCRETE_DOMAIN_SCALES);\nexport const TIME_SCALE_TYPES = ['time', 'utc'];\nexport function hasDiscreteDomain(type) {\n    return type in DISCRETE_DOMAIN_INDEX;\n}\nexport function hasContinuousDomain(type) {\n    return type in CONTINUOUS_DOMAIN_INDEX;\n}\nexport function isContinuousToContinuous(type) {\n    return type in CONTINUOUS_TO_CONTINUOUS_INDEX;\n}\nexport function isContinuousToDiscrete(type) {\n    return type in CONTINUOUS_TO_DISCRETE_INDEX;\n}\nexport const defaultScaleConfig = {\n    pointPadding: 0.5,\n    barBandPaddingInner: 0.1,\n    rectBandPaddingInner: 0,\n    minBandSize: 2,\n    minFontSize: 8,\n    maxFontSize: 40,\n    minOpacity: 0.3,\n    maxOpacity: 0.8,\n    // FIXME: revise if these *can* become ratios of width/height step\n    minSize: 9,\n    minStrokeWidth: 1,\n    maxStrokeWidth: 4,\n    quantileCount: 4,\n    quantizeCount: 4\n};\nexport function isExtendedScheme(scheme) {\n    return !isString(scheme) && !!scheme['name'];\n}\nexport function isSelectionDomain(domain) {\n    return domain === null || domain === void 0 ? void 0 : domain['selection'];\n}\nexport function isDomainUnionWith(domain) {\n    return domain && domain['unionWith'];\n}\nconst SCALE_PROPERTY_INDEX = {\n    type: 1,\n    domain: 1,\n    domainMid: 1,\n    align: 1,\n    range: 1,\n    scheme: 1,\n    bins: 1,\n    // Other properties\n    reverse: 1,\n    round: 1,\n    // quantitative / time\n    clamp: 1,\n    nice: 1,\n    // quantitative\n    base: 1,\n    exponent: 1,\n    constant: 1,\n    interpolate: 1,\n    zero: 1,\n    // band/point\n    padding: 1,\n    paddingInner: 1,\n    paddingOuter: 1\n};\nexport const SCALE_PROPERTIES = keys(SCALE_PROPERTY_INDEX);\nconst { type, domain, range, scheme } = SCALE_PROPERTY_INDEX, NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX = __rest(SCALE_PROPERTY_INDEX, [\"type\", \"domain\", \"range\", \"scheme\"]);\nexport const NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES = keys(NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX);\nexport const SCALE_TYPE_INDEX = generateScaleTypeIndex();\nexport function scaleTypeSupportProperty(scaleType, propName) {\n    switch (propName) {\n        case 'type':\n        case 'domain':\n        case 'reverse':\n        case 'range':\n            return true;\n        case 'scheme':\n        case 'interpolate':\n            return !contains(['point', 'band', 'identity'], scaleType);\n        case 'bins':\n            return !contains(['point', 'band', 'identity', 'ordinal'], scaleType);\n        case 'round':\n            return isContinuousToContinuous(scaleType) || scaleType === 'band' || scaleType === 'point';\n        case 'padding':\n            return isContinuousToContinuous(scaleType) || contains(['point', 'band'], scaleType);\n        case 'paddingOuter':\n        case 'align':\n            return contains(['point', 'band'], scaleType);\n        case 'paddingInner':\n            return scaleType === 'band';\n        case 'domainMid':\n        case 'clamp':\n            return isContinuousToContinuous(scaleType);\n        case 'nice':\n            return isContinuousToContinuous(scaleType) || scaleType === 'quantize' || scaleType === 'threshold';\n        case 'exponent':\n            return scaleType === 'pow';\n        case 'base':\n            return scaleType === 'log';\n        case 'constant':\n            return scaleType === 'symlog';\n        case 'zero':\n            return (hasContinuousDomain(scaleType) &&\n                !contains([\n                    'log',\n                    'time',\n                    'utc',\n                    'threshold',\n                    'quantile' // quantile depends on distribution so zero does not matter\n                ], scaleType));\n    }\n}\n/**\n * Returns undefined if the input channel supports the input scale property name\n */\nexport function channelScalePropertyIncompatability(channel, propName) {\n    switch (propName) {\n        case 'interpolate':\n        case 'scheme':\n        case 'domainMid':\n            if (!isColorChannel(channel)) {\n                return log.message.cannotUseScalePropertyWithNonColor(channel);\n            }\n            return undefined;\n        case 'align':\n        case 'type':\n        case 'bins':\n        case 'domain':\n        case 'range':\n        case 'base':\n        case 'exponent':\n        case 'constant':\n        case 'nice':\n        case 'padding':\n        case 'paddingInner':\n        case 'paddingOuter':\n        case 'reverse':\n        case 'round':\n        case 'clamp':\n        case 'zero':\n            return undefined; // GOOD!\n    }\n}\nexport function scaleTypeSupportDataType(specifiedType, fieldDefType) {\n    if (contains([ORDINAL, NOMINAL], fieldDefType)) {\n        return specifiedType === undefined || hasDiscreteDomain(specifiedType);\n    }\n    else if (fieldDefType === TEMPORAL) {\n        return contains([ScaleType.TIME, ScaleType.UTC, undefined], specifiedType);\n    }\n    else if (fieldDefType === QUANTITATIVE) {\n        return contains([\n            ScaleType.LOG,\n            ScaleType.POW,\n            ScaleType.SQRT,\n            ScaleType.SYMLOG,\n            ScaleType.QUANTILE,\n            ScaleType.QUANTIZE,\n            ScaleType.THRESHOLD,\n            ScaleType.LINEAR,\n            undefined\n        ], specifiedType);\n    }\n    return true;\n}\nexport function channelSupportScaleType(channel, scaleType) {\n    if (!CHANNEL.isScaleChannel(channel)) {\n        return false;\n    }\n    switch (channel) {\n        case CHANNEL.X:\n        case CHANNEL.Y:\n        case CHANNEL.THETA:\n        case CHANNEL.RADIUS:\n            return isContinuousToContinuous(scaleType) || contains(['band', 'point'], scaleType);\n        case CHANNEL.SIZE: // TODO: size and opacity can support ordinal with more modification\n        case CHANNEL.STROKEWIDTH:\n        case CHANNEL.OPACITY:\n        case CHANNEL.FILLOPACITY:\n        case CHANNEL.STROKEOPACITY:\n        case CHANNEL.ANGLE:\n            // Although it generally doesn't make sense to use band with size and opacity,\n            // it can also work since we use band: 0.5 to get midpoint.\n            return (isContinuousToContinuous(scaleType) ||\n                isContinuousToDiscrete(scaleType) ||\n                contains(['band', 'point', 'ordinal'], scaleType));\n        case CHANNEL.COLOR:\n        case CHANNEL.FILL:\n        case CHANNEL.STROKE:\n            return scaleType !== 'band'; // band does not make sense with color\n        case CHANNEL.STROKEDASH:\n            return scaleType === 'ordinal' || isContinuousToDiscrete(scaleType);\n        case CHANNEL.SHAPE:\n            return scaleType === 'ordinal'; // shape = lookup only\n    }\n}\nexport function getSupportedScaleType(channel, fieldDefType) {\n    return SCALE_TYPE_INDEX[generateScaleTypeIndexKey(channel, fieldDefType)];\n}\n// generates ScaleTypeIndex where keys are encoding channels and values are list of valid ScaleTypes\nfunction generateScaleTypeIndex() {\n    var _a;\n    const index = {};\n    for (const channel of CHANNELS) {\n        for (const fieldDefType of TYPES) {\n            for (const scaleType of SCALE_TYPES) {\n                const key = generateScaleTypeIndexKey(channel, fieldDefType);\n                if (channelSupportScaleType(channel, scaleType) && scaleTypeSupportDataType(scaleType, fieldDefType)) {\n                    index[key] = (_a = index[key]) !== null && _a !== void 0 ? _a : [];\n                    index[key].push(scaleType);\n                }\n            }\n        }\n    }\n    return index;\n}\nfunction generateScaleTypeIndexKey(channel, fieldDefType) {\n    return channel + '_' + fieldDefType;\n}\n//# sourceMappingURL=scale.js.map","import { isFunction, isString } from 'vega-util';\nimport { isCountingAggregateOp } from '../../../aggregate';\nimport { isBinned, isBinning } from '../../../bin';\nimport { getMainRangeChannel, X, X2, Y2 } from '../../../channel';\nimport { binRequiresRange, getBand, isDatumDef, isFieldDef, isFieldOrDatumDef, isTypedFieldDef, isValueDef, vgField } from '../../../channeldef';\nimport { dateTimeToExpr, isDateTime } from '../../../datetime';\nimport * as log from '../../../log';\nimport { isPathMark } from '../../../mark';\nimport { fieldValidPredicate } from '../../../predicate';\nimport { hasDiscreteDomain, isContinuousToContinuous } from '../../../scale';\nimport { TEMPORAL } from '../../../type';\nimport { contains } from '../../../util';\nimport { isSignalRef } from '../../../vega.schema';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nexport function midPointRefWithPositionInvalidTest(params) {\n    const { channel, channelDef, markDef, scale, config } = params;\n    const ref = midPoint(params);\n    // Wrap to check if the positional value is invalid, if so, plot the point on the min value\n    if (\n    // Only this for field def without counting aggregate (as count wouldn't be null)\n    isFieldDef(channelDef) &&\n        !isCountingAggregateOp(channelDef.aggregate) &&\n        // and only for continuous scale without zero (otherwise, null / invalid will be interpreted as zero, which doesn't cause layout problem)\n        scale &&\n        isContinuousToContinuous(scale.get('type')) &&\n        scale.get('zero') === false) {\n        return wrapPositionInvalidTest({\n            fieldDef: channelDef,\n            channel,\n            markDef,\n            ref,\n            config\n        });\n    }\n    return ref;\n}\nexport function wrapPositionInvalidTest({ fieldDef, channel, markDef, ref, config }) {\n    if (isPathMark(markDef.type)) {\n        // path mark already use defined to skip points, no need to do it here.\n        return ref;\n    }\n    const invalid = getMarkPropOrConfig('invalid', markDef, config);\n    if (invalid === null) {\n        // if there is no invalid filter, don't do the invalid test\n        return ref;\n    }\n    return [fieldInvalidTestValueRef(fieldDef, channel), ref];\n}\nexport function fieldInvalidTestValueRef(fieldDef, channel) {\n    const test = fieldInvalidPredicate(fieldDef, true);\n    const mainChannel = getMainRangeChannel(channel); // we can cast here as the output can't be other things.\n    const zeroValueRef = mainChannel === 'y'\n        ? { field: { group: 'height' } }\n        : // x / angle / radius can all use 0\n            { value: 0 };\n    return Object.assign({ test }, zeroValueRef);\n}\nexport function fieldInvalidPredicate(field, invalid = true) {\n    return fieldValidPredicate(isString(field) ? field : vgField(field, { expr: 'datum' }), !invalid);\n}\nexport function datumDefToExpr(datumDef) {\n    const { datum } = datumDef;\n    if (isDateTime(datum)) {\n        return dateTimeToExpr(datum);\n    }\n    return `${JSON.stringify(datum)}`;\n}\nexport function valueRefForFieldOrDatumDef(fieldDef, scaleName, opt, encode) {\n    const ref = {};\n    if (scaleName) {\n        ref.scale = scaleName;\n    }\n    if (isDatumDef(fieldDef)) {\n        const { datum } = fieldDef;\n        if (isDateTime(datum)) {\n            ref.signal = dateTimeToExpr(datum);\n        }\n        else if (isSignalRef(datum)) {\n            ref.signal = datum.signal;\n        }\n        else {\n            ref.value = datum;\n        }\n    }\n    else {\n        ref.field = vgField(fieldDef, opt);\n    }\n    if (encode) {\n        const { offset, band } = encode;\n        if (offset) {\n            ref.offset = offset;\n        }\n        if (band) {\n            ref.band = band;\n        }\n    }\n    return ref;\n}\n/**\n * Signal that returns the middle of a bin from start and end field. Should only be used with x and y.\n */\nexport function interpolatedSignalRef({ scaleName, fieldOrDatumDef, fieldOrDatumDef2, offset, startSuffix, band = 0.5 }) {\n    const expr = 0 < band && band < 1 ? 'datum' : undefined;\n    const start = vgField(fieldOrDatumDef, { expr, suffix: startSuffix });\n    const end = fieldOrDatumDef2 !== undefined\n        ? vgField(fieldOrDatumDef2, { expr })\n        : vgField(fieldOrDatumDef, { suffix: 'end', expr });\n    const ref = {};\n    if (band === 0 || band === 1) {\n        ref.scale = scaleName;\n        const val = band === 0 ? start : end;\n        ref.field = val;\n    }\n    else {\n        const datum = `${band} * ${start} + ${1 - band} * ${end}`;\n        ref.signal = `scale(\"${scaleName}\", ${datum})`;\n    }\n    if (offset) {\n        ref.offset = offset;\n    }\n    return ref;\n}\n/**\n * @returns {VgValueRef} Value Ref for xc / yc or mid point for other channels.\n */\nexport function midPoint({ channel, channelDef, channel2Def, markDef, config, scaleName, scale, stack, offset, defaultRef, band }) {\n    var _a;\n    // TODO: datum support\n    if (channelDef) {\n        /* istanbul ignore else */\n        if (isFieldOrDatumDef(channelDef)) {\n            if (isTypedFieldDef(channelDef)) {\n                band = band !== null && band !== void 0 ? band : getBand({\n                    channel,\n                    fieldDef: channelDef,\n                    fieldDef2: channel2Def,\n                    markDef,\n                    stack,\n                    config,\n                    isMidPoint: true\n                });\n                const { bin, timeUnit, type } = channelDef;\n                if (isBinning(bin) || (band && timeUnit && type === TEMPORAL)) {\n                    // Use middle only for x an y to place marks in the center between start and end of the bin range.\n                    // We do not use the mid point for other channels (e.g. size) so that properties of legends and marks match.\n                    if (stack && stack.impute) {\n                        // For stack, we computed bin_mid so we can impute.\n                        return valueRefForFieldOrDatumDef(channelDef, scaleName, { binSuffix: 'mid' }, { offset });\n                    }\n                    if (band) {\n                        // if band = 0, no need to call interpolation\n                        // For non-stack, we can just calculate bin mid on the fly using signal.\n                        return interpolatedSignalRef({ scaleName, fieldOrDatumDef: channelDef, band, offset });\n                    }\n                    return valueRefForFieldOrDatumDef(channelDef, scaleName, binRequiresRange(channelDef, channel) ? { binSuffix: 'range' } : {}, {\n                        offset\n                    });\n                }\n                else if (isBinned(bin)) {\n                    if (isFieldDef(channel2Def)) {\n                        return interpolatedSignalRef({\n                            scaleName,\n                            fieldOrDatumDef: channelDef,\n                            fieldOrDatumDef2: channel2Def,\n                            band,\n                            offset\n                        });\n                    }\n                    else {\n                        const channel2 = channel === X ? X2 : Y2;\n                        log.warn(log.message.channelRequiredForBinned(channel2));\n                    }\n                }\n            }\n            const scaleType = scale === null || scale === void 0 ? void 0 : scale.get('type');\n            return valueRefForFieldOrDatumDef(channelDef, scaleName, hasDiscreteDomain(scaleType) ? { binSuffix: 'range' } : {}, // no need for bin suffix if there is no scale\n            {\n                offset,\n                // For band, to get mid point, need to offset by half of the band\n                band: scaleType === 'band' ? (_a = band !== null && band !== void 0 ? band : channelDef.band) !== null && _a !== void 0 ? _a : 0.5 : undefined\n            });\n        }\n        else if (isValueDef(channelDef)) {\n            const value = channelDef.value;\n            const offsetMixins = offset ? { offset } : {};\n            return Object.assign(Object.assign({}, widthHeightValueOrSignalRef(channel, value)), offsetMixins);\n        }\n        // If channelDef is neither field def or value def, it's a condition-only def.\n        // In such case, we will use default ref.\n    }\n    if (isFunction(defaultRef)) {\n        defaultRef = defaultRef();\n    }\n    if (defaultRef) {\n        // for non-position, ref could be undefined.\n        return Object.assign(Object.assign({}, defaultRef), (offset ? { offset } : {}));\n    }\n    return defaultRef;\n}\n/**\n * Convert special \"width\" and \"height\" values in Vega-Lite into Vega value ref.\n */\nexport function widthHeightValueOrSignalRef(channel, value) {\n    if (contains(['x', 'x2'], channel) && value === 'width') {\n        return { field: { group: 'width' } };\n    }\n    else if (contains(['y', 'y2'], channel) && value === 'height') {\n        return { field: { group: 'height' } };\n    }\n    return signalOrValueRef(value);\n}\n//# sourceMappingURL=valueref.js.map","import { isString } from 'vega-util';\nimport { isBinning } from '../bin';\nimport { channelDefType, isFieldDef, isFieldOrDatumDefForTimeFormat, isScaleFieldDef, vgField } from '../channeldef';\nimport { fieldValidPredicate } from '../predicate';\nimport { ScaleType } from '../scale';\nimport { formatExpression, normalizeTimeUnit, timeUnitSpecifierExpression } from '../timeunit';\nimport { QUANTITATIVE } from '../type';\nimport { isSignalRef } from '../vega.schema';\nimport { datumDefToExpr } from './mark/encode/valueref';\nexport function isCustomFormatType(formatType) {\n    return formatType && formatType !== 'number' && formatType !== 'time';\n}\nfunction customFormatExpr(formatType, field, format) {\n    return `${formatType}(${field}${format ? `, ${JSON.stringify(format)}` : ''})`;\n}\nexport const BIN_RANGE_DELIMITER = ' \\u2013 ';\nexport function formatSignalRef({ fieldOrDatumDef, format, formatType, expr, normalizeStack, config }) {\n    var _a, _b;\n    if (isCustomFormatType(formatType)) {\n        return formatCustomType({\n            fieldOrDatumDef,\n            format,\n            formatType,\n            expr,\n            config\n        });\n    }\n    const field = fieldToFormat(fieldOrDatumDef, expr, normalizeStack);\n    if (isFieldOrDatumDefForTimeFormat(fieldOrDatumDef)) {\n        const signal = timeFormatExpression(field, isFieldDef(fieldOrDatumDef) ? (_a = normalizeTimeUnit(fieldOrDatumDef.timeUnit)) === null || _a === void 0 ? void 0 : _a.unit : undefined, format, config.timeFormat, isScaleFieldDef(fieldOrDatumDef) && ((_b = fieldOrDatumDef.scale) === null || _b === void 0 ? void 0 : _b.type) === ScaleType.UTC);\n        return signal ? { signal } : undefined;\n    }\n    format = numberFormat(channelDefType(fieldOrDatumDef), format, config);\n    if (isFieldDef(fieldOrDatumDef) && isBinning(fieldOrDatumDef.bin)) {\n        const endField = vgField(fieldOrDatumDef, { expr, binSuffix: 'end' });\n        return {\n            signal: binFormatExpression(field, endField, format, formatType, config)\n        };\n    }\n    else if (format || channelDefType(fieldOrDatumDef) === 'quantitative') {\n        return {\n            signal: `${formatExpr(field, format)}`\n        };\n    }\n    else {\n        return { signal: `isValid(${field}) ? ${field} : \"\"+${field}` };\n    }\n}\nfunction fieldToFormat(fieldOrDatumDef, expr, normalizeStack) {\n    if (isFieldDef(fieldOrDatumDef)) {\n        if (normalizeStack) {\n            return `${vgField(fieldOrDatumDef, { expr, suffix: 'end' })}-${vgField(fieldOrDatumDef, {\n                expr,\n                suffix: 'start'\n            })}`;\n        }\n        else {\n            return vgField(fieldOrDatumDef, { expr });\n        }\n    }\n    else {\n        return datumDefToExpr(fieldOrDatumDef);\n    }\n}\nexport function formatCustomType({ fieldOrDatumDef, format, formatType, expr, normalizeStack, config, field }) {\n    field = field !== null && field !== void 0 ? field : fieldToFormat(fieldOrDatumDef, expr, normalizeStack);\n    if (isFieldDef(fieldOrDatumDef) && isBinning(fieldOrDatumDef.bin)) {\n        const endField = vgField(fieldOrDatumDef, { expr, binSuffix: 'end' });\n        return {\n            signal: binFormatExpression(field, endField, format, formatType, config)\n        };\n    }\n    return { signal: customFormatExpr(formatType, field, format) };\n}\nexport function guideFormat(fieldOrDatumDef, type, format, formatType, config, omitTimeFormatConfig // axis doesn't use config.timeFormat\n) {\n    var _a;\n    if (isCustomFormatType(formatType)) {\n        return undefined; // handled in encode block\n    }\n    if (isFieldOrDatumDefForTimeFormat(fieldOrDatumDef)) {\n        const timeUnit = isFieldDef(fieldOrDatumDef) ? (_a = normalizeTimeUnit(fieldOrDatumDef.timeUnit)) === null || _a === void 0 ? void 0 : _a.unit : undefined;\n        return timeFormat(format, timeUnit, config, omitTimeFormatConfig);\n    }\n    return numberFormat(type, format, config);\n}\nexport function guideFormatType(formatType, fieldOrDatumDef, scaleType) {\n    if (formatType && (isSignalRef(formatType) || formatType === 'number' || formatType === 'time')) {\n        return formatType;\n    }\n    if (isFieldOrDatumDefForTimeFormat(fieldOrDatumDef) && scaleType !== 'time' && scaleType !== 'utc') {\n        return 'time';\n    }\n    return undefined;\n}\n/**\n * Returns number format for a fieldDef.\n */\nexport function numberFormat(type, specifiedFormat, config) {\n    // Specified format in axis/legend has higher precedence than fieldDef.format\n    if (isString(specifiedFormat)) {\n        return specifiedFormat;\n    }\n    if (type === QUANTITATIVE) {\n        // we only apply the default if the field is quantitative\n        return config.numberFormat;\n    }\n    return undefined;\n}\n/**\n * Returns time format for a fieldDef for use in guides.\n */\nexport function timeFormat(specifiedFormat, timeUnit, config, omitTimeFormatConfig) {\n    if (specifiedFormat) {\n        return specifiedFormat;\n    }\n    if (timeUnit) {\n        return {\n            signal: timeUnitSpecifierExpression(timeUnit)\n        };\n    }\n    return omitTimeFormatConfig ? undefined : config.timeFormat;\n}\nfunction formatExpr(field, format) {\n    return `format(${field}, \"${format || ''}\")`;\n}\nfunction binNumberFormatExpr(field, format, formatType, config) {\n    var _a;\n    if (isCustomFormatType(formatType)) {\n        return customFormatExpr(formatType, field, format);\n    }\n    return formatExpr(field, (_a = (isString(format) ? format : undefined)) !== null && _a !== void 0 ? _a : config.numberFormat);\n}\nexport function binFormatExpression(startField, endField, format, formatType, config) {\n    const start = binNumberFormatExpr(startField, format, formatType, config);\n    const end = binNumberFormatExpr(endField, format, formatType, config);\n    return `${fieldValidPredicate(startField, false)} ? \"null\" : ${start} + \"${BIN_RANGE_DELIMITER}\" + ${end}`;\n}\n/**\n * Returns the time expression used for axis/legend labels or text mark for a temporal field\n */\nexport function timeFormatExpression(field, timeUnit, format, rawTimeFormat, // should be provided only for actual text and headers, not axis/legend labels\nisUTCScale) {\n    if (!timeUnit || format) {\n        // If there is no time unit, or if user explicitly specifies format for axis/legend/text.\n        format = isString(format) ? format : rawTimeFormat; // only use provided timeFormat if there is no timeUnit.\n        return `${isUTCScale ? 'utc' : 'time'}Format(${field}, '${format}')`;\n    }\n    else {\n        return formatExpression(timeUnit, field, isUTCScale);\n    }\n}\n//# sourceMappingURL=format.js.map","import { isArray } from 'vega-util';\nexport const DEFAULT_SORT_OP = 'min';\nconst SORT_BY_CHANNEL_INDEX = {\n    x: 1,\n    y: 1,\n    color: 1,\n    fill: 1,\n    stroke: 1,\n    strokeWidth: 1,\n    size: 1,\n    shape: 1,\n    fillOpacity: 1,\n    strokeOpacity: 1,\n    opacity: 1,\n    text: 1\n};\nexport function isSortByChannel(c) {\n    return c in SORT_BY_CHANNEL_INDEX;\n}\nexport function isSortByEncoding(sort) {\n    return !!sort && !!sort['encoding'];\n}\nexport function isSortField(sort) {\n    return !!sort && (sort['op'] === 'count' || !!sort['field']);\n}\nexport function isSortArray(sort) {\n    return !!sort && isArray(sort);\n}\n//# sourceMappingURL=sort.js.map","export function isFacetMapping(f) {\n    return 'row' in f || 'column' in f;\n}\nexport function isFacetFieldDef(channelDef) {\n    return !!channelDef && 'header' in channelDef;\n}\nexport function isFacetSpec(spec) {\n    return 'facet' in spec;\n}\n//# sourceMappingURL=facet.js.map","import { __rest } from \"tslib\";\nimport { isArray, isBoolean, isNumber, isString } from 'vega-util';\nimport { isAggregateOp, isArgmaxDef, isArgminDef, isCountingAggregateOp } from './aggregate';\nimport { autoMaxBins, binToString, isBinned, isBinning } from './bin';\nimport { ANGLE, DESCRIPTION, COLOR, COLUMN, DETAIL, FACET, FILL, FILLOPACITY, HREF, isScaleChannel, isSecondaryRangeChannel, isXorY, KEY, LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2, OPACITY, ORDER, RADIUS, RADIUS2, rangeType, ROW, SHAPE, SIZE, STROKE, STROKEDASH, STROKEOPACITY, STROKEWIDTH, TEXT, THETA, THETA2, TOOLTIP, URL, X, X2, Y, Y2 } from './channel';\nimport { getMarkConfig } from './compile/common';\nimport { isCustomFormatType } from './compile/format';\nimport { dateTimeToExpr, isDateTime } from './datetime';\nimport * as log from './log';\nimport { isRectBasedMark } from './mark';\nimport { isSortByChannel } from './sort';\nimport { isFacetFieldDef } from './spec/facet';\nimport { getTimeUnitParts, isLocalSingleTimeUnit, normalizeTimeUnit, timeUnitToString } from './timeunit';\nimport { getFullName, QUANTITATIVE } from './type';\nimport { contains, flatAccessWithDatum, getFirstDefined, internalField, replacePathInField, titleCase, removePathFromField } from './util';\nimport { isSignalRef } from './vega.schema';\nexport function isConditionalSelection(c) {\n    return c['selection'];\n}\nexport function isRepeatRef(field) {\n    return field && !isString(field) && 'repeat' in field;\n}\nexport function toFieldDefBase(fieldDef) {\n    const { field, timeUnit, bin, aggregate } = fieldDef;\n    return Object.assign(Object.assign(Object.assign(Object.assign({}, (timeUnit ? { timeUnit } : {})), (bin ? { bin } : {})), (aggregate ? { aggregate } : {})), { field });\n}\nexport function isSortableFieldDef(fieldDef) {\n    return isTypedFieldDef(fieldDef) && 'sort' in fieldDef;\n}\nexport function getBand({ channel, fieldDef, fieldDef2, markDef: mark, stack, config, isMidPoint }) {\n    if (isFieldOrDatumDef(fieldDef) && fieldDef.band !== undefined) {\n        return fieldDef.band;\n    }\n    if (isFieldDef(fieldDef)) {\n        const { timeUnit, bin } = fieldDef;\n        if (timeUnit && !fieldDef2) {\n            if (isMidPoint) {\n                return getMarkConfig('timeUnitBandPosition', mark, config);\n            }\n            else {\n                return isRectBasedMark(mark.type) ? getMarkConfig('timeUnitBand', mark, config) : 0;\n            }\n        }\n        else if (isBinning(bin)) {\n            return isRectBasedMark(mark.type) && !isMidPoint ? 1 : 0.5;\n        }\n    }\n    if ((stack === null || stack === void 0 ? void 0 : stack.fieldChannel) === channel && isMidPoint) {\n        return 0.5;\n    }\n    return undefined;\n}\nexport function hasBand(channel, fieldDef, fieldDef2, stack, markDef, config) {\n    if (isBinning(fieldDef.bin) || (fieldDef.timeUnit && isTypedFieldDef(fieldDef) && fieldDef.type === 'temporal')) {\n        return !!getBand({ channel, fieldDef, fieldDef2, stack, markDef, config });\n    }\n    return false;\n}\nexport function isConditionalDef(channelDef) {\n    return !!channelDef && 'condition' in channelDef;\n}\n/**\n * Return if a channelDef is a ConditionalValueDef with ConditionFieldDef\n */\nexport function hasConditionalFieldDef(channelDef) {\n    const condition = channelDef && channelDef['condition'];\n    return !!condition && !isArray(condition) && isFieldDef(condition);\n}\nexport function hasConditionalFieldOrDatumDef(channelDef) {\n    const condition = channelDef && channelDef['condition'];\n    return !!condition && !isArray(condition) && isFieldOrDatumDef(condition);\n}\nexport function hasConditionalValueDef(channelDef) {\n    const condition = channelDef && channelDef['condition'];\n    return !!condition && (isArray(condition) || isValueDef(condition));\n}\nexport function isFieldDef(channelDef) {\n    // TODO: we can't use field in channelDef here as it's somehow failing runtime test\n    return !!channelDef && (!!channelDef['field'] || channelDef['aggregate'] === 'count');\n}\nexport function channelDefType(channelDef) {\n    return channelDef && channelDef['type'];\n}\nexport function isDatumDef(channelDef) {\n    return !!channelDef && 'datum' in channelDef;\n}\nexport function isContinuousFieldOrDatumDef(cd) {\n    // TODO: make datum support DateTime object\n    return (isTypedFieldDef(cd) && isContinuous(cd)) || isNumericDataDef(cd);\n}\nexport function isQuantitativeFieldOrDatumDef(cd) {\n    // TODO: make datum support DateTime object\n    return channelDefType(cd) === 'quantitative' || isNumericDataDef(cd);\n}\nexport function isNumericDataDef(cd) {\n    return isDatumDef(cd) && isNumber(cd.datum);\n}\nexport function isFieldOrDatumDef(channelDef) {\n    return isFieldDef(channelDef) || isDatumDef(channelDef);\n}\nexport function isTypedFieldDef(channelDef) {\n    return !!channelDef && (('field' in channelDef && 'type' in channelDef) || channelDef['aggregate'] === 'count');\n}\nexport function isValueDef(channelDef) {\n    return channelDef && 'value' in channelDef && 'value' in channelDef;\n}\nexport function isScaleFieldDef(channelDef) {\n    return !!channelDef && ('scale' in channelDef || 'sort' in channelDef);\n}\nexport function isPositionFieldOrDatumDef(channelDef) {\n    return channelDef && ('axis' in channelDef || 'stack' in channelDef || 'impute' in channelDef);\n}\nexport function isMarkPropFieldOrDatumDef(channelDef) {\n    return !!channelDef && 'legend' in channelDef;\n}\nexport function isTextFieldOrDatumDef(channelDef) {\n    return !!channelDef && ('format' in channelDef || 'formatType' in channelDef);\n}\nfunction isOpFieldDef(fieldDef) {\n    return 'op' in fieldDef;\n}\n/**\n * Get a Vega field reference from a Vega-Lite field def.\n */\nexport function vgField(fieldDef, opt = {}) {\n    var _a, _b, _c;\n    let field = fieldDef.field;\n    const prefix = opt.prefix;\n    let suffix = opt.suffix;\n    let argAccessor = ''; // for accessing argmin/argmax field at the end without getting escaped\n    if (isCount(fieldDef)) {\n        field = internalField('count');\n    }\n    else {\n        let fn;\n        if (!opt.nofn) {\n            if (isOpFieldDef(fieldDef)) {\n                fn = fieldDef.op;\n            }\n            else {\n                const { bin, aggregate, timeUnit } = fieldDef;\n                if (isBinning(bin)) {\n                    fn = binToString(bin);\n                    suffix = ((_a = opt.binSuffix) !== null && _a !== void 0 ? _a : '') + ((_b = opt.suffix) !== null && _b !== void 0 ? _b : '');\n                }\n                else if (aggregate) {\n                    if (isArgmaxDef(aggregate)) {\n                        argAccessor = `[\"${field}\"]`;\n                        field = `argmax_${aggregate.argmax}`;\n                    }\n                    else if (isArgminDef(aggregate)) {\n                        argAccessor = `[\"${field}\"]`;\n                        field = `argmin_${aggregate.argmin}`;\n                    }\n                    else {\n                        fn = String(aggregate);\n                    }\n                }\n                else if (timeUnit) {\n                    fn = timeUnitToString(timeUnit);\n                    suffix = ((!contains(['range', 'mid'], opt.binSuffix) && opt.binSuffix) || '') + ((_c = opt.suffix) !== null && _c !== void 0 ? _c : '');\n                }\n            }\n        }\n        if (fn) {\n            field = field ? `${fn}_${field}` : fn;\n        }\n    }\n    if (suffix) {\n        field = `${field}_${suffix}`;\n    }\n    if (prefix) {\n        field = `${prefix}_${field}`;\n    }\n    if (opt.forAs) {\n        return removePathFromField(field);\n    }\n    else if (opt.expr) {\n        // Expression to access flattened field. No need to escape dots.\n        return flatAccessWithDatum(field, opt.expr) + argAccessor;\n    }\n    else {\n        // We flattened all fields so paths should have become dot.\n        return replacePathInField(field) + argAccessor;\n    }\n}\nexport function isDiscrete(def) {\n    switch (def.type) {\n        case 'nominal':\n        case 'ordinal':\n        case 'geojson':\n            return true;\n        case 'quantitative':\n            return isFieldDef(def) && !!def.bin;\n        case 'temporal':\n            return false;\n    }\n    throw new Error(log.message.invalidFieldType(def.type));\n}\nexport function isContinuous(fieldDef) {\n    return !isDiscrete(fieldDef);\n}\nexport function isCount(fieldDef) {\n    return fieldDef.aggregate === 'count';\n}\nexport function verbalTitleFormatter(fieldDef, config) {\n    var _a;\n    const { field, bin, timeUnit, aggregate } = fieldDef;\n    if (aggregate === 'count') {\n        return config.countTitle;\n    }\n    else if (isBinning(bin)) {\n        return `${field} (binned)`;\n    }\n    else if (timeUnit) {\n        const unit = (_a = normalizeTimeUnit(timeUnit)) === null || _a === void 0 ? void 0 : _a.unit;\n        if (unit) {\n            return `${field} (${getTimeUnitParts(unit).join('-')})`;\n        }\n    }\n    else if (aggregate) {\n        if (isArgmaxDef(aggregate)) {\n            return `${field} for max ${aggregate.argmax}`;\n        }\n        else if (isArgminDef(aggregate)) {\n            return `${field} for min ${aggregate.argmin}`;\n        }\n        else {\n            return `${titleCase(aggregate)} of ${field}`;\n        }\n    }\n    return field;\n}\nexport function functionalTitleFormatter(fieldDef) {\n    const { aggregate, bin, timeUnit, field } = fieldDef;\n    if (isArgmaxDef(aggregate)) {\n        return `${field} for argmax(${aggregate.argmax})`;\n    }\n    else if (isArgminDef(aggregate)) {\n        return `${field} for argmin(${aggregate.argmin})`;\n    }\n    const timeUnitParams = normalizeTimeUnit(timeUnit);\n    const fn = aggregate || (timeUnitParams === null || timeUnitParams === void 0 ? void 0 : timeUnitParams.unit) || ((timeUnitParams === null || timeUnitParams === void 0 ? void 0 : timeUnitParams.maxbins) && 'timeunit') || (isBinning(bin) && 'bin');\n    if (fn) {\n        return fn.toUpperCase() + '(' + field + ')';\n    }\n    else {\n        return field;\n    }\n}\nexport const defaultTitleFormatter = (fieldDef, config) => {\n    switch (config.fieldTitle) {\n        case 'plain':\n            return fieldDef.field;\n        case 'functional':\n            return functionalTitleFormatter(fieldDef);\n        default:\n            return verbalTitleFormatter(fieldDef, config);\n    }\n};\nlet titleFormatter = defaultTitleFormatter;\nexport function setTitleFormatter(formatter) {\n    titleFormatter = formatter;\n}\nexport function resetTitleFormatter() {\n    setTitleFormatter(defaultTitleFormatter);\n}\nexport function title(fieldOrDatumDef, config, { allowDisabling, includeDefault = true }) {\n    var _a, _b;\n    const guide = (_a = getGuide(fieldOrDatumDef)) !== null && _a !== void 0 ? _a : {};\n    const guideTitle = guide.title;\n    if (!isFieldDef(fieldOrDatumDef)) {\n        return guideTitle;\n    }\n    const fieldDef = fieldOrDatumDef;\n    const def = includeDefault ? defaultTitle(fieldDef, config) : undefined;\n    if (allowDisabling) {\n        return getFirstDefined(guideTitle, fieldDef.title, def);\n    }\n    else {\n        return (_b = guideTitle !== null && guideTitle !== void 0 ? guideTitle : fieldDef.title) !== null && _b !== void 0 ? _b : def;\n    }\n}\nexport function getGuide(fieldDef) {\n    if (isPositionFieldOrDatumDef(fieldDef) && fieldDef.axis) {\n        return fieldDef.axis;\n    }\n    else if (isMarkPropFieldOrDatumDef(fieldDef) && fieldDef.legend) {\n        return fieldDef.legend;\n    }\n    else if (isFacetFieldDef(fieldDef) && fieldDef.header) {\n        return fieldDef.header;\n    }\n    return undefined;\n}\nexport function defaultTitle(fieldDef, config) {\n    return titleFormatter(fieldDef, config);\n}\nexport function getFormatMixins(fieldDef) {\n    var _a;\n    if (isTextFieldOrDatumDef(fieldDef)) {\n        const { format, formatType } = fieldDef;\n        return { format, formatType };\n    }\n    else {\n        const guide = (_a = getGuide(fieldDef)) !== null && _a !== void 0 ? _a : {};\n        const { format, formatType } = guide;\n        return { format, formatType };\n    }\n}\nexport function defaultType(fieldDef, channel) {\n    if (fieldDef.timeUnit) {\n        return 'temporal';\n    }\n    if (isBinning(fieldDef.bin)) {\n        return 'quantitative';\n    }\n    switch (rangeType(channel)) {\n        case 'continuous':\n            return 'quantitative';\n        case 'discrete':\n            return 'nominal';\n        case 'flexible': // color\n            return 'nominal';\n        default:\n            return 'quantitative';\n    }\n}\n/**\n * Returns the fieldDef -- either from the outer channelDef or from the condition of channelDef.\n * @param channelDef\n */\nexport function getFieldDef(channelDef) {\n    if (isFieldDef(channelDef)) {\n        return channelDef;\n    }\n    else if (hasConditionalFieldDef(channelDef)) {\n        return channelDef.condition;\n    }\n    return undefined;\n}\nexport function getFieldOrDatumDef(channelDef) {\n    if (isFieldOrDatumDef(channelDef)) {\n        return channelDef;\n    }\n    else if (hasConditionalFieldOrDatumDef(channelDef)) {\n        return channelDef.condition;\n    }\n    return undefined;\n}\n/**\n * Convert type to full, lowercase type, or augment the fieldDef with a default type if missing.\n */\nexport function initChannelDef(channelDef, channel, config) {\n    if (isString(channelDef) || isNumber(channelDef) || isBoolean(channelDef)) {\n        const primitiveType = isString(channelDef) ? 'string' : isNumber(channelDef) ? 'number' : 'boolean';\n        log.warn(log.message.primitiveChannelDef(channel, primitiveType, channelDef));\n        return { value: channelDef };\n    }\n    // If a fieldDef contains a field, we need type.\n    if (isFieldOrDatumDef(channelDef)) {\n        return initFieldOrDatumDef(channelDef, channel, config);\n    }\n    else if (hasConditionalFieldOrDatumDef(channelDef)) {\n        return Object.assign(Object.assign({}, channelDef), { \n            // Need to cast as normalizeFieldDef normally return FieldDef, but here we know that it is definitely Condition<FieldDef>\n            condition: initFieldOrDatumDef(channelDef.condition, channel, config) });\n    }\n    return channelDef;\n}\nexport function initFieldOrDatumDef(fd, channel, config) {\n    if (isTextFieldOrDatumDef(fd)) {\n        const { format, formatType } = fd, rest = __rest(fd, [\"format\", \"formatType\"]);\n        if (isCustomFormatType(formatType) && !config.customFormatTypes) {\n            log.warn(log.message.customFormatTypeNotAllowed(channel));\n            return initFieldOrDatumDef(rest, channel, config);\n        }\n    }\n    else {\n        const guideType = isPositionFieldOrDatumDef(fd)\n            ? 'axis'\n            : isMarkPropFieldOrDatumDef(fd)\n                ? 'legend'\n                : isFacetFieldDef(fd)\n                    ? 'header'\n                    : null;\n        if (guideType && fd[guideType]) {\n            const _a = fd[guideType], { format, formatType } = _a, newGuide = __rest(_a, [\"format\", \"formatType\"]);\n            if (isCustomFormatType(formatType) && !config.customFormatTypes) {\n                log.warn(log.message.customFormatTypeNotAllowed(channel));\n                return initFieldOrDatumDef(Object.assign(Object.assign({}, fd), { [guideType]: newGuide }), channel, config);\n            }\n        }\n    }\n    if (isFieldDef(fd)) {\n        return initFieldDef(fd, channel);\n    }\n    return initDatumDef(fd);\n}\nfunction initDatumDef(datumDef) {\n    let type = datumDef['type'];\n    if (type) {\n        return datumDef;\n    }\n    const { datum } = datumDef;\n    type = isNumber(datum) ? 'quantitative' : isString(datum) ? 'nominal' : isDateTime(datum) ? 'temporal' : undefined;\n    return Object.assign(Object.assign({}, datumDef), { type });\n}\nexport function initFieldDef(fd, channel) {\n    const { aggregate, timeUnit, bin, field } = fd;\n    const fieldDef = Object.assign({}, fd);\n    // Drop invalid aggregate\n    if (aggregate && !isAggregateOp(aggregate) && !isArgmaxDef(aggregate) && !isArgminDef(aggregate)) {\n        log.warn(log.message.invalidAggregate(aggregate));\n        delete fieldDef.aggregate;\n    }\n    // Normalize Time Unit\n    if (timeUnit) {\n        fieldDef.timeUnit = normalizeTimeUnit(timeUnit);\n    }\n    if (field) {\n        fieldDef.field = `${field}`;\n    }\n    // Normalize bin\n    if (isBinning(bin)) {\n        fieldDef.bin = normalizeBin(bin, channel);\n    }\n    if (isBinned(bin) && !isXorY(channel)) {\n        log.warn(`Channel ${channel} should not be used with \"binned\" bin.`);\n    }\n    // Normalize Type\n    if (isTypedFieldDef(fieldDef)) {\n        const { type } = fieldDef;\n        const fullType = getFullName(type);\n        if (type !== fullType) {\n            // convert short type to full type\n            fieldDef.type = fullType;\n        }\n        if (type !== 'quantitative') {\n            if (isCountingAggregateOp(aggregate)) {\n                log.warn(log.message.invalidFieldTypeForCountAggregate(type, aggregate));\n                fieldDef.type = 'quantitative';\n            }\n        }\n    }\n    else if (!isSecondaryRangeChannel(channel)) {\n        // If type is empty / invalid, then augment with default type\n        const newType = defaultType(fieldDef, channel);\n        log.warn(log.message.missingFieldType(channel, newType));\n        fieldDef['type'] = newType;\n    }\n    if (isTypedFieldDef(fieldDef)) {\n        const { compatible, warning } = channelCompatibility(fieldDef, channel);\n        if (!compatible) {\n            log.warn(warning);\n        }\n    }\n    if (isSortableFieldDef(fieldDef) && isString(fieldDef.sort)) {\n        const { sort } = fieldDef;\n        if (isSortByChannel(sort)) {\n            return Object.assign(Object.assign({}, fieldDef), { sort: { encoding: sort } });\n        }\n        const sub = sort.substr(1);\n        if (sort.charAt(0) === '-' && isSortByChannel(sub)) {\n            return Object.assign(Object.assign({}, fieldDef), { sort: { encoding: sub, order: 'descending' } });\n        }\n    }\n    if (isFacetFieldDef(fieldDef)) {\n        const { header } = fieldDef;\n        const { orient } = header, rest = __rest(header, [\"orient\"]);\n        if (orient) {\n            return Object.assign(Object.assign({}, fieldDef), { header: Object.assign(Object.assign({}, rest), { labelOrient: header.labelOrient || orient, titleOrient: header.titleOrient || orient }) });\n        }\n    }\n    return fieldDef;\n}\nexport function normalizeBin(bin, channel) {\n    if (isBoolean(bin)) {\n        return { maxbins: autoMaxBins(channel) };\n    }\n    else if (bin === 'binned') {\n        return {\n            binned: true\n        };\n    }\n    else if (!bin.maxbins && !bin.step) {\n        return Object.assign(Object.assign({}, bin), { maxbins: autoMaxBins(channel) });\n    }\n    else {\n        return bin;\n    }\n}\nconst COMPATIBLE = { compatible: true };\nexport function channelCompatibility(fieldDef, channel) {\n    const type = fieldDef.type;\n    if (type === 'geojson' && channel !== 'shape') {\n        return {\n            compatible: false,\n            warning: `Channel ${channel} should not be used with a geojson data.`\n        };\n    }\n    switch (channel) {\n        case ROW:\n        case COLUMN:\n        case FACET:\n            if (isContinuous(fieldDef)) {\n                return {\n                    compatible: false,\n                    warning: log.message.facetChannelShouldBeDiscrete(channel)\n                };\n            }\n            return COMPATIBLE;\n        case X:\n        case Y:\n        case COLOR:\n        case FILL:\n        case STROKE:\n        case TEXT:\n        case DETAIL:\n        case KEY:\n        case TOOLTIP:\n        case HREF:\n        case URL:\n        case ANGLE:\n        case THETA:\n        case RADIUS:\n        case DESCRIPTION:\n            return COMPATIBLE;\n        case LONGITUDE:\n        case LONGITUDE2:\n        case LATITUDE:\n        case LATITUDE2:\n            if (type !== QUANTITATIVE) {\n                return {\n                    compatible: false,\n                    warning: `Channel ${channel} should be used with a quantitative field only, not ${fieldDef.type} field.`\n                };\n            }\n            return COMPATIBLE;\n        case OPACITY:\n        case FILLOPACITY:\n        case STROKEOPACITY:\n        case STROKEWIDTH:\n        case SIZE:\n        case THETA2:\n        case RADIUS2:\n        case X2:\n        case Y2:\n            if (type === 'nominal' && !fieldDef['sort']) {\n                return {\n                    compatible: false,\n                    warning: `Channel ${channel} should not be used with an unsorted discrete field.`\n                };\n            }\n            return COMPATIBLE;\n        case STROKEDASH:\n            if (!contains(['ordinal', 'nominal'], fieldDef.type)) {\n                return {\n                    compatible: false,\n                    warning: 'StrokeDash channel should be used with only discrete data.'\n                };\n            }\n            return COMPATIBLE;\n        case SHAPE:\n            if (!contains(['ordinal', 'nominal', 'geojson'], fieldDef.type)) {\n                return {\n                    compatible: false,\n                    warning: 'Shape channel should be used with only either discrete or geojson data.'\n                };\n            }\n            return COMPATIBLE;\n        case ORDER:\n            if (fieldDef.type === 'nominal' && !('sort' in fieldDef)) {\n                return {\n                    compatible: false,\n                    warning: `Channel order is inappropriate for nominal field, which has no inherent order.`\n                };\n            }\n            return COMPATIBLE;\n    }\n}\n/**\n * Check if the field def uses a time format or does not use any format but is temporal\n * (this does not cover field defs that are temporal but use a number format).\n */\nexport function isFieldOrDatumDefForTimeFormat(fieldOrDatumDef) {\n    const { formatType } = getFormatMixins(fieldOrDatumDef);\n    return formatType === 'time' || (!formatType && isTimeFieldDef(fieldOrDatumDef));\n}\n/**\n * Check if field def has type `temporal`. If you want to also cover field defs that use a time format, use `isTimeFormatFieldDef`.\n */\nexport function isTimeFieldDef(def) {\n    return def && (def['type'] === 'temporal' || (isFieldDef(def) && !!def.timeUnit));\n}\n/**\n * Getting a value associated with a fielddef.\n * Convert the value to Vega expression if applicable (for datetime object, or string if the field def is temporal or has timeUnit)\n */\nexport function valueExpr(v, { timeUnit, type, wrapTime, undefinedIfExprNotRequired }) {\n    var _a;\n    const unit = timeUnit && ((_a = normalizeTimeUnit(timeUnit)) === null || _a === void 0 ? void 0 : _a.unit);\n    let isTime = unit || type === 'temporal';\n    let expr;\n    if (isSignalRef(v)) {\n        expr = v.signal;\n    }\n    else if (isDateTime(v)) {\n        isTime = true;\n        expr = dateTimeToExpr(v);\n    }\n    else if (isString(v) || isNumber(v)) {\n        if (isTime) {\n            expr = `datetime(${JSON.stringify(v)})`;\n            if (isLocalSingleTimeUnit(unit)) {\n                // for single timeUnit, we will use dateTimeToExpr to convert number/string to match the timeUnit\n                if ((isNumber(v) && v < 10000) || (isString(v) && isNaN(Date.parse(v)))) {\n                    expr = dateTimeToExpr({ [unit]: v });\n                }\n            }\n        }\n    }\n    if (expr) {\n        return wrapTime && isTime ? `time(${expr})` : expr;\n    }\n    // number or boolean or normal string\n    return undefinedIfExprNotRequired ? undefined : JSON.stringify(v);\n}\n/**\n * Standardize value array -- convert each value to Vega expression if applicable\n */\nexport function valueArray(fieldOrDatumDef, values) {\n    const { type } = fieldOrDatumDef;\n    return values.map(v => {\n        const expr = valueExpr(v, {\n            timeUnit: isFieldDef(fieldOrDatumDef) ? fieldOrDatumDef.timeUnit : undefined,\n            type,\n            undefinedIfExprNotRequired: true\n        });\n        // return signal for the expression if we need an expression\n        if (expr !== undefined) {\n            return { signal: expr };\n        }\n        // otherwise just return the original value\n        return v;\n    });\n}\n/**\n * Checks whether a fieldDef for a particular channel requires a computed bin range.\n */\nexport function binRequiresRange(fieldDef, channel) {\n    if (!isBinning(fieldDef.bin)) {\n        console.warn('Only call this method for binned field defs.');\n        return false;\n    }\n    // We need the range only when the user explicitly forces a binned field to be use discrete scale. In this case, bin range is used in axis and legend labels.\n    // We could check whether the axis or legend exists (not disabled) but that seems overkill.\n    return isScaleChannel(channel) && contains(['ordinal', 'nominal'], fieldDef.type);\n}\n//# sourceMappingURL=channeldef.js.map","import { __rest } from \"tslib\";\nimport { isArray, isString } from 'vega-util';\nimport { pick } from './util';\nexport function extractTitleConfig(titleConfig) {\n    const { \n    // These are non-mark title config that need to be hardcoded\n    anchor, frame, offset, orient, \n    // color needs to be redirect to fill\n    color, \n    // subtitle properties\n    subtitleColor, subtitleFont, subtitleFontSize, subtitleFontStyle, subtitleFontWeight, subtitleLineHeight, subtitlePadding } = titleConfig, \n    // The rest are mark config.\n    rest = __rest(titleConfig, [\"anchor\", \"frame\", \"offset\", \"orient\", \"color\", \"subtitleColor\", \"subtitleFont\", \"subtitleFontSize\", \"subtitleFontStyle\", \"subtitleFontWeight\", \"subtitleLineHeight\", \"subtitlePadding\"]);\n    const titleMarkConfig = Object.assign(Object.assign({}, rest), (color ? { fill: color } : {}));\n    // These are non-mark title config that need to be hardcoded\n    const nonMark = Object.assign(Object.assign(Object.assign(Object.assign({}, (anchor ? { anchor } : {})), (frame ? { frame } : {})), (offset ? { offset } : {})), (orient ? { orient } : {}));\n    // subtitle part can stay in config.title since header titles do not use subtitle\n    const subtitle = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (subtitleColor ? { subtitleColor } : {})), (subtitleFont ? { subtitleFont } : {})), (subtitleFontSize ? { subtitleFontSize } : {})), (subtitleFontStyle ? { subtitleFontStyle } : {})), (subtitleFontWeight ? { subtitleFontWeight } : {})), (subtitleLineHeight ? { subtitleLineHeight } : {})), (subtitlePadding ? { subtitlePadding } : {}));\n    const subtitleMarkConfig = pick(titleMarkConfig, ['align', 'baseline', 'dx', 'dy', 'limit']);\n    return { titleMarkConfig, subtitleMarkConfig, nonMark, subtitle };\n}\nexport function isText(v) {\n    return isString(v) || (isArray(v) && isString(v[0]));\n}\n//# sourceMappingURL=title.js.map","import { array, stringValue } from 'vega-util';\nimport { vgField } from '../channeldef';\nimport { isText } from '../title';\nimport { deepEqual, getFirstDefined } from '../util';\nimport { isSignalRef } from '../vega.schema';\nexport const BIN_RANGE_DELIMITER = ' \\u2013 ';\nexport function signalOrValueRef(value) {\n    if (isSignalRef(value)) {\n        return value;\n    }\n    return value !== undefined ? { value } : undefined;\n}\nexport function exprFromValueOrSignalRef(ref) {\n    if (isSignalRef(ref)) {\n        return ref.signal;\n    }\n    return stringValue(ref.value);\n}\nexport function signalOrStringValue(v) {\n    if (isSignalRef(v)) {\n        return v.signal;\n    }\n    return v == null ? null : stringValue(v);\n}\nexport function applyMarkConfig(e, model, propsList) {\n    for (const property of propsList) {\n        const value = getMarkConfig(property, model.markDef, model.config);\n        if (value !== undefined) {\n            e[property] = signalOrValueRef(value);\n        }\n    }\n    return e;\n}\nexport function getStyles(mark) {\n    var _a;\n    return [].concat(mark.type, (_a = mark.style) !== null && _a !== void 0 ? _a : []);\n}\nexport function getMarkPropOrConfig(channel, mark, config, opt = {}) {\n    const { vgChannel, ignoreVgConfig } = opt;\n    if (vgChannel && mark[vgChannel] !== undefined) {\n        return mark[vgChannel];\n    }\n    else if (mark[channel] !== undefined) {\n        return mark[channel];\n    }\n    else if (ignoreVgConfig && (!vgChannel || vgChannel === channel)) {\n        return undefined;\n    }\n    return getMarkConfig(channel, mark, config, opt);\n}\n/**\n * Return property value from style or mark specific config property if exists.\n * Otherwise, return general mark specific config.\n */\nexport function getMarkConfig(channel, mark, config, { vgChannel } = {}) {\n    return getFirstDefined(\n    // style config has highest precedence\n    vgChannel ? getMarkStyleConfig(channel, mark, config.style) : undefined, getMarkStyleConfig(channel, mark, config.style), \n    // then mark-specific config\n    vgChannel ? config[mark.type][vgChannel] : undefined, config[mark.type][channel], // Need to cast because MarkDef doesn't perfectly match with AnyMarkConfig, but if the type isn't available, we'll get nothing here, which is fine\n    // If there is vgChannel, skip vl channel.\n    // For example, vl size for text is vg fontSize, but config.mark.size is only for point size.\n    vgChannel ? config.mark[vgChannel] : config.mark[channel] // Need to cast for the same reason as above\n    );\n}\nexport function getMarkStyleConfig(prop, mark, styleConfigIndex) {\n    return getStyleConfig(prop, getStyles(mark), styleConfigIndex);\n}\nexport function getStyleConfig(p, styles, styleConfigIndex) {\n    styles = array(styles);\n    let value;\n    for (const style of styles) {\n        const styleConfig = styleConfigIndex[style];\n        if (styleConfig && styleConfig[p] !== undefined) {\n            value = styleConfig[p];\n        }\n    }\n    return value;\n}\n/**\n * Return Vega sort parameters (tuple of field and order).\n */\nexport function sortParams(orderDef, fieldRefOption) {\n    return array(orderDef).reduce((s, orderChannelDef) => {\n        var _a;\n        s.field.push(vgField(orderChannelDef, fieldRefOption));\n        s.order.push((_a = orderChannelDef.sort) !== null && _a !== void 0 ? _a : 'ascending');\n        return s;\n    }, { field: [], order: [] });\n}\nexport function mergeTitleFieldDefs(f1, f2) {\n    const merged = [...f1];\n    f2.forEach(fdToMerge => {\n        for (const fieldDef1 of merged) {\n            // If already exists, no need to append to merged array\n            if (deepEqual(fieldDef1, fdToMerge)) {\n                return;\n            }\n        }\n        merged.push(fdToMerge);\n    });\n    return merged;\n}\nexport function mergeTitle(title1, title2) {\n    if (deepEqual(title1, title2) || !title2) {\n        // if titles are the same or title2 is falsy\n        return title1;\n    }\n    else if (!title1) {\n        // if title1 is falsy\n        return title2;\n    }\n    else {\n        return [...array(title1), ...array(title2)].join(', ');\n    }\n}\nexport function mergeTitleComponent(v1, v2) {\n    const v1Val = v1.value;\n    const v2Val = v2.value;\n    if (v1Val == null || v2Val === null) {\n        return {\n            explicit: v1.explicit,\n            value: null\n        };\n    }\n    else if ((isText(v1Val) || isSignalRef(v1Val)) && (isText(v2Val) || isSignalRef(v2Val))) {\n        return {\n            explicit: v1.explicit,\n            value: mergeTitle(v1Val, v2Val)\n        };\n    }\n    else if (isText(v1Val) || isSignalRef(v1Val)) {\n        return {\n            explicit: v1.explicit,\n            value: v1Val\n        };\n    }\n    else if (isText(v2Val) || isSignalRef(v2Val)) {\n        return {\n            explicit: v1.explicit,\n            value: v2Val\n        };\n    }\n    else if (!isText(v1Val) && !isSignalRef(v1Val) && !isText(v2Val) && !isSignalRef(v2Val)) {\n        return {\n            explicit: v1.explicit,\n            value: mergeTitleFieldDefs(v1Val, v2Val)\n        };\n    }\n    /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n    throw new Error('It should never reach here');\n}\n//# sourceMappingURL=common.js.map","import { __rest } from \"tslib\";\nimport { array, isArray } from 'vega-util';\nimport { isArgmaxDef, isArgminDef } from './aggregate';\nimport { isBinned, isBinning } from './bin';\nimport { ANGLE, CHANNELS, COLOR, DESCRIPTION, DETAIL, FILL, FILLOPACITY, HREF, isChannel, isNonPositionScaleChannel, isSecondaryRangeChannel, isXorY, KEY, LATITUDE, LATITUDE2, LONGITUDE, LONGITUDE2, OPACITY, ORDER, RADIUS, RADIUS2, SHAPE, SIZE, STROKE, STROKEDASH, STROKEOPACITY, STROKEWIDTH, supportMark, TEXT, THETA, THETA2, TOOLTIP, URL, X, X2, Y, Y2 } from './channel';\nimport { binRequiresRange, getFieldDef, getGuide, hasConditionalFieldDef, initChannelDef, initFieldDef, isConditionalDef, isDatumDef, isFieldDef, isTypedFieldDef, isValueDef, title, vgField } from './channeldef';\nimport * as log from './log';\nimport { QUANTITATIVE, TEMPORAL } from './type';\nimport { keys, some } from './util';\nimport { isSignalRef } from './vega.schema';\nexport function channelHasField(encoding, channel) {\n    const channelDef = encoding && encoding[channel];\n    if (channelDef) {\n        if (isArray(channelDef)) {\n            return some(channelDef, fieldDef => !!fieldDef.field);\n        }\n        else {\n            return isFieldDef(channelDef) || hasConditionalFieldDef(channelDef);\n        }\n    }\n    return false;\n}\nexport function isAggregate(encoding) {\n    return some(CHANNELS, channel => {\n        if (channelHasField(encoding, channel)) {\n            const channelDef = encoding[channel];\n            if (isArray(channelDef)) {\n                return some(channelDef, fieldDef => !!fieldDef.aggregate);\n            }\n            else {\n                const fieldDef = getFieldDef(channelDef);\n                return fieldDef && !!fieldDef.aggregate;\n            }\n        }\n        return false;\n    });\n}\nexport function extractTransformsFromEncoding(oldEncoding, config) {\n    const groupby = [];\n    const bins = [];\n    const timeUnits = [];\n    const aggregate = [];\n    const encoding = {};\n    forEach(oldEncoding, (channelDef, channel) => {\n        // Extract potential embedded transformations along with remaining properties\n        if (isFieldDef(channelDef)) {\n            const { field, aggregate: aggOp, bin, timeUnit } = channelDef, remaining = __rest(channelDef, [\"field\", \"aggregate\", \"bin\", \"timeUnit\"]);\n            if (aggOp || timeUnit || bin) {\n                const guide = getGuide(channelDef);\n                const isTitleDefined = guide && guide.title;\n                let newField = vgField(channelDef, { forAs: true });\n                const newFieldDef = Object.assign(Object.assign(Object.assign({}, (isTitleDefined ? [] : { title: title(channelDef, config, { allowDisabling: true }) })), remaining), { \n                    // Always overwrite field\n                    field: newField });\n                if (aggOp) {\n                    let op;\n                    if (isArgmaxDef(aggOp)) {\n                        op = 'argmax';\n                        newField = vgField({ op: 'argmax', field: aggOp.argmax }, { forAs: true });\n                        newFieldDef.field = `${newField}.${field}`;\n                    }\n                    else if (isArgminDef(aggOp)) {\n                        op = 'argmin';\n                        newField = vgField({ op: 'argmin', field: aggOp.argmin }, { forAs: true });\n                        newFieldDef.field = `${newField}.${field}`;\n                    }\n                    else if (aggOp !== 'boxplot' && aggOp !== 'errorbar' && aggOp !== 'errorband') {\n                        op = aggOp;\n                    }\n                    if (op) {\n                        const aggregateEntry = {\n                            op,\n                            as: newField\n                        };\n                        if (field) {\n                            aggregateEntry.field = field;\n                        }\n                        aggregate.push(aggregateEntry);\n                    }\n                }\n                else {\n                    groupby.push(newField);\n                    if (isTypedFieldDef(channelDef) && isBinning(bin)) {\n                        bins.push({ bin, field, as: newField });\n                        // Add additional groupbys for range and end of bins\n                        groupby.push(vgField(channelDef, { binSuffix: 'end' }));\n                        if (binRequiresRange(channelDef, channel)) {\n                            groupby.push(vgField(channelDef, { binSuffix: 'range' }));\n                        }\n                        // Create accompanying 'x2' or 'y2' field if channel is 'x' or 'y' respectively\n                        if (isXorY(channel)) {\n                            const secondaryChannel = {\n                                field: newField + '_end'\n                            };\n                            encoding[channel + '2'] = secondaryChannel;\n                        }\n                        newFieldDef.bin = 'binned';\n                        if (!isSecondaryRangeChannel(channel)) {\n                            newFieldDef['type'] = QUANTITATIVE;\n                        }\n                    }\n                    else if (timeUnit) {\n                        timeUnits.push({\n                            timeUnit,\n                            field,\n                            as: newField\n                        });\n                        // define the format type for later compilation\n                        const formatType = isTypedFieldDef(channelDef) && channelDef.type !== TEMPORAL && 'time';\n                        if (formatType) {\n                            if (channel === TEXT || channel === TOOLTIP) {\n                                newFieldDef['formatType'] = formatType;\n                            }\n                            else if (isNonPositionScaleChannel(channel)) {\n                                newFieldDef['legend'] = Object.assign({ formatType }, newFieldDef['legend']);\n                            }\n                            else if (isXorY(channel)) {\n                                newFieldDef['axis'] = Object.assign({ formatType }, newFieldDef['axis']);\n                            }\n                        }\n                    }\n                }\n                // now the field should refer to post-transformed field instead\n                encoding[channel] = newFieldDef;\n            }\n            else {\n                groupby.push(field);\n                encoding[channel] = oldEncoding[channel];\n            }\n        }\n        else {\n            // For value def / signal ref / datum def, just copy\n            encoding[channel] = oldEncoding[channel];\n        }\n    });\n    return {\n        bins,\n        timeUnits,\n        aggregate,\n        groupby,\n        encoding\n    };\n}\nexport function markChannelCompatible(encoding, channel, mark) {\n    const markSupported = supportMark(channel, mark);\n    if (!markSupported) {\n        return false;\n    }\n    else if (markSupported === 'binned') {\n        const primaryFieldDef = encoding[channel === X2 ? X : Y];\n        // circle, point, square and tick only support x2/y2 when their corresponding x/y fieldDef\n        // has \"binned\" data and thus need x2/y2 to specify the bin-end field.\n        if (isFieldDef(primaryFieldDef) && isFieldDef(encoding[channel]) && isBinned(primaryFieldDef.bin)) {\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    return true;\n}\nexport function initEncoding(encoding, markDef, config) {\n    const mark = markDef.type;\n    return keys(encoding).reduce((normalizedEncoding, channel) => {\n        if (!isChannel(channel)) {\n            // Drop invalid channel\n            log.warn(log.message.invalidEncodingChannel(channel));\n            return normalizedEncoding;\n        }\n        const channelDef = encoding[channel];\n        if (channel === 'angle' && mark === 'arc' && !encoding.theta) {\n            log.warn(log.message.REPLACE_ANGLE_WITH_THETA);\n            channel = THETA;\n        }\n        if (!markChannelCompatible(encoding, channel, mark)) {\n            // Drop unsupported channel\n            log.warn(log.message.incompatibleChannel(channel, mark));\n            return normalizedEncoding;\n        }\n        // Drop line's size if the field is aggregated.\n        if (channel === SIZE && mark === 'line') {\n            const fieldDef = getFieldDef(encoding[channel]);\n            if (fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.aggregate) {\n                log.warn(log.message.LINE_WITH_VARYING_SIZE);\n                return normalizedEncoding;\n            }\n        }\n        // Drop color if either fill or stroke is specified\n        if (channel === COLOR && (markDef.filled ? 'fill' in encoding : 'stroke' in encoding)) {\n            log.warn(log.message.droppingColor('encoding', { fill: 'fill' in encoding, stroke: 'stroke' in encoding }));\n            return normalizedEncoding;\n        }\n        if (channel === DETAIL ||\n            (channel === ORDER && !isArray(channelDef) && !isValueDef(channelDef)) ||\n            (channel === TOOLTIP && isArray(channelDef))) {\n            if (channelDef) {\n                // Array of fieldDefs for detail channel (or production rule)\n                normalizedEncoding[channel] = array(channelDef).reduce((defs, fieldDef) => {\n                    if (!isFieldDef(fieldDef)) {\n                        log.warn(log.message.emptyFieldDef(fieldDef, channel));\n                    }\n                    else {\n                        defs.push(initFieldDef(fieldDef, channel));\n                    }\n                    return defs;\n                }, []);\n            }\n        }\n        else {\n            if (channel === TOOLTIP && channelDef === null) {\n                // Preserve null so we can use it to disable tooltip\n                normalizedEncoding[channel] = null;\n            }\n            else if (!isFieldDef(channelDef) &&\n                !isDatumDef(channelDef) &&\n                !isValueDef(channelDef) &&\n                !isConditionalDef(channelDef) &&\n                !isSignalRef(channelDef)) {\n                log.warn(log.message.emptyFieldDef(channelDef, channel));\n                return normalizedEncoding;\n            }\n            normalizedEncoding[channel] = initChannelDef(channelDef, channel, config);\n        }\n        return normalizedEncoding;\n    }, {});\n}\nexport function fieldDefs(encoding) {\n    const arr = [];\n    for (const channel of keys(encoding)) {\n        if (channelHasField(encoding, channel)) {\n            const channelDef = encoding[channel];\n            const channelDefArray = array(channelDef);\n            for (const def of channelDefArray) {\n                if (isFieldDef(def)) {\n                    arr.push(def);\n                }\n                else if (hasConditionalFieldDef(def)) {\n                    arr.push(def.condition);\n                }\n            }\n        }\n    }\n    return arr;\n}\nexport function forEach(mapping, f, thisArg) {\n    if (!mapping) {\n        return;\n    }\n    for (const channel of keys(mapping)) {\n        const el = mapping[channel];\n        if (isArray(el)) {\n            for (const channelDef of el) {\n                f.call(thisArg, channelDef, channel);\n            }\n        }\n        else {\n            f.call(thisArg, el, channel);\n        }\n    }\n}\nexport function reduce(mapping, f, init, thisArg) {\n    if (!mapping) {\n        return init;\n    }\n    return keys(mapping).reduce((r, channel) => {\n        const map = mapping[channel];\n        if (isArray(map)) {\n            return map.reduce((r1, channelDef) => {\n                return f.call(thisArg, r1, channelDef, channel);\n            }, r);\n        }\n        else {\n            return f.call(thisArg, r, map, channel);\n        }\n    }, init);\n}\n/**\n * Returns list of path grouping fields for the given encoding\n */\nexport function pathGroupingFields(mark, encoding) {\n    return keys(encoding).reduce((details, channel) => {\n        switch (channel) {\n            // x, y, x2, y2, lat, long, lat1, long2, order, tooltip, href, aria label, cursor should not cause lines to group\n            case X:\n            case Y:\n            case HREF:\n            case DESCRIPTION:\n            case URL:\n            case X2:\n            case Y2:\n            case THETA:\n            case THETA2:\n            case RADIUS:\n            case RADIUS2:\n            // falls through\n            case LATITUDE:\n            case LONGITUDE:\n            case LATITUDE2:\n            case LONGITUDE2:\n            // TODO: case 'cursor':\n            // text, shape, shouldn't be a part of line/trail/area [falls through]\n            case TEXT:\n            case SHAPE:\n            case ANGLE:\n            // falls through\n            // tooltip fields should not be added to group by [falls through]\n            case TOOLTIP:\n                return details;\n            case ORDER:\n                // order should not group line / trail\n                if (mark === 'line' || mark === 'trail') {\n                    return details;\n                }\n            // but order should group area for stacking (falls through)\n            case DETAIL:\n            case KEY: {\n                const channelDef = encoding[channel];\n                if (isArray(channelDef) || isFieldDef(channelDef)) {\n                    for (const fieldDef of array(channelDef)) {\n                        if (!fieldDef.aggregate) {\n                            details.push(vgField(fieldDef, {}));\n                        }\n                    }\n                }\n                return details;\n            }\n            case SIZE:\n                if (mark === 'trail') {\n                    // For trail, size should not group trail lines.\n                    return details;\n                }\n            // For line, size should group lines.\n            // falls through\n            case COLOR:\n            case FILL:\n            case STROKE:\n            case OPACITY:\n            case FILLOPACITY:\n            case STROKEOPACITY:\n            case STROKEDASH:\n            case STROKEWIDTH: {\n                // TODO strokeDashOffset:\n                // falls through\n                const fieldDef = getFieldDef(encoding[channel]);\n                if (fieldDef && !fieldDef.aggregate) {\n                    details.push(vgField(fieldDef, {}));\n                }\n                return details;\n            }\n        }\n    }, []);\n}\n//# sourceMappingURL=encoding.js.map","import { __rest } from \"tslib\";\nimport { isArray, isBoolean, isString } from 'vega-util';\nimport { isContinuousFieldOrDatumDef, isFieldDef } from '../channeldef';\nimport { fieldDefs } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { getFirstDefined } from '../util';\nimport { isSignalRef } from '../vega.schema';\nexport function filterTooltipWithAggregatedField(oldEncoding) {\n    const { tooltip } = oldEncoding, filteredEncoding = __rest(oldEncoding, [\"tooltip\"]);\n    if (!tooltip) {\n        return { filteredEncoding: oldEncoding };\n    }\n    let customTooltipWithAggregatedField;\n    let customTooltipWithoutAggregatedField;\n    if (isArray(tooltip)) {\n        for (const t of tooltip) {\n            if (t.aggregate) {\n                if (!customTooltipWithAggregatedField) {\n                    customTooltipWithAggregatedField = [];\n                }\n                customTooltipWithAggregatedField.push(t);\n            }\n            else {\n                if (!customTooltipWithoutAggregatedField) {\n                    customTooltipWithoutAggregatedField = [];\n                }\n                customTooltipWithoutAggregatedField.push(t);\n            }\n        }\n        if (customTooltipWithAggregatedField) {\n            filteredEncoding.tooltip = customTooltipWithAggregatedField;\n        }\n    }\n    else {\n        if (tooltip['aggregate']) {\n            filteredEncoding.tooltip = tooltip;\n        }\n        else {\n            customTooltipWithoutAggregatedField = tooltip;\n        }\n    }\n    if (isArray(customTooltipWithoutAggregatedField) && customTooltipWithoutAggregatedField.length === 1) {\n        customTooltipWithoutAggregatedField = customTooltipWithoutAggregatedField[0];\n    }\n    return { customTooltipWithoutAggregatedField, filteredEncoding };\n}\nexport function getCompositeMarkTooltip(tooltipSummary, continuousAxisChannelDef, encodingWithoutContinuousAxis, withFieldName = true) {\n    if ('tooltip' in encodingWithoutContinuousAxis) {\n        return { tooltip: encodingWithoutContinuousAxis.tooltip };\n    }\n    const fiveSummaryTooltip = tooltipSummary.map(({ fieldPrefix, titlePrefix }) => {\n        const mainTitle = withFieldName ? ` of ${continuousAxisChannelDef.field}` : '';\n        return {\n            field: fieldPrefix + continuousAxisChannelDef.field,\n            type: continuousAxisChannelDef.type,\n            title: isSignalRef(titlePrefix) ? { signal: titlePrefix + `\"${escape(mainTitle)}\"` } : titlePrefix + mainTitle\n        };\n    });\n    return {\n        tooltip: [\n            ...fiveSummaryTooltip,\n            // need to cast because TextFieldDef supports fewer types of bin\n            ...fieldDefs(encodingWithoutContinuousAxis)\n        ]\n    };\n}\nexport function getTitle(continuousAxisChannelDef) {\n    const { axis, title, field } = continuousAxisChannelDef;\n    return axis && axis.title !== undefined ? undefined : getFirstDefined(title, field);\n}\nexport function makeCompositeAggregatePartFactory(compositeMarkDef, continuousAxis, continuousAxisChannelDef, sharedEncoding, compositeMarkConfig) {\n    const { scale, axis } = continuousAxisChannelDef;\n    return ({ partName, mark, positionPrefix, endPositionPrefix = undefined, aria, extraEncoding = {} }) => {\n        const title = getTitle(continuousAxisChannelDef);\n        return partLayerMixins(compositeMarkDef, partName, compositeMarkConfig, aria, {\n            mark,\n            encoding: Object.assign(Object.assign(Object.assign({ [continuousAxis]: Object.assign(Object.assign(Object.assign({ field: positionPrefix + '_' + continuousAxisChannelDef.field, type: continuousAxisChannelDef.type }, (title !== undefined ? { title } : {})), (scale !== undefined ? { scale } : {})), (axis !== undefined ? { axis } : {})) }, (isString(endPositionPrefix)\n                ? {\n                    [continuousAxis + '2']: {\n                        field: endPositionPrefix + '_' + continuousAxisChannelDef.field\n                    }\n                }\n                : {})), sharedEncoding), extraEncoding)\n        });\n    };\n}\nexport function partLayerMixins(markDef, part, compositeMarkConfig, aria, partBaseSpec) {\n    const { clip, color, opacity } = markDef;\n    const mark = markDef.type;\n    if (markDef[part] || (markDef[part] === undefined && compositeMarkConfig[part])) {\n        return [\n            Object.assign(Object.assign({}, partBaseSpec), { mark: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, compositeMarkConfig[part]), (clip ? { clip } : {})), (color ? { color } : {})), (opacity ? { opacity } : {})), (isMarkDef(partBaseSpec.mark) ? partBaseSpec.mark : { type: partBaseSpec.mark })), { style: `${mark}-${part}` }), (isBoolean(markDef[part]) ? {} : markDef[part])), (aria === false ? { aria } : {})) })\n        ];\n    }\n    return [];\n}\nexport function compositeMarkContinuousAxis(spec, orient, compositeMark) {\n    const { encoding } = spec;\n    const continuousAxis = orient === 'vertical' ? 'y' : 'x';\n    const continuousAxisChannelDef = encoding[continuousAxis]; // Safe to cast because if x is not continuous fielddef, the orient would not be horizontal.\n    const continuousAxisChannelDef2 = encoding[continuousAxis + '2'];\n    const continuousAxisChannelDefError = encoding[continuousAxis + 'Error'];\n    const continuousAxisChannelDefError2 = encoding[continuousAxis + 'Error2'];\n    return {\n        continuousAxisChannelDef: filterAggregateFromChannelDef(continuousAxisChannelDef, compositeMark),\n        continuousAxisChannelDef2: filterAggregateFromChannelDef(continuousAxisChannelDef2, compositeMark),\n        continuousAxisChannelDefError: filterAggregateFromChannelDef(continuousAxisChannelDefError, compositeMark),\n        continuousAxisChannelDefError2: filterAggregateFromChannelDef(continuousAxisChannelDefError2, compositeMark),\n        continuousAxis\n    };\n}\nfunction filterAggregateFromChannelDef(continuousAxisChannelDef, compositeMark) {\n    if (continuousAxisChannelDef && continuousAxisChannelDef.aggregate) {\n        const { aggregate } = continuousAxisChannelDef, continuousAxisWithoutAggregate = __rest(continuousAxisChannelDef, [\"aggregate\"]);\n        if (aggregate !== compositeMark) {\n            log.warn(log.message.errorBarContinuousAxisHasCustomizedAggregate(aggregate, compositeMark));\n        }\n        return continuousAxisWithoutAggregate;\n    }\n    else {\n        return continuousAxisChannelDef;\n    }\n}\nexport function compositeMarkOrient(spec, compositeMark) {\n    const { mark, encoding } = spec;\n    const { x, y } = encoding;\n    if (isContinuousFieldOrDatumDef(x)) {\n        // x is continuous\n        if (isContinuousFieldOrDatumDef(y)) {\n            // both x and y are continuous\n            const xAggregate = isFieldDef(x) && x.aggregate;\n            const yAggregate = isFieldDef(y) && y.aggregate;\n            if (!xAggregate && yAggregate === compositeMark) {\n                return 'vertical';\n            }\n            else if (!yAggregate && xAggregate === compositeMark) {\n                return 'horizontal';\n            }\n            else if (xAggregate === compositeMark && yAggregate === compositeMark) {\n                throw new Error('Both x and y cannot have aggregate');\n            }\n            else {\n                if (isMarkDef(mark) && mark.orient) {\n                    return mark.orient;\n                }\n                // default orientation = vertical\n                return 'vertical';\n            }\n        }\n        // x is continuous but y is not\n        return 'horizontal';\n    }\n    else if (isContinuousFieldOrDatumDef(y)) {\n        // y is continuous but x is not\n        return 'vertical';\n    }\n    else {\n        // Neither x nor y is continuous.\n        throw new Error('Need a valid continuous axis for ' + compositeMark + 's');\n    }\n}\n//# sourceMappingURL=common.js.map","import { __rest } from \"tslib\";\nimport { isNumber, isObject } from 'vega-util';\nimport { getMarkPropOrConfig } from '../compile/common';\nimport { extractTransformsFromEncoding } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { CompositeMarkNormalizer } from './base';\nimport { compositeMarkContinuousAxis, compositeMarkOrient, filterTooltipWithAggregatedField, getCompositeMarkTooltip, getTitle, makeCompositeAggregatePartFactory, partLayerMixins } from './common';\nexport const BOXPLOT = 'boxplot';\nexport const BOXPLOT_PARTS = ['box', 'median', 'outliers', 'rule', 'ticks'];\nexport const boxPlotNormalizer = new CompositeMarkNormalizer(BOXPLOT, normalizeBoxPlot);\nexport function getBoxPlotType(extent) {\n    if (isNumber(extent)) {\n        return 'tukey';\n    }\n    // Ham: If we ever want to, we could add another extent syntax `{kIQR: number}` for the original [Q1-k*IQR, Q3+k*IQR] whisker and call this boxPlotType = `kIQR`. However, I'm not exposing this for now.\n    return extent;\n}\nexport function normalizeBoxPlot(spec, { config }) {\n    var _a, _b;\n    // TODO: use selection\n    const { mark, encoding: _encoding, selection, projection: _p } = spec, outerSpec = __rest(spec, [\"mark\", \"encoding\", \"selection\", \"projection\"]);\n    const markDef = isMarkDef(mark) ? mark : { type: mark };\n    // TODO(https://github.com/vega/vega-lite/issues/3702): add selection support\n    if (selection) {\n        log.warn(log.message.selectionNotSupported('boxplot'));\n    }\n    const extent = (_a = markDef.extent) !== null && _a !== void 0 ? _a : config.boxplot.extent;\n    const sizeValue = getMarkPropOrConfig('size', markDef, // TODO: https://github.com/vega/vega-lite/issues/6245\n    config);\n    const boxPlotType = getBoxPlotType(extent);\n    const { transform, continuousAxisChannelDef, continuousAxis, groupby, aggregate, encodingWithoutContinuousAxis, ticksOrient, boxOrient, customTooltipWithoutAggregatedField } = boxParams(spec, extent, config);\n    const { color, size } = encodingWithoutContinuousAxis, encodingWithoutSizeColorAndContinuousAxis = __rest(encodingWithoutContinuousAxis, [\"color\", \"size\"]);\n    const makeBoxPlotPart = (sharedEncoding) => {\n        return makeCompositeAggregatePartFactory(markDef, continuousAxis, continuousAxisChannelDef, sharedEncoding, config.boxplot);\n    };\n    const makeBoxPlotExtent = makeBoxPlotPart(encodingWithoutSizeColorAndContinuousAxis);\n    const makeBoxPlotBox = makeBoxPlotPart(encodingWithoutContinuousAxis);\n    const makeBoxPlotMidTick = makeBoxPlotPart(Object.assign(Object.assign({}, encodingWithoutSizeColorAndContinuousAxis), (size ? { size } : {})));\n    const fiveSummaryTooltipEncoding = getCompositeMarkTooltip([\n        { fieldPrefix: boxPlotType === 'min-max' ? 'upper_whisker_' : 'max_', titlePrefix: 'Max' },\n        { fieldPrefix: 'upper_box_', titlePrefix: 'Q3' },\n        { fieldPrefix: 'mid_box_', titlePrefix: 'Median' },\n        { fieldPrefix: 'lower_box_', titlePrefix: 'Q1' },\n        { fieldPrefix: boxPlotType === 'min-max' ? 'lower_whisker_' : 'min_', titlePrefix: 'Min' }\n    ], continuousAxisChannelDef, encodingWithoutContinuousAxis);\n    // ## Whisker Layers\n    const endTick = { type: 'tick', color: 'black', opacity: 1, orient: ticksOrient, invalid: null };\n    const whiskerTooltipEncoding = boxPlotType === 'min-max'\n        ? fiveSummaryTooltipEncoding // for min-max, show five-summary tooltip for whisker\n        : // for tukey / k-IQR, just show upper/lower-whisker\n            getCompositeMarkTooltip([\n                { fieldPrefix: 'upper_whisker_', titlePrefix: 'Upper Whisker' },\n                { fieldPrefix: 'lower_whisker_', titlePrefix: 'Lower Whisker' }\n            ], continuousAxisChannelDef, encodingWithoutContinuousAxis);\n    const whiskerLayers = [\n        ...makeBoxPlotExtent({\n            partName: 'rule',\n            mark: { type: 'rule', invalid: null },\n            positionPrefix: 'lower_whisker',\n            endPositionPrefix: 'lower_box',\n            aria: false,\n            extraEncoding: whiskerTooltipEncoding\n        }),\n        ...makeBoxPlotExtent({\n            partName: 'rule',\n            mark: { type: 'rule', invalid: null },\n            positionPrefix: 'upper_box',\n            endPositionPrefix: 'upper_whisker',\n            aria: false,\n            extraEncoding: whiskerTooltipEncoding\n        }),\n        ...makeBoxPlotExtent({\n            partName: 'ticks',\n            mark: endTick,\n            positionPrefix: 'lower_whisker',\n            aria: false,\n            extraEncoding: whiskerTooltipEncoding\n        }),\n        ...makeBoxPlotExtent({\n            partName: 'ticks',\n            mark: endTick,\n            positionPrefix: 'upper_whisker',\n            aria: false,\n            extraEncoding: whiskerTooltipEncoding\n        })\n    ];\n    // ## Box Layers\n    // TODO: support hiding certain mark parts\n    const boxLayers = [\n        ...(boxPlotType !== 'tukey' ? whiskerLayers : []),\n        ...makeBoxPlotBox({\n            partName: 'box',\n            mark: Object.assign(Object.assign({ type: 'bar' }, (sizeValue ? { size: sizeValue } : {})), { orient: boxOrient, invalid: null }),\n            positionPrefix: 'lower_box',\n            endPositionPrefix: 'upper_box',\n            aria: false,\n            extraEncoding: fiveSummaryTooltipEncoding\n        }),\n        ...makeBoxPlotMidTick({\n            partName: 'median',\n            mark: Object.assign(Object.assign(Object.assign({ type: 'tick', invalid: null }, (isObject(config.boxplot.median) && config.boxplot.median.color ? { color: config.boxplot.median.color } : {})), (sizeValue ? { size: sizeValue } : {})), { orient: ticksOrient, ariaRoleDescription: 'box' }),\n            positionPrefix: 'mid_box',\n            extraEncoding: fiveSummaryTooltipEncoding\n        })\n    ];\n    // ## Filtered Layers\n    let filteredLayersMixins;\n    if (boxPlotType !== 'min-max') {\n        const lowerBoxExpr = `datum[\"lower_box_${continuousAxisChannelDef.field}\"]`;\n        const upperBoxExpr = `datum[\"upper_box_${continuousAxisChannelDef.field}\"]`;\n        const iqrExpr = `(${upperBoxExpr} - ${lowerBoxExpr})`;\n        const lowerWhiskerExpr = `${lowerBoxExpr} - ${extent} * ${iqrExpr}`;\n        const upperWhiskerExpr = `${upperBoxExpr} + ${extent} * ${iqrExpr}`;\n        const fieldExpr = `datum[\"${continuousAxisChannelDef.field}\"]`;\n        const joinaggregateTransform = {\n            joinaggregate: boxParamsQuartiles(continuousAxisChannelDef.field),\n            groupby\n        };\n        let filteredWhiskerSpec = undefined;\n        if (boxPlotType === 'tukey') {\n            filteredWhiskerSpec = {\n                transform: [\n                    {\n                        filter: `(${lowerWhiskerExpr} <= ${fieldExpr}) && (${fieldExpr} <= ${upperWhiskerExpr})`\n                    },\n                    {\n                        aggregate: [\n                            {\n                                op: 'min',\n                                field: continuousAxisChannelDef.field,\n                                as: 'lower_whisker_' + continuousAxisChannelDef.field\n                            },\n                            {\n                                op: 'max',\n                                field: continuousAxisChannelDef.field,\n                                as: 'upper_whisker_' + continuousAxisChannelDef.field\n                            },\n                            // preserve lower_box / upper_box\n                            {\n                                op: 'min',\n                                field: 'lower_box_' + continuousAxisChannelDef.field,\n                                as: 'lower_box_' + continuousAxisChannelDef.field\n                            },\n                            {\n                                op: 'max',\n                                field: 'upper_box_' + continuousAxisChannelDef.field,\n                                as: 'upper_box_' + continuousAxisChannelDef.field\n                            },\n                            ...aggregate\n                        ],\n                        groupby\n                    }\n                ],\n                layer: whiskerLayers\n            };\n        }\n        const { tooltip } = encodingWithoutSizeColorAndContinuousAxis, encodingWithoutSizeColorContinuousAxisAndTooltip = __rest(encodingWithoutSizeColorAndContinuousAxis, [\"tooltip\"]);\n        const { scale, axis } = continuousAxisChannelDef;\n        const title = getTitle(continuousAxisChannelDef);\n        const outlierLayersMixins = partLayerMixins(markDef, 'outliers', config.boxplot, true, {\n            transform: [{ filter: `(${fieldExpr} < ${lowerWhiskerExpr}) || (${fieldExpr} > ${upperWhiskerExpr})` }],\n            mark: 'point',\n            encoding: Object.assign(Object.assign({ [continuousAxis]: Object.assign(Object.assign(Object.assign({ field: continuousAxisChannelDef.field, type: continuousAxisChannelDef.type }, (title !== undefined ? { title } : {})), (scale !== undefined ? { scale } : {})), (axis !== undefined ? { axis } : {})) }, encodingWithoutSizeColorContinuousAxisAndTooltip), (customTooltipWithoutAggregatedField ? { tooltip: customTooltipWithoutAggregatedField } : {}))\n        })[0];\n        if (outlierLayersMixins && filteredWhiskerSpec) {\n            filteredLayersMixins = {\n                transform: [joinaggregateTransform],\n                layer: [outlierLayersMixins, filteredWhiskerSpec]\n            };\n        }\n        else if (outlierLayersMixins) {\n            filteredLayersMixins = outlierLayersMixins;\n            filteredLayersMixins.transform.unshift(joinaggregateTransform);\n        }\n        else if (filteredWhiskerSpec) {\n            filteredLayersMixins = filteredWhiskerSpec;\n            filteredLayersMixins.transform.unshift(joinaggregateTransform);\n        }\n    }\n    if (filteredLayersMixins) {\n        // tukey box plot with outliers included\n        return Object.assign(Object.assign({}, outerSpec), { layer: [\n                filteredLayersMixins,\n                {\n                    // boxplot\n                    transform,\n                    layer: boxLayers\n                }\n            ] });\n    }\n    return Object.assign(Object.assign({}, outerSpec), { transform: ((_b = outerSpec.transform) !== null && _b !== void 0 ? _b : []).concat(transform), layer: boxLayers });\n}\nfunction boxParamsQuartiles(continousAxisField) {\n    return [\n        {\n            op: 'q1',\n            field: continousAxisField,\n            as: 'lower_box_' + continousAxisField\n        },\n        {\n            op: 'q3',\n            field: continousAxisField,\n            as: 'upper_box_' + continousAxisField\n        }\n    ];\n}\nfunction boxParams(spec, extent, config) {\n    const orient = compositeMarkOrient(spec, BOXPLOT);\n    const { continuousAxisChannelDef, continuousAxis } = compositeMarkContinuousAxis(spec, orient, BOXPLOT);\n    const continuousFieldName = continuousAxisChannelDef.field;\n    const boxPlotType = getBoxPlotType(extent);\n    const boxplotSpecificAggregate = [\n        ...boxParamsQuartiles(continuousFieldName),\n        {\n            op: 'median',\n            field: continuousFieldName,\n            as: 'mid_box_' + continuousFieldName\n        },\n        {\n            op: 'min',\n            field: continuousFieldName,\n            as: (boxPlotType === 'min-max' ? 'lower_whisker_' : 'min_') + continuousFieldName\n        },\n        {\n            op: 'max',\n            field: continuousFieldName,\n            as: (boxPlotType === 'min-max' ? 'upper_whisker_' : 'max_') + continuousFieldName\n        }\n    ];\n    const postAggregateCalculates = boxPlotType === 'min-max' || boxPlotType === 'tukey'\n        ? []\n        : [\n            // This is for the  original k-IQR, which we do not expose\n            {\n                calculate: `datum[\"upper_box_${continuousFieldName}\"] - datum[\"lower_box_${continuousFieldName}\"]`,\n                as: 'iqr_' + continuousFieldName\n            },\n            {\n                calculate: `min(datum[\"upper_box_${continuousFieldName}\"] + datum[\"iqr_${continuousFieldName}\"] * ${extent}, datum[\"max_${continuousFieldName}\"])`,\n                as: 'upper_whisker_' + continuousFieldName\n            },\n            {\n                calculate: `max(datum[\"lower_box_${continuousFieldName}\"] - datum[\"iqr_${continuousFieldName}\"] * ${extent}, datum[\"min_${continuousFieldName}\"])`,\n                as: 'lower_whisker_' + continuousFieldName\n            }\n        ];\n    const _a = spec.encoding, _b = continuousAxis, oldContinuousAxisChannelDef = _a[_b], oldEncodingWithoutContinuousAxis = __rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\n    const { customTooltipWithoutAggregatedField, filteredEncoding } = filterTooltipWithAggregatedField(oldEncodingWithoutContinuousAxis);\n    const { bins, timeUnits, aggregate, groupby, encoding: encodingWithoutContinuousAxis } = extractTransformsFromEncoding(filteredEncoding, config);\n    const ticksOrient = orient === 'vertical' ? 'horizontal' : 'vertical';\n    const boxOrient = orient;\n    const transform = [\n        ...bins,\n        ...timeUnits,\n        {\n            aggregate: [...aggregate, ...boxplotSpecificAggregate],\n            groupby\n        },\n        ...postAggregateCalculates\n    ];\n    return {\n        transform,\n        groupby,\n        aggregate,\n        continuousAxisChannelDef,\n        continuousAxis,\n        encodingWithoutContinuousAxis,\n        ticksOrient,\n        boxOrient,\n        customTooltipWithoutAggregatedField\n    };\n}\n//# sourceMappingURL=boxplot.js.map","import { __rest } from \"tslib\";\nimport { isContinuousFieldOrDatumDef, isFieldOrDatumDef, title } from '../channeldef';\nimport { extractTransformsFromEncoding } from '../encoding';\nimport * as log from '../log';\nimport { isMarkDef } from '../mark';\nimport { replaceAll, titleCase } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { compositeMarkContinuousAxis, compositeMarkOrient, getCompositeMarkTooltip, makeCompositeAggregatePartFactory } from './common';\nexport const ERRORBAR = 'errorbar';\nexport const ERRORBAR_PARTS = ['ticks', 'rule'];\nexport const errorBarNormalizer = new CompositeMarkNormalizer(ERRORBAR, normalizeErrorBar);\nexport function normalizeErrorBar(spec, { config }) {\n    const { transform, continuousAxisChannelDef, continuousAxis, encodingWithoutContinuousAxis, ticksOrient, markDef, outerSpec, tooltipEncoding } = errorBarParams(spec, ERRORBAR, config);\n    const makeErrorBarPart = makeCompositeAggregatePartFactory(markDef, continuousAxis, continuousAxisChannelDef, encodingWithoutContinuousAxis, config.errorbar);\n    const tick = { type: 'tick', orient: ticksOrient };\n    const layer = [\n        ...makeErrorBarPart({\n            partName: 'ticks',\n            mark: tick,\n            positionPrefix: 'lower',\n            aria: false,\n            extraEncoding: tooltipEncoding\n        }),\n        ...makeErrorBarPart({\n            partName: 'ticks',\n            mark: tick,\n            positionPrefix: 'upper',\n            aria: false,\n            extraEncoding: tooltipEncoding\n        }),\n        ...makeErrorBarPart({\n            partName: 'rule',\n            mark: {\n                type: 'rule',\n                ariaRoleDescription: 'errorbar'\n            },\n            positionPrefix: 'lower',\n            endPositionPrefix: 'upper',\n            extraEncoding: tooltipEncoding\n        })\n    ];\n    return Object.assign(Object.assign(Object.assign({}, outerSpec), { transform }), (layer.length > 1 ? { layer } : Object.assign({}, layer[0])));\n}\nfunction errorBarOrientAndInputType(spec, compositeMark) {\n    const { encoding } = spec;\n    if (errorBarIsInputTypeRaw(encoding)) {\n        return {\n            orient: compositeMarkOrient(spec, compositeMark),\n            inputType: 'raw'\n        };\n    }\n    const isTypeAggregatedUpperLower = errorBarIsInputTypeAggregatedUpperLower(encoding);\n    const isTypeAggregatedError = errorBarIsInputTypeAggregatedError(encoding);\n    const x = encoding.x;\n    const y = encoding.y;\n    if (isTypeAggregatedUpperLower) {\n        // type is aggregated-upper-lower\n        if (isTypeAggregatedError) {\n            throw new Error(`${compositeMark} cannot be both type aggregated-upper-lower and aggregated-error`);\n        }\n        const x2 = encoding.x2;\n        const y2 = encoding.y2;\n        if (isFieldOrDatumDef(x2) && isFieldOrDatumDef(y2)) {\n            // having both x, x2 and y, y2\n            throw new Error(`${compositeMark} cannot have both x2 and y2`);\n        }\n        else if (isFieldOrDatumDef(x2)) {\n            if (isContinuousFieldOrDatumDef(x)) {\n                // having x, x2 quantitative and field y, y2 are not specified\n                return { orient: 'horizontal', inputType: 'aggregated-upper-lower' };\n            }\n            else {\n                // having x, x2 that are not both quantitative\n                throw new Error(`Both x and x2 have to be quantitative in ${compositeMark}`);\n            }\n        }\n        else if (isFieldOrDatumDef(y2)) {\n            // y2 is a FieldDef\n            if (isContinuousFieldOrDatumDef(y)) {\n                // having y, y2 quantitative and field x, x2 are not specified\n                return { orient: 'vertical', inputType: 'aggregated-upper-lower' };\n            }\n            else {\n                // having y, y2 that are not both quantitative\n                throw new Error(`Both y and y2 have to be quantitative in ${compositeMark}`);\n            }\n        }\n        throw new Error('No ranged axis');\n    }\n    else {\n        // type is aggregated-error\n        const xError = encoding.xError;\n        const xError2 = encoding.xError2;\n        const yError = encoding.yError;\n        const yError2 = encoding.yError2;\n        if (isFieldOrDatumDef(xError2) && !isFieldOrDatumDef(xError)) {\n            // having xError2 without xError\n            throw new Error(`${compositeMark} cannot have xError2 without xError`);\n        }\n        if (isFieldOrDatumDef(yError2) && !isFieldOrDatumDef(yError)) {\n            // having yError2 without yError\n            throw new Error(`${compositeMark} cannot have yError2 without yError`);\n        }\n        if (isFieldOrDatumDef(xError) && isFieldOrDatumDef(yError)) {\n            // having both xError and yError\n            throw new Error(`${compositeMark} cannot have both xError and yError with both are quantiative`);\n        }\n        else if (isFieldOrDatumDef(xError)) {\n            if (isContinuousFieldOrDatumDef(x)) {\n                // having x and xError that are all quantitative\n                return { orient: 'horizontal', inputType: 'aggregated-error' };\n            }\n            else {\n                // having x, xError, and xError2 that are not all quantitative\n                throw new Error('All x, xError, and xError2 (if exist) have to be quantitative');\n            }\n        }\n        else if (isFieldOrDatumDef(yError)) {\n            if (isContinuousFieldOrDatumDef(y)) {\n                // having y and yError that are all quantitative\n                return { orient: 'vertical', inputType: 'aggregated-error' };\n            }\n            else {\n                // having y, yError, and yError2 that are not all quantitative\n                throw new Error('All y, yError, and yError2 (if exist) have to be quantitative');\n            }\n        }\n        throw new Error('No ranged axis');\n    }\n}\nfunction errorBarIsInputTypeRaw(encoding) {\n    return ((isFieldOrDatumDef(encoding.x) || isFieldOrDatumDef(encoding.y)) &&\n        !isFieldOrDatumDef(encoding.x2) &&\n        !isFieldOrDatumDef(encoding.y2) &&\n        !isFieldOrDatumDef(encoding.xError) &&\n        !isFieldOrDatumDef(encoding.xError2) &&\n        !isFieldOrDatumDef(encoding.yError) &&\n        !isFieldOrDatumDef(encoding.yError2));\n}\nfunction errorBarIsInputTypeAggregatedUpperLower(encoding) {\n    return isFieldOrDatumDef(encoding.x2) || isFieldOrDatumDef(encoding.y2);\n}\nfunction errorBarIsInputTypeAggregatedError(encoding) {\n    return (isFieldOrDatumDef(encoding.xError) ||\n        isFieldOrDatumDef(encoding.xError2) ||\n        isFieldOrDatumDef(encoding.yError) ||\n        isFieldOrDatumDef(encoding.yError2));\n}\nexport function errorBarParams(spec, compositeMark, config) {\n    var _a;\n    // TODO: use selection\n    const { mark, encoding, selection, projection: _p } = spec, outerSpec = __rest(spec, [\"mark\", \"encoding\", \"selection\", \"projection\"]);\n    const markDef = isMarkDef(mark) ? mark : { type: mark };\n    // TODO(https://github.com/vega/vega-lite/issues/3702): add selection support\n    if (selection) {\n        log.warn(log.message.selectionNotSupported(compositeMark));\n    }\n    const { orient, inputType } = errorBarOrientAndInputType(spec, compositeMark);\n    const { continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, continuousAxis } = compositeMarkContinuousAxis(spec, orient, compositeMark);\n    const { errorBarSpecificAggregate, postAggregateCalculates, tooltipSummary, tooltipTitleWithFieldName } = errorBarAggregationAndCalculation(markDef, continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, inputType, compositeMark, config);\n    const _b = encoding, _c = continuousAxis, oldContinuousAxisChannelDef = _b[_c], _d = continuousAxis === 'x' ? 'x2' : 'y2', oldContinuousAxisChannelDef2 = _b[_d], _e = continuousAxis === 'x' ? 'xError' : 'yError', oldContinuousAxisChannelDefError = _b[_e], _f = continuousAxis === 'x' ? 'xError2' : 'yError2', oldContinuousAxisChannelDefError2 = _b[_f], oldEncodingWithoutContinuousAxis = __rest(_b, [typeof _c === \"symbol\" ? _c : _c + \"\", typeof _d === \"symbol\" ? _d : _d + \"\", typeof _e === \"symbol\" ? _e : _e + \"\", typeof _f === \"symbol\" ? _f : _f + \"\"]);\n    const { bins, timeUnits, aggregate: oldAggregate, groupby: oldGroupBy, encoding: encodingWithoutContinuousAxis } = extractTransformsFromEncoding(oldEncodingWithoutContinuousAxis, config);\n    const aggregate = [...oldAggregate, ...errorBarSpecificAggregate];\n    const groupby = inputType !== 'raw' ? [] : oldGroupBy;\n    const tooltipEncoding = getCompositeMarkTooltip(tooltipSummary, continuousAxisChannelDef, encodingWithoutContinuousAxis, tooltipTitleWithFieldName);\n    return {\n        transform: [\n            ...((_a = outerSpec.transform) !== null && _a !== void 0 ? _a : []),\n            ...bins,\n            ...timeUnits,\n            ...(aggregate.length === 0 ? [] : [{ aggregate, groupby }]),\n            ...postAggregateCalculates\n        ],\n        groupby,\n        continuousAxisChannelDef,\n        continuousAxis,\n        encodingWithoutContinuousAxis,\n        ticksOrient: orient === 'vertical' ? 'horizontal' : 'vertical',\n        markDef,\n        outerSpec,\n        tooltipEncoding\n    };\n}\nfunction errorBarAggregationAndCalculation(markDef, continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, inputType, compositeMark, config) {\n    let errorBarSpecificAggregate = [];\n    let postAggregateCalculates = [];\n    const continuousFieldName = continuousAxisChannelDef.field;\n    let tooltipSummary;\n    let tooltipTitleWithFieldName = false;\n    if (inputType === 'raw') {\n        const center = markDef.center\n            ? markDef.center\n            : markDef.extent\n                ? markDef.extent === 'iqr'\n                    ? 'median'\n                    : 'mean'\n                : config.errorbar.center;\n        const extent = markDef.extent ? markDef.extent : center === 'mean' ? 'stderr' : 'iqr';\n        if ((center === 'median') !== (extent === 'iqr')) {\n            log.warn(log.message.errorBarCenterIsUsedWithWrongExtent(center, extent, compositeMark));\n        }\n        if (extent === 'stderr' || extent === 'stdev') {\n            errorBarSpecificAggregate = [\n                { op: extent, field: continuousFieldName, as: 'extent_' + continuousFieldName },\n                { op: center, field: continuousFieldName, as: 'center_' + continuousFieldName }\n            ];\n            postAggregateCalculates = [\n                {\n                    calculate: `datum[\"center_${continuousFieldName}\"] + datum[\"extent_${continuousFieldName}\"]`,\n                    as: 'upper_' + continuousFieldName\n                },\n                {\n                    calculate: `datum[\"center_${continuousFieldName}\"] - datum[\"extent_${continuousFieldName}\"]`,\n                    as: 'lower_' + continuousFieldName\n                }\n            ];\n            tooltipSummary = [\n                { fieldPrefix: 'center_', titlePrefix: titleCase(center) },\n                { fieldPrefix: 'upper_', titlePrefix: getTitlePrefix(center, extent, '+') },\n                { fieldPrefix: 'lower_', titlePrefix: getTitlePrefix(center, extent, '-') }\n            ];\n            tooltipTitleWithFieldName = true;\n        }\n        else {\n            if (markDef.center && markDef.extent) {\n                log.warn(log.message.errorBarCenterIsNotNeeded(markDef.extent, compositeMark));\n            }\n            let centerOp;\n            let lowerExtentOp;\n            let upperExtentOp;\n            if (extent === 'ci') {\n                centerOp = 'mean';\n                lowerExtentOp = 'ci0';\n                upperExtentOp = 'ci1';\n            }\n            else {\n                centerOp = 'median';\n                lowerExtentOp = 'q1';\n                upperExtentOp = 'q3';\n            }\n            errorBarSpecificAggregate = [\n                { op: lowerExtentOp, field: continuousFieldName, as: 'lower_' + continuousFieldName },\n                { op: upperExtentOp, field: continuousFieldName, as: 'upper_' + continuousFieldName },\n                { op: centerOp, field: continuousFieldName, as: 'center_' + continuousFieldName }\n            ];\n            tooltipSummary = [\n                {\n                    fieldPrefix: 'upper_',\n                    titlePrefix: title({ field: continuousFieldName, aggregate: upperExtentOp, type: 'quantitative' }, config, {\n                        allowDisabling: false\n                    })\n                },\n                {\n                    fieldPrefix: 'lower_',\n                    titlePrefix: title({ field: continuousFieldName, aggregate: lowerExtentOp, type: 'quantitative' }, config, {\n                        allowDisabling: false\n                    })\n                },\n                {\n                    fieldPrefix: 'center_',\n                    titlePrefix: title({ field: continuousFieldName, aggregate: centerOp, type: 'quantitative' }, config, {\n                        allowDisabling: false\n                    })\n                }\n            ];\n        }\n    }\n    else {\n        if (markDef.center || markDef.extent) {\n            log.warn(log.message.errorBarCenterAndExtentAreNotNeeded(markDef.center, markDef.extent));\n        }\n        if (inputType === 'aggregated-upper-lower') {\n            tooltipSummary = [];\n            postAggregateCalculates = [\n                { calculate: `datum[\"${continuousAxisChannelDef2.field}\"]`, as: 'upper_' + continuousFieldName },\n                { calculate: `datum[\"${continuousFieldName}\"]`, as: 'lower_' + continuousFieldName }\n            ];\n        }\n        else if (inputType === 'aggregated-error') {\n            tooltipSummary = [{ fieldPrefix: '', titlePrefix: continuousFieldName }];\n            postAggregateCalculates = [\n                {\n                    calculate: `datum[\"${continuousFieldName}\"] + datum[\"${continuousAxisChannelDefError.field}\"]`,\n                    as: 'upper_' + continuousFieldName\n                }\n            ];\n            if (continuousAxisChannelDefError2) {\n                postAggregateCalculates.push({\n                    calculate: `datum[\"${continuousFieldName}\"] + datum[\"${continuousAxisChannelDefError2.field}\"]`,\n                    as: 'lower_' + continuousFieldName\n                });\n            }\n            else {\n                postAggregateCalculates.push({\n                    calculate: `datum[\"${continuousFieldName}\"] - datum[\"${continuousAxisChannelDefError.field}\"]`,\n                    as: 'lower_' + continuousFieldName\n                });\n            }\n        }\n        for (const postAggregateCalculate of postAggregateCalculates) {\n            tooltipSummary.push({\n                fieldPrefix: postAggregateCalculate.as.substring(0, 6),\n                titlePrefix: replaceAll(replaceAll(postAggregateCalculate.calculate, 'datum[\"', ''), '\"]', '')\n            });\n        }\n    }\n    return { postAggregateCalculates, errorBarSpecificAggregate, tooltipSummary, tooltipTitleWithFieldName };\n}\nfunction getTitlePrefix(center, extent, operation) {\n    return titleCase(center) + ' ' + operation + ' ' + extent;\n}\n//# sourceMappingURL=errorbar.js.map","import * as log from '../log';\nimport { CompositeMarkNormalizer } from './base';\nimport { makeCompositeAggregatePartFactory } from './common';\nimport { errorBarParams } from './errorbar';\nexport const ERRORBAND = 'errorband';\nexport const ERRORBAND_PARTS = ['band', 'borders'];\nexport const errorBandNormalizer = new CompositeMarkNormalizer(ERRORBAND, normalizeErrorBand);\nexport function normalizeErrorBand(spec, { config }) {\n    const { transform, continuousAxisChannelDef, continuousAxis, encodingWithoutContinuousAxis, markDef, outerSpec, tooltipEncoding } = errorBarParams(spec, ERRORBAND, config);\n    const errorBandDef = markDef;\n    const makeErrorBandPart = makeCompositeAggregatePartFactory(errorBandDef, continuousAxis, continuousAxisChannelDef, encodingWithoutContinuousAxis, config.errorband);\n    const is2D = spec.encoding.x !== undefined && spec.encoding.y !== undefined;\n    let bandMark = { type: is2D ? 'area' : 'rect' };\n    let bordersMark = { type: is2D ? 'line' : 'rule' };\n    const interpolate = Object.assign(Object.assign({}, (errorBandDef.interpolate ? { interpolate: errorBandDef.interpolate } : {})), (errorBandDef.tension && errorBandDef.interpolate ? { tension: errorBandDef.tension } : {}));\n    if (is2D) {\n        bandMark = Object.assign(Object.assign(Object.assign({}, bandMark), interpolate), { ariaRoleDescription: 'errorband' });\n        bordersMark = Object.assign(Object.assign({}, bordersMark), interpolate);\n    }\n    else if (errorBandDef.interpolate) {\n        log.warn(log.message.errorBand1DNotSupport('interpolate'));\n    }\n    else if (errorBandDef.tension) {\n        log.warn(log.message.errorBand1DNotSupport('tension'));\n    }\n    return Object.assign(Object.assign({}, outerSpec), { transform, layer: [\n            ...makeErrorBandPart({\n                partName: 'band',\n                mark: bandMark,\n                positionPrefix: 'lower',\n                endPositionPrefix: 'upper',\n                extraEncoding: tooltipEncoding\n            }),\n            ...makeErrorBandPart({\n                partName: 'borders',\n                mark: bordersMark,\n                positionPrefix: 'lower',\n                aria: false,\n                extraEncoding: tooltipEncoding\n            }),\n            ...makeErrorBandPart({\n                partName: 'borders',\n                mark: bordersMark,\n                positionPrefix: 'upper',\n                aria: false,\n                extraEncoding: tooltipEncoding\n            })\n        ] });\n}\n//# sourceMappingURL=errorband.js.map","import { keys } from '../util';\nimport { CompositeMarkNormalizer } from './base';\nimport { BOXPLOT, BOXPLOT_PARTS, normalizeBoxPlot } from './boxplot';\nimport { ERRORBAND, ERRORBAND_PARTS, normalizeErrorBand } from './errorband';\nimport { ERRORBAR, ERRORBAR_PARTS, normalizeErrorBar } from './errorbar';\n/**\n * Registry index for all composite mark's normalizer\n */\nconst compositeMarkRegistry = {};\nexport function add(mark, run, parts) {\n    const normalizer = new CompositeMarkNormalizer(mark, run);\n    compositeMarkRegistry[mark] = { normalizer, parts };\n}\nexport function remove(mark) {\n    delete compositeMarkRegistry[mark];\n}\nexport function getAllCompositeMarks() {\n    return keys(compositeMarkRegistry);\n}\nadd(BOXPLOT, normalizeBoxPlot, BOXPLOT_PARTS);\nadd(ERRORBAR, normalizeErrorBar, ERRORBAR_PARTS);\nadd(ERRORBAND, normalizeErrorBand, ERRORBAND_PARTS);\n//# sourceMappingURL=index.js.map","export const VL_ONLY_LEGEND_CONFIG = [\n    'gradientHorizontalMaxLength',\n    'gradientHorizontalMinLength',\n    'gradientVerticalMaxLength',\n    'gradientVerticalMinLength',\n    'unselectedOpacity'\n];\n//# sourceMappingURL=guide.js.map","import { keys } from './util';\nexport const LEGEND_SCALE_CHANNELS = [\n    'size',\n    'shape',\n    'fill',\n    'stroke',\n    'strokeDash',\n    'strokeWidth',\n    'opacity'\n];\nexport const SIGNAL_LEGEND_PROP_INDEX = {\n    fillColor: {\n        part: 'legend',\n        vgProp: 'fill'\n    },\n    gradientStrokeColor: {\n        part: 'gradient',\n        vgProp: 'stroke'\n    },\n    labelColor: {\n        part: 'labels',\n        vgProp: 'fill'\n    },\n    strokeColor: {\n        part: 'legend',\n        vgProp: 'stroke'\n    },\n    symbolFillColor: {\n        part: 'symbols',\n        vgProp: 'fill'\n    },\n    symbolStrokeColor: {\n        part: 'symbols',\n        vgProp: 'stroke'\n    },\n    titleColor: {\n        part: 'title',\n        vgProp: 'fill'\n    }\n};\nexport const defaultLegendConfig = {\n    gradientHorizontalMaxLength: 200,\n    gradientHorizontalMinLength: 100,\n    gradientVerticalMaxLength: 200,\n    gradientVerticalMinLength: 64,\n    unselectedOpacity: 0.35\n};\nexport const COMMON_LEGEND_PROPERTY_INDEX = {\n    aria: 1,\n    clipHeight: 1,\n    columnPadding: 1,\n    columns: 1,\n    cornerRadius: 1,\n    description: 1,\n    direction: 1,\n    fillColor: 1,\n    format: 1,\n    formatType: 1,\n    gradientLength: 1,\n    gradientOpacity: 1,\n    gradientStrokeColor: 1,\n    gradientStrokeWidth: 1,\n    gradientThickness: 1,\n    gridAlign: 1,\n    labelAlign: 1,\n    labelBaseline: 1,\n    labelColor: 1,\n    labelFont: 1,\n    labelFontSize: 1,\n    labelFontStyle: 1,\n    labelFontWeight: 1,\n    labelLimit: 1,\n    labelOffset: 1,\n    labelOpacity: 1,\n    labelOverlap: 1,\n    labelPadding: 1,\n    labelSeparation: 1,\n    legendX: 1,\n    legendY: 1,\n    offset: 1,\n    orient: 1,\n    padding: 1,\n    rowPadding: 1,\n    strokeColor: 1,\n    symbolDash: 1,\n    symbolDashOffset: 1,\n    symbolFillColor: 1,\n    symbolLimit: 1,\n    symbolOffset: 1,\n    symbolOpacity: 1,\n    symbolSize: 1,\n    symbolStrokeColor: 1,\n    symbolStrokeWidth: 1,\n    symbolType: 1,\n    tickCount: 1,\n    tickMinStep: 1,\n    title: 1,\n    titleAlign: 1,\n    titleAnchor: 1,\n    titleBaseline: 1,\n    titleColor: 1,\n    titleFont: 1,\n    titleFontSize: 1,\n    titleFontStyle: 1,\n    titleFontWeight: 1,\n    titleLimit: 1,\n    titleLineHeight: 1,\n    titleOpacity: 1,\n    titleOrient: 1,\n    titlePadding: 1,\n    type: 1,\n    values: 1,\n    zindex: 1\n};\nexport const LEGEND_PROPERTIES = keys(COMMON_LEGEND_PROPERTY_INDEX);\n//# sourceMappingURL=legend.js.map","import { isObject } from 'vega-util';\nexport const SELECTION_ID = '_vgsid_';\nexport const defaultConfig = {\n    single: {\n        on: 'click',\n        fields: [SELECTION_ID],\n        resolve: 'global',\n        empty: 'all',\n        clear: 'dblclick'\n    },\n    multi: {\n        on: 'click',\n        fields: [SELECTION_ID],\n        toggle: 'event.shiftKey',\n        resolve: 'global',\n        empty: 'all',\n        clear: 'dblclick'\n    },\n    interval: {\n        on: '[mousedown, window:mouseup] > window:mousemove!',\n        encodings: ['x', 'y'],\n        translate: '[mousedown, window:mouseup] > window:mousemove!',\n        zoom: 'wheel!',\n        mark: { fill: '#333', fillOpacity: 0.125, stroke: 'white' },\n        resolve: 'global',\n        clear: 'dblclick'\n    }\n};\nexport function isLegendBinding(bind) {\n    return !!bind && (bind === 'legend' || !!bind.legend);\n}\nexport function isLegendStreamBinding(bind) {\n    return isLegendBinding(bind) && isObject(bind);\n}\n//# sourceMappingURL=selection.js.map","export function isAnyConcatSpec(spec) {\n    return isVConcatSpec(spec) || isHConcatSpec(spec) || isConcatSpec(spec);\n}\nexport function isConcatSpec(spec) {\n    return 'concat' in spec;\n}\nexport function isVConcatSpec(spec) {\n    return 'vconcat' in spec;\n}\nexport function isHConcatSpec(spec) {\n    return 'hconcat' in spec;\n}\n//# sourceMappingURL=concat.js.map","import { isNumber, isObject } from 'vega-util';\nimport { keys } from '../util';\nimport { isConcatSpec, isVConcatSpec } from './concat';\nimport { isFacetMapping, isFacetSpec } from './facet';\nexport function isStep(size) {\n    return isObject(size) && size['step'] !== undefined;\n}\nexport function isFrameMixins(o) {\n    return o['view'] || o['width'] || o['height'];\n}\nexport const DEFAULT_SPACING = 20;\nconst COMPOSITION_LAYOUT_INDEX = {\n    align: 1,\n    bounds: 1,\n    center: 1,\n    columns: 1,\n    spacing: 1\n};\nconst COMPOSITION_LAYOUT_PROPERTIES = keys(COMPOSITION_LAYOUT_INDEX);\nexport function extractCompositionLayout(spec, specType, config) {\n    var _a, _b;\n    const compositionConfig = config[specType];\n    const layout = {};\n    // Apply config first\n    const { spacing: spacingConfig, columns } = compositionConfig;\n    if (spacingConfig !== undefined) {\n        layout.spacing = spacingConfig;\n    }\n    if (columns !== undefined) {\n        if ((isFacetSpec(spec) && !isFacetMapping(spec.facet)) || isConcatSpec(spec)) {\n            layout.columns = columns;\n        }\n    }\n    if (isVConcatSpec(spec)) {\n        layout.columns = 1;\n    }\n    // Then copy properties from the spec\n    for (const prop of COMPOSITION_LAYOUT_PROPERTIES) {\n        if (spec[prop] !== undefined) {\n            if (prop === 'spacing') {\n                const spacing = spec[prop];\n                layout[prop] = isNumber(spacing)\n                    ? spacing\n                    : {\n                        row: (_a = spacing.row) !== null && _a !== void 0 ? _a : spacingConfig,\n                        column: (_b = spacing.column) !== null && _b !== void 0 ? _b : spacingConfig\n                    };\n            }\n            else {\n                layout[prop] = spec[prop];\n            }\n        }\n    }\n    return layout;\n}\n//# sourceMappingURL=base.js.map","import { __rest } from \"tslib\";\nimport { isObject, mergeConfig } from 'vega-util';\nimport { isConditionalAxisValue } from './axis';\nimport { getAllCompositeMarks } from './compositemark';\nimport { VL_ONLY_LEGEND_CONFIG } from './guide';\nimport { defaultLegendConfig } from './legend';\nimport * as mark from './mark';\nimport { PRIMITIVE_MARKS, VL_ONLY_MARK_CONFIG_PROPERTIES, VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX } from './mark';\nimport { defaultScaleConfig } from './scale';\nimport { defaultConfig as defaultSelectionConfig } from './selection';\nimport { DEFAULT_SPACING, isStep } from './spec/base';\nimport { extractTitleConfig } from './title';\nimport { duplicate, getFirstDefined, isEmpty } from './util';\nexport function getViewConfigContinuousSize(viewConfig, channel) {\n    var _a;\n    return (_a = viewConfig[channel]) !== null && _a !== void 0 ? _a : viewConfig[channel === 'width' ? 'continuousWidth' : 'continuousHeight']; // get width/height for backwards compatibility\n}\nexport function getViewConfigDiscreteStep(viewConfig, channel) {\n    const size = getViewConfigDiscreteSize(viewConfig, channel);\n    return isStep(size) ? size.step : DEFAULT_STEP;\n}\nexport function getViewConfigDiscreteSize(viewConfig, channel) {\n    var _a;\n    const size = (_a = viewConfig[channel]) !== null && _a !== void 0 ? _a : viewConfig[channel === 'width' ? 'discreteWidth' : 'discreteHeight']; // get width/height for backwards compatibility\n    return getFirstDefined(size, { step: viewConfig.step });\n}\nexport const DEFAULT_STEP = 20;\nexport const defaultViewConfig = {\n    continuousWidth: 200,\n    continuousHeight: 200,\n    step: DEFAULT_STEP\n};\nexport function isVgScheme(rangeScheme) {\n    return rangeScheme && !!rangeScheme['scheme'];\n}\nexport const defaultConfig = {\n    background: 'white',\n    padding: 5,\n    timeFormat: '%b %d, %Y',\n    countTitle: 'Count of Records',\n    view: defaultViewConfig,\n    mark: mark.defaultMarkConfig,\n    arc: {},\n    area: {},\n    bar: mark.defaultBarConfig,\n    circle: {},\n    geoshape: {},\n    image: {},\n    line: {},\n    point: {},\n    rect: mark.defaultRectConfig,\n    rule: { color: 'black' },\n    square: {},\n    text: { color: 'black' },\n    tick: mark.defaultTickConfig,\n    trail: {},\n    boxplot: {\n        size: 14,\n        extent: 1.5,\n        box: {},\n        median: { color: 'white' },\n        outliers: {},\n        rule: {},\n        ticks: null\n    },\n    errorbar: {\n        center: 'mean',\n        rule: true,\n        ticks: false\n    },\n    errorband: {\n        band: {\n            opacity: 0.3\n        },\n        borders: false\n    },\n    scale: defaultScaleConfig,\n    projection: {},\n    legend: defaultLegendConfig,\n    header: { titlePadding: 10, labelPadding: 10 },\n    headerColumn: {},\n    headerRow: {},\n    headerFacet: {},\n    selection: defaultSelectionConfig,\n    style: {},\n    title: {},\n    facet: { spacing: DEFAULT_SPACING },\n    concat: { spacing: DEFAULT_SPACING }\n};\n// Tableau10 color palette, copied from `vegaScale.scheme('tableau10')`\nconst tab10 = [\n    '#4c78a8',\n    '#f58518',\n    '#e45756',\n    '#72b7b2',\n    '#54a24b',\n    '#eeca3b',\n    '#b279a2',\n    '#ff9da6',\n    '#9d755d',\n    '#bab0ac'\n];\nexport const DEFAULT_FONT_SIZE = {\n    text: 11,\n    guideLabel: 10,\n    guideTitle: 11,\n    groupTitle: 13,\n    groupSubtitle: 12\n};\nexport const DEFAULT_COLOR = {\n    blue: tab10[0],\n    orange: tab10[1],\n    red: tab10[2],\n    teal: tab10[3],\n    green: tab10[4],\n    yellow: tab10[5],\n    purple: tab10[6],\n    pink: tab10[7],\n    brown: tab10[8],\n    gray0: '#000',\n    gray1: '#111',\n    gray2: '#222',\n    gray3: '#333',\n    gray4: '#444',\n    gray5: '#555',\n    gray6: '#666',\n    gray7: '#777',\n    gray8: '#888',\n    gray9: '#999',\n    gray10: '#aaa',\n    gray11: '#bbb',\n    gray12: '#ccc',\n    gray13: '#ddd',\n    gray14: '#eee',\n    gray15: '#fff'\n};\nexport function colorSignalConfig(color = {}) {\n    return {\n        signals: [\n            {\n                name: 'color',\n                value: isObject(color) ? Object.assign(Object.assign({}, DEFAULT_COLOR), color) : DEFAULT_COLOR\n            }\n        ],\n        mark: { color: { signal: 'color.blue' } },\n        rule: { color: { signal: 'color.gray0' } },\n        text: {\n            color: { signal: 'color.gray0' }\n        },\n        style: {\n            'guide-label': {\n                fill: { signal: 'color.gray0' }\n            },\n            'guide-title': {\n                fill: { signal: 'color.gray0' }\n            },\n            'group-title': {\n                fill: { signal: 'color.gray0' }\n            },\n            'group-subtitle': {\n                fill: { signal: 'color.gray0' }\n            },\n            cell: {\n                stroke: { signal: 'color.gray8' }\n            }\n        },\n        axis: {\n            domainColor: { signal: 'color.gray13' },\n            gridColor: { signal: 'color.gray8' },\n            tickColor: { signal: 'color.gray13' }\n        },\n        range: {\n            category: [\n                { signal: 'color.blue' },\n                { signal: 'color.orange' },\n                { signal: 'color.red' },\n                { signal: 'color.teal' },\n                { signal: 'color.green' },\n                { signal: 'color.yellow' },\n                { signal: 'color.purple' },\n                { signal: 'color.pink' },\n                { signal: 'color.brown' },\n                { signal: 'color.grey8' }\n            ]\n        }\n    };\n}\nexport function fontSizeSignalConfig(fontSize) {\n    return {\n        signals: [\n            {\n                name: 'fontSize',\n                value: isObject(fontSize) ? Object.assign(Object.assign({}, DEFAULT_FONT_SIZE), fontSize) : DEFAULT_FONT_SIZE\n            }\n        ],\n        text: {\n            fontSize: { signal: 'fontSize.text' }\n        },\n        style: {\n            'guide-label': {\n                fontSize: { signal: 'fontSize.guideLabel' }\n            },\n            'guide-title': {\n                fontSize: { signal: 'fontSize.guideTitle' }\n            },\n            'group-title': {\n                fontSize: { signal: 'fontSize.groupTitle' }\n            },\n            'group-subtitle': {\n                fontSize: { signal: 'fontSize.groupSubtitle' }\n            }\n        }\n    };\n}\nexport function fontConfig(font) {\n    return {\n        text: { font },\n        style: {\n            'guide-label': { font },\n            'guide-title': { font },\n            'group-title': { font },\n            'group-subtitle': { font }\n        }\n    };\n}\nexport function initConfig(config = {}) {\n    const { color, font, fontSize } = config, restConfig = __rest(config, [\"color\", \"font\", \"fontSize\"]);\n    return mergeConfig({}, defaultConfig, font ? fontConfig(font) : {}, color ? colorSignalConfig(color) : {}, fontSize ? fontSizeSignalConfig(fontSize) : {}, restConfig || {});\n}\nconst MARK_STYLES = ['view', ...PRIMITIVE_MARKS];\nconst VL_ONLY_CONFIG_PROPERTIES = [\n    'color',\n    'fontSize',\n    'background',\n    'padding',\n    'facet',\n    'concat',\n    'numberFormat',\n    'timeFormat',\n    'countTitle',\n    'header',\n    'axisQuantitative',\n    'axisTemporal',\n    'axisDiscrete',\n    'axisPoint',\n    'axisXBand',\n    'axisXPoint',\n    'axisXDiscrete',\n    'axisXQuantitative',\n    'axisXTemporal',\n    'axisYBand',\n    'axisYPoint',\n    'axisYDiscrete',\n    'axisYQuantitative',\n    'axisYTemporal',\n    'scale',\n    'selection',\n    'overlay' // FIXME: Redesign and unhide this\n];\nconst VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = Object.assign({ view: ['continuousWidth', 'continuousHeight', 'discreteWidth', 'discreteHeight', 'step'] }, VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX);\nexport function stripAndRedirectConfig(config) {\n    config = duplicate(config);\n    for (const prop of VL_ONLY_CONFIG_PROPERTIES) {\n        delete config[prop];\n    }\n    if (config.axis) {\n        // delete condition axis config\n        for (const prop in config.axis) {\n            if (isConditionalAxisValue(config.axis[prop])) {\n                delete config.axis[prop];\n            }\n        }\n    }\n    if (config.legend) {\n        for (const prop of VL_ONLY_LEGEND_CONFIG) {\n            delete config.legend[prop];\n        }\n    }\n    // Remove Vega-Lite only generic mark config\n    if (config.mark) {\n        for (const prop of VL_ONLY_MARK_CONFIG_PROPERTIES) {\n            delete config.mark[prop];\n        }\n        if (config.mark.tooltip && isObject(config.mark.tooltip)) {\n            delete config.mark.tooltip;\n        }\n    }\n    for (const markType of MARK_STYLES) {\n        // Remove Vega-Lite-only mark config\n        for (const prop of VL_ONLY_MARK_CONFIG_PROPERTIES) {\n            delete config[markType][prop];\n        }\n        // Remove Vega-Lite only mark-specific config\n        const vlOnlyMarkSpecificConfigs = VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX[markType];\n        if (vlOnlyMarkSpecificConfigs) {\n            for (const prop of vlOnlyMarkSpecificConfigs) {\n                delete config[markType][prop];\n            }\n        }\n        // Redirect mark config to config.style so that mark config only affect its own mark type\n        // without affecting other marks that share the same underlying Vega marks.\n        // For example, config.rect should not affect bar marks.\n        redirectConfigToStyleConfig(config, markType);\n    }\n    for (const m of getAllCompositeMarks()) {\n        // Clean up the composite mark config as we don't need them in the output specs anymore\n        delete config[m];\n    }\n    redirectTitleConfig(config);\n    // Remove empty config objects.\n    for (const prop in config) {\n        if (isObject(config[prop]) && isEmpty(config[prop])) {\n            delete config[prop];\n        }\n    }\n    return isEmpty(config) ? undefined : config;\n}\n/**\n *\n * Redirect config.title -- so that title config do not affect header labels,\n * which also uses `title` directive to implement.\n *\n * For subtitle configs in config.title, keep them in config.title as header titles never have subtitles.\n */\nfunction redirectTitleConfig(config) {\n    const { titleMarkConfig, subtitleMarkConfig, subtitle } = extractTitleConfig(config.title);\n    // set config.style if title/subtitleMarkConfig is not an empty object\n    if (!isEmpty(titleMarkConfig)) {\n        config.style['group-title'] = Object.assign(Object.assign({}, config.style['group-title']), titleMarkConfig // config.title has higher precedence than config.style.group-title in Vega\n        );\n    }\n    if (!isEmpty(subtitleMarkConfig)) {\n        config.style['group-subtitle'] = Object.assign(Object.assign({}, config.style['group-subtitle']), subtitleMarkConfig);\n    }\n    // subtitle part can stay in config.title since header titles do not use subtitle\n    if (!isEmpty(subtitle)) {\n        config.title = subtitle;\n    }\n    else {\n        delete config.title;\n    }\n}\nfunction redirectConfigToStyleConfig(config, prop, // string = composite mark\ntoProp, compositeMarkPart) {\n    const propConfig = compositeMarkPart ? config[prop][compositeMarkPart] : config[prop];\n    if (prop === 'view') {\n        toProp = 'cell'; // View's default style is \"cell\"\n    }\n    const style = Object.assign(Object.assign({}, propConfig), config.style[toProp !== null && toProp !== void 0 ? toProp : prop]);\n    // set config.style if it is not an empty object\n    if (!isEmpty(style)) {\n        config.style[toProp !== null && toProp !== void 0 ? toProp : prop] = style;\n    }\n    if (!compositeMarkPart) {\n        // For composite mark, so don't delete the whole config yet as we have to do multiple redirections.\n        delete config[prop];\n    }\n}\n//# sourceMappingURL=config.js.map","export function isLayerSpec(spec) {\n    return 'layer' in spec;\n}\n//# sourceMappingURL=layer.js.map","import { isArray } from 'vega-util';\nexport function isRepeatSpec(spec) {\n    return 'repeat' in spec;\n}\nexport function isLayerRepeatSpec(spec) {\n    return !isArray(spec.repeat) && spec.repeat['layer'];\n}\n//# sourceMappingURL=repeat.js.map","export { isAnyConcatSpec, isHConcatSpec, isVConcatSpec } from './concat';\nexport { isFacetSpec } from './facet';\nexport { isLayerSpec } from './layer';\nexport { isRepeatSpec } from './repeat';\nexport { isUnitSpec } from './unit';\n//# sourceMappingURL=index.js.map","import { __rest } from \"tslib\";\nimport * as log from '../log';\nimport { isConcatSpec, isHConcatSpec, isVConcatSpec } from './concat';\nimport { isFacetSpec } from './facet';\nimport { isLayerSpec } from './layer';\nimport { isRepeatSpec } from './repeat';\nimport { isUnitSpec } from './unit';\nexport class SpecMapper {\n    map(spec, params) {\n        if (isFacetSpec(spec)) {\n            return this.mapFacet(spec, params);\n        }\n        else if (isRepeatSpec(spec)) {\n            return this.mapRepeat(spec, params);\n        }\n        else if (isHConcatSpec(spec)) {\n            return this.mapHConcat(spec, params);\n        }\n        else if (isVConcatSpec(spec)) {\n            return this.mapVConcat(spec, params);\n        }\n        else if (isConcatSpec(spec)) {\n            return this.mapConcat(spec, params);\n        }\n        else {\n            return this.mapLayerOrUnit(spec, params);\n        }\n    }\n    mapLayerOrUnit(spec, params) {\n        if (isLayerSpec(spec)) {\n            return this.mapLayer(spec, params);\n        }\n        else if (isUnitSpec(spec)) {\n            return this.mapUnit(spec, params);\n        }\n        throw new Error(log.message.invalidSpec(spec));\n    }\n    mapLayer(spec, params) {\n        return Object.assign(Object.assign({}, spec), { layer: spec.layer.map(subspec => this.mapLayerOrUnit(subspec, params)) });\n    }\n    mapHConcat(spec, params) {\n        return Object.assign(Object.assign({}, spec), { hconcat: spec.hconcat.map(subspec => this.map(subspec, params)) });\n    }\n    mapVConcat(spec, params) {\n        return Object.assign(Object.assign({}, spec), { vconcat: spec.vconcat.map(subspec => this.map(subspec, params)) });\n    }\n    mapConcat(spec, params) {\n        const { concat } = spec, rest = __rest(spec, [\"concat\"]);\n        return Object.assign(Object.assign({}, rest), { concat: concat.map(subspec => this.map(subspec, params)) });\n    }\n    mapFacet(spec, params) {\n        return Object.assign(Object.assign({}, spec), { \n            // TODO: remove \"any\" once we support all facet listed in https://github.com/vega/vega-lite/issues/2760\n            spec: this.map(spec.spec, params) });\n    }\n    mapRepeat(spec, params) {\n        return Object.assign(Object.assign({}, spec), { \n            // as any is required here since TS cannot infer that the output type satisfies the input type\n            spec: this.map(spec.spec, params) });\n    }\n}\n//# sourceMappingURL=map.js.map","import { array, isBoolean } from 'vega-util';\nimport { SUM_OPS } from './aggregate';\nimport { getSecondaryRangeChannel, NONPOSITION_CHANNELS } from './channel';\nimport { channelDefType, getFieldDef, isFieldDef, isFieldOrDatumDef, vgField } from './channeldef';\nimport { channelHasField, isAggregate } from './encoding';\nimport * as log from './log';\nimport { ARC, AREA, BAR, CIRCLE, isMarkDef, isPathMark, LINE, POINT, RULE, SQUARE, TEXT, TICK } from './mark';\nimport { ScaleType } from './scale';\nimport { contains } from './util';\nconst STACK_OFFSET_INDEX = {\n    zero: 1,\n    center: 1,\n    normalize: 1\n};\nexport function isStackOffset(s) {\n    return s in STACK_OFFSET_INDEX;\n}\nexport const STACKABLE_MARKS = new Set([ARC, BAR, AREA, RULE, POINT, CIRCLE, SQUARE, LINE, TEXT, TICK]);\nexport const STACK_BY_DEFAULT_MARKS = new Set([BAR, AREA, ARC]);\nfunction potentialStackedChannel(encoding, x) {\n    var _a, _b;\n    const y = x === 'x' ? 'y' : 'radius';\n    const xDef = encoding[x];\n    const yDef = encoding[y];\n    if (isFieldDef(xDef) && isFieldDef(yDef)) {\n        if (channelDefType(xDef) === 'quantitative' && channelDefType(yDef) === 'quantitative') {\n            if (xDef.stack) {\n                return x;\n            }\n            else if (yDef.stack) {\n                return y;\n            }\n            const xAggregate = isFieldDef(xDef) && !!xDef.aggregate;\n            const yAggregate = isFieldDef(yDef) && !!yDef.aggregate;\n            // if there is no explicit stacking, only apply stack if there is only one aggregate for x or y\n            if (xAggregate !== yAggregate) {\n                return xAggregate ? x : y;\n            }\n            else {\n                const xScale = (_a = xDef.scale) === null || _a === void 0 ? void 0 : _a.type;\n                const yScale = (_b = yDef.scale) === null || _b === void 0 ? void 0 : _b.type;\n                if (xScale && xScale !== 'linear') {\n                    return y;\n                }\n                else if (yScale && yScale !== 'linear') {\n                    return x;\n                }\n            }\n        }\n        else if (channelDefType(xDef) === 'quantitative') {\n            return x;\n        }\n        else if (channelDefType(yDef) === 'quantitative') {\n            return y;\n        }\n    }\n    else if (channelDefType(xDef) === 'quantitative') {\n        return x;\n    }\n    else if (channelDefType(yDef) === 'quantitative') {\n        return y;\n    }\n    return undefined;\n}\nfunction getDimensionChannel(channel) {\n    switch (channel) {\n        case 'x':\n            return 'y';\n        case 'y':\n            return 'x';\n        case 'theta':\n            return 'radius';\n        case 'radius':\n            return 'theta';\n    }\n}\n// Note: CompassQL uses this method and only pass in required properties of each argument object.\n// If required properties change, make sure to update CompassQL.\nexport function stack(m, encoding, opt = {}) {\n    const mark = isMarkDef(m) ? m.type : m;\n    // Should have stackable mark\n    if (!STACKABLE_MARKS.has(mark)) {\n        return null;\n    }\n    // Run potential stacked twice, one for Cartesian and another for Polar,\n    // so text marks can be stacked in any of the coordinates.\n    // Note: The logic here is not perfectly correct.  If we want to support stacked dot plots where each dot is a pie chart with label, we have to change the stack logic here to separate Cartesian stacking for polar stacking.\n    // However, since we probably never want to do that, let's just note the limitation here.\n    const fieldChannel = potentialStackedChannel(encoding, 'x') || potentialStackedChannel(encoding, 'theta');\n    if (!fieldChannel) {\n        return null;\n    }\n    const stackedFieldDef = encoding[fieldChannel];\n    const stackedField = isFieldDef(stackedFieldDef) ? vgField(stackedFieldDef, {}) : undefined;\n    let dimensionChannel = getDimensionChannel(fieldChannel);\n    let dimensionDef = encoding[dimensionChannel];\n    let dimensionField = isFieldDef(dimensionDef) ? vgField(dimensionDef, {}) : undefined;\n    // avoid grouping by the stacked field\n    if (dimensionField === stackedField) {\n        dimensionField = undefined;\n        dimensionDef = undefined;\n        dimensionChannel = undefined;\n    }\n    // Should have grouping level of detail that is different from the dimension field\n    const stackBy = NONPOSITION_CHANNELS.reduce((sc, channel) => {\n        // Ignore tooltip in stackBy (https://github.com/vega/vega-lite/issues/4001)\n        if (channel !== 'tooltip' && channelHasField(encoding, channel)) {\n            const channelDef = encoding[channel];\n            for (const cDef of array(channelDef)) {\n                const fieldDef = getFieldDef(cDef);\n                if (fieldDef.aggregate) {\n                    continue;\n                }\n                // Check whether the channel's field is identical to x/y's field or if the channel is a repeat\n                const f = vgField(fieldDef, {});\n                if (\n                // if fielddef is a repeat, just include it in the stack by\n                !f ||\n                    // otherwise, the field must be different from x and y fields.\n                    f !== dimensionField) {\n                    sc.push({ channel, fieldDef });\n                }\n            }\n        }\n        return sc;\n    }, []);\n    // Automatically determine offset\n    let offset;\n    if (stackedFieldDef.stack !== undefined) {\n        if (isBoolean(stackedFieldDef.stack)) {\n            offset = stackedFieldDef.stack ? 'zero' : null;\n        }\n        else {\n            offset = stackedFieldDef.stack;\n        }\n    }\n    else if (stackBy.length > 0 && STACK_BY_DEFAULT_MARKS.has(mark)) {\n        // Bar and Area with sum ops are automatically stacked by default\n        offset = 'zero';\n    }\n    if (!offset || !isStackOffset(offset)) {\n        return null;\n    }\n    if (isAggregate(encoding) && stackBy.length === 0) {\n        return null;\n    }\n    // warn when stacking non-linear\n    if (stackedFieldDef.scale && stackedFieldDef.scale.type && stackedFieldDef.scale.type !== ScaleType.LINEAR) {\n        if (opt.disallowNonLinearStack) {\n            return null;\n        }\n        else {\n            log.warn(log.message.cannotStackNonLinearScale(stackedFieldDef.scale.type));\n        }\n    }\n    // Check if it is a ranged mark\n    if (isFieldOrDatumDef(encoding[getSecondaryRangeChannel(fieldChannel)])) {\n        if (stackedFieldDef.stack !== undefined) {\n            log.warn(log.message.cannotStackRangedMark(fieldChannel));\n        }\n        return null;\n    }\n    // Warn if stacking non-summative aggregate\n    if (isFieldDef(stackedFieldDef) && stackedFieldDef.aggregate && !contains(SUM_OPS, stackedFieldDef.aggregate)) {\n        log.warn(log.message.stackNonSummativeAggregate(stackedFieldDef.aggregate));\n    }\n    return {\n        groupbyChannel: dimensionDef ? dimensionChannel : undefined,\n        groupbyField: dimensionField,\n        fieldChannel,\n        impute: stackedFieldDef.impute === null ? false : isPathMark(mark),\n        stackBy,\n        offset\n    };\n}\n//# sourceMappingURL=stack.js.map","import { __rest } from \"tslib\";\nimport { isObject } from 'vega-util';\nimport { isMarkDef } from '../mark';\nimport { isUnitSpec } from '../spec/unit';\nimport { stack } from '../stack';\nimport { keys, omit, pick } from '../util';\nfunction dropLineAndPoint(markDef) {\n    const { point: _point, line: _line } = markDef, mark = __rest(markDef, [\"point\", \"line\"]);\n    return keys(mark).length > 1 ? mark : mark.type;\n}\nfunction dropLineAndPointFromConfig(config) {\n    for (const mark of ['line', 'area', 'rule', 'trail']) {\n        if (config[mark]) {\n            config = Object.assign(Object.assign({}, config), { \n                // TODO: remove as any\n                [mark]: omit(config[mark], ['point', 'line']) });\n        }\n    }\n    return config;\n}\nfunction getPointOverlay(markDef, markConfig = {}, encoding) {\n    if (markDef.point === 'transparent') {\n        return { opacity: 0 };\n    }\n    else if (markDef.point) {\n        // truthy : true or object\n        return isObject(markDef.point) ? markDef.point : {};\n    }\n    else if (markDef.point !== undefined) {\n        // false or null\n        return null;\n    }\n    else {\n        // undefined (not disabled)\n        if (markConfig.point || encoding.shape) {\n            // enable point overlay if config[mark].point is truthy or if encoding.shape is provided\n            return isObject(markConfig.point) ? markConfig.point : {};\n        }\n        // markDef.point is defined as falsy\n        return undefined;\n    }\n}\nfunction getLineOverlay(markDef, markConfig = {}) {\n    if (markDef.line) {\n        // true or object\n        return markDef.line === true ? {} : markDef.line;\n    }\n    else if (markDef.line !== undefined) {\n        // false or null\n        return null;\n    }\n    else {\n        // undefined (not disabled)\n        if (markConfig.line) {\n            // enable line overlay if config[mark].line is truthy\n            return markConfig.line === true ? {} : markConfig.line;\n        }\n        // markDef.point is defined as falsy\n        return undefined;\n    }\n}\nexport class PathOverlayNormalizer {\n    constructor() {\n        this.name = 'path-overlay';\n    }\n    hasMatchingType(spec, config) {\n        if (isUnitSpec(spec)) {\n            const { mark, encoding } = spec;\n            const markDef = isMarkDef(mark) ? mark : { type: mark };\n            switch (markDef.type) {\n                case 'line':\n                case 'rule':\n                case 'trail':\n                    return !!getPointOverlay(markDef, config[markDef.type], encoding);\n                case 'area':\n                    return (\n                    // false / null are also included as we want to remove the properties\n                    !!getPointOverlay(markDef, config[markDef.type], encoding) ||\n                        !!getLineOverlay(markDef, config[markDef.type]));\n            }\n        }\n        return false;\n    }\n    run(spec, params, normalize) {\n        const { config } = params;\n        const { selection, projection, encoding, mark } = spec, outerSpec = __rest(spec, [\"selection\", \"projection\", \"encoding\", \"mark\"]);\n        const markDef = isMarkDef(mark) ? mark : { type: mark };\n        const pointOverlay = getPointOverlay(markDef, config[markDef.type], encoding);\n        const lineOverlay = markDef.type === 'area' && getLineOverlay(markDef, config[markDef.type]);\n        const layer = [\n            Object.assign(Object.assign({}, (selection ? { selection } : {})), { mark: dropLineAndPoint(Object.assign(Object.assign({}, (markDef.type === 'area' && markDef.opacity === undefined && markDef.fillOpacity === undefined\n                    ? { opacity: 0.7 }\n                    : {})), markDef)), \n                // drop shape from encoding as this might be used to trigger point overlay\n                encoding: omit(encoding, ['shape']) })\n        ];\n        // FIXME: determine rules for applying selections.\n        // Need to copy stack config to overlayed layer\n        const stackProps = stack(markDef, encoding);\n        let overlayEncoding = encoding;\n        if (stackProps) {\n            const { fieldChannel: stackFieldChannel, offset } = stackProps;\n            overlayEncoding = Object.assign(Object.assign({}, encoding), { [stackFieldChannel]: Object.assign(Object.assign({}, encoding[stackFieldChannel]), (offset ? { stack: offset } : {})) });\n        }\n        if (lineOverlay) {\n            layer.push(Object.assign(Object.assign({}, (projection ? { projection } : {})), { mark: Object.assign(Object.assign({ type: 'line' }, pick(markDef, ['clip', 'interpolate', 'tension', 'tooltip'])), lineOverlay), encoding: overlayEncoding }));\n        }\n        if (pointOverlay) {\n            layer.push(Object.assign(Object.assign({}, (projection ? { projection } : {})), { mark: Object.assign(Object.assign({ type: 'point', opacity: 1, filled: true }, pick(markDef, ['clip', 'tooltip'])), pointOverlay), encoding: overlayEncoding }));\n        }\n        return normalize(Object.assign(Object.assign({}, outerSpec), { layer }), Object.assign(Object.assign({}, params), { config: dropLineAndPointFromConfig(config) }));\n    }\n}\n//# sourceMappingURL=pathoverlay.js.map","import { __rest } from \"tslib\";\nimport { getSizeChannel, POSITION_SCALE_CHANNELS } from '../channel';\nimport { isFieldOrDatumDef } from '../channeldef';\nimport * as log from '../log';\nimport { isUnitSpec } from '../spec/unit';\nimport { isEmpty } from '../util';\nexport class RangeStepNormalizer {\n    constructor() {\n        this.name = 'RangeStep';\n    }\n    hasMatchingType(spec) {\n        var _a;\n        if (isUnitSpec(spec) && spec.encoding) {\n            for (const channel of POSITION_SCALE_CHANNELS) {\n                const def = spec.encoding[channel];\n                if (def && isFieldOrDatumDef(def)) {\n                    if ((_a = def === null || def === void 0 ? void 0 : def.scale) === null || _a === void 0 ? void 0 : _a['rangeStep']) {\n                        return true;\n                    }\n                }\n            }\n        }\n        return false;\n    }\n    run(spec) {\n        var _a;\n        const sizeMixins = {};\n        let encoding = Object.assign({}, spec.encoding);\n        for (const channel of POSITION_SCALE_CHANNELS) {\n            const sizeType = getSizeChannel(channel);\n            const def = encoding[channel];\n            if (def && isFieldOrDatumDef(def)) {\n                if ((_a = def === null || def === void 0 ? void 0 : def.scale) === null || _a === void 0 ? void 0 : _a['rangeStep']) {\n                    const { scale } = def, defWithoutScale = __rest(def, [\"scale\"]);\n                    const _b = scale, { rangeStep } = _b, scaleWithoutRangeStep = __rest(_b, [\"rangeStep\"]);\n                    sizeMixins[sizeType] = { step: scale['rangeStep'] };\n                    log.warn(log.message.RANGE_STEP_DEPRECATED);\n                    encoding = Object.assign(Object.assign({}, encoding), { [channel]: Object.assign(Object.assign({}, defWithoutScale), (isEmpty(scaleWithoutRangeStep) ? {} : { scale: scaleWithoutRangeStep })) });\n                }\n            }\n        }\n        return Object.assign(Object.assign(Object.assign({}, sizeMixins), spec), { encoding });\n    }\n}\n//# sourceMappingURL=rangestep.js.map","import { __rest } from \"tslib\";\nimport { hasOwnProperty, isArray } from 'vega-util';\nimport { hasConditionalFieldOrDatumDef, isConditionalDef, isFieldDef, isFieldOrDatumDef, isRepeatRef, isSortableFieldDef } from '../channeldef';\nimport * as log from '../log';\nimport { isSortField } from '../sort';\nimport { isFacetMapping } from '../spec/facet';\nexport function replaceRepeaterInFacet(facet, repeater) {\n    if (!repeater) {\n        return facet;\n    }\n    if (isFacetMapping(facet)) {\n        return replaceRepeaterInMapping(facet, repeater);\n    }\n    return replaceRepeaterInFieldDef(facet, repeater);\n}\nexport function replaceRepeaterInEncoding(encoding, repeater) {\n    if (!repeater) {\n        return encoding;\n    }\n    return replaceRepeaterInMapping(encoding, repeater);\n}\n/**\n * Replaces repeated value and returns if the repeated value is valid.\n */\nfunction replaceRepeatInProp(prop, o, repeater) {\n    const val = o[prop];\n    if (isRepeatRef(val)) {\n        if (val.repeat in repeater) {\n            return Object.assign(Object.assign({}, o), { [prop]: repeater[val.repeat] });\n        }\n        else {\n            log.warn(log.message.noSuchRepeatedValue(val.repeat));\n            return undefined;\n        }\n    }\n    return o;\n}\n/**\n * Replace repeater values in a field def with the concrete field name.\n */\nfunction replaceRepeaterInFieldDef(fieldDef, repeater) {\n    fieldDef = replaceRepeatInProp('field', fieldDef, repeater);\n    if (fieldDef === undefined) {\n        // the field def should be ignored\n        return undefined;\n    }\n    else if (fieldDef === null) {\n        return null;\n    }\n    if (isSortableFieldDef(fieldDef) && isSortField(fieldDef.sort)) {\n        const sort = replaceRepeatInProp('field', fieldDef.sort, repeater);\n        fieldDef = Object.assign(Object.assign({}, fieldDef), (sort ? { sort } : {}));\n    }\n    return fieldDef;\n}\nfunction replaceRepeaterInFieldOrDatumDef(def, repeater) {\n    if (isFieldDef(def)) {\n        return replaceRepeaterInFieldDef(def, repeater);\n    }\n    else {\n        const datumDef = replaceRepeatInProp('datum', def, repeater);\n        if (datumDef !== def && !datumDef.type) {\n            datumDef.type = 'nominal';\n        }\n        return datumDef;\n    }\n}\nfunction replaceRepeaterInChannelDef(channelDef, repeater) {\n    if (isFieldOrDatumDef(channelDef)) {\n        const fd = replaceRepeaterInFieldOrDatumDef(channelDef, repeater);\n        if (fd) {\n            return fd;\n        }\n        else if (isConditionalDef(channelDef)) {\n            return { condition: channelDef.condition };\n        }\n    }\n    else {\n        if (hasConditionalFieldOrDatumDef(channelDef)) {\n            const fd = replaceRepeaterInFieldOrDatumDef(channelDef.condition, repeater);\n            if (fd) {\n                return Object.assign(Object.assign({}, channelDef), { condition: fd });\n            }\n            else {\n                const { condition } = channelDef, channelDefWithoutCondition = __rest(channelDef, [\"condition\"]);\n                return channelDefWithoutCondition;\n            }\n        }\n        return channelDef;\n    }\n    return undefined;\n}\nfunction replaceRepeaterInMapping(mapping, repeater) {\n    const out = {};\n    for (const channel in mapping) {\n        if (hasOwnProperty(mapping, channel)) {\n            const channelDef = mapping[channel];\n            if (isArray(channelDef)) {\n                // array cannot have condition\n                out[channel] = channelDef // somehow we need to cast it here\n                    .map(cd => replaceRepeaterInChannelDef(cd, repeater))\n                    .filter(cd => cd);\n            }\n            else {\n                const cd = replaceRepeaterInChannelDef(channelDef, repeater);\n                if (cd !== undefined) {\n                    out[channel] = cd;\n                }\n            }\n        }\n    }\n    return out;\n}\n//# sourceMappingURL=repeater.js.map","import { isBinned } from '../bin';\nimport { getMainRangeChannel, SECONDARY_RANGE_CHANNEL } from '../channel';\nimport { isDatumDef, isFieldDef } from '../channeldef';\nimport * as log from '../log';\nimport { isUnitSpec } from '../spec/unit';\nexport class RuleForRangedLineNormalizer {\n    constructor() {\n        this.name = 'RuleForRangedLine';\n    }\n    hasMatchingType(spec) {\n        if (isUnitSpec(spec)) {\n            const { encoding, mark } = spec;\n            if (mark === 'line') {\n                for (const channel of SECONDARY_RANGE_CHANNEL) {\n                    const mainChannel = getMainRangeChannel(channel);\n                    const mainChannelDef = encoding[mainChannel];\n                    if (encoding[channel]) {\n                        if ((isFieldDef(mainChannelDef) && !isBinned(mainChannelDef.bin)) || isDatumDef(mainChannelDef)) {\n                            return true;\n                        }\n                    }\n                }\n            }\n        }\n        return false;\n    }\n    run(spec, params, normalize) {\n        const { encoding } = spec;\n        log.warn(log.message.lineWithRange(!!encoding.x2, !!encoding.y2));\n        return normalize(Object.assign(Object.assign({}, spec), { mark: 'rule' }), params);\n    }\n}\n//# sourceMappingURL=ruleforrangedline.js.map","import { __rest } from \"tslib\";\nimport { isArray } from 'vega-util';\nimport { COLUMN, FACET, ROW } from '../channel';\nimport { boxPlotNormalizer } from '../compositemark/boxplot';\nimport { errorBandNormalizer } from '../compositemark/errorband';\nimport { errorBarNormalizer } from '../compositemark/errorbar';\nimport { channelHasField } from '../encoding';\nimport * as log from '../log';\nimport { isFacetMapping } from '../spec/facet';\nimport { SpecMapper } from '../spec/map';\nimport { isLayerRepeatSpec } from '../spec/repeat';\nimport { isUnitSpec } from '../spec/unit';\nimport { keys, omit, varName, isEmpty } from '../util';\nimport { PathOverlayNormalizer } from './pathoverlay';\nimport { RangeStepNormalizer } from './rangestep';\nimport { replaceRepeaterInEncoding, replaceRepeaterInFacet } from './repeater';\nimport { RuleForRangedLineNormalizer } from './ruleforrangedline';\nexport class CoreNormalizer extends SpecMapper {\n    constructor() {\n        super(...arguments);\n        this.nonFacetUnitNormalizers = [\n            boxPlotNormalizer,\n            errorBarNormalizer,\n            errorBandNormalizer,\n            new PathOverlayNormalizer(),\n            new RuleForRangedLineNormalizer(),\n            new RangeStepNormalizer()\n        ];\n    }\n    map(spec, params) {\n        // Special handling for a faceted unit spec as it can return a facet spec, not just a layer or unit spec like a normal unit spec.\n        if (isUnitSpec(spec)) {\n            const hasRow = channelHasField(spec.encoding, ROW);\n            const hasColumn = channelHasField(spec.encoding, COLUMN);\n            const hasFacet = channelHasField(spec.encoding, FACET);\n            if (hasRow || hasColumn || hasFacet) {\n                return this.mapFacetedUnit(spec, params);\n            }\n        }\n        return super.map(spec, params);\n    }\n    // This is for normalizing non-facet unit\n    mapUnit(spec, params) {\n        const { parentEncoding, parentProjection } = params;\n        const specWithReplacedEncoding = Object.assign(Object.assign({}, spec), { encoding: replaceRepeaterInEncoding(spec.encoding, params.repeater) });\n        if (parentEncoding || parentProjection) {\n            return this.mapUnitWithParentEncodingOrProjection(specWithReplacedEncoding, params);\n        }\n        const normalizeLayerOrUnit = this.mapLayerOrUnit.bind(this);\n        for (const unitNormalizer of this.nonFacetUnitNormalizers) {\n            if (unitNormalizer.hasMatchingType(specWithReplacedEncoding, params.config)) {\n                return unitNormalizer.run(specWithReplacedEncoding, params, normalizeLayerOrUnit);\n            }\n        }\n        return specWithReplacedEncoding;\n    }\n    mapRepeat(spec, params) {\n        if (isLayerRepeatSpec(spec)) {\n            return this.mapLayerRepeat(spec, params);\n        }\n        else {\n            return this.mapNonLayerRepeat(spec, params);\n        }\n    }\n    mapLayerRepeat(spec, params) {\n        const { repeat, spec: childSpec } = spec, rest = __rest(spec, [\"repeat\", \"spec\"]);\n        const { row, column, layer } = repeat;\n        const { repeater = {}, repeaterPrefix = '' } = params;\n        if (row || column) {\n            return this.mapRepeat(Object.assign(Object.assign({}, spec), { repeat: Object.assign(Object.assign({}, (row ? { row } : {})), (column ? { column } : {})), spec: {\n                    repeat: { layer },\n                    spec: childSpec\n                } }), params);\n        }\n        else {\n            return Object.assign(Object.assign({}, rest), { layer: layer.map(layerValue => {\n                    const childRepeater = Object.assign(Object.assign({}, repeater), { layer: layerValue });\n                    const childName = (childSpec.name || '') + repeaterPrefix + `child__layer_${varName(layerValue)}`;\n                    const child = this.mapLayerOrUnit(childSpec, Object.assign(Object.assign({}, params), { repeater: childRepeater, repeaterPrefix: childName }));\n                    child.name = childName;\n                    return child;\n                }) });\n        }\n    }\n    mapNonLayerRepeat(spec, params) {\n        var _a;\n        const { repeat, spec: childSpec, data } = spec, remainingProperties = __rest(spec, [\"repeat\", \"spec\", \"data\"]);\n        if (!isArray(repeat) && spec.columns) {\n            // is repeat with row/column\n            spec = omit(spec, ['columns']);\n            log.warn(log.message.columnsNotSupportByRowCol('repeat'));\n        }\n        const concat = [];\n        const { repeater = {}, repeaterPrefix = '' } = params;\n        const row = (!isArray(repeat) && repeat.row) || [repeater ? repeater.row : null];\n        const column = (!isArray(repeat) && repeat.column) || [repeater ? repeater.column : null];\n        const repeatValues = (isArray(repeat) && repeat) || [repeater ? repeater.repeat : null];\n        // cross product\n        for (const repeatValue of repeatValues) {\n            for (const rowValue of row) {\n                for (const columnValue of column) {\n                    const childRepeater = {\n                        repeat: repeatValue,\n                        row: rowValue,\n                        column: columnValue,\n                        layer: repeater.layer\n                    };\n                    const childName = (childSpec.name || '') +\n                        repeaterPrefix +\n                        'child__' +\n                        (isArray(repeat)\n                            ? `${varName(repeatValue)}`\n                            : (repeat.row ? `row_${varName(rowValue)}` : '') +\n                                (repeat.column ? `column_${varName(columnValue)}` : ''));\n                    const child = this.map(childSpec, Object.assign(Object.assign({}, params), { repeater: childRepeater, repeaterPrefix: childName }));\n                    child.name = childName;\n                    // we move data up\n                    concat.push(omit(child, ['data']));\n                }\n            }\n        }\n        const columns = isArray(repeat) ? spec.columns : repeat.column ? repeat.column.length : 1;\n        return Object.assign(Object.assign({ data: (_a = childSpec.data) !== null && _a !== void 0 ? _a : data, align: 'all' }, remainingProperties), { columns,\n            concat });\n    }\n    mapFacet(spec, params) {\n        const { facet } = spec;\n        if (isFacetMapping(facet) && spec.columns) {\n            // is facet with row/column\n            spec = omit(spec, ['columns']);\n            log.warn(log.message.columnsNotSupportByRowCol('facet'));\n        }\n        return super.mapFacet(spec, params);\n    }\n    mapUnitWithParentEncodingOrProjection(spec, params) {\n        const { encoding, projection } = spec;\n        const { parentEncoding, parentProjection, config } = params;\n        const mergedProjection = mergeProjection({ parentProjection, projection });\n        const mergedEncoding = mergeEncoding({\n            parentEncoding,\n            encoding: replaceRepeaterInEncoding(encoding, params.repeater)\n        });\n        return this.mapUnit(Object.assign(Object.assign(Object.assign({}, spec), (mergedProjection ? { projection: mergedProjection } : {})), (mergedEncoding ? { encoding: mergedEncoding } : {})), { config });\n    }\n    mapFacetedUnit(spec, params) {\n        // New encoding in the inside spec should not contain row / column\n        // as row/column should be moved to facet\n        const _a = spec.encoding, { row, column, facet } = _a, encoding = __rest(_a, [\"row\", \"column\", \"facet\"]);\n        // Mark and encoding should be moved into the inner spec\n        const { mark, width, projection, height, view, selection, encoding: _ } = spec, outerSpec = __rest(spec, [\"mark\", \"width\", \"projection\", \"height\", \"view\", \"selection\", \"encoding\"]);\n        const { facetMapping, layout } = this.getFacetMappingAndLayout({ row, column, facet }, params);\n        const newEncoding = replaceRepeaterInEncoding(encoding, params.repeater);\n        return this.mapFacet(Object.assign(Object.assign(Object.assign({}, outerSpec), layout), { \n            // row / column has higher precedence than facet\n            facet: facetMapping, spec: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (width ? { width } : {})), (height ? { height } : {})), (view ? { view } : {})), (projection ? { projection } : {})), { mark, encoding: newEncoding }), (selection ? { selection } : {})) }), params);\n    }\n    getFacetMappingAndLayout(facets, params) {\n        var _a;\n        const { row, column, facet } = facets;\n        if (row || column) {\n            if (facet) {\n                log.warn(log.message.facetChannelDropped([...(row ? [ROW] : []), ...(column ? [COLUMN] : [])]));\n            }\n            const facetMapping = {};\n            const layout = {};\n            for (const channel of [ROW, COLUMN]) {\n                const def = facets[channel];\n                if (def) {\n                    const { align, center, spacing, columns } = def, defWithoutLayout = __rest(def, [\"align\", \"center\", \"spacing\", \"columns\"]);\n                    facetMapping[channel] = defWithoutLayout;\n                    for (const prop of ['align', 'center', 'spacing']) {\n                        if (def[prop] !== undefined) {\n                            layout[prop] = (_a = layout[prop]) !== null && _a !== void 0 ? _a : {};\n                            layout[prop][channel] = def[prop];\n                        }\n                    }\n                }\n            }\n            return { facetMapping, layout };\n        }\n        else {\n            const { align, center, spacing, columns } = facet, facetMapping = __rest(facet, [\"align\", \"center\", \"spacing\", \"columns\"]);\n            return {\n                facetMapping: replaceRepeaterInFacet(facetMapping, params.repeater),\n                layout: Object.assign(Object.assign(Object.assign(Object.assign({}, (align ? { align } : {})), (center ? { center } : {})), (spacing ? { spacing } : {})), (columns ? { columns } : {}))\n            };\n        }\n    }\n    mapLayer(spec, _a) {\n        // Special handling for extended layer spec\n        var { parentEncoding, parentProjection } = _a, otherParams = __rest(_a, [\"parentEncoding\", \"parentProjection\"]);\n        const { encoding, projection } = spec, rest = __rest(spec, [\"encoding\", \"projection\"]);\n        const params = Object.assign(Object.assign({}, otherParams), { parentEncoding: mergeEncoding({ parentEncoding, encoding }), parentProjection: mergeProjection({ parentProjection, projection }) });\n        return super.mapLayer(rest, params);\n    }\n}\nfunction mergeEncoding(opt) {\n    const { parentEncoding, encoding } = opt;\n    if (parentEncoding && encoding) {\n        const overriden = keys(parentEncoding).reduce((o, key) => {\n            if (encoding[key]) {\n                o.push(key);\n            }\n            return o;\n        }, []);\n        if (overriden.length > 0) {\n            log.warn(log.message.encodingOverridden(overriden));\n        }\n    }\n    const merged = Object.assign(Object.assign({}, (parentEncoding !== null && parentEncoding !== void 0 ? parentEncoding : {})), (encoding !== null && encoding !== void 0 ? encoding : {}));\n    return isEmpty(merged) ? undefined : merged;\n}\nfunction mergeProjection(opt) {\n    const { parentProjection, projection } = opt;\n    if (parentProjection && projection) {\n        log.warn(log.message.projectionOverridden({ parentProjection, projection }));\n    }\n    return projection !== null && projection !== void 0 ? projection : parentProjection;\n}\n//# sourceMappingURL=core.js.map","import { isString } from 'vega-util';\nimport { initConfig } from '../config';\nimport * as log from '../log';\nimport { isLayerSpec, isUnitSpec } from '../spec';\nimport { deepEqual } from '../util';\nimport { CoreNormalizer } from './core';\nexport function normalize(spec, config) {\n    if (config === undefined) {\n        config = initConfig(spec.config);\n    }\n    const normalizedSpec = normalizeGenericSpec(spec, config);\n    const { width, height } = spec;\n    const autosize = normalizeAutoSize(normalizedSpec, { width, height, autosize: spec.autosize }, config);\n    return Object.assign(Object.assign({}, normalizedSpec), (autosize ? { autosize } : {}));\n}\nconst normalizer = new CoreNormalizer();\n/**\n * Decompose extended unit specs into composition of pure unit specs.\n */\nfunction normalizeGenericSpec(spec, config = {}) {\n    return normalizer.map(spec, { config });\n}\nfunction _normalizeAutoSize(autosize) {\n    return isString(autosize) ? { type: autosize } : autosize !== null && autosize !== void 0 ? autosize : {};\n}\n/**\n * Normalize autosize and deal with width or height == \"container\".\n */\nexport function normalizeAutoSize(spec, sizeInfo, config) {\n    let { width, height } = sizeInfo;\n    const isFitCompatible = isUnitSpec(spec) || isLayerSpec(spec);\n    const autosizeDefault = {};\n    if (!isFitCompatible) {\n        // If spec is not compatible with autosize == \"fit\", discard width/height == container\n        if (width == 'container') {\n            log.warn(log.message.containerSizeNonSingle('width'));\n            width = undefined;\n        }\n        if (height == 'container') {\n            log.warn(log.message.containerSizeNonSingle('height'));\n            height = undefined;\n        }\n    }\n    else {\n        // Default autosize parameters to fit when width/height is \"container\"\n        if (width == 'container' && height == 'container') {\n            autosizeDefault.type = 'fit';\n            autosizeDefault.contains = 'padding';\n        }\n        else if (width == 'container') {\n            autosizeDefault.type = 'fit-x';\n            autosizeDefault.contains = 'padding';\n        }\n        else if (height == 'container') {\n            autosizeDefault.type = 'fit-y';\n            autosizeDefault.contains = 'padding';\n        }\n    }\n    const autosize = Object.assign(Object.assign(Object.assign({ type: 'pad' }, autosizeDefault), (config ? _normalizeAutoSize(config.autosize) : {})), _normalizeAutoSize(spec.autosize));\n    if (autosize.type === 'fit' && !isFitCompatible) {\n        log.warn(log.message.FIT_NON_SINGLE);\n        autosize.type = 'pad';\n    }\n    if (width == 'container' && !(autosize.type == 'fit' || autosize.type == 'fit-x')) {\n        log.warn(log.message.containerSizeNotCompatibleWithAutosize('width'));\n    }\n    if (height == 'container' && !(autosize.type == 'fit' || autosize.type == 'fit-y')) {\n        log.warn(log.message.containerSizeNotCompatibleWithAutosize('height'));\n    }\n    // Delete autosize property if it's Vega's default\n    if (deepEqual(autosize, { type: 'pad' })) {\n        return undefined;\n    }\n    return autosize;\n}\n//# sourceMappingURL=index.js.map","import { getPositionScaleChannel } from '../channel';\nexport function isFitType(autoSizeType) {\n    return autoSizeType === 'fit' || autoSizeType === 'fit-x' || autoSizeType === 'fit-y';\n}\nexport function getFitType(sizeType) {\n    return sizeType ? `fit-${getPositionScaleChannel(sizeType)}` : 'fit';\n}\nconst TOP_LEVEL_PROPERTIES = [\n    'background',\n    'padding'\n    // We do not include \"autosize\" here as it is supported by only unit and layer specs and thus need to be normalized\n];\nexport function extractTopLevelProperties(t) {\n    return TOP_LEVEL_PROPERTIES.reduce((o, p) => {\n        if (t && t[p] !== undefined) {\n            o[p] = t[p];\n        }\n        return o;\n    }, {});\n}\n//# sourceMappingURL=toplevel.js.map","import * as log from '../log';\nimport { deepEqual, duplicate, getFirstDefined, keys } from '../util';\n/**\n * Generic class for storing properties that are explicitly specified\n * and implicitly determined by the compiler.\n * This is important for scale/axis/legend merging as\n * we want to prioritize properties that users explicitly specified.\n */\nexport class Split {\n    constructor(explicit = {}, implicit = {}) {\n        this.explicit = explicit;\n        this.implicit = implicit;\n    }\n    clone() {\n        return new Split(duplicate(this.explicit), duplicate(this.implicit));\n    }\n    combine() {\n        // FIXME remove \"as any\".\n        // Add \"as any\" to avoid an error \"Spread types may only be created from object types\".\n        return Object.assign(Object.assign({}, this.explicit), this.implicit);\n    }\n    get(key) {\n        // Explicit has higher precedence\n        return getFirstDefined(this.explicit[key], this.implicit[key]);\n    }\n    getWithExplicit(key) {\n        // Explicit has higher precedence\n        if (this.explicit[key] !== undefined) {\n            return { explicit: true, value: this.explicit[key] };\n        }\n        else if (this.implicit[key] !== undefined) {\n            return { explicit: false, value: this.implicit[key] };\n        }\n        return { explicit: false, value: undefined };\n    }\n    setWithExplicit(key, value) {\n        if (value.value !== undefined) {\n            this.set(key, value.value, value.explicit);\n        }\n    }\n    set(key, value, explicit) {\n        delete this[explicit ? 'implicit' : 'explicit'][key];\n        this[explicit ? 'explicit' : 'implicit'][key] = value;\n        return this;\n    }\n    copyKeyFromSplit(key, s) {\n        // Explicit has higher precedence\n        if (s.explicit[key] !== undefined) {\n            this.set(key, s.explicit[key], true);\n        }\n        else if (s.implicit[key] !== undefined) {\n            this.set(key, s.implicit[key], false);\n        }\n    }\n    copyKeyFromObject(key, s) {\n        // Explicit has higher precedence\n        if (s[key] !== undefined) {\n            this.set(key, s[key], true);\n        }\n    }\n    /**\n     * Merge split object into this split object. Properties from the other split\n     * overwrite properties from this split.\n     */\n    copyAll(other) {\n        for (const key of keys(other.combine())) {\n            const val = other.getWithExplicit(key);\n            this.setWithExplicit(key, val);\n        }\n    }\n}\nexport function makeExplicit(value) {\n    return {\n        explicit: true,\n        value\n    };\n}\nexport function makeImplicit(value) {\n    return {\n        explicit: false,\n        value\n    };\n}\nexport function tieBreakByComparing(compare) {\n    return (v1, v2, property, propertyOf) => {\n        const diff = compare(v1.value, v2.value);\n        if (diff > 0) {\n            return v1;\n        }\n        else if (diff < 0) {\n            return v2;\n        }\n        return defaultTieBreaker(v1, v2, property, propertyOf);\n    };\n}\nexport function defaultTieBreaker(v1, v2, property, propertyOf) {\n    if (v1.explicit && v2.explicit) {\n        log.warn(log.message.mergeConflictingProperty(property, propertyOf, v1.value, v2.value));\n    }\n    // If equal score, prefer v1.\n    return v1;\n}\nexport function mergeValuesWithExplicit(v1, v2, property, propertyOf, tieBreaker = defaultTieBreaker) {\n    if (v1 === undefined || v1.value === undefined) {\n        // For first run\n        return v2;\n    }\n    if (v1.explicit && !v2.explicit) {\n        return v1;\n    }\n    else if (v2.explicit && !v1.explicit) {\n        return v2;\n    }\n    else if (deepEqual(v1.value, v2.value)) {\n        return v1;\n    }\n    else {\n        return tieBreaker(v1, v2, property, propertyOf);\n    }\n}\n//# sourceMappingURL=split.js.map","import { Split } from '../split';\n/**\n * Class to track interesting properties (see https://15721.courses.cs.cmu.edu/spring2016/papers/graefe-ieee1995.pdf)\n * about how fields have been parsed or whether they have been derived in a transform. We use this to not parse the\n * same field again (or differently).\n */\nexport class AncestorParse extends Split {\n    constructor(explicit = {}, implicit = {}, parseNothing = false) {\n        super(explicit, implicit);\n        this.explicit = explicit;\n        this.implicit = implicit;\n        this.parseNothing = parseNothing;\n    }\n    clone() {\n        const clone = super.clone();\n        clone.parseNothing = this.parseNothing;\n        return clone;\n    }\n}\n//# sourceMappingURL=index.js.map","export function isUrlData(data) {\n    return 'url' in data;\n}\nexport function isInlineData(data) {\n    return 'values' in data;\n}\nexport function isNamedData(data) {\n    return 'name' in data && !isUrlData(data) && !isInlineData(data) && !isGenerator(data);\n}\nexport function isGenerator(data) {\n    return data && (isSequenceGenerator(data) || isSphereGenerator(data) || isGraticuleGenerator(data));\n}\nexport function isSequenceGenerator(data) {\n    return 'sequence' in data;\n}\nexport function isSphereGenerator(data) {\n    return 'sphere' in data;\n}\nexport function isGraticuleGenerator(data) {\n    return 'graticule' in data;\n}\nexport const MAIN = 'main';\nexport const RAW = 'raw';\n//# sourceMappingURL=data.js.map","import { normalizeLogicalComposition } from './logical';\nimport { normalizePredicate } from './predicate';\nexport function isFilter(t) {\n    return 'filter' in t;\n}\nexport function isImputeSequence(t) {\n    return (t === null || t === void 0 ? void 0 : t['stop']) !== undefined;\n}\nexport function isLookup(t) {\n    return 'lookup' in t;\n}\nexport function isLookupData(from) {\n    return 'data' in from;\n}\nexport function isLookupSelection(from) {\n    return 'selection' in from;\n}\nexport function isPivot(t) {\n    return 'pivot' in t;\n}\nexport function isDensity(t) {\n    return 'density' in t;\n}\nexport function isQuantile(t) {\n    return 'quantile' in t;\n}\nexport function isRegression(t) {\n    return 'regression' in t;\n}\nexport function isLoess(t) {\n    return 'loess' in t;\n}\nexport function isSample(t) {\n    return 'sample' in t;\n}\nexport function isWindow(t) {\n    return 'window' in t;\n}\nexport function isJoinAggregate(t) {\n    return 'joinaggregate' in t;\n}\nexport function isFlatten(t) {\n    return 'flatten' in t;\n}\nexport function isCalculate(t) {\n    return 'calculate' in t;\n}\nexport function isBin(t) {\n    return 'bin' in t;\n}\nexport function isImpute(t) {\n    return 'impute' in t;\n}\nexport function isTimeUnit(t) {\n    return 'timeUnit' in t;\n}\nexport function isAggregate(t) {\n    return 'aggregate' in t;\n}\nexport function isStack(t) {\n    return 'stack' in t;\n}\nexport function isFold(t) {\n    return 'fold' in t;\n}\nexport function normalizeTransform(transform) {\n    return transform.map(t => {\n        if (isFilter(t)) {\n            return {\n                filter: normalizeLogicalComposition(t.filter, normalizePredicate)\n            };\n        }\n        return t;\n    });\n}\n//# sourceMappingURL=transform.js.map","import { array } from 'vega-util';\nimport { isConditionalDef, isConditionalSelection } from '../../../channeldef';\nimport { expression } from '../../predicate';\nimport { parseSelectionPredicate } from '../../selection/parse';\n/**\n * Return a mixin that includes a Vega production rule for a Vega-Lite conditional channel definition\n * or a simple mixin if channel def has no condition.\n */\nexport function wrapCondition(model, channelDef, vgChannel, refFn) {\n    const condition = isConditionalDef(channelDef) && channelDef.condition;\n    const valueRef = refFn(channelDef);\n    if (condition) {\n        const conditions = array(condition);\n        const vgConditions = conditions.map(c => {\n            const conditionValueRef = refFn(c);\n            const test = isConditionalSelection(c)\n                ? parseSelectionPredicate(model, c.selection) // FIXME: remove casting once TS is no longer dumb about it\n                : expression(model, c.test); // FIXME: remove casting once TS is no longer dumb about it\n            return Object.assign({ test }, conditionValueRef);\n        });\n        return {\n            [vgChannel]: [...vgConditions, ...(valueRef !== undefined ? [valueRef] : [])]\n        };\n    }\n    else {\n        return valueRef !== undefined ? { [vgChannel]: valueRef } : {};\n    }\n}\n//# sourceMappingURL=conditional.js.map","import { getFormatMixins, isFieldOrDatumDef, isValueDef } from '../../../channeldef';\nimport { signalOrValueRef } from '../../common';\nimport { formatSignalRef } from '../../format';\nimport { wrapCondition } from './conditional';\nexport function text(model, channel = 'text') {\n    const channelDef = model.encoding[channel];\n    return wrapCondition(model, channelDef, channel, cDef => textRef(cDef, model.config));\n}\nexport function textRef(channelDef, config, expr = 'datum') {\n    // text\n    if (channelDef) {\n        if (isValueDef(channelDef)) {\n            return signalOrValueRef(channelDef.value);\n        }\n        if (isFieldOrDatumDef(channelDef)) {\n            const { format, formatType } = getFormatMixins(channelDef);\n            return formatSignalRef({ fieldOrDatumDef: channelDef, format, formatType, expr, config });\n        }\n    }\n    return undefined;\n}\n//# sourceMappingURL=text.js.map","import { array, isArray, isObject, isString, stringValue } from 'vega-util';\nimport { isBinned } from '../../../bin';\nimport { getMainRangeChannel, isXorY } from '../../../channel';\nimport { getFieldDef, getFormatMixins, hasConditionalFieldDef, isFieldDef, isTypedFieldDef, title, vgField } from '../../../channeldef';\nimport { forEach } from '../../../encoding';\nimport { entries } from '../../../util';\nimport { getMarkPropOrConfig } from '../../common';\nimport { binFormatExpression, formatSignalRef } from '../../format';\nimport { wrapCondition } from './conditional';\nimport { textRef } from './text';\nexport function tooltip(model, opt = {}) {\n    const { encoding, markDef, config, stack } = model;\n    const channelDef = encoding.tooltip;\n    if (isArray(channelDef)) {\n        return { tooltip: tooltipRefForEncoding({ tooltip: channelDef }, stack, config, opt) };\n    }\n    else {\n        const datum = opt.reactiveGeom ? 'datum.datum' : 'datum';\n        return wrapCondition(model, channelDef, 'tooltip', cDef => {\n            // use valueRef based on channelDef first\n            const tooltipRefFromChannelDef = textRef(cDef, config, datum);\n            if (tooltipRefFromChannelDef) {\n                return tooltipRefFromChannelDef;\n            }\n            if (cDef === null) {\n                // Allow using encoding.tooltip = null to disable tooltip\n                return undefined;\n            }\n            let markTooltip = getMarkPropOrConfig('tooltip', markDef, config);\n            if (markTooltip === true) {\n                markTooltip = { content: 'encoding' };\n            }\n            if (isString(markTooltip)) {\n                return { value: markTooltip };\n            }\n            else if (isObject(markTooltip)) {\n                // `tooltip` is `{fields: 'encodings' | 'fields'}`\n                if (markTooltip.content === 'encoding') {\n                    return tooltipRefForEncoding(encoding, stack, config, opt);\n                }\n                else {\n                    return { signal: datum };\n                }\n            }\n            return undefined;\n        });\n    }\n}\nexport function tooltipData(encoding, stack, config, { reactiveGeom } = {}) {\n    const toSkip = {};\n    const expr = reactiveGeom ? 'datum.datum' : 'datum';\n    const tuples = [];\n    function add(fDef, channel) {\n        const mainChannel = getMainRangeChannel(channel);\n        const fieldDef = isTypedFieldDef(fDef)\n            ? fDef\n            : Object.assign(Object.assign({}, fDef), { type: encoding[mainChannel].type // for secondary field def, copy type from main channel\n             });\n        const key = array(title(fieldDef, config, { allowDisabling: false })).join(', ');\n        let value;\n        if (isXorY(channel)) {\n            const channel2 = channel === 'x' ? 'x2' : 'y2';\n            const fieldDef2 = getFieldDef(encoding[channel2]);\n            if (isBinned(fieldDef.bin) && fieldDef2) {\n                const startField = vgField(fieldDef, { expr });\n                const endField = vgField(fieldDef2, { expr });\n                const { format, formatType } = getFormatMixins(fieldDef);\n                value = binFormatExpression(startField, endField, format, formatType, config);\n                toSkip[channel2] = true;\n            }\n            else if (stack && stack.fieldChannel === channel && stack.offset === 'normalize') {\n                const { format, formatType } = getFormatMixins(fieldDef);\n                value = formatSignalRef({ fieldOrDatumDef: fieldDef, format, formatType, expr, config, normalizeStack: true })\n                    .signal;\n            }\n        }\n        value = value !== null && value !== void 0 ? value : textRef(fieldDef, config, expr).signal;\n        tuples.push({ channel, key, value });\n    }\n    forEach(encoding, (channelDef, channel) => {\n        if (isFieldDef(channelDef)) {\n            add(channelDef, channel);\n        }\n        else if (hasConditionalFieldDef(channelDef)) {\n            add(channelDef.condition, channel);\n        }\n    });\n    const out = {};\n    for (const { channel, key, value } of tuples) {\n        if (!toSkip[channel] && !out[key]) {\n            out[stringValue(key)] = value;\n        }\n    }\n    return out;\n}\nexport function tooltipRefForEncoding(encoding, stack, config, { reactiveGeom } = {}) {\n    const data = tooltipData(encoding, stack, config, { reactiveGeom });\n    const keyValues = entries(data).map(({ key, value }) => `${key}: ${value}`);\n    return keyValues.length > 0 ? { signal: `{${keyValues.join(', ')}}` } : undefined;\n}\n//# sourceMappingURL=tooltip.js.map","import { entries, isEmpty } from '../../../util';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { VG_MARK_INDEX } from './../../../vega.schema';\nimport { wrapCondition } from './conditional';\nimport { textRef } from './text';\nimport { tooltipData } from './tooltip';\nexport function aria(model) {\n    const { markDef, config } = model;\n    const enableAria = getMarkPropOrConfig('aria', markDef, config);\n    // We can ignore other aria properties if ariaHidden is true.\n    if (enableAria === false) {\n        // getMarkGroups sets aria to false already so we don't have to set it in the encode block\n        return {};\n    }\n    return Object.assign(Object.assign(Object.assign({}, (enableAria ? { aria: enableAria } : {})), ariaRoleDescription(model)), description(model));\n}\nfunction ariaRoleDescription(model) {\n    const { mark, markDef, config } = model;\n    if (config.aria === false) {\n        return {};\n    }\n    const ariaRoleDesc = getMarkPropOrConfig('ariaRoleDescription', markDef, config);\n    if (ariaRoleDesc != null) {\n        return { ariaRoleDescription: { value: ariaRoleDesc } };\n    }\n    return mark in VG_MARK_INDEX ? {} : { ariaRoleDescription: { value: mark } };\n}\nexport function description(model) {\n    const { encoding, markDef, config, stack } = model;\n    const channelDef = encoding.description;\n    if (channelDef) {\n        return wrapCondition(model, channelDef, 'description', cDef => textRef(cDef, model.config));\n    }\n    // Use default from mark def or config if defined.\n    // Functions in encode usually just return undefined but since we are defining a default below, we need to check the default here.\n    const descriptionValue = getMarkPropOrConfig('description', markDef, config);\n    if (descriptionValue != null) {\n        return {\n            description: signalOrValueRef(descriptionValue)\n        };\n    }\n    if (config.aria === false) {\n        return {};\n    }\n    const data = tooltipData(encoding, stack, config);\n    if (isEmpty(data)) {\n        return undefined;\n    }\n    return {\n        description: {\n            signal: entries(data)\n                .map(({ key, value }) => `${key} + \": \" + (${value})`)\n                .join(' + \"; \" + ')\n        }\n    };\n}\n//# sourceMappingURL=aria.js.map","import { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { wrapCondition } from './conditional';\nimport * as ref from './valueref';\n/**\n * Return encode for non-positional channels with scales. (Text doesn't have scale.)\n */\nexport function nonPosition(channel, model, opt = {}) {\n    const { markDef, encoding, config } = model;\n    const { vgChannel } = opt;\n    let { defaultRef, defaultValue } = opt;\n    if (defaultRef === undefined) {\n        // prettier-ignore\n        defaultValue = defaultValue !== null && defaultValue !== void 0 ? defaultValue : getMarkPropOrConfig(channel, markDef, config, { vgChannel, ignoreVgConfig: true });\n        if (defaultValue !== undefined) {\n            defaultRef = signalOrValueRef(defaultValue);\n        }\n    }\n    const channelDef = encoding[channel];\n    return wrapCondition(model, channelDef, vgChannel !== null && vgChannel !== void 0 ? vgChannel : channel, cDef => {\n        return ref.midPoint({\n            channel,\n            channelDef: cDef,\n            markDef,\n            config,\n            scaleName: model.scaleName(channel),\n            scale: model.getScaleComponent(channel),\n            stack: null,\n            defaultRef\n        });\n    });\n}\n//# sourceMappingURL=nonposition.js.map","import * as log from '../../../log';\nimport { contains } from '../../../util';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { nonPosition } from './nonposition';\nexport function color(model, opt = { filled: undefined }) {\n    var _a, _b, _c, _d;\n    const { markDef, encoding, config } = model;\n    const { type: markType } = markDef;\n    // Allow filled to be overridden (for trail's \"filled\")\n    const filled = (_a = opt.filled) !== null && _a !== void 0 ? _a : getMarkPropOrConfig('filled', markDef, config);\n    const transparentIfNeeded = contains(['bar', 'point', 'circle', 'square', 'geoshape'], markType)\n        ? 'transparent'\n        : undefined;\n    const defaultFill = (_c = (_b = getMarkPropOrConfig(filled === true ? 'color' : undefined, markDef, config, { vgChannel: 'fill' })) !== null && _b !== void 0 ? _b : \n    // need to add this manually as getMarkConfig normally drops config.mark[channel] if vgChannel is specified\n    config.mark[filled === true && 'color']) !== null && _c !== void 0 ? _c : \n    // If there is no fill, always fill symbols, bar, geoshape\n    // with transparent fills https://github.com/vega/vega-lite/issues/1316\n    transparentIfNeeded;\n    const defaultStroke = (_d = getMarkPropOrConfig(filled === false ? 'color' : undefined, markDef, config, { vgChannel: 'stroke' })) !== null && _d !== void 0 ? _d : \n    // need to add this manually as getMarkConfig normally drops config.mark[channel] if vgChannel is specified\n    config.mark[filled === false && 'color'];\n    const colorVgChannel = filled ? 'fill' : 'stroke';\n    const fillStrokeMarkDefAndConfig = Object.assign(Object.assign({}, (defaultFill ? { fill: signalOrValueRef(defaultFill) } : {})), (defaultStroke ? { stroke: signalOrValueRef(defaultStroke) } : {}));\n    if (markDef.color && (filled ? markDef.fill : markDef.stroke)) {\n        log.warn(log.message.droppingColor('property', { fill: 'fill' in markDef, stroke: 'stroke' in markDef }));\n    }\n    return Object.assign(Object.assign(Object.assign(Object.assign({}, fillStrokeMarkDefAndConfig), nonPosition('color', model, {\n        vgChannel: colorVgChannel,\n        defaultValue: filled ? defaultFill : defaultStroke\n    })), nonPosition('fill', model, {\n        // if there is encoding.fill, include default fill just in case we have conditional-only fill encoding\n        defaultValue: encoding.fill ? defaultFill : undefined\n    })), nonPosition('stroke', model, {\n        // if there is encoding.stroke, include default fill just in case we have conditional-only stroke encoding\n        defaultValue: encoding.stroke ? defaultStroke : undefined\n    }));\n}\n//# sourceMappingURL=color.js.map","import { getOffsetChannel } from '../../../channel';\nexport function getOffset(channel, markDef) {\n    const offsetChannel = getOffsetChannel(channel);\n    // TODO: in the future read from encoding channel too\n    const markDefOffsetValue = markDef[offsetChannel];\n    if (markDefOffsetValue) {\n        return markDefOffsetValue;\n    }\n    return undefined;\n}\n//# sourceMappingURL=offset.js.map","import { getMainRangeChannel, getSecondaryRangeChannel, getSizeChannel, getVgPositionChannel, isXorY } from '../../../channel';\nimport { getBand, isFieldDef, isFieldOrDatumDef } from '../../../channeldef';\nimport { ScaleType } from '../../../scale';\nimport { contains } from '../../../util';\nimport { getMarkPropOrConfig } from '../../common';\nimport { getOffset } from './offset';\nimport * as ref from './valueref';\n/**\n * Return encode for point (non-band) position channels.\n */\nexport function pointPosition(channel, model, { defaultPos, vgChannel, isMidPoint }) {\n    const { encoding, markDef, config, stack } = model;\n    const channelDef = encoding[channel];\n    const channel2Def = encoding[getSecondaryRangeChannel(channel)];\n    const scaleName = model.scaleName(channel);\n    const scale = model.getScaleComponent(channel);\n    const offset = getOffset(channel, markDef);\n    // Get default position or position from mark def\n    const defaultRef = pointPositionDefaultRef({\n        model,\n        defaultPos,\n        channel,\n        scaleName,\n        scale\n    });\n    const valueRef = !channelDef && isXorY(channel) && (encoding.latitude || encoding.longitude)\n        ? // use geopoint output if there are lat/long and there is no point position overriding lat/long.\n            { field: model.getName(channel) }\n        : positionRef({\n            channel,\n            channelDef,\n            channel2Def,\n            markDef,\n            config,\n            isMidPoint,\n            scaleName,\n            scale,\n            stack,\n            offset,\n            defaultRef\n        });\n    return valueRef ? { [vgChannel || channel]: valueRef } : undefined;\n}\n// TODO: we need to find a way to refactor these so that scaleName is a part of scale\n// but that's complicated. For now, this is a huge step moving forward.\n/**\n * @return Vega ValueRef for normal x- or y-position without projection\n */\nexport function positionRef(params) {\n    const { channel, channelDef, isMidPoint, scaleName, stack, offset, markDef, config } = params;\n    // This isn't a part of midPoint because we use midPoint for non-position too\n    if (isFieldOrDatumDef(channelDef) && stack && channel === stack.fieldChannel) {\n        if (isFieldDef(channelDef)) {\n            const band = getBand({\n                channel,\n                fieldDef: channelDef,\n                isMidPoint,\n                markDef,\n                stack,\n                config\n            });\n            if (band !== undefined) {\n                return ref.interpolatedSignalRef({\n                    scaleName,\n                    fieldOrDatumDef: channelDef,\n                    startSuffix: 'start',\n                    band,\n                    offset\n                });\n            }\n        }\n        // x or y use stack_end so that stacked line's point mark use stack_end too.\n        return ref.valueRefForFieldOrDatumDef(channelDef, scaleName, { suffix: 'end' }, { offset });\n    }\n    return ref.midPointRefWithPositionInvalidTest(params);\n}\nexport function pointPositionDefaultRef({ model, defaultPos, channel, scaleName, scale }) {\n    const { markDef, config } = model;\n    return () => {\n        const mainChannel = getMainRangeChannel(channel);\n        const vgChannel = getVgPositionChannel(channel);\n        const definedValueOrConfig = getMarkPropOrConfig(channel, markDef, config, { vgChannel });\n        if (definedValueOrConfig !== undefined) {\n            return ref.widthHeightValueOrSignalRef(channel, definedValueOrConfig);\n        }\n        switch (defaultPos) {\n            case 'zeroOrMin':\n            case 'zeroOrMax':\n                if (scaleName) {\n                    const scaleType = scale.get('type');\n                    if (contains([ScaleType.LOG, ScaleType.TIME, ScaleType.UTC], scaleType)) {\n                        // Log scales cannot have zero.\n                        // Zero in time scale is arbitrary, and does not affect ratio.\n                        // (Time is an interval level of measurement, not ratio).\n                        // See https://en.wikipedia.org/wiki/Level_of_measurement for more info.\n                    }\n                    else {\n                        if (scale.domainDefinitelyIncludesZero()) {\n                            return {\n                                scale: scaleName,\n                                value: 0\n                            };\n                        }\n                    }\n                }\n                if (defaultPos === 'zeroOrMin') {\n                    return mainChannel === 'y' ? { field: { group: 'height' } } : { value: 0 };\n                }\n                else {\n                    // zeroOrMax\n                    switch (mainChannel) {\n                        case 'radius':\n                            // max of radius is min(width, height) / 2\n                            return {\n                                signal: `min(${model.width.signal},${model.height.signal})/2`\n                            };\n                        case 'theta':\n                            return { signal: '2*PI' };\n                        case 'x':\n                            return { field: { group: 'width' } };\n                        case 'y':\n                            return { value: 0 };\n                    }\n                }\n                break;\n            case 'mid': {\n                const sizeRef = model[getSizeChannel(channel)];\n                return Object.assign(Object.assign({}, sizeRef), { mult: 0.5 });\n            }\n        }\n        // defaultPos === null\n        return undefined;\n    };\n}\n//# sourceMappingURL=position-point.js.map","import { getVgPositionChannel } from '../../../channel';\nimport { getMarkPropOrConfig } from '../../common';\nconst ALIGNED_X_CHANNEL = {\n    left: 'x',\n    center: 'xc',\n    right: 'x2'\n};\nconst BASELINED_Y_CHANNEL = {\n    top: 'y',\n    middle: 'yc',\n    bottom: 'y2'\n};\nexport function vgAlignedPositionChannel(channel, markDef, config, defaultAlign = 'middle') {\n    if (channel === 'radius' || channel === 'theta') {\n        return getVgPositionChannel(channel);\n    }\n    const alignChannel = channel === 'x' ? 'align' : 'baseline';\n    const align = getMarkPropOrConfig(alignChannel, markDef, config);\n    if (channel === 'x') {\n        return ALIGNED_X_CHANNEL[align || (defaultAlign === 'top' ? 'left' : 'center')];\n    }\n    else {\n        return BASELINED_Y_CHANNEL[align || defaultAlign];\n    }\n}\n//# sourceMappingURL=position-align.js.map","import { getMainRangeChannel, getSecondaryRangeChannel, getSizeChannel, getVgPositionChannel } from '../../../channel';\nimport { isFieldOrDatumDef } from '../../../channeldef';\nimport { getMarkStyleConfig } from '../../common';\nimport { getOffset } from './offset';\nimport { vgAlignedPositionChannel } from './position-align';\nimport { pointPosition, pointPositionDefaultRef } from './position-point';\nimport * as ref from './valueref';\n/**\n * Utility for area/rule position, which can be either point or range. (One of the axes should be point and the other should be range.)\n */\nexport function pointOrRangePosition(channel, model, { defaultPos, defaultPos2, range }) {\n    if (range) {\n        return rangePosition(channel, model, { defaultPos, defaultPos2 });\n    }\n    return pointPosition(channel, model, { defaultPos });\n}\nexport function rangePosition(channel, model, { defaultPos, defaultPos2 }) {\n    const { markDef, config } = model;\n    const channel2 = getSecondaryRangeChannel(channel);\n    const sizeChannel = getSizeChannel(channel);\n    const pos2Mixins = pointPosition2OrSize(model, defaultPos2, channel2);\n    const vgChannel = pos2Mixins[sizeChannel]\n        ? // If there is width/height, we need to position the marks based on the alignment.\n            vgAlignedPositionChannel(channel, markDef, config)\n        : // Otherwise, make sure to apply to the right Vg Channel (for arc mark)\n            getVgPositionChannel(channel);\n    return Object.assign(Object.assign({}, pointPosition(channel, model, { defaultPos, vgChannel })), pos2Mixins);\n}\n/**\n * Return encode for x2, y2.\n * If channel is not specified, return one channel based on orientation.\n */\nfunction pointPosition2OrSize(model, defaultPos, channel) {\n    const { encoding, mark, markDef, stack, config } = model;\n    const baseChannel = getMainRangeChannel(channel);\n    const sizeChannel = getSizeChannel(channel);\n    const vgChannel = getVgPositionChannel(channel);\n    const channelDef = encoding[baseChannel];\n    const scaleName = model.scaleName(baseChannel);\n    const scale = model.getScaleComponent(baseChannel);\n    const offset = channel in encoding || channel in markDef\n        ? getOffset(channel, model.markDef)\n        : getOffset(baseChannel, model.markDef);\n    if (!channelDef && (channel === 'x2' || channel === 'y2') && (encoding.latitude || encoding.longitude)) {\n        // use geopoint output if there are lat2/long2 and there is no point position2 overriding lat2/long2.\n        return { [vgChannel]: { field: model.getName(channel) } };\n    }\n    const valueRef = position2Ref({\n        channel,\n        channelDef,\n        channel2Def: encoding[channel],\n        markDef,\n        config,\n        scaleName,\n        scale,\n        stack,\n        offset,\n        defaultRef: undefined\n    });\n    if (valueRef !== undefined) {\n        return { [vgChannel]: valueRef };\n    }\n    // TODO: check width/height encoding here once we add them\n    // no x2/y2 encoding, then try to read x2/y2 or width/height based on precedence:\n    // markDef > config.style > mark-specific config (config[mark]) > general mark config (config.mark)\n    return (position2orSize(channel, markDef) ||\n        position2orSize(channel, {\n            [channel]: getMarkStyleConfig(channel, markDef, config.style),\n            [sizeChannel]: getMarkStyleConfig(sizeChannel, markDef, config.style)\n        }) ||\n        position2orSize(channel, config[mark]) ||\n        position2orSize(channel, config.mark) || {\n        [vgChannel]: pointPositionDefaultRef({\n            model,\n            defaultPos,\n            channel,\n            scaleName,\n            scale\n        })()\n    });\n}\nexport function position2Ref({ channel, channelDef, channel2Def, markDef, config, scaleName, scale, stack, offset, defaultRef }) {\n    if (isFieldOrDatumDef(channelDef) &&\n        stack &&\n        // If fieldChannel is X and channel is X2 (or Y and Y2)\n        channel.charAt(0) === stack.fieldChannel.charAt(0)) {\n        return ref.valueRefForFieldOrDatumDef(channelDef, scaleName, { suffix: 'start' }, { offset });\n    }\n    return ref.midPointRefWithPositionInvalidTest({\n        channel,\n        channelDef: channel2Def,\n        scaleName,\n        scale,\n        stack,\n        markDef,\n        config,\n        offset,\n        defaultRef\n    });\n}\nfunction position2orSize(channel, markDef) {\n    const sizeChannel = getSizeChannel(channel);\n    const vgChannel = getVgPositionChannel(channel);\n    if (markDef[vgChannel] !== undefined) {\n        return { [vgChannel]: ref.widthHeightValueOrSignalRef(channel, markDef[vgChannel]) };\n    }\n    else if (markDef[channel] !== undefined) {\n        return { [vgChannel]: ref.widthHeightValueOrSignalRef(channel, markDef[channel]) };\n    }\n    else if (markDef[sizeChannel]) {\n        return { [sizeChannel]: ref.widthHeightValueOrSignalRef(channel, markDef[sizeChannel]) };\n    }\n    return undefined;\n}\n//# sourceMappingURL=position-range.js.map","import { isArray, isNumber } from 'vega-util';\nimport { isBinned, isBinning, isBinParams } from '../../../bin';\nimport { getSecondaryRangeChannel, getSizeChannel, getVgPositionChannel, isPolarPositionChannel, isXorY } from '../../../channel';\nimport { getBand, isFieldDef, isFieldOrDatumDef, vgField } from '../../../channeldef';\nimport { DEFAULT_STEP, getViewConfigDiscreteStep } from '../../../config';\nimport * as log from '../../../log';\nimport { hasDiscreteDomain, ScaleType } from '../../../scale';\nimport { getFirstDefined } from '../../../util';\nimport { isSignalRef, isVgRangeStep } from '../../../vega.schema';\nimport { getMarkPropOrConfig, signalOrStringValue } from '../../common';\nimport { nonPosition } from './nonposition';\nimport { getOffset } from './offset';\nimport { vgAlignedPositionChannel } from './position-align';\nimport { pointPositionDefaultRef } from './position-point';\nimport { rangePosition } from './position-range';\nimport * as ref from './valueref';\nexport function rectPosition(model, channel, mark) {\n    var _a, _b, _c, _d;\n    const { config, encoding, markDef, stack } = model;\n    const channel2 = getSecondaryRangeChannel(channel);\n    const sizeChannel = getSizeChannel(channel);\n    const channelDef = encoding[channel];\n    const channelDef2 = encoding[channel2];\n    const scale = model.getScaleComponent(channel);\n    const scaleType = scale ? scale.get('type') : undefined;\n    const scaleName = model.scaleName(channel);\n    const orient = markDef.orient;\n    const hasSizeDef = (_b = (_a = encoding[sizeChannel]) !== null && _a !== void 0 ? _a : encoding.size) !== null && _b !== void 0 ? _b : getMarkPropOrConfig('size', markDef, config, { vgChannel: sizeChannel });\n    const isBarBand = mark === 'bar' && (channel === 'x' ? orient === 'vertical' : orient === 'horizontal');\n    // x, x2, and width -- we must specify two of these in all conditions\n    if (isFieldDef(channelDef) &&\n        (isBinning(channelDef.bin) || isBinned(channelDef.bin) || (channelDef.timeUnit && !channelDef2)) &&\n        !hasSizeDef &&\n        !hasDiscreteDomain(scaleType)) {\n        const band = getBand({ channel, fieldDef: channelDef, stack, markDef, config });\n        const axis = (_c = model.component.axes[channel]) === null || _c === void 0 ? void 0 : _c[0];\n        const axisTranslate = (_d = axis === null || axis === void 0 ? void 0 : axis.get('translate')) !== null && _d !== void 0 ? _d : 0.5; // vega default is 0.5\n        return rectBinPosition({\n            fieldDef: channelDef,\n            fieldDef2: channelDef2,\n            channel,\n            markDef,\n            scaleName,\n            band,\n            axisTranslate,\n            spacing: isXorY(channel) ? getMarkPropOrConfig('binSpacing', markDef, config) : undefined,\n            reverse: scale.get('reverse'),\n            config\n        });\n    }\n    else if (((isFieldOrDatumDef(channelDef) && hasDiscreteDomain(scaleType)) || isBarBand) && !channelDef2) {\n        return positionAndSize(mark, channelDef, channel, model);\n    }\n    else {\n        return rangePosition(channel, model, { defaultPos: 'zeroOrMax', defaultPos2: 'zeroOrMin' });\n    }\n}\nfunction defaultSizeRef(mark, sizeChannel, scaleName, scale, config, band) {\n    if (scale) {\n        const scaleType = scale.get('type');\n        if (scaleType === 'point' || scaleType === 'band') {\n            if (config[mark].discreteBandSize !== undefined) {\n                return { value: config[mark].discreteBandSize };\n            }\n            if (scaleType === ScaleType.POINT) {\n                const scaleRange = scale.get('range');\n                if (isVgRangeStep(scaleRange) && isNumber(scaleRange.step)) {\n                    return { value: scaleRange.step - 2 };\n                }\n                return { value: DEFAULT_STEP - 2 };\n            }\n            else {\n                // BAND\n                return { scale: scaleName, band };\n            }\n        }\n        else {\n            // continuous scale\n            return { value: config[mark].continuousBandSize };\n        }\n    }\n    // No Scale\n    const step = getViewConfigDiscreteStep(config.view, sizeChannel);\n    const value = getFirstDefined(\n    // No scale is like discrete bar (with one item)\n    config[mark].discreteBandSize, step - 2);\n    return value !== undefined ? { value } : undefined;\n}\n/**\n * Output position encoding and its size encoding for continuous, point, and band scales.\n */\nfunction positionAndSize(mark, fieldDef, channel, model) {\n    var _a;\n    const { markDef, encoding, config, stack } = model;\n    const orient = markDef.orient;\n    const scaleName = model.scaleName(channel);\n    const scale = model.getScaleComponent(channel);\n    const vgSizeChannel = getSizeChannel(channel);\n    const channel2 = getSecondaryRangeChannel(channel);\n    // use \"size\" channel for bars, if there is orient and the channel matches the right orientation\n    const useVlSizeChannel = (orient === 'horizontal' && channel === 'y') || (orient === 'vertical' && channel === 'x');\n    const sizeFromMarkOrConfig = getMarkPropOrConfig(useVlSizeChannel ? 'size' : vgSizeChannel, markDef, config, {\n        vgChannel: vgSizeChannel\n    });\n    // Use size encoding / mark property / config if it exists\n    let sizeMixins;\n    if (encoding.size || sizeFromMarkOrConfig !== undefined) {\n        if (useVlSizeChannel) {\n            sizeMixins = nonPosition('size', model, { vgChannel: vgSizeChannel, defaultValue: sizeFromMarkOrConfig });\n        }\n        else {\n            log.warn(log.message.cannotApplySizeToNonOrientedMark(markDef.type));\n        }\n    }\n    // Otherwise, apply default value\n    const band = (_a = (isFieldOrDatumDef(fieldDef) ? getBand({ channel, fieldDef, markDef, stack, config }) : undefined)) !== null && _a !== void 0 ? _a : 1;\n    sizeMixins = sizeMixins || { [vgSizeChannel]: defaultSizeRef(mark, vgSizeChannel, scaleName, scale, config, band) };\n    /*\n      Band scales with size value and all point scales, use xc/yc + band=0.5\n  \n      Otherwise (band scales that has size based on a band ref), use x/y with position band = (1 - size_band) / 2.\n      In this case, size_band is the band specified in the x/y-encoding.\n      By default band is 1, so `(1 - band) / 2` = 0.\n      If band is 0.6, the the x/y position in such case should be `(1 - band) / 2` = 0.2\n     */\n    const center = (scale === null || scale === void 0 ? void 0 : scale.get('type')) !== 'band' || !('band' in sizeMixins[vgSizeChannel]);\n    const vgChannel = vgAlignedPositionChannel(channel, markDef, config, center ? 'middle' : 'top');\n    const offset = getOffset(channel, markDef);\n    const posRef = ref.midPointRefWithPositionInvalidTest({\n        channel,\n        channelDef: fieldDef,\n        markDef,\n        config,\n        scaleName,\n        scale,\n        stack,\n        offset,\n        defaultRef: pointPositionDefaultRef({ model, defaultPos: 'mid', channel, scaleName, scale }),\n        band: center ? 0.5 : (1 - band) / 2\n    });\n    if (vgSizeChannel) {\n        return Object.assign({ [vgChannel]: posRef }, sizeMixins);\n    }\n    else {\n        // otherwise, we must simulate size by setting position2 = position + size\n        // (for theta/radius since Vega doesn't have thetaWidth/radiusWidth)\n        const vgChannel2 = getVgPositionChannel(channel2);\n        const sizeRef = sizeMixins[vgSizeChannel];\n        const sizeOffset = offset ? Object.assign(Object.assign({}, sizeRef), { offset }) : sizeRef;\n        return {\n            [vgChannel]: posRef,\n            // posRef might be an array that wraps position invalid test\n            [vgChannel2]: isArray(posRef)\n                ? [posRef[0], Object.assign(Object.assign({}, posRef[1]), { offset: sizeOffset })]\n                : Object.assign(Object.assign({}, posRef), { offset: sizeOffset })\n        };\n    }\n}\nfunction getBinSpacing(channel, spacing, reverse, translate, offset) {\n    if (isPolarPositionChannel(channel)) {\n        return 0;\n    }\n    const spacingOffset = channel === 'x' || channel === 'y2' ? -spacing / 2 : spacing / 2;\n    if (isSignalRef(reverse)) {\n        const offsetExpr = signalOrStringValue(offset);\n        return {\n            signal: `${reverse.signal} ? ${translate - spacingOffset}${offsetExpr ? '-' + offsetExpr : ''} : ${translate + spacingOffset}${offsetExpr ? '+' + offsetExpr : ''}`\n        };\n    }\n    else {\n        if (isSignalRef(offset)) {\n            const translateAndSpacingOffset = translate + (reverse ? -spacingOffset : spacingOffset);\n            return {\n                signal: `${translateAndSpacingOffset || ''}${reverse ? ' - ' : translateAndSpacingOffset ? ' + ' : ''}${offset.signal}`\n            };\n        }\n        offset = offset || 0;\n        return translate + (reverse ? -offset - spacingOffset : +offset + spacingOffset);\n    }\n}\nexport function rectBinPosition({ fieldDef, fieldDef2, channel, band, scaleName, markDef, spacing = 0, axisTranslate, reverse, config }) {\n    const channel2 = getSecondaryRangeChannel(channel);\n    const vgChannel = getVgPositionChannel(channel);\n    const vgChannel2 = getVgPositionChannel(channel2);\n    const offset = getOffset(channel, markDef);\n    if (isBinning(fieldDef.bin) || fieldDef.timeUnit) {\n        return {\n            [vgChannel2]: rectBinRef({\n                channel,\n                fieldDef,\n                scaleName,\n                markDef,\n                band: (1 - band) / 2,\n                offset: getBinSpacing(channel2, spacing, reverse, axisTranslate, offset),\n                config\n            }),\n            [vgChannel]: rectBinRef({\n                channel,\n                fieldDef,\n                scaleName,\n                markDef,\n                band: 1 - (1 - band) / 2,\n                offset: getBinSpacing(channel, spacing, reverse, axisTranslate, offset),\n                config\n            })\n        };\n    }\n    else if (isBinned(fieldDef.bin)) {\n        const startRef = ref.valueRefForFieldOrDatumDef(fieldDef, scaleName, {}, { offset: getBinSpacing(channel2, spacing, reverse, axisTranslate, offset) });\n        if (isFieldDef(fieldDef2)) {\n            return {\n                [vgChannel2]: startRef,\n                [vgChannel]: ref.valueRefForFieldOrDatumDef(fieldDef2, scaleName, {}, { offset: getBinSpacing(channel, spacing, reverse, axisTranslate, offset) })\n            };\n        }\n        else if (isBinParams(fieldDef.bin) && fieldDef.bin.step) {\n            return {\n                [vgChannel2]: startRef,\n                [vgChannel]: {\n                    signal: `scale(\"${scaleName}\", ${vgField(fieldDef, { expr: 'datum' })} + ${fieldDef.bin.step})`,\n                    offset: getBinSpacing(channel, spacing, reverse, axisTranslate, offset)\n                }\n            };\n        }\n    }\n    log.warn(log.message.channelRequiredForBinned(channel2));\n    return undefined;\n}\n/**\n * Value Ref for binned fields\n */\nexport function rectBinRef({ channel, fieldDef, scaleName, markDef, band, offset, config }) {\n    const r = ref.interpolatedSignalRef({\n        scaleName,\n        fieldOrDatumDef: fieldDef,\n        band,\n        offset\n    });\n    return ref.wrapPositionInvalidTest({\n        fieldDef,\n        channel,\n        markDef,\n        ref: r,\n        config\n    });\n}\n//# sourceMappingURL=position-rect.js.map","import { array } from 'vega-util';\nimport { SCALE_CHANNELS } from '../../../channel';\nimport { isPathMark } from '../../../mark';\nimport { hasContinuousDomain } from '../../../scale';\nimport { keys } from '../../../util';\nimport { VG_MARK_CONFIGS } from '../../../vega.schema';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { aria } from './aria';\nimport { color } from './color';\nimport { nonPosition } from './nonposition';\nimport { text } from './text';\nimport { tooltip } from './tooltip';\nimport { fieldInvalidPredicate } from './valueref';\nexport { color } from './color';\nexport { wrapCondition } from './conditional';\nexport { nonPosition } from './nonposition';\nexport { pointPosition } from './position-point';\nexport { pointOrRangePosition, rangePosition } from './position-range';\nexport { rectPosition } from './position-rect';\nexport { text } from './text';\nexport { tooltip } from './tooltip';\nconst ALWAYS_IGNORE = new Set(['aria']);\nexport function baseEncodeEntry(model, ignore) {\n    const { fill = undefined, stroke = undefined } = ignore.color === 'include' ? color(model) : {};\n    return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, markDefProperties(model.markDef, ignore)), wrapAllFieldsInvalid(model, 'fill', fill)), wrapAllFieldsInvalid(model, 'stroke', stroke)), nonPosition('opacity', model)), nonPosition('fillOpacity', model)), nonPosition('strokeOpacity', model)), nonPosition('strokeWidth', model)), nonPosition('strokeDash', model)), tooltip(model)), text(model, 'href')), aria(model));\n}\n// TODO: mark VgValueRef[] as readonly after https://github.com/vega/vega/pull/1987\nfunction wrapAllFieldsInvalid(model, channel, valueRef) {\n    const { config, mark, markDef } = model;\n    const invalid = getMarkPropOrConfig('invalid', markDef, config);\n    if (invalid === 'hide' && valueRef && !isPathMark(mark)) {\n        // For non-path marks, we have to exclude invalid values (null and NaN) for scales with continuous domains.\n        // For path marks, we will use \"defined\" property and skip these values instead.\n        const test = allFieldsInvalidPredicate(model, { invalid: true, channels: SCALE_CHANNELS });\n        if (test) {\n            return {\n                [channel]: [\n                    // prepend the invalid case\n                    // TODO: support custom value\n                    { test, value: null },\n                    ...array(valueRef)\n                ]\n            };\n        }\n    }\n    return valueRef ? { [channel]: valueRef } : {};\n}\nfunction markDefProperties(mark, ignore) {\n    return VG_MARK_CONFIGS.reduce((m, prop) => {\n        if (!ALWAYS_IGNORE.has(prop) && mark[prop] !== undefined && ignore[prop] !== 'ignore') {\n            m[prop] = signalOrValueRef(mark[prop]);\n        }\n        return m;\n    }, {});\n}\nfunction allFieldsInvalidPredicate(model, { invalid = false, channels }) {\n    const filterIndex = channels.reduce((aggregator, channel) => {\n        const scaleComponent = model.getScaleComponent(channel);\n        if (scaleComponent) {\n            const scaleType = scaleComponent.get('type');\n            const field = model.vgField(channel, { expr: 'datum' });\n            // While discrete domain scales can handle invalid values, continuous scales can't.\n            if (field && hasContinuousDomain(scaleType)) {\n                aggregator[field] = true;\n            }\n        }\n        return aggregator;\n    }, {});\n    const fields = keys(filterIndex);\n    if (fields.length > 0) {\n        const op = invalid ? '||' : '&&';\n        return fields.map(field => fieldInvalidPredicate(field, invalid)).join(` ${op} `);\n    }\n    return undefined;\n}\n//# sourceMappingURL=base.js.map","import { POSITION_SCALE_CHANNELS } from '../../../channel';\nimport { hasContinuousDomain } from '../../../scale';\nimport { keys } from '../../../util';\nimport { getMarkPropOrConfig, signalOrValueRef } from '../../common';\nimport { fieldInvalidPredicate } from './valueref';\nexport function defined(model) {\n    const { config, markDef } = model;\n    const invalid = getMarkPropOrConfig('invalid', markDef, config);\n    if (invalid) {\n        const signal = allFieldsInvalidPredicate(model, { channels: POSITION_SCALE_CHANNELS });\n        if (signal) {\n            return { defined: { signal } };\n        }\n    }\n    return {};\n}\nfunction allFieldsInvalidPredicate(model, { invalid = false, channels }) {\n    const filterIndex = channels.reduce((aggregator, channel) => {\n        const scaleComponent = model.getScaleComponent(channel);\n        if (scaleComponent) {\n            const scaleType = scaleComponent.get('type');\n            const field = model.vgField(channel, { expr: 'datum' });\n            // While discrete domain scales can handle invalid values, continuous scales can't.\n            if (field && hasContinuousDomain(scaleType)) {\n                aggregator[field] = true;\n            }\n        }\n        return aggregator;\n    }, {});\n    const fields = keys(filterIndex);\n    if (fields.length > 0) {\n        const op = invalid ? '||' : '&&';\n        return fields.map(field => fieldInvalidPredicate(field, invalid)).join(` ${op} `);\n    }\n    return undefined;\n}\nexport function valueIfDefined(prop, value) {\n    if (value !== undefined) {\n        return { [prop]: signalOrValueRef(value) };\n    }\n    return undefined;\n}\n//# sourceMappingURL=defined.js.map","export { baseEncodeEntry } from './base';\nexport { color } from './color';\nexport { wrapCondition } from './conditional';\nexport { defined, valueIfDefined } from './defined';\nexport { nonPosition } from './nonposition';\nexport { pointPosition } from './position-point';\nexport { pointOrRangePosition, rangePosition } from './position-range';\nexport { rectBinPosition, rectPosition } from './position-rect';\nexport { text } from './text';\nexport { tooltip, tooltipRefForEncoding } from './tooltip';\nexport { aria } from './aria';\n//# sourceMappingURL=index.js.map","import * as log from '../../../log';\nimport { isPathMark } from '../../../mark';\nimport { tooltip } from '../../mark/encode';\nconst VORONOI = 'voronoi';\nconst nearest = {\n    has: selCmpt => {\n        return selCmpt.type !== 'interval' && selCmpt.nearest;\n    },\n    parse: (model, selCmpt) => {\n        // Scope selection events to the voronoi mark to prevent capturing\n        // events that occur on the group mark (https://github.com/vega/vega/issues/2112).\n        if (selCmpt.events) {\n            for (const s of selCmpt.events) {\n                s.markname = model.getName(VORONOI);\n            }\n        }\n    },\n    marks: (model, selCmpt, marks) => {\n        const { x, y } = selCmpt.project.hasChannel;\n        const markType = model.mark;\n        if (isPathMark(markType)) {\n            log.warn(log.message.nearestNotSupportForContinuous(markType));\n            return marks;\n        }\n        const cellDef = {\n            name: model.getName(VORONOI),\n            type: 'path',\n            interactive: true,\n            from: { data: model.getName('marks') },\n            encode: {\n                update: Object.assign({ fill: { value: 'transparent' }, strokeWidth: { value: 0.35 }, stroke: { value: 'transparent' }, isVoronoi: { value: true } }, tooltip(model, { reactiveGeom: true }))\n            },\n            transform: [\n                {\n                    type: 'voronoi',\n                    x: { expr: x || !y ? 'datum.datum.x || 0' : '0' },\n                    y: { expr: y || !x ? 'datum.datum.y || 0' : '0' },\n                    size: [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')]\n                }\n            ]\n        };\n        let index = 0;\n        let exists = false;\n        marks.forEach((mark, i) => {\n            var _a;\n            const name = (_a = mark.name) !== null && _a !== void 0 ? _a : '';\n            if (name === model.component.mark[0].name) {\n                index = i;\n            }\n            else if (name.indexOf(VORONOI) >= 0) {\n                exists = true;\n            }\n        });\n        if (!exists) {\n            marks.splice(index + 1, 0, cellDef);\n        }\n        return marks;\n    }\n};\nexport default nearest;\n//# sourceMappingURL=nearest.js.map","import { uniqueId } from '../../util';\n/**\n * A node in the dataflow tree.\n */\nexport class DataFlowNode {\n    constructor(parent, debugName) {\n        this.debugName = debugName;\n        this._children = [];\n        this._parent = null;\n        if (parent) {\n            this.parent = parent;\n        }\n    }\n    /**\n     * Clone this node with a deep copy but don't clone links to children or parents.\n     */\n    clone() {\n        throw new Error('Cannot clone node');\n    }\n    get parent() {\n        return this._parent;\n    }\n    /**\n     * Set the parent of the node and also add this node to the parent's children.\n     */\n    set parent(parent) {\n        this._parent = parent;\n        if (parent) {\n            parent.addChild(this);\n        }\n    }\n    get children() {\n        return this._children;\n    }\n    numChildren() {\n        return this._children.length;\n    }\n    addChild(child, loc) {\n        // do not add the same child twice\n        if (this._children.indexOf(child) > -1) {\n            console.warn('Attempt to add the same child twice.');\n            return;\n        }\n        if (loc !== undefined) {\n            this._children.splice(loc, 0, child);\n        }\n        else {\n            this._children.push(child);\n        }\n    }\n    removeChild(oldChild) {\n        const loc = this._children.indexOf(oldChild);\n        this._children.splice(loc, 1);\n        return loc;\n    }\n    /**\n     * Remove node from the dataflow.\n     */\n    remove() {\n        let loc = this._parent.removeChild(this);\n        for (const child of this._children) {\n            // do not use the set method because we want to insert at a particular location\n            child._parent = this._parent;\n            this._parent.addChild(child, loc++);\n        }\n    }\n    /**\n     * Insert another node as a parent of this node.\n     */\n    insertAsParentOf(other) {\n        const parent = other.parent;\n        parent.removeChild(this);\n        this.parent = parent;\n        other.parent = this;\n    }\n    swapWithParent() {\n        const parent = this._parent;\n        const newParent = parent.parent;\n        // reconnect the children\n        for (const child of this._children) {\n            child.parent = parent;\n        }\n        // remove old links\n        this._children = []; // equivalent to removing every child link one by one\n        parent.removeChild(this);\n        parent.parent.removeChild(parent);\n        // swap two nodes\n        this.parent = newParent;\n        parent.parent = this;\n    }\n}\nexport class OutputNode extends DataFlowNode {\n    /**\n     * @param source The name of the source. Will change in assemble.\n     * @param type The type of the output node.\n     * @param refCounts A global ref counter map.\n     */\n    constructor(parent, source, type, refCounts) {\n        super(parent, source);\n        this.type = type;\n        this.refCounts = refCounts;\n        this._source = this._name = source;\n        if (this.refCounts && !(this._name in this.refCounts)) {\n            this.refCounts[this._name] = 0;\n        }\n    }\n    clone() {\n        const cloneObj = new this.constructor();\n        cloneObj.debugName = 'clone_' + this.debugName;\n        cloneObj._source = this._source;\n        cloneObj._name = 'clone_' + this._name;\n        cloneObj.type = this.type;\n        cloneObj.refCounts = this.refCounts;\n        cloneObj.refCounts[cloneObj._name] = 0;\n        return cloneObj;\n    }\n    dependentFields() {\n        return new Set();\n    }\n    producedFields() {\n        return new Set();\n    }\n    hash() {\n        if (this._hash === undefined) {\n            this._hash = `Output ${uniqueId()}`;\n        }\n        return this._hash;\n    }\n    /**\n     * Request the datasource name and increase the ref counter.\n     *\n     * During the parsing phase, this will return the simple name such as 'main' or 'raw'.\n     * It is crucial to request the name from an output node to mark it as a required node.\n     * If nobody ever requests the name, this datasource will not be instantiated in the assemble phase.\n     *\n     * In the assemble phase, this will return the correct name.\n     */\n    getSource() {\n        this.refCounts[this._name]++;\n        return this._source;\n    }\n    isRequired() {\n        return !!this.refCounts[this._name];\n    }\n    setSource(source) {\n        this._source = source;\n    }\n}\n//# sourceMappingURL=dataflow.js.map","import { __rest } from \"tslib\";\nimport { getSecondaryRangeChannel } from '../../channel';\nimport { hasBand, vgField } from '../../channeldef';\nimport { getTimeUnitParts, normalizeTimeUnit } from '../../timeunit';\nimport { duplicate, hash, isEmpty, replacePathInField, vals } from '../../util';\nimport { isUnitModel } from '../model';\nimport { DataFlowNode } from './dataflow';\nexport class TimeUnitNode extends DataFlowNode {\n    constructor(parent, formula) {\n        super(parent);\n        this.formula = formula;\n    }\n    clone() {\n        return new TimeUnitNode(null, duplicate(this.formula));\n    }\n    static makeFromEncoding(parent, model) {\n        const formula = model.reduceFieldDef((timeUnitComponent, fieldDef, channel) => {\n            const { field, timeUnit } = fieldDef;\n            const channelDef2 = isUnitModel(model) ? model.encoding[getSecondaryRangeChannel(channel)] : undefined;\n            const band = isUnitModel(model) && hasBand(channel, fieldDef, channelDef2, model.stack, model.markDef, model.config);\n            if (timeUnit) {\n                const as = vgField(fieldDef, { forAs: true });\n                timeUnitComponent[hash({\n                    as,\n                    field,\n                    timeUnit\n                })] = Object.assign({ as,\n                    field,\n                    timeUnit }, (band ? { band: true } : {}));\n            }\n            return timeUnitComponent;\n        }, {});\n        if (isEmpty(formula)) {\n            return null;\n        }\n        return new TimeUnitNode(parent, formula);\n    }\n    static makeFromTransform(parent, t) {\n        const _a = Object.assign({}, t), { timeUnit } = _a, other = __rest(_a, [\"timeUnit\"]);\n        const normalizedTimeUnit = normalizeTimeUnit(timeUnit);\n        const component = Object.assign(Object.assign({}, other), { timeUnit: normalizedTimeUnit });\n        return new TimeUnitNode(parent, {\n            [hash(component)]: component\n        });\n    }\n    /**\n     * Merge together TimeUnitNodes assigning the children of `other` to `this`\n     * and removing `other`.\n     */\n    merge(other) {\n        this.formula = Object.assign({}, this.formula);\n        // if the same hash happen twice, merge \"band\"\n        for (const key in other.formula) {\n            if (!this.formula[key] || other.formula[key].band) {\n                // copy if it's not a duplicate or if we need to include copy band over\n                this.formula[key] = other.formula[key];\n            }\n        }\n        for (const child of other.children) {\n            other.removeChild(child);\n            child.parent = this;\n        }\n        other.remove();\n    }\n    producedFields() {\n        return new Set(vals(this.formula).map(f => f.as));\n    }\n    dependentFields() {\n        return new Set(vals(this.formula).map(f => f.field));\n    }\n    hash() {\n        return `TimeUnit ${hash(this.formula)}`;\n    }\n    assemble() {\n        const transforms = [];\n        for (const f of vals(this.formula)) {\n            const { field, as, timeUnit } = f;\n            const _a = normalizeTimeUnit(timeUnit), { unit, utc } = _a, params = __rest(_a, [\"unit\", \"utc\"]);\n            transforms.push(Object.assign(Object.assign(Object.assign(Object.assign({ field: replacePathInField(field), type: 'timeunit' }, (unit ? { units: getTimeUnitParts(unit) } : {})), (utc ? { timezone: 'utc' } : {})), params), { as: [as, `${as}_end`] }));\n        }\n        return transforms;\n    }\n}\n//# sourceMappingURL=timeunit.js.map","import { __rest } from \"tslib\";\nimport { array } from 'vega-util';\nimport { isSingleDefUnitChannel } from '../../../channel';\nimport * as log from '../../../log';\nimport { hasContinuousDomain } from '../../../scale';\nimport { hash, keys, replacePathInField, varName, isEmpty } from '../../../util';\nimport { TimeUnitNode } from '../../data/timeunit';\nexport const TUPLE_FIELDS = '_tuple_fields';\nexport class SelectionProjectionComponent {\n    constructor(...items) {\n        this.items = items;\n        this.hasChannel = {};\n        this.hasField = {};\n    }\n}\nconst project = {\n    has: () => {\n        return true; // This transform handles its own defaults, so always run parse.\n    },\n    parse: (model, selCmpt, selDef) => {\n        var _a, _b, _c;\n        const name = selCmpt.name;\n        const proj = (_a = selCmpt.project) !== null && _a !== void 0 ? _a : (selCmpt.project = new SelectionProjectionComponent());\n        const parsed = {};\n        const timeUnits = {};\n        const signals = new Set();\n        const signalName = (p, range) => {\n            const suffix = range === 'visual' ? p.channel : p.field;\n            let sg = varName(`${name}_${suffix}`);\n            for (let counter = 1; signals.has(sg); counter++) {\n                sg = varName(`${name}_${suffix}_${counter}`);\n            }\n            signals.add(sg);\n            return { [range]: sg };\n        };\n        // If no explicit projection (either fields or encodings) is specified, set some defaults.\n        // If an initial value is set, try to infer projections.\n        // Otherwise, use the default configuration.\n        if (!selDef.fields && !selDef.encodings) {\n            const cfg = model.config.selection[selDef.type];\n            if (selDef.init) {\n                for (const init of array(selDef.init)) {\n                    for (const key of keys(init)) {\n                        if (isSingleDefUnitChannel(key)) {\n                            (selDef.encodings || (selDef.encodings = [])).push(key);\n                        }\n                        else {\n                            if (selDef.type === 'interval') {\n                                log.warn('Interval selections should be initialized using \"x\" and/or \"y\" keys.');\n                                selDef.encodings = cfg.encodings;\n                            }\n                            else {\n                                (selDef.fields || (selDef.fields = [])).push(key);\n                            }\n                        }\n                    }\n                }\n            }\n            else {\n                selDef.encodings = cfg.encodings;\n                selDef.fields = cfg.fields;\n            }\n        }\n        // TODO: find a possible channel mapping for these fields.\n        for (const field of (_b = selDef.fields) !== null && _b !== void 0 ? _b : []) {\n            const p = { type: 'E', field };\n            p.signals = Object.assign({}, signalName(p, 'data'));\n            proj.items.push(p);\n            proj.hasField[field] = p;\n        }\n        for (const channel of (_c = selDef.encodings) !== null && _c !== void 0 ? _c : []) {\n            const fieldDef = model.fieldDef(channel);\n            if (fieldDef) {\n                let field = fieldDef.field;\n                if (fieldDef.aggregate) {\n                    log.warn(log.message.cannotProjectAggregate(channel, fieldDef.aggregate));\n                    continue;\n                }\n                else if (!field) {\n                    log.warn(log.message.cannotProjectOnChannelWithoutField(channel));\n                    continue;\n                }\n                if (fieldDef.timeUnit) {\n                    field = model.vgField(channel);\n                    // Construct TimeUnitComponents which will be combined into a\n                    // TimeUnitNode. This node may need to be inserted into the\n                    // dataflow if the selection is used across views that do not\n                    // have these time units defined.\n                    const component = {\n                        timeUnit: fieldDef.timeUnit,\n                        as: field,\n                        field: fieldDef.field\n                    };\n                    timeUnits[hash(component)] = component;\n                }\n                // Prevent duplicate projections on the same field.\n                // TODO: what if the same field is bound to multiple channels (e.g., SPLOM diag).\n                if (!parsed[field]) {\n                    // Determine whether the tuple will store enumerated or ranged values.\n                    // Interval selections store ranges for continuous scales, and enumerations otherwise.\n                    // Single/multi selections store ranges for binned fields, and enumerations otherwise.\n                    let type = 'E';\n                    if (selCmpt.type === 'interval') {\n                        const scaleType = model.getScaleComponent(channel).get('type');\n                        if (hasContinuousDomain(scaleType)) {\n                            type = 'R';\n                        }\n                    }\n                    else if (fieldDef.bin) {\n                        type = 'R-RE';\n                    }\n                    const p = { field, channel, type };\n                    p.signals = Object.assign(Object.assign({}, signalName(p, 'data')), signalName(p, 'visual'));\n                    proj.items.push((parsed[field] = p));\n                    proj.hasField[field] = proj.hasChannel[channel] = parsed[field];\n                }\n            }\n            else {\n                log.warn(log.message.cannotProjectOnChannelWithoutField(channel));\n            }\n        }\n        if (selDef.init) {\n            const parseInit = (i) => {\n                return proj.items.map(p => (i[p.channel] !== undefined ? i[p.channel] : i[p.field]));\n            };\n            if (selDef.type === 'interval') {\n                selCmpt.init = parseInit(selDef.init);\n            }\n            else {\n                const init = array(selDef.init);\n                selCmpt.init = init.map(parseInit);\n            }\n        }\n        if (!isEmpty(timeUnits)) {\n            proj.timeUnit = new TimeUnitNode(null, timeUnits);\n        }\n    },\n    signals: (model, selCmpt, allSignals) => {\n        const name = selCmpt.name + TUPLE_FIELDS;\n        const hasSignal = allSignals.filter(s => s.name === name);\n        return hasSignal.length > 0\n            ? allSignals\n            : allSignals.concat({\n                name,\n                value: selCmpt.project.items.map(proj => {\n                    const { signals, hasLegend } = proj, rest = __rest(proj, [\"signals\", \"hasLegend\"]);\n                    rest.field = replacePathInField(rest.field);\n                    return rest;\n                })\n            });\n    }\n};\nexport default project;\n//# sourceMappingURL=project.js.map","import { stringValue } from 'vega-util';\nimport { TUPLE } from '..';\nimport { varName } from '../../../util';\nimport { assembleInit } from '../assemble';\nimport nearest from './nearest';\nimport { TUPLE_FIELDS } from './project';\nimport { isLegendBinding } from '../../../selection';\nconst inputBindings = {\n    has: selCmpt => {\n        return (selCmpt.type === 'single' &&\n            selCmpt.resolve === 'global' &&\n            selCmpt.bind &&\n            selCmpt.bind !== 'scales' &&\n            !isLegendBinding(selCmpt.bind));\n    },\n    parse: (model, selCmpt, selDef, origDef) => {\n        // Binding a selection to input widgets disables default direct manipulation interaction.\n        // A user can choose to re-enable it by explicitly specifying triggering input events.\n        if (!origDef.on)\n            delete selCmpt.events;\n        if (!origDef.clear)\n            delete selCmpt.clear;\n    },\n    topLevelSignals: (model, selCmpt, signals) => {\n        const name = selCmpt.name;\n        const proj = selCmpt.project;\n        const bind = selCmpt.bind;\n        const init = selCmpt.init && selCmpt.init[0]; // Can only exist on single selections (one initial value).\n        const datum = nearest.has(selCmpt) ? '(item().isVoronoi ? datum.datum : datum)' : 'datum';\n        proj.items.forEach((p, i) => {\n            var _a, _b;\n            const sgname = varName(`${name}_${p.field}`);\n            const hasSignal = signals.filter(s => s.name === sgname);\n            if (!hasSignal.length) {\n                signals.unshift(Object.assign(Object.assign({ name: sgname }, (init ? { init: assembleInit(init[i]) } : { value: null })), { on: selCmpt.events\n                        ? [\n                            {\n                                events: selCmpt.events,\n                                update: `datum && item().mark.marktype !== 'group' ? ${datum}[${stringValue(p.field)}] : null`\n                            }\n                        ]\n                        : [], bind: (_b = (_a = bind[p.field]) !== null && _a !== void 0 ? _a : bind[p.channel]) !== null && _b !== void 0 ? _b : bind }));\n            }\n        });\n        return signals;\n    },\n    signals: (model, selCmpt, signals) => {\n        const name = selCmpt.name;\n        const proj = selCmpt.project;\n        const signal = signals.filter(s => s.name === name + TUPLE)[0];\n        const fields = name + TUPLE_FIELDS;\n        const values = proj.items.map(p => varName(`${name}_${p.field}`));\n        const valid = values.map(v => `${v} !== null`).join(' && ');\n        if (values.length) {\n            signal.update = `${valid} ? {fields: ${fields}, values: [${values.join(', ')}]} : null`;\n        }\n        delete signal.value;\n        delete signal.on;\n        return signals;\n    }\n};\nexport default inputBindings;\n//# sourceMappingURL=inputs.js.map","import { TUPLE, unitName } from '..';\nexport const TOGGLE = '_toggle';\nconst toggle = {\n    has: selCmpt => {\n        return selCmpt.type === 'multi' && !!selCmpt.toggle;\n    },\n    signals: (model, selCmpt, signals) => {\n        return signals.concat({\n            name: selCmpt.name + TOGGLE,\n            value: false,\n            on: [{ events: selCmpt.events, update: selCmpt.toggle }]\n        });\n    },\n    modifyExpr: (model, selCmpt) => {\n        const tpl = selCmpt.name + TUPLE;\n        const signal = selCmpt.name + TOGGLE;\n        return (`${signal} ? null : ${tpl}, ` +\n            (selCmpt.resolve === 'global' ? `${signal} ? null : true, ` : `${signal} ? null : {unit: ${unitName(model)}}, `) +\n            `${signal} ? ${tpl} : null`);\n    }\n};\nexport default toggle;\n//# sourceMappingURL=toggle.js.map","import { selector as parseSelector } from 'vega-event-selector';\nimport { isString } from 'vega-util';\nimport { TUPLE } from '..';\nimport { varName } from '../../../util';\nimport inputBindings from './inputs';\nimport toggle, { TOGGLE } from './toggle';\nconst clear = {\n    has: selCmpt => {\n        return selCmpt.clear !== undefined && selCmpt.clear !== false;\n    },\n    parse: (model, selCmpt, selDef) => {\n        if (selDef.clear) {\n            selCmpt.clear = isString(selDef.clear) ? parseSelector(selDef.clear, 'scope') : selDef.clear;\n        }\n    },\n    topLevelSignals: (model, selCmpt, signals) => {\n        if (inputBindings.has(selCmpt)) {\n            for (const proj of selCmpt.project.items) {\n                const idx = signals.findIndex(n => n.name === varName(`${selCmpt.name}_${proj.field}`));\n                if (idx !== -1) {\n                    signals[idx].on.push({ events: selCmpt.clear, update: 'null' });\n                }\n            }\n        }\n        return signals;\n    },\n    signals: (model, selCmpt, signals) => {\n        function addClear(idx, update) {\n            if (idx !== -1 && signals[idx].on) {\n                signals[idx].on.push({ events: selCmpt.clear, update });\n            }\n        }\n        // Be as minimalist as possible when adding clear triggers to minimize dataflow execution.\n        if (selCmpt.type === 'interval') {\n            for (const proj of selCmpt.project.items) {\n                const vIdx = signals.findIndex(n => n.name === proj.signals.visual);\n                addClear(vIdx, '[0, 0]');\n                if (vIdx === -1) {\n                    const dIdx = signals.findIndex(n => n.name === proj.signals.data);\n                    addClear(dIdx, 'null');\n                }\n            }\n        }\n        else {\n            let tIdx = signals.findIndex(n => n.name === selCmpt.name + TUPLE);\n            addClear(tIdx, 'null');\n            if (toggle.has(selCmpt)) {\n                tIdx = signals.findIndex(n => n.name === selCmpt.name + TOGGLE);\n                addClear(tIdx, 'false');\n            }\n        }\n        return signals;\n    }\n};\nexport default clear;\n//# sourceMappingURL=clear.js.map","import { stringValue } from 'vega-util';\nimport { VL_SELECTION_RESOLVE } from '..';\nimport { isScaleChannel } from '../../../channel';\nimport * as log from '../../../log';\nimport { hasContinuousDomain } from '../../../scale';\nimport { isLayerModel } from '../../model';\nconst scaleBindings = {\n    has: selCmpt => {\n        return selCmpt.type === 'interval' && selCmpt.resolve === 'global' && selCmpt.bind && selCmpt.bind === 'scales';\n    },\n    parse: (model, selCmpt) => {\n        const bound = (selCmpt.scales = []);\n        for (const proj of selCmpt.project.items) {\n            const channel = proj.channel;\n            if (!isScaleChannel(channel)) {\n                continue;\n            }\n            const scale = model.getScaleComponent(channel);\n            const scaleType = scale ? scale.get('type') : undefined;\n            if (!scale || !hasContinuousDomain(scaleType)) {\n                log.warn(log.message.SCALE_BINDINGS_CONTINUOUS);\n                continue;\n            }\n            const extent = { selection: selCmpt.name, field: proj.field };\n            scale.set('selectionExtent', extent, true);\n            bound.push(proj);\n        }\n    },\n    topLevelSignals: (model, selCmpt, signals) => {\n        const bound = selCmpt.scales.filter(proj => signals.filter(s => s.name === proj.signals.data).length === 0);\n        // Top-level signals are only needed for multiview displays and if this\n        // view's top-level signals haven't already been generated.\n        if (!model.parent || isTopLevelLayer(model) || bound.length === 0) {\n            return signals;\n        }\n        // vlSelectionResolve does not account for the behavior of bound scales in\n        // multiview displays. Each unit view adds a tuple to the store, but the\n        // state of the selection is the unit selection most recently updated. This\n        // state is captured by the top-level signals that we insert and \"push\n        // outer\" to from within the units. We need to reassemble this state into\n        // the top-level named signal, except no single selCmpt has a global view.\n        const namedSg = signals.filter(s => s.name === selCmpt.name)[0];\n        let update = namedSg.update;\n        if (update.indexOf(VL_SELECTION_RESOLVE) >= 0) {\n            namedSg.update = `{${bound.map(proj => `${stringValue(proj.field)}: ${proj.signals.data}`).join(', ')}}`;\n        }\n        else {\n            for (const proj of bound) {\n                const mapping = `${stringValue(proj.field)}: ${proj.signals.data}`;\n                if (update.indexOf(mapping) < 0) {\n                    update = `${update.substring(0, update.length - 1)}, ${mapping}}`;\n                }\n            }\n            namedSg.update = update;\n        }\n        return signals.concat(bound.map(proj => ({ name: proj.signals.data })));\n    },\n    signals: (model, selCmpt, signals) => {\n        // Nested signals need only push to top-level signals with multiview displays.\n        if (model.parent && !isTopLevelLayer(model)) {\n            for (const proj of selCmpt.scales) {\n                const signal = signals.filter(s => s.name === proj.signals.data)[0];\n                signal.push = 'outer';\n                delete signal.value;\n                delete signal.update;\n            }\n        }\n        return signals;\n    }\n};\nexport default scaleBindings;\nexport function domain(model, channel) {\n    const scale = stringValue(model.scaleName(channel));\n    return `domain(${scale})`;\n}\nfunction isTopLevelLayer(model) {\n    var _a;\n    return model.parent && isLayerModel(model.parent) && ((_a = !model.parent.parent) !== null && _a !== void 0 ? _a : isTopLevelLayer(model.parent.parent));\n}\n//# sourceMappingURL=scales.js.map","import { selector as parseSelector } from 'vega-event-selector';\nimport { array, isString } from 'vega-util';\nimport { forEachSelection, TUPLE } from '..';\nimport * as log from '../../../log';\nimport { isLegendBinding, isLegendStreamBinding, SELECTION_ID } from '../../../selection';\nimport { duplicate, varName } from '../../../util';\nimport { TUPLE_FIELDS } from './project';\nimport { TOGGLE } from './toggle';\nconst legendBindings = {\n    has: (selCmpt) => {\n        const spec = selCmpt.resolve === 'global' && selCmpt.bind && isLegendBinding(selCmpt.bind);\n        const projLen = selCmpt.project.items.length === 1 && selCmpt.project.items[0].field !== SELECTION_ID;\n        if (spec && !projLen) {\n            log.warn(log.message.LEGEND_BINDINGS_PROJECT_LENGTH);\n        }\n        return spec && projLen;\n    },\n    parse: (model, selCmpt, selDef, origDef) => {\n        var _a;\n        // Binding a selection to a legend disables default direct manipulation interaction.\n        // A user can choose to re-enable it by explicitly specifying triggering input events.\n        if (!origDef.on)\n            delete selCmpt.events;\n        if (!origDef.clear)\n            delete selCmpt.clear;\n        if (origDef.on || origDef.clear) {\n            const legendFilter = 'event.item && indexof(event.item.mark.role, \"legend\") < 0';\n            for (const evt of selCmpt.events) {\n                evt.filter = array((_a = evt.filter) !== null && _a !== void 0 ? _a : []);\n                if (evt.filter.indexOf(legendFilter) < 0) {\n                    evt.filter.push(legendFilter);\n                }\n            }\n        }\n        const evt = isLegendStreamBinding(selCmpt.bind) ? selCmpt.bind.legend : 'click';\n        const stream = isString(evt) ? parseSelector(evt, 'view') : array(evt);\n        selCmpt.bind = { legend: { merge: stream } };\n    },\n    topLevelSignals: (model, selCmpt, signals) => {\n        const selName = selCmpt.name;\n        const stream = isLegendStreamBinding(selCmpt.bind) && selCmpt.bind.legend;\n        const markName = (name) => (s) => {\n            const ds = duplicate(s);\n            ds.markname = name;\n            return ds;\n        };\n        for (const proj of selCmpt.project.items) {\n            if (!proj.hasLegend)\n                continue;\n            const prefix = `${varName(proj.field)}_legend`;\n            const sgName = `${selName}_${prefix}`;\n            const hasSignal = signals.filter(s => s.name === sgName);\n            if (hasSignal.length === 0) {\n                const events = stream.merge\n                    .map(markName(`${prefix}_symbols`))\n                    .concat(stream.merge.map(markName(`${prefix}_labels`)))\n                    .concat(stream.merge.map(markName(`${prefix}_entries`)));\n                signals.unshift(Object.assign(Object.assign({ name: sgName }, (!selCmpt.init ? { value: null } : {})), { on: [\n                        // Legend entries do not store values, so we need to walk the scenegraph to the symbol datum.\n                        { events, update: 'datum.value || item().items[0].items[0].datum.value', force: true },\n                        { events: stream.merge, update: `!event.item || !datum ? null : ${sgName}`, force: true }\n                    ] }));\n            }\n        }\n        return signals;\n    },\n    signals: (model, selCmpt, signals) => {\n        const name = selCmpt.name;\n        const proj = selCmpt.project;\n        const tuple = signals.find(s => s.name === name + TUPLE);\n        const fields = name + TUPLE_FIELDS;\n        const values = proj.items.filter(p => p.hasLegend).map(p => varName(`${name}_${varName(p.field)}_legend`));\n        const valid = values.map(v => `${v} !== null`).join(' && ');\n        const update = `${valid} ? {fields: ${fields}, values: [${values.join(', ')}]} : null`;\n        if (selCmpt.events && values.length > 0) {\n            tuple.on.push({\n                events: values.map(signal => ({ signal })),\n                update\n            });\n        }\n        else if (values.length > 0) {\n            tuple.update = update;\n            delete tuple.value;\n            delete tuple.on;\n        }\n        const toggle = signals.find(s => s.name === name + TOGGLE);\n        const events = isLegendStreamBinding(selCmpt.bind) && selCmpt.bind.legend;\n        if (toggle) {\n            if (!selCmpt.events)\n                toggle.on[0].events = events;\n            else\n                toggle.on.push(Object.assign(Object.assign({}, toggle.on[0]), { events }));\n        }\n        return signals;\n    }\n};\nexport default legendBindings;\nexport function parseInteractiveLegend(model, channel, legendCmpt) {\n    var _a;\n    const field = (_a = model.fieldDef(channel)) === null || _a === void 0 ? void 0 : _a.field;\n    forEachSelection(model, selCmpt => {\n        var _a, _b;\n        const proj = (_a = selCmpt.project.hasField[field]) !== null && _a !== void 0 ? _a : selCmpt.project.hasChannel[channel];\n        if (proj && legendBindings.has(selCmpt)) {\n            const legendSelections = (_b = legendCmpt.get('selections')) !== null && _b !== void 0 ? _b : [];\n            legendSelections.push(selCmpt.name);\n            legendCmpt.set('selections', legendSelections, false);\n            proj.hasLegend = true;\n        }\n    });\n}\n//# sourceMappingURL=legends.js.map","import { selector as parseSelector } from 'vega-event-selector';\nimport { X, Y } from '../../../channel';\nimport { BRUSH as INTERVAL_BRUSH } from '../interval';\nimport scalesCompiler, { domain } from './scales';\nconst ANCHOR = '_translate_anchor';\nconst DELTA = '_translate_delta';\nconst translate = {\n    has: selCmpt => {\n        return selCmpt.type === 'interval' && selCmpt.translate;\n    },\n    signals: (model, selCmpt, signals) => {\n        const name = selCmpt.name;\n        const hasScales = scalesCompiler.has(selCmpt);\n        const anchor = name + ANCHOR;\n        const { x, y } = selCmpt.project.hasChannel;\n        let events = parseSelector(selCmpt.translate, 'scope');\n        if (!hasScales) {\n            events = events.map(e => ((e.between[0].markname = name + INTERVAL_BRUSH), e));\n        }\n        signals.push({\n            name: anchor,\n            value: {},\n            on: [\n                {\n                    events: events.map(e => e.between[0]),\n                    update: '{x: x(unit), y: y(unit)' +\n                        (x !== undefined ? ', extent_x: ' + (hasScales ? domain(model, X) : `slice(${x.signals.visual})`) : '') +\n                        (y !== undefined ? ', extent_y: ' + (hasScales ? domain(model, Y) : `slice(${y.signals.visual})`) : '') +\n                        '}'\n                }\n            ]\n        }, {\n            name: name + DELTA,\n            value: {},\n            on: [\n                {\n                    events: events,\n                    update: `{x: ${anchor}.x - x(unit), y: ${anchor}.y - y(unit)}`\n                }\n            ]\n        });\n        if (x !== undefined) {\n            onDelta(model, selCmpt, x, 'width', signals);\n        }\n        if (y !== undefined) {\n            onDelta(model, selCmpt, y, 'height', signals);\n        }\n        return signals;\n    }\n};\nexport default translate;\nfunction onDelta(model, selCmpt, proj, size, signals) {\n    var _a;\n    const name = selCmpt.name;\n    const anchor = name + ANCHOR;\n    const delta = name + DELTA;\n    const channel = proj.channel;\n    const hasScales = scalesCompiler.has(selCmpt);\n    const signal = signals.filter(s => s.name === proj.signals[hasScales ? 'data' : 'visual'])[0];\n    const sizeSg = model.getSizeSignalRef(size).signal;\n    const scaleCmpt = model.getScaleComponent(channel);\n    const scaleType = scaleCmpt.get('type');\n    const sign = hasScales && channel === X ? '-' : ''; // Invert delta when panning x-scales.\n    const extent = `${anchor}.extent_${channel}`;\n    const offset = `${sign}${delta}.${channel} / ` + (hasScales ? `${sizeSg}` : `span(${extent})`);\n    const panFn = !hasScales\n        ? 'panLinear'\n        : scaleType === 'log'\n            ? 'panLog'\n            : scaleType === 'pow'\n                ? 'panPow'\n                : 'panLinear';\n    const update = `${panFn}(${extent}, ${offset}` +\n        (hasScales && scaleType === 'pow' ? `, ${(_a = scaleCmpt.get('exponent')) !== null && _a !== void 0 ? _a : 1}` : '') +\n        ')';\n    signal.on.push({\n        events: { signal: delta },\n        update: hasScales ? update : `clampRange(${update}, 0, ${sizeSg})`\n    });\n}\n//# sourceMappingURL=translate.js.map","import { selector as parseSelector } from 'vega-event-selector';\nimport { stringValue } from 'vega-util';\nimport { X, Y } from '../../../channel';\nimport { BRUSH as INTERVAL_BRUSH } from '../interval';\nimport { default as scalesCompiler, domain } from './scales';\nconst ANCHOR = '_zoom_anchor';\nconst DELTA = '_zoom_delta';\nconst zoom = {\n    has: selCmpt => {\n        return selCmpt.type === 'interval' && selCmpt.zoom;\n    },\n    signals: (model, selCmpt, signals) => {\n        const name = selCmpt.name;\n        const hasScales = scalesCompiler.has(selCmpt);\n        const delta = name + DELTA;\n        const { x, y } = selCmpt.project.hasChannel;\n        const sx = stringValue(model.scaleName(X));\n        const sy = stringValue(model.scaleName(Y));\n        let events = parseSelector(selCmpt.zoom, 'scope');\n        if (!hasScales) {\n            events = events.map(e => ((e.markname = name + INTERVAL_BRUSH), e));\n        }\n        signals.push({\n            name: name + ANCHOR,\n            on: [\n                {\n                    events: events,\n                    update: !hasScales\n                        ? `{x: x(unit), y: y(unit)}`\n                        : '{' +\n                            [sx ? `x: invert(${sx}, x(unit))` : '', sy ? `y: invert(${sy}, y(unit))` : '']\n                                .filter(expr => !!expr)\n                                .join(', ') +\n                            '}'\n                }\n            ]\n        }, {\n            name: delta,\n            on: [\n                {\n                    events: events,\n                    force: true,\n                    update: 'pow(1.001, event.deltaY * pow(16, event.deltaMode))'\n                }\n            ]\n        });\n        if (x !== undefined) {\n            onDelta(model, selCmpt, x, 'width', signals);\n        }\n        if (y !== undefined) {\n            onDelta(model, selCmpt, y, 'height', signals);\n        }\n        return signals;\n    }\n};\nexport default zoom;\nfunction onDelta(model, selCmpt, proj, size, signals) {\n    var _a;\n    const name = selCmpt.name;\n    const channel = proj.channel;\n    const hasScales = scalesCompiler.has(selCmpt);\n    const signal = signals.filter(s => s.name === proj.signals[hasScales ? 'data' : 'visual'])[0];\n    const sizeSg = model.getSizeSignalRef(size).signal;\n    const scaleCmpt = model.getScaleComponent(channel);\n    const scaleType = scaleCmpt.get('type');\n    const base = hasScales ? domain(model, channel) : signal.name;\n    const delta = name + DELTA;\n    const anchor = `${name}${ANCHOR}.${channel}`;\n    const zoomFn = !hasScales\n        ? 'zoomLinear'\n        : scaleType === 'log'\n            ? 'zoomLog'\n            : scaleType === 'pow'\n                ? 'zoomPow'\n                : 'zoomLinear';\n    const update = `${zoomFn}(${base}, ${anchor}, ${delta}` +\n        (hasScales && scaleType === 'pow' ? `, ${(_a = scaleCmpt.get('exponent')) !== null && _a !== void 0 ? _a : 1}` : '') +\n        ')';\n    signal.on.push({\n        events: { signal: delta },\n        update: hasScales ? update : `clampRange(${update}, 0, ${sizeSg})`\n    });\n}\n//# sourceMappingURL=zoom.js.map","import clear from './clear';\nimport inputs from './inputs';\nimport nearest from './nearest';\nimport project from './project';\nimport scales from './scales';\nimport legends from './legends';\nimport toggle from './toggle';\nimport translate from './translate';\nimport zoom from './zoom';\nconst compilers = [project, toggle, scales, legends, translate, zoom, inputs, nearest, clear];\nexport function forEachTransform(selCmpt, cb) {\n    for (const t of compilers) {\n        if (t.has(selCmpt)) {\n            cb(t);\n        }\n    }\n}\n//# sourceMappingURL=transforms.js.map","import { __rest } from \"tslib\";\nimport { selector as parseSelector } from 'vega-event-selector';\nimport { identity, isArray, stringValue } from 'vega-util';\nimport { forEachSelection, MODIFY, STORE, unitName, VL_SELECTION_RESOLVE, TUPLE } from '.';\nimport { dateTimeToExpr, isDateTime, dateTimeToTimestamp } from '../../datetime';\nimport { keys, varName } from '../../util';\nimport { isUnitModel } from '../model';\nimport { forEachTransform } from './transforms/transforms';\nimport { parseSelectionBinExtent } from './parse';\nexport function assembleInit(init, isExpr = true, wrap = identity) {\n    if (isArray(init)) {\n        const assembled = init.map(v => assembleInit(v, isExpr, wrap));\n        return isExpr ? `[${assembled.join(', ')}]` : assembled;\n    }\n    else if (isDateTime(init)) {\n        if (isExpr) {\n            return wrap(dateTimeToExpr(init));\n        }\n        else {\n            return wrap(dateTimeToTimestamp(init));\n        }\n    }\n    return isExpr ? wrap(JSON.stringify(init)) : init;\n}\nexport function assembleUnitSelectionSignals(model, signals) {\n    forEachSelection(model, (selCmpt, selCompiler) => {\n        const name = selCmpt.name;\n        let modifyExpr = selCompiler.modifyExpr(model, selCmpt);\n        signals.push(...selCompiler.signals(model, selCmpt));\n        forEachTransform(selCmpt, txCompiler => {\n            if (txCompiler.signals) {\n                signals = txCompiler.signals(model, selCmpt, signals);\n            }\n            if (txCompiler.modifyExpr) {\n                modifyExpr = txCompiler.modifyExpr(model, selCmpt, modifyExpr);\n            }\n        });\n        signals.push({\n            name: name + MODIFY,\n            on: [\n                {\n                    events: { signal: selCmpt.name + TUPLE },\n                    update: `modify(${stringValue(selCmpt.name + STORE)}, ${modifyExpr})`\n                }\n            ]\n        });\n    });\n    return cleanupEmptyOnArray(signals);\n}\nexport function assembleFacetSignals(model, signals) {\n    if (model.component.selection && keys(model.component.selection).length) {\n        const name = stringValue(model.getName('cell'));\n        signals.unshift({\n            name: 'facet',\n            value: {},\n            on: [\n                {\n                    events: parseSelector('mousemove', 'scope'),\n                    update: `isTuple(facet) ? facet : group(${name}).datum`\n                }\n            ]\n        });\n    }\n    return cleanupEmptyOnArray(signals);\n}\nexport function assembleTopLevelSignals(model, signals) {\n    let hasSelections = false;\n    forEachSelection(model, (selCmpt, selCompiler) => {\n        const name = selCmpt.name;\n        const store = stringValue(name + STORE);\n        const hasSg = signals.filter(s => s.name === name);\n        if (hasSg.length === 0) {\n            const resolve = selCmpt.resolve === 'global' ? 'union' : selCmpt.resolve;\n            const isMulti = selCmpt.type === 'multi' ? ', true)' : ')';\n            signals.push({\n                name: selCmpt.name,\n                update: `${VL_SELECTION_RESOLVE}(${store}, ${stringValue(resolve)}${isMulti}`\n            });\n        }\n        hasSelections = true;\n        if (selCompiler.topLevelSignals) {\n            signals = selCompiler.topLevelSignals(model, selCmpt, signals);\n        }\n        forEachTransform(selCmpt, txCompiler => {\n            if (txCompiler.topLevelSignals) {\n                signals = txCompiler.topLevelSignals(model, selCmpt, signals);\n            }\n        });\n    });\n    if (hasSelections) {\n        const hasUnit = signals.filter(s => s.name === 'unit');\n        if (hasUnit.length === 0) {\n            signals.unshift({\n                name: 'unit',\n                value: {},\n                on: [{ events: 'mousemove', update: 'isTuple(group()) ? group() : unit' }]\n            });\n        }\n    }\n    return cleanupEmptyOnArray(signals);\n}\nexport function assembleUnitSelectionData(model, data) {\n    const dataCopy = [...data];\n    forEachSelection(model, selCmpt => {\n        const init = { name: selCmpt.name + STORE };\n        if (selCmpt.init) {\n            const fields = selCmpt.project.items.map(proj => {\n                const { signals } = proj, rest = __rest(proj, [\"signals\"]);\n                return rest;\n            });\n            const insert = selCmpt.init.map(i => assembleInit(i, false));\n            init.values =\n                selCmpt.type === 'interval'\n                    ? [{ unit: unitName(model, { escape: false }), fields, values: insert }]\n                    : insert.map(i => ({ unit: unitName(model, { escape: false }), fields, values: i }));\n        }\n        const contains = dataCopy.filter(d => d.name === selCmpt.name + STORE);\n        if (!contains.length) {\n            dataCopy.push(init);\n        }\n    });\n    return dataCopy;\n}\nexport function assembleUnitSelectionMarks(model, marks) {\n    forEachSelection(model, (selCmpt, selCompiler) => {\n        marks = selCompiler.marks ? selCompiler.marks(model, selCmpt, marks) : marks;\n        forEachTransform(selCmpt, txCompiler => {\n            if (txCompiler.marks) {\n                marks = txCompiler.marks(model, selCmpt, marks);\n            }\n        });\n    });\n    return marks;\n}\nexport function assembleLayerSelectionMarks(model, marks) {\n    for (const child of model.children) {\n        if (isUnitModel(child)) {\n            marks = assembleUnitSelectionMarks(child, marks);\n        }\n    }\n    return marks;\n}\nexport function assembleSelectionScaleDomain(model, extent) {\n    const name = extent.selection;\n    const selCmpt = model.getSelectionComponent(name, varName(name));\n    return { signal: parseSelectionBinExtent(selCmpt, extent) };\n}\nfunction cleanupEmptyOnArray(signals) {\n    return signals.map(s => {\n        if (s.on && !s.on.length)\n            delete s.on;\n        return s;\n    });\n}\n//# sourceMappingURL=assemble.js.map","import { __rest } from \"tslib\";\nimport { array, stringValue } from 'vega-util';\nimport { STORE, TUPLE, unitName } from '.';\nimport { X, Y } from '../../channel';\nimport { warn } from '../../log';\nimport { hasContinuousDomain } from '../../scale';\nimport { keys } from '../../util';\nimport { assembleInit } from './assemble';\nimport { TUPLE_FIELDS } from './transforms/project';\nimport scales from './transforms/scales';\nexport const BRUSH = '_brush';\nexport const SCALE_TRIGGER = '_scale_trigger';\nconst interval = {\n    signals: (model, selCmpt) => {\n        const name = selCmpt.name;\n        const fieldsSg = name + TUPLE_FIELDS;\n        const hasScales = scales.has(selCmpt);\n        const signals = [];\n        const dataSignals = [];\n        const scaleTriggers = [];\n        if (selCmpt.translate && !hasScales) {\n            const filterExpr = `!event.item || event.item.mark.name !== ${stringValue(name + BRUSH)}`;\n            events(selCmpt, (on, evt) => {\n                var _a;\n                const filters = array((_a = evt.between[0].filter) !== null && _a !== void 0 ? _a : (evt.between[0].filter = []));\n                if (filters.indexOf(filterExpr) < 0) {\n                    filters.push(filterExpr);\n                }\n                return on;\n            });\n        }\n        selCmpt.project.items.forEach((proj, i) => {\n            const channel = proj.channel;\n            if (channel !== X && channel !== Y) {\n                warn('Interval selections only support x and y encoding channels.');\n                return;\n            }\n            const init = selCmpt.init ? selCmpt.init[i] : null;\n            const cs = channelSignals(model, selCmpt, proj, init);\n            const dname = proj.signals.data;\n            const vname = proj.signals.visual;\n            const scaleName = stringValue(model.scaleName(channel));\n            const scaleType = model.getScaleComponent(channel).get('type');\n            const toNum = hasContinuousDomain(scaleType) ? '+' : '';\n            signals.push(...cs);\n            dataSignals.push(dname);\n            scaleTriggers.push({\n                scaleName: model.scaleName(channel),\n                expr: `(!isArray(${dname}) || ` +\n                    `(${toNum}invert(${scaleName}, ${vname})[0] === ${toNum}${dname}[0] && ` +\n                    `${toNum}invert(${scaleName}, ${vname})[1] === ${toNum}${dname}[1]))`\n            });\n        });\n        // Proxy scale reactions to ensure that an infinite loop doesn't occur\n        // when an interval selection filter touches the scale.\n        if (!hasScales) {\n            signals.push({\n                name: name + SCALE_TRIGGER,\n                value: {},\n                on: [\n                    {\n                        events: scaleTriggers.map(t => ({ scale: t.scaleName })),\n                        update: scaleTriggers.map(t => t.expr).join(' && ') + ` ? ${name + SCALE_TRIGGER} : {}`\n                    }\n                ]\n            });\n        }\n        // Only add an interval to the store if it has valid data extents. Data extents\n        // are set to null if pixel extents are equal to account for intervals over\n        // ordinal/nominal domains which, when inverted, will still produce a valid datum.\n        const init = selCmpt.init;\n        const update = `unit: ${unitName(model)}, fields: ${fieldsSg}, values`;\n        return signals.concat(Object.assign(Object.assign({ name: name + TUPLE }, (init ? { init: `{${update}: ${assembleInit(init)}}` } : {})), { on: [\n                {\n                    events: [{ signal: dataSignals.join(' || ') }],\n                    update: dataSignals.join(' && ') + ` ? {${update}: [${dataSignals}]} : null`\n                }\n            ] }));\n    },\n    modifyExpr: (model, selCmpt) => {\n        const tpl = selCmpt.name + TUPLE;\n        return tpl + ', ' + (selCmpt.resolve === 'global' ? 'true' : `{unit: ${unitName(model)}}`);\n    },\n    marks: (model, selCmpt, marks) => {\n        const name = selCmpt.name;\n        const { x, y } = selCmpt.project.hasChannel;\n        const xvname = x && x.signals.visual;\n        const yvname = y && y.signals.visual;\n        const store = `data(${stringValue(selCmpt.name + STORE)})`;\n        // Do not add a brush if we're binding to scales.\n        if (scales.has(selCmpt)) {\n            return marks;\n        }\n        const update = {\n            x: x !== undefined ? { signal: `${xvname}[0]` } : { value: 0 },\n            y: y !== undefined ? { signal: `${yvname}[0]` } : { value: 0 },\n            x2: x !== undefined ? { signal: `${xvname}[1]` } : { field: { group: 'width' } },\n            y2: y !== undefined ? { signal: `${yvname}[1]` } : { field: { group: 'height' } }\n        };\n        // If the selection is resolved to global, only a single interval is in\n        // the store. Wrap brush mark's encodings with a production rule to test\n        // this based on the `unit` property. Hide the brush mark if it corresponds\n        // to a unit different from the one in the store.\n        if (selCmpt.resolve === 'global') {\n            for (const key of keys(update)) {\n                update[key] = [\n                    Object.assign({ test: `${store}.length && ${store}[0].unit === ${unitName(model)}` }, update[key]),\n                    { value: 0 }\n                ];\n            }\n        }\n        // Two brush marks ensure that fill colors and other aesthetic choices do\n        // not interefere with the core marks, but that the brushed region can still\n        // be interacted with (e.g., dragging it around).\n        const _a = selCmpt.mark, { fill, fillOpacity, cursor } = _a, stroke = __rest(_a, [\"fill\", \"fillOpacity\", \"cursor\"]);\n        const vgStroke = keys(stroke).reduce((def, k) => {\n            def[k] = [\n                {\n                    test: [x !== undefined && `${xvname}[0] !== ${xvname}[1]`, y !== undefined && `${yvname}[0] !== ${yvname}[1]`]\n                        .filter(t => t)\n                        .join(' && '),\n                    value: stroke[k]\n                },\n                { value: null }\n            ];\n            return def;\n        }, {});\n        return [\n            {\n                name: name + BRUSH + '_bg',\n                type: 'rect',\n                clip: true,\n                encode: {\n                    enter: {\n                        fill: { value: fill },\n                        fillOpacity: { value: fillOpacity }\n                    },\n                    update: update\n                }\n            },\n            ...marks,\n            {\n                name: name + BRUSH,\n                type: 'rect',\n                clip: true,\n                encode: {\n                    enter: Object.assign(Object.assign({}, (cursor ? { cursor: { value: cursor } } : {})), { fill: { value: 'transparent' } }),\n                    update: Object.assign(Object.assign({}, update), vgStroke)\n                }\n            }\n        ];\n    }\n};\nexport default interval;\n/**\n * Returns the visual and data signals for an interval selection.\n */\nfunction channelSignals(model, selCmpt, proj, init) {\n    const channel = proj.channel;\n    const vname = proj.signals.visual;\n    const dname = proj.signals.data;\n    const hasScales = scales.has(selCmpt);\n    const scaleName = stringValue(model.scaleName(channel));\n    const scale = model.getScaleComponent(channel);\n    const scaleType = scale ? scale.get('type') : undefined;\n    const scaled = (str) => `scale(${scaleName}, ${str})`;\n    const size = model.getSizeSignalRef(channel === X ? 'width' : 'height').signal;\n    const coord = `${channel}(unit)`;\n    const on = events(selCmpt, (def, evt) => {\n        return [\n            ...def,\n            { events: evt.between[0], update: `[${coord}, ${coord}]` },\n            { events: evt, update: `[${vname}[0], clamp(${coord}, 0, ${size})]` } // Brush End\n        ];\n    });\n    // React to pan/zooms of continuous scales. Non-continuous scales\n    // (band, point) cannot be pan/zoomed and any other changes\n    // to their domains (e.g., filtering) should clear the brushes.\n    on.push({\n        events: { signal: selCmpt.name + SCALE_TRIGGER },\n        update: hasContinuousDomain(scaleType) ? `[${scaled(`${dname}[0]`)}, ${scaled(`${dname}[1]`)}]` : `[0, 0]`\n    });\n    return hasScales\n        ? [{ name: dname, on: [] }]\n        : [\n            Object.assign(Object.assign({ name: vname }, (init ? { init: assembleInit(init, true, scaled) } : { value: [] })), { on: on }),\n            Object.assign(Object.assign({ name: dname }, (init ? { init: assembleInit(init) } : {})), { on: [\n                    {\n                        events: { signal: vname },\n                        update: `${vname}[0] === ${vname}[1] ? null : invert(${scaleName}, ${vname})`\n                    }\n                ] })\n        ];\n}\nfunction events(selCmpt, cb) {\n    return selCmpt.events.reduce((on, evt) => {\n        if (!evt.between) {\n            warn(`${evt} is not an ordered event stream for interval selections.`);\n            return on;\n        }\n        return cb(on, evt);\n    }, []);\n}\n//# sourceMappingURL=interval.js.map","import { stringValue } from 'vega-util';\nimport { TUPLE, unitName } from '.';\nimport { TUPLE_FIELDS } from './transforms/project';\nexport function singleOrMultiSignals(model, selCmpt) {\n    const name = selCmpt.name;\n    const fieldsSg = name + TUPLE_FIELDS;\n    const project = selCmpt.project;\n    const datum = '(item().isVoronoi ? datum.datum : datum)';\n    const values = project.items\n        .map(p => {\n        const fieldDef = model.fieldDef(p.channel);\n        // Binned fields should capture extents, for a range test against the raw field.\n        return fieldDef && fieldDef.bin\n            ? `[${datum}[${stringValue(model.vgField(p.channel, {}))}], ` +\n                `${datum}[${stringValue(model.vgField(p.channel, { binSuffix: 'end' }))}]]`\n            : `${datum}[${stringValue(p.field)}]`;\n    })\n        .join(', ');\n    // Only add a discrete selection to the store if a datum is present _and_\n    // the interaction isn't occurring on a group mark. This guards against\n    // polluting interactive state with invalid values in faceted displays\n    // as the group marks are also data-driven. We force the update to account\n    // for constant null states but varying toggles (e.g., shift-click in\n    // whitespace followed by a click in whitespace; the store should only\n    // be cleared on the second click).\n    const update = `unit: ${unitName(model)}, fields: ${fieldsSg}, values`;\n    const events = selCmpt.events;\n    return [\n        {\n            name: name + TUPLE,\n            on: events\n                ? [\n                    {\n                        events,\n                        update: `datum && item().mark.marktype !== 'group' ? {${update}: [${values}]} : null`,\n                        force: true\n                    }\n                ]\n                : []\n        }\n    ];\n}\nconst multi = {\n    signals: singleOrMultiSignals,\n    modifyExpr: (model, selCmpt) => {\n        const tpl = selCmpt.name + TUPLE;\n        return tpl + ', ' + (selCmpt.resolve === 'global' ? 'null' : `{unit: ${unitName(model)}}`);\n    }\n};\nexport default multi;\n//# sourceMappingURL=multi.js.map","import { TUPLE, unitName } from '.';\nimport { singleOrMultiSignals } from './multi';\nconst single = {\n    signals: singleOrMultiSignals,\n    modifyExpr: (model, selCmpt) => {\n        const tpl = selCmpt.name + TUPLE;\n        return tpl + ', ' + (selCmpt.resolve === 'global' ? 'true' : `{unit: ${unitName(model)}}`);\n    }\n};\nexport default single;\n//# sourceMappingURL=single.js.map","import { stringValue } from 'vega-util';\nimport { FACET_CHANNELS } from '../../channel';\nimport { SELECTION_ID } from '../../selection';\nimport { vals } from '../../util';\nimport { isFacetModel } from '../model';\nimport interval from './interval';\nimport multi from './multi';\nimport single from './single';\nexport const STORE = '_store';\nexport const TUPLE = '_tuple';\nexport const MODIFY = '_modify';\nexport const SELECTION_DOMAIN = '_selection_domain_';\nexport const VL_SELECTION_RESOLVE = 'vlSelectionResolve';\nconst compilers = { single, multi, interval };\nexport function forEachSelection(model, cb) {\n    const selections = model.component.selection;\n    if (selections) {\n        for (const sel of vals(selections)) {\n            const success = cb(sel, compilers[sel.type]);\n            if (success === true)\n                break;\n        }\n    }\n}\nfunction getFacetModel(model) {\n    let parent = model.parent;\n    while (parent) {\n        if (isFacetModel(parent)) {\n            break;\n        }\n        parent = parent.parent;\n    }\n    return parent;\n}\nexport function unitName(model, { escape } = { escape: true }) {\n    let name = escape ? stringValue(model.name) : model.name;\n    const facetModel = getFacetModel(model);\n    if (facetModel) {\n        const { facet } = facetModel;\n        for (const channel of FACET_CHANNELS) {\n            if (facet[channel]) {\n                name += ` + '__facet_${channel}_' + (facet[${stringValue(facetModel.vgField(channel))}])`;\n            }\n        }\n    }\n    return name;\n}\nexport function requiresSelectionId(model) {\n    let identifier = false;\n    forEachSelection(model, selCmpt => {\n        identifier = identifier || selCmpt.project.items.some(proj => proj.field === SELECTION_ID);\n    });\n    return identifier;\n}\n//# sourceMappingURL=index.js.map","export const RawCode = 'RawCode';\nexport const Literal = 'Literal';\nexport const Property = 'Property';\nexport const Identifier = 'Identifier';\n\nexport const ArrayExpression = 'ArrayExpression';\nexport const BinaryExpression = 'BinaryExpression';\nexport const CallExpression = 'CallExpression';\nexport const ConditionalExpression = 'ConditionalExpression';\nexport const LogicalExpression = 'LogicalExpression';\nexport const MemberExpression = 'MemberExpression';\nexport const ObjectExpression = 'ObjectExpression';\nexport const UnaryExpression = 'UnaryExpression';\n\nexport default function ASTNode(type) {\n  this.type = type;\n}\n\nASTNode.prototype.visit = function(visitor) {\n  let c, i, n;\n\n  if (visitor(this)) return 1;\n\n  for (c=children(this), i=0, n=c.length; i<n; ++i) {\n    if (c[i].visit(visitor)) return 1;\n  }\n};\n\nfunction children(node) {\n  switch (node.type) {\n    case ArrayExpression:\n      return node.elements;\n    case BinaryExpression:\n    case LogicalExpression:\n      return [node.left, node.right];\n    case CallExpression:\n      return [node.callee].concat(node.arguments);\n    case ConditionalExpression:\n      return [node.test, node.consequent, node.alternate];\n    case MemberExpression:\n      return [node.object, node.property];\n    case ObjectExpression:\n      return node.properties;\n    case Property:\n      return [node.key, node.value];\n    case UnaryExpression:\n      return [node.argument];\n    case Identifier:\n    case Literal:\n    case RawCode:\n    default:\n      return [];\n  }\n}\n","/*\n  The following expression parser is based on Esprima (http://esprima.org/).\n  Original header comment and license for Esprima is included here:\n\n  Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>\n  Copyright (C) 2013 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>\n  Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>\n  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>\n  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>\n  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nimport ASTNode from './ast';\n\nvar TokenName,\n    source,\n    index,\n    length,\n    lookahead;\n\nvar TokenBooleanLiteral = 1,\n    TokenEOF = 2,\n    TokenIdentifier = 3,\n    TokenKeyword = 4,\n    TokenNullLiteral = 5,\n    TokenNumericLiteral = 6,\n    TokenPunctuator = 7,\n    TokenStringLiteral = 8,\n    TokenRegularExpression = 9;\n\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '<end>';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\n\nvar SyntaxArrayExpression = 'ArrayExpression',\n    SyntaxBinaryExpression = 'BinaryExpression',\n    SyntaxCallExpression = 'CallExpression',\n    SyntaxConditionalExpression = 'ConditionalExpression',\n    SyntaxIdentifier = 'Identifier',\n    SyntaxLiteral = 'Literal',\n    SyntaxLogicalExpression = 'LogicalExpression',\n    SyntaxMemberExpression = 'MemberExpression',\n    SyntaxObjectExpression = 'ObjectExpression',\n    SyntaxProperty = 'Property',\n    SyntaxUnaryExpression = 'UnaryExpression';\n\n// Error messages should be identical to V8.\nvar MessageUnexpectedToken = 'Unexpected token %0',\n    MessageUnexpectedNumber = 'Unexpected number',\n    MessageUnexpectedString = 'Unexpected string',\n    MessageUnexpectedIdentifier = 'Unexpected identifier',\n    MessageUnexpectedReserved = 'Unexpected reserved word',\n    MessageUnexpectedEOS = 'Unexpected end of input',\n    MessageInvalidRegExp = 'Invalid regular expression',\n    MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n    MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n    MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\n\nvar ILLEGAL = 'ILLEGAL',\n    DISABLED = 'Disabled.';\n\n// See also tools/generate-unicode-regex.py.\nvar RegexNonAsciiIdentifierStart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'),\n    // eslint-disable-next-line no-misleading-character-class\n    RegexNonAsciiIdentifierPart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]');\n\n// Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n  /* istanbul ignore next */\n  if (!condition) {\n    throw new Error('ASSERT: ' + message);\n  }\n}\n\nfunction isDecimalDigit(ch) {\n  return (ch >= 0x30 && ch <= 0x39); // 0..9\n}\n\nfunction isHexDigit(ch) {\n  return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\n\nfunction isOctalDigit(ch) {\n  return '01234567'.indexOf(ch) >= 0;\n}\n\n// 7.2 White Space\n\nfunction isWhiteSpace(ch) {\n  return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) ||\n    (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0);\n}\n\n// 7.3 Line Terminators\n\nfunction isLineTerminator(ch) {\n  return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029);\n}\n\n// 7.6 Identifier Names and Identifiers\n\nfunction isIdentifierStart(ch) {\n  return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n    (ch >= 0x41 && ch <= 0x5A) || // A..Z\n    (ch >= 0x61 && ch <= 0x7A) || // a..z\n    (ch === 0x5C) || // \\ (backslash)\n    ((ch >= 0x80) && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch)));\n}\n\nfunction isIdentifierPart(ch) {\n  return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n    (ch >= 0x41 && ch <= 0x5A) || // A..Z\n    (ch >= 0x61 && ch <= 0x7A) || // a..z\n    (ch >= 0x30 && ch <= 0x39) || // 0..9\n    (ch === 0x5C) || // \\ (backslash)\n    ((ch >= 0x80) && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch)));\n}\n\n// 7.6.1.1 Keywords\n\nvar keywords = {\n  'if':1, 'in':1, 'do':1,\n  'var':1, 'for':1, 'new':1, 'try':1, 'let':1,\n  'this':1, 'else':1, 'case':1, 'void':1, 'with':1, 'enum':1,\n  'while':1, 'break':1, 'catch':1, 'throw':1, 'const':1, 'yield':1, 'class':1, 'super':1,\n  'return':1, 'typeof':1, 'delete