{"version":3,"sources":["webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/to-length.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/path.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/fails.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/own-keys.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/set-to-string-tag.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/is-regexp.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/an-object.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/to-integer.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/regexp-exec-abstract.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/modules/es.array.join.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/engine-is-ios.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/enum-bug-keys.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/modules/es.object.to-string.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/uid.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/internal-state.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/modules/es.array.map.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/modules/es.regexp.exec.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/object-define-properties.js","webpack:///(webpack)/buildin/global.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/advance-string-index.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/engine-user-agent.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/array-method-uses-to-length.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/array-method-is-strict.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/redefine-all.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/number-parse-float.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/modules/es.object.assign.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/a-function.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/host-report-errors.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/get-iterator-method.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/html.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/perform.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/modules/es.promise.finally.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/create-iterator-constructor.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/modules/es.array.sort.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/set-species.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/object-create.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/a-possible-prototype.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/object-set-prototype-of.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/modules/es.parse-float.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/well-known-symbol.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/classof.js","webpack:////Users/atec/.config/yarn/global/node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/create-property-descriptor.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/iterate.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/indexed-object.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/d3/dist/package.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-array/src/cross.js","webpack:///./node_modules/d3-array/src/array.js","webpack:///./node_modules/d3-array/src/range.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-array/src/threshold/sturges.js","webpack:///./node_modules/d3-array/src/max.js","webpack:///./node_modules/d3-array/src/merge.js","webpack:///./node_modules/d3-array/src/zip.js","webpack:///./node_modules/d3-axis/src/array.js","webpack:///./node_modules/d3-axis/src/identity.js","webpack:///./node_modules/d3-axis/src/axis.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-selection/src/select.js","webpack:///./node_modules/d3-selection/src/local.js","webpack:///./node_modules/d3-selection/src/sourceEvent.js","webpack:///./node_modules/d3-selection/src/selectAll.js","webpack:///./node_modules/d3-drag/src/event.js","webpack:///./node_modules/d3-drag/src/drag.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-color/src/math.js","webpack:///./node_modules/d3-color/src/lab.js","webpack:///./node_modules/d3-color/src/cubehelix.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-interpolate/src/hsl.js","webpack:///./node_modules/d3-interpolate/src/hcl.js","webpack:///./node_modules/d3-interpolate/src/cubehelix.js","webpack:///./node_modules/d3-interpolate/src/quantize.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/d3-transition/src/transition/schedule.js","webpack:///./node_modules/d3-transition/src/interrupt.js","webpack:///./node_modules/d3-transition/src/selection/interrupt.js","webpack:///./node_modules/d3-transition/src/transition/tween.js","webpack:///./node_modules/d3-transition/src/transition/interpolate.js","webpack:///./node_modules/d3-transition/src/transition/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.js","webpack:///./node_modules/d3-transition/src/transition/delay.js","webpack:///./node_modules/d3-transition/src/transition/duration.js","webpack:///./node_modules/d3-transition/src/transition/ease.js","webpack:///./node_modules/d3-transition/src/transition/filter.js","webpack:///./node_modules/d3-transition/src/transition/merge.js","webpack:///./node_modules/d3-transition/src/transition/on.js","webpack:///./node_modules/d3-transition/src/transition/remove.js","webpack:///./node_modules/d3-transition/src/transition/select.js","webpack:///./node_modules/d3-transition/src/transition/selectAll.js","webpack:///./node_modules/d3-transition/src/transition/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.js","webpack:///./node_modules/d3-transition/src/transition/styleTween.js","webpack:///./node_modules/d3-transition/src/transition/text.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-ease/src/poly.js","webpack:///./node_modules/d3-ease/src/sin.js","webpack:///./node_modules/d3-ease/src/back.js","webpack:///./node_modules/d3-ease/src/elastic.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-chord/src/math.js","webpack:///./node_modules/d3-chord/src/array.js","webpack:///./node_modules/d3-chord/src/chord.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-chord/src/ribbon.js","webpack:///./node_modules/d3-collection/src/map.js","webpack:///./node_modules/d3-collection/src/set.js","webpack:///./node_modules/d3-contour/src/array.js","webpack:///./node_modules/d3-contour/src/density.js","webpack:///./node_modules/d3-dsv/src/dsv.js","webpack:///./node_modules/d3-dsv/src/csv.js","webpack:///./node_modules/d3-dsv/src/tsv.js","webpack:///./node_modules/d3-fetch/src/text.js","webpack:///./node_modules/d3-fetch/src/dsv.js","webpack:///./node_modules/d3-fetch/src/json.js","webpack:///./node_modules/d3-fetch/src/xml.js","webpack:///./node_modules/d3-quadtree/src/add.js","webpack:///./node_modules/d3-quadtree/src/cover.js","webpack:///./node_modules/d3-quadtree/src/data.js","webpack:///./node_modules/d3-quadtree/src/extent.js","webpack:///./node_modules/d3-quadtree/src/quad.js","webpack:///./node_modules/d3-quadtree/src/find.js","webpack:///./node_modules/d3-quadtree/src/remove.js","webpack:///./node_modules/d3-quadtree/src/root.js","webpack:///./node_modules/d3-quadtree/src/size.js","webpack:///./node_modules/d3-quadtree/src/visit.js","webpack:///./node_modules/d3-quadtree/src/visitAfter.js","webpack:///./node_modules/d3-quadtree/src/x.js","webpack:///./node_modules/d3-quadtree/src/y.js","webpack:///./node_modules/d3-quadtree/src/quadtree.js","webpack:///./node_modules/d3-force/src/simulation.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/d3-geo/src/adder.js","webpack:///./node_modules/d3-geo/src/math.js","webpack:///./node_modules/d3-geo/src/noop.js","webpack:///./node_modules/d3-geo/src/area.js","webpack:///./node_modules/d3-geo/src/cartesian.js","webpack:///./node_modules/d3-geo/src/bounds.js","webpack:///./node_modules/d3-geo/src/rotation.js","webpack:///./node_modules/d3-geo/src/circle.js","webpack:///./node_modules/d3-geo/src/clip/buffer.js","webpack:///./node_modules/d3-geo/src/pointEqual.js","webpack:///./node_modules/d3-geo/src/clip/rejoin.js","webpack:///./node_modules/d3-geo/src/polygonContains.js","webpack:///./node_modules/d3-geo/src/clip/index.js","webpack:///./node_modules/d3-geo/src/clip/antimeridian.js","webpack:///./node_modules/d3-geo/src/length.js","webpack:///./node_modules/d3-geo/src/path/area.js","webpack:///./node_modules/d3-geo/src/path/context.js","webpack:///./node_modules/d3-geo/src/path/measure.js","webpack:///./node_modules/d3-geo/src/path/string.js","webpack:///./node_modules/d3-geo/src/transform.js","webpack:///./node_modules/d3-geo/src/projection/resample.js","webpack:///./node_modules/d3-geo/src/projection/index.js","webpack:///./node_modules/d3-geo/src/projection/azimuthal.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/mercator.js","webpack:///./node_modules/d3-geo/src/projection/equirectangular.js","webpack:///./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/equalEarth.js","webpack:///./node_modules/d3-geo/src/projection/gnomonic.js","webpack:///./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack:///./node_modules/d3-geo/src/projection/orthographic.js","webpack:///./node_modules/d3-geo/src/projection/stereographic.js","webpack:///./node_modules/d3-geo/src/projection/transverseMercator.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack:///./node_modules/d3-hierarchy/src/array.js","webpack:///./node_modules/d3-hierarchy/src/treemap/round.js","webpack:///./node_modules/d3-hierarchy/src/treemap/dice.js","webpack:///./node_modules/d3-hierarchy/src/tree.js","webpack:///./node_modules/d3-hierarchy/src/treemap/slice.js","webpack:///./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack:///./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack:///./node_modules/d3-polygon/src/hull.js","webpack:///./node_modules/d3-random/src/defaultSource.js","webpack:///./node_modules/d3-random/src/normal.js","webpack:///./node_modules/d3-random/src/uniform.js","webpack:///./node_modules/d3-random/src/irwinHall.js","webpack:///./node_modules/d3-random/src/logNormal.js","webpack:///./node_modules/d3-random/src/bates.js","webpack:///./node_modules/d3-random/src/exponential.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-scale/src/array.js","webpack:///./node_modules/d3-scale/src/ordinal.js","webpack:///./node_modules/d3-scale/src/band.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/utcMinute.js","webpack:///./node_modules/d3-time/src/utcHour.js","webpack:///./node_modules/d3-time/src/utcDay.js","webpack:///./node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time/src/utcMonth.js","webpack:///./node_modules/d3-time/src/utcYear.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-time-format/src/isoFormat.js","webpack:///./node_modules/d3-time-format/src/isoParse.js","webpack:///./node_modules/d3-scale-chromatic/src/colors.js","webpack:///./node_modules/d3-scale-chromatic/src/ramp.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack:///./node_modules/d3-shape/src/math.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-shape/src/curve/radial.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-shape/src/symbol/diamond.js","webpack:///./node_modules/d3-shape/src/symbol/circle.js","webpack:///./node_modules/d3-shape/src/symbol/star.js","webpack:///./node_modules/d3-shape/src/noop.js","webpack:///./node_modules/d3-shape/src/symbol/triangle.js","webpack:///./node_modules/d3-shape/src/symbol/wye.js","webpack:///./node_modules/d3-shape/src/curve/basis.js","webpack:///./node_modules/d3-shape/src/curve/basisClosed.js","webpack:///./node_modules/d3-shape/src/curve/basisOpen.js","webpack:///./node_modules/d3-shape/src/curve/bundle.js","webpack:///./node_modules/d3-shape/src/curve/cardinal.js","webpack:///./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack:///./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack:///./node_modules/d3-shape/src/curve/catmullRom.js","webpack:///./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack:///./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack:///./node_modules/d3-shape/src/curve/linearClosed.js","webpack:///./node_modules/d3-shape/src/curve/monotone.js","webpack:///./node_modules/d3-shape/src/curve/natural.js","webpack:///./node_modules/d3-shape/src/curve/step.js","webpack:///./node_modules/d3-voronoi/src/RedBlackTree.js","webpack:///./node_modules/d3-voronoi/src/Edge.js","webpack:///./node_modules/d3-voronoi/src/Cell.js","webpack:///./node_modules/d3-voronoi/src/Circle.js","webpack:///./node_modules/d3-voronoi/src/Beach.js","webpack:///./node_modules/d3-voronoi/src/Diagram.js","webpack:///./node_modules/d3-zoom/src/transform.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/global.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/to-object.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/object-get-prototype-of.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/array-method-has-species-support.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/engine-v8-version.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/object-keys-internal.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/to-primitive.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/modules/es.array.reverse.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/require-object-coercible.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/redefine.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/string-trim.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/task.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/regexp-exec.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/is-object.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/whitespaces.js","webpack:////Users/atec/.config/yarn/global/node_modules/vue/dist/vue.runtime.esm.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/add-to-unscopables.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/function-bind-context.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/vue-router/dist/vue-router.esm.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/modules/es.string.replace.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/native-promise-constructor.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/object-assign.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/define-iterator.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/set-global.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/string-multibyte.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/copy-constructor-properties.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/correct-prototype-getter.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/modules/es.array.iterator.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/species-constructor.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/inspect-source.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/document-create-element.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/use-symbol-as-uid.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/export.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/object-property-is-enumerable.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/shared-key.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/is-array.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/native-weak-map.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/iterators-core.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/modules/es.promise.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/is-pure.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/regexp-flags.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/classof-raw.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/an-instance.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/to-indexed-object.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/object-to-string.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/descriptors.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/shared-store.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/new-promise-capability.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/microtask.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/object-define-property.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/to-string-tag-support.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/iterators.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/is-forced.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/shared.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/promise-resolve.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/has.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/native-symbol.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/get-built-in.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/modules/es.string.match.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/modules/es.string.split.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/array-includes.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/object-keys.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/array-iteration.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/to-absolute-index.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/create-non-enumerable-property.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/object-get-own-property-names.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/array-species-create.js","webpack:////Users/atec/.config/yarn/global/node_modules/core-js/internals/hidden-keys.js"],"names":["toInteger","min","Math","module","exports","argument","global","exec","error","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","anObject","it","keys","f","getOwnPropertySymbols","concat","defineProperty","has","wellKnownSymbol","TO_STRING_TAG","TAG","STATIC","prototype","configurable","value","isObject","classof","MATCH","isRegExp","undefined","TypeError","String","ceil","floor","isNaN","regexpExec","R","S","result","call","$","IndexedObject","toIndexedObject","arrayMethodIsStrict","nativeJoin","join","ES3_STRINGS","Object","STRICT_METHOD","target","proto","forced","separator","this","userAgent","test","TO_STRING_TAG_SUPPORT","redefine","toString","unsafe","id","postfix","random","key","set","get","NATIVE_WEAK_MAP","createNonEnumerableProperty","objectHas","sharedKey","hiddenKeys","WeakMap","enforce","getterFor","TYPE","state","type","store","wmget","wmhas","wmset","metadata","STATE","$map","map","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","callbackfn","arguments","length","DESCRIPTORS","definePropertyModule","objectKeys","defineProperties","O","Properties","index","g","Function","e","window","charAt","unicode","fails","cache","thrower","METHOD_NAME","options","method","ACCESSORS","argument0","argument1","enumerable","src","trim","whitespaces","$parseFloat","parseFloat","FORCED","Infinity","string","trimmedString","assign","stat","a","b","console","Iterators","ITERATOR","IS_PURE","NativePromise","speciesConstructor","promiseResolve","NON_GENERIC","then","real","onFinally","C","isFunction","x","IteratorPrototype","create","createPropertyDescriptor","setToStringTag","returnThis","IteratorConstructor","NAME","next","aFunction","toObject","nativeSort","sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","comparefn","SPECIES","CONSTRUCTOR_NAME","Constructor","activeXDocument","enumBugKeys","html","documentCreateElement","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObjectViaIFrame","iframeDocument","iframe","JS","style","display","appendChild","contentWindow","document","open","F","NullProtoObject","domain","ActiveXObject","aPossiblePrototype","setPrototypeOf","setter","CORRECT_SETTER","getOwnPropertyDescriptor","Array","__proto__","parseFloatImplementation","shared","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","Symbol","createWellKnownSymbol","withoutSetter","name","classofRaw","CORRECT_ARGUMENTS","tryGet","tag","callee","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","bitmap","writable","isArrayIteratorMethod","toLength","bind","getIteratorMethod","callWithSafeIterationClosing","Result","stopped","iterate","iterable","fn","that","AS_ENTRIES","IS_ITERATOR","iterator","iterFn","step","boundFunction","done","stop","split","propertyIsEnumerable","ArrayPrototype","NaN","compare","ascendingComparator","left","lo","hi","mid","right","d","ascending","ascendingBisect","bisector","bisectRight","bisect","slice","start","n","i","max","range","e10","sqrt","e5","e2","reverse","ticks","count","tickIncrement","isFinite","power","log","LN10","pow","tickStep","step0","abs","step1","values","valueof","m","merged","array","arrays","j","epsilon","translateX","translateY","y","scale","offset","bandwidth","round","entering","__axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","k","transform","axis","apply","format","spacing","range0","range1","position","copy","selection","path","selectAll","data","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","select","text","merge","insert","transition","getAttribute","p","parentNode","remove","filter","each","_","tickSize","axisBottom","axisLeft","noop","dispatch","t","Error","Dispatch","parseTypenames","typenames","types","indexOf","hasOwnProperty","c","callback","push","constructor","on","typename","T","args","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","creatorInherit","ownerDocument","uri","namespaceURI","documentElement","createElement","createElementNS","creatorFixed","fullname","namespace","none","selector","querySelector","groups","_groups","subgroups","node","subnode","group","subgroup","__data__","Selection","_parents","querySelectorAll","selectorAll","parents","matches","match","matcher","update","_enter","sparse","EnterNode","datum","_next","_parent","child","insertBefore","keyPrefix","bindIndex","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","size","enterGroup","updateGroup","exitGroup","previous","i0","i1","_exit","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","compareNode","sortgroups","sortgroup","nodes","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","getAttributeNS","defaultView","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","_node","_names","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","splice","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creator","constantNull","before","removeChild","selection_cloneShallow","cloneNode","selection_cloneDeep","deep","property","filterEvents","mouseenter","mouseleave","filterContextListener","listener","contextListener","event","related","relatedTarget","event1","event0","onRemove","__on","o","removeEventListener","capture","onAdd","wrap","addEventListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","selection_select","selection_filter","selection_data","selection_enter","selection_exit","selection_merge","selection_order","selection_sort","selection_nodes","selection_node","selection_size","empty","selection_empty","classed","selection_text","selection_raise","selection_lower","selection_remove","clone","selection_on","selection_dispatch","nextId","Local","DragEvent","subject","active","dx","dy","identifier","factory","extend","definition","Color","darker","brighter","reI","reN","reP","reHex3","reHex6","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","toLowerCase","parseInt","Rgb","rgbn","rgba","hsla","r","rgbConvert","rgb","opacity","hex","s","l","Hsl","hslConvert","hsl","hsl2rgb","m2","define","displayable","deg2rad","PI","rad2deg","K","Xn","Yn","Zn","t3","labConvert","Lab","Hcl","cos","sin","z","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","hcl","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","basis","t1","v0","v1","v2","v3","t2","cosh","sinh","linear","exponential","gamma","nogamma","color","end","rgbGamma","rgbSpline","spline","colors","rgbBasis","basisClosed","nb","na","Date","setTime","reA","reB","source","one","cssNode","cssRoot","cssView","svgNode","am","bm","bs","bi","lastIndex","q","isArray","valueOf","degrees","rotate","skewX","scaleX","scaleY","atan","parseCss","decompose","parseSvg","baseVal","consolidate","matrix","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","interpolateTransformCss","interpolateTransformSvg","SQRT2","hue","cubehelixGamma","cubehelix","cubehelixLong","taskHead","taskTail","timeout","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","wake","nap","poke","t0","sleep","clearTimeout","clearInterval","setInterval","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedules","__transition","tween","timing","duration","ease","schedule","self","interrupt","tweenRemove","tween0","tween1","tweenFunction","_id","tweenValue","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTween","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","Transition","_name","every","onFunction","on0","on1","sit","removeFunction","children","inherit","styleNull","styleMaybeRemove","listener0","styleTween","styleInterpolate","id0","id1","newId","Promise","resolve","reject","cancel","selection_prototype","cubicInOut","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_transition","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_remove","transition_tween","transition_delay","transition_duration","transition_end","custom","polyIn","exponent","polyOut","polyInOut","overshoot","tau","backIn","backOut","backInOut","amplitude","period","defaultTiming","asin","elasticIn","elasticOut","elasticInOut","selection_interrupt","selection_transition","tauEpsilon","Path","_x0","_y0","_x1","_y1","moveTo","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","x0","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","cw","da","rect","w","Map","object","clear","entries","Set","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","JSON","stringify","customConverter","row","inferColumns","rows","columnSet","forEach","column","pad","width","year","formatDate","date","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","getUTCFullYear","getUTCMonth","getUTCDate","reFormat","delimiter","DELIMITER","charCodeAt","convert","parseRows","N","I","eof","eol","token","replace","preformatBody","formatValue","formatBody","formatRows","formatRow","csv","dsv","csvParse","tsv","tsvParse","responseText","response","ok","status","statusText","fetch","input","init","dsvParse","responseJson","json","parser","DOMParser","parseFromString","_x","_y","cover","tree","xm","ym","xp","yp","bottom","_root","leaf","addAll","xz","yz","visit","x3","y3","quads","radius","d2","retainer","removeAll","quadtree","Quadtree","leaf_copy","treeProto","extent","find","root","visitAfter","toExponential","coefficient","formatDecimal","grouping","substring","thousands","numerals","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","zero","comma","precision","prefixExponent","out","toFixed","toPrecision","formatRounded","formatPrefixAuto","toUpperCase","prefixes","locale","formatGroup","currency","decimal","formatNumerals","percent","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","padding","formatPrefix","defaultLocale","Adder","reset","adder","bv","av","quarterPi","radians","exp","spherical","lambda","phi","cosPhi","cartesianCross","cartesianNormalizeInPlace","rotationIdentity","invert","lines","point","lineStart","lineEnd","rejoin","shift","Intersection","points","other","entry","clip","segments","segment","p0","p1","pointEqual","stream","compareIntersection","startInside","current","isSubject","sinPhi","normal","angle","winding","polygon","ring","point0","lambda0","phi0","sinPhi0","cosPhi0","lambda1","sinPhi1","cosPhi1","point1","phi1","delta","absDelta","antimeridian","intersection","phiArc","sink","clipLine","ringBuffer","ringSink","polygonStarted","polygonStart","pointRing","ringStart","ringEnd","polygonEnd","polygonContains","sphere","pointVisible","pointLine","clean","ringSegments","validSegment","clipAntimeridianLine","clipAntimeridianInterpolate","sign0","sign1","clipAntimeridianIntersect","sinLambda0Lambda1","from","to","direction","PathContext","_context","_radius","pointRadius","_line","_point","PathString","_string","_circle","transformer","methods","TransformStream","azimuthalRaw","cx","cy","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","equirectangularRaw","A1","A2","A3","A4","M","equalEarthRaw","l2","l6","fy","fpy","gnomonicRaw","naturalEarth1Raw","phi2","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","sum","eachAfter","eachBefore","ancestor","leastCommonAncestor","aNodes","ancestors","bNodes","leaves","links","hierarchy","childs","Node","valued","defaultChildren","depth","computeHeight","node_copy","copyData","height","descendants","TreeNode","A","squarifyRatio","ratio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","alpha","beta","dice","squarify","resquarify","_squarify","randomUniform","sourceRandomUniform","randomNormal","mu","sigma","sourceRandomNormal","randomLogNormal","sourceRandomLogNormal","randomIrwinHall","sourceRandomIrwinHall","randomBates","irwinHall","sourceRandomBates","randomExponential","sourceRandomExponential","initRange","implicit","ordinal","unknown","band","ordinalRange","paddingInner","paddingOuter","rescale","rangeRound","unit","normalize","clamper","bimap","d0","d1","r0","r1","polymap","clamp","untransform","piecewise","output","u","continuous","precisionPrefix","precisionRound","precisionFixed","linearish","nice","newInterval","floori","offseti","field","interval","durationSecond","durationMinute","durationHour","durationDay","durationWeek","getMilliseconds","getSeconds","getMinutes","getHours","setHours","setDate","getDate","getTimezoneOffset","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","setMonth","getMonth","getFullYear","setFullYear","utcMinute","setUTCSeconds","utcHour","setUTCMinutes","utcDay","setUTCHours","setUTCDate","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","utcYear","setUTCFullYear","localDate","H","L","utcDate","UTC","newYear","formatLocale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseYear","parseFullYear","parseZone","parseLiteralPercent","pads","newParse","newDate","week","day","parseSpecifier","Q","V","W","U","Z","X","utcFormat","utcParse","numberRe","percentRe","requoteRe","requote","dow","isoSpecifier","formatIsoNative","toISOString","parseIsoNative","scheme","ramp","Linear","areaStart","areaEnd","curveRadial","Radial","curve","_curve","radial","kr","Basis","BasisClosed","_x2","_x3","_x4","_y2","_y3","_y4","BasisOpen","Bundle","_basis","_beta","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","CardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","LinearClosed","slope3","h0","h1","s0","s1","slope2","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","_t0","px","py","Step","_t","RedBlackTree","RedBlackNode","P","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","after","grandpa","uncle","sibling","createEdge","edge","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","ax","ay","bx","by","connectEdge","fm","fb","lx","ly","rx","ry","fx","clipEdges","createCell","site","cellHalfedgeAngle","cell","va","vb","cellHalfedgeStart","cellHalfedgeEnd","sortCellHalfedges","clipCells","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v00","v01","v11","v10","firstCircle","circlePool","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","ha","hc","circle","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","unshift","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","triangleArea","lexicographic","Diagram","sites","edges","polygons","triangles","e1","_found","vx","vy","Transform","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","__zoom","check","globalThis","requireObjectCoercible","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","getPrototypeOf","V8_VERSION","foo","Boolean","version","process","versions","v8","REPLACE_SUPPORTS_NAMED_GROUPS","REPLACE_KEEPS_$0","REPLACE","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","KEY","sham","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","flags","nativeRegExpMethod","nativeMethod","regexp","str","arg2","forceStringMethod","stringMethod","regexMethod","arg","PREFERRED_STRING","val","nativeReverse","setGlobal","inspectSource","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","simple","noTargetGet","whitespace","ltrim","rtrim","createMethod","$this","defer","channel","port","IS_IOS","setImmediate","clearImmediate","MessageChannel","counter","queue","ONREADYSTATECHANGE","run","runner","post","postMessage","protocol","host","nextTick","port2","port1","onmessage","importScripts","regexpFlags","stickyHelpers","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","PATCH","reCopy","sticky","charsAdded","strCopy","multiline","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","emptyObject","freeze","isUndef","isDef","isTrue","isFalse","isPrimitive","obj","_toString","isPlainObject","isValidArrayIndex","isPromise","catch","toNumber","makeMap","expectsLowerCase","isReservedAttribute","arr","item","hasOwn","cached","hit","camelizeRE","camelize","capitalize","hyphenateRE","hyphenate","polyfillBind","ctx","boundFn","_length","nativeBind","toArray","ret","_from","res","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","getTime","keysA","keysB","looseIndexOf","once","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","isReserved","def","bailRE","parsePath","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","navigator","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","watch","supportsPassive","opts","isServerRendering","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","Reflect","ownKeys","warn","Dep","subs","addSub","sub","removeSub","depend","addDep","notify","targetStack","pushTarget","popTarget","VNode","elm","componentOptions","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","methodsToPatch","original","len","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","protoAugment","copyAugment","walk","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","getter","childOb","dependArray","newVal","del","items","strats","mergeData","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","dedupeHooks","hooks","mergeAssets","key$1","props","inject","computed","provide","defaultStrat","normalizeProps","normalizeInject","normalized","normalizeDirectives","dirs","directives","def$$1","mergeOptions","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","prop","absent","booleanIndex","getTypeIndex","stringIndex","getPropDefaultValue","prevShouldObserve","default","_props","getType","isSameType","expectedTypes","handleError","err","info","cur","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","handler","_handled","logError","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","MutationObserver","observer","textNode","createTextNode","characterData","cb","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","passive","once$$1","createFnInvoker","fns","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","old","mergeVNodeHook","hookKey","oldHook","wrappedHook","extractPropsFromVNodeData","attrs","altKey","checkProp","hash","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","last","_isVList","initProvide","_provided","initInjections","resolveInject","provideKey","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","renderSlot","fallback","bindObject","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","_renderProxy","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","installRenderHelpers","_o","_n","_s","_l","_q","_i","_m","_f","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","needNormalization","listeners","injections","scopedSlots","_c","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","updateChildComponent","_isMounted","callHook","queueActivatedComponent","activateChildComponent","destroy","deactivateChildComponent","$destroy","hooksToMerge","createComponent","baseCtor","cid","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","nativeOn","abstract","installComponentHooks","_isComponent","_parentVnode","inlineTemplate","toMerge","_merged","mergeHook$1","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","is","pre","applyNS","registerDeepBindings","force","class","initRender","_vnode","parentVnode","_renderChildren","parentData","_parentListeners","currentRenderingInstance","renderMixin","Vue","$nextTick","_render","ref","ensureCtor","comp","base","__esModule","toStringTag","errorComp","resolved","owner","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","$forceUpdate","reason","component","getFirstComponentChild","initEvents","_events","_hasHookEvent","updateComponentListeners","remove$1","$off","_target","onceHandler","oldListeners","eventsMixin","hookRE","$once","i$1","cbs","$emit","setActiveInstance","prevActiveInstance","initLifecycle","$children","$refs","_watcher","_inactive","_directInactive","_isBeingDestroyed","lifecycleMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","teardown","_watchers","_data","mountComponent","el","updateComponent","Watcher","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","$attrs","$listeners","propKeys","_propKeys","isInInactiveTree","direct","handlers","activatedChildren","waiting","flushing","resetSchedulerState","currentFlushTimestamp","getNow","timeStamp","flushSchedulerQueue","watcher","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","emit","queueWatcher","uid$2","expOrFn","isRenderWatcher","user","lazy","dirty","deps","newDeps","depIds","newDepIds","expression","cleanupDeps","tmp","oldValue","evaluate","sharedPropertyDefinition","sourceKey","initState","initProps","initMethods","initData","initComputed","initWatch","propsOptions","isRoot","getData","computedWatcherOptions","watchers","_computedWatchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","createWatcher","$watch","stateMixin","dataDef","propsDef","$set","$delete","immediate","uid$3","initMixin","_init","_uid","initInternalComponent","_self","vnodeComponentOptions","_componentTag","super","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","extendOptions","components","modified","latest","sealed","sealedOptions","initUse","use","plugin","installedPlugins","_installedPlugins","install","initMixin$1","mixin","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","Comp","initAssetRegisters","getComponentName","pattern","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","cached$$1","patternTypes","KeepAlive","include","exclude","Number","created","destroyed","mounted","ref$1","builtInComponents","initGlobalAPI","configDef","util","defineReactive","delete","observable","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","childNode","mergeClassData","renderClass","staticClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","namespaceMap","math","isHTMLTag","isSVG","unknownElementCache","HTMLUnknownElement","HTMLElement","isTextInputType","query","selected","createElement$1","tagName","multiple","createComment","newNode","referenceNode","setTextContent","setStyleScope","nodeOps","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","sameInputType","typeA","typeB","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","backend","modules","emptyNodeAt","createRmCb","childElm","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","activate","ref$$1","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","rm","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","hydrate","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","nodeType","hasAttribute","oldElm","_leaveCb","patchable","i$2","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","baseSetAttr","__ieph","blocker","stopImmediatePropagation","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","normalizeEvents","change","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","updateDOMListeners","svgContainer","events","updateDOMProps","oldProps","childNodes","strCur","shouldUpdateValue","checkVal","composing","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","activeElement","_vModifiers","number","parseStyleText","cssText","listDelimiter","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","getStyle","checkChild","styleData","emptyStyle","cssVarRE","importantRE","setProp","normalizedName","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","whitespaceRE","addClass","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","styles","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","toggleDisplay","cancelled","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","platformModules","patch","vmodel","trigger","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","some","needReset","hasNoMatchingOption","actuallySetSelected","isMultiple","option","selectedIndex","locateNode","transition$$1","originalDisplay","__vOriginalDisplay","unbind","platformDirectives","transitionProps","mode","getRealChild","compOptions","extractTransitionData","placeholder","rawChild","hasParentTransition","isSameChild","oldChild","isNotTextNode","isVShowDirective","_leaving","oldRawChild","delayedLeave","moveClass","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","pos","getBoundingClientRect","updated","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","body","offsetHeight","moved","WebkitTransform","transitionDuration","_moveCb","propertyName","_hasMove","newPos","oldPos","top","platformComponents","UNSCOPABLES","condition","message","isError","View","routerView","route","$route","_routerViewCache","inactive","_routerRoot","routerViewDepth","matched","registerRouteInstance","instances","propsToPass","resolveProps","encodeReserveRE","encodeReserveReplacer","commaRE","encode","encodeURIComponent","decode","decodeURIComponent","resolveQuery","extraQuery","_parseQuery","parsedQuery","parseQuery","param","parts","stringifyQuery","val2","trailingSlashRE","createRoute","record","redirectedFrom","router","stringifyQuery$$1","meta","fullPath","getFullPath","formatMatch","START","_stringifyQuery","isSameRoute","isObjectEqual","aKeys","bKeys","aVal","bVal","isIncludedRoute","queryIncludes","_Vue","toTypes","eventTypes","Link","required","exact","exactActiveClass","$router","href","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","guardEvent","click","findAnchor","aData","aAttrs","metaKey","ctrlKey","shiftKey","defaultPrevented","button","preventDefault","installed","registerInstance","callVal","_router","history","_route","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","resolvePath","relative","firstChar","stack","hashIndex","queryIndex","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","compile","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","tokens","defaultDelimiter","escaped","modifier","asterisk","partial","repeat","optional","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","encodeAsterisk","pretty","attachKeys","sensitive","regexpToRegexp","arrayToRegexp","stringToRegexp","strict","endsWithDelimiter","regexpCompileCache","fillParams","routeMsg","filler","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","redirect","childMatchAs","alias","aliases","aliasRoute","normalizeLocation","rawPath","parsedPath","basePath","createMatcher","addRoutes","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","positionStore","setupScroll","replaceState","getStateKey","origin","saveScrollPosition","setStateKey","handleScroll","isPop","app","behavior","scrollBehavior","getScrollPosition","shouldScroll","scrollToPosition","pageXOffset","pageYOffset","getElementPosition","docEl","docRect","elRect","isValidPosition","isNumber","normalizePosition","normalizeOffset","scrollTo","supportsPushState","ua","Time","_key","genKey","pushState","url","runQueue","resolveAsyncComponents","hasAsync","flatMapComponents","resolvedDef","isESModule","msg","flatten","History","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","baseEl","resolveQueue","activated","deactivated","extractGuards","records","guards","instance","guard","extractGuard","extractLeaveGuards","bindGuard","extractUpdateHooks","extractEnterGuards","isValid","bindEnterGuard","poll","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","abort","beforeHooks","postEnterCbs","enterGuards","resolveHooks","prev","afterHooks","HTML5History","History$$1","expectScroll","supportsScroll","initLocation","getLocation","go","fromRoute","getCurrentLocation","decodeURI","pathname","search","HashHistory","checkFallback","ensureSlash","setupListeners","getHash","replaceHash","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","registerHook","createHref","setupHashListener","beforeEach","beforeResolve","afterEach","back","forward","getMatchedComponents","normalizedTo","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeToString","maybeCallNative","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","functionalReplace","fullUnicode","results","matchStr","accumulatedResult","nextSourcePosition","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","symbols","propertyIsEnumerableModule","nativeAssign","B","alphabet","chr","argumentsLength","createIteratorConstructor","IteratorsCore","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","ENTRIES","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","CONVERT_TO_STRING","first","second","codeAt","getOwnPropertyDescriptorModule","addToUnscopables","defineIterator","ARRAY_ITERATOR","setInternalState","iterated","kind","Arguments","RE","defaultConstructor","functionToString","EXISTS","copyConstructorProperties","isForced","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","nativePropertyIsEnumerable","NASHORN_BUG","1","PrototypeOfArrayIteratorPrototype","arrayIterator","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","redefineAll","setSpecies","anInstance","checkCorrectnessOfIteration","task","microtask","hostReportErrors","newPromiseCapabilityModule","perform","PROMISE","getInternalPromiseState","PromiseConstructor","$fetch","newPromiseCapability","newGenericPromiseCapability","IS_NODE","DISPATCH_EVENT","UNHANDLED_REJECTION","REJECTION_HANDLED","PENDING","FULFILLED","REJECTED","HANDLED","UNHANDLED","GLOBAL_CORE_JS_PROMISE","PromiseRejectionEvent","promise","FakePromise","INCORRECT_ITERATION","all","isThenable","isReject","notified","chain","reactions","exited","reaction","fail","rejection","onHandleUnhandled","onUnhandled","IS_UNHANDLED","isUnhandled","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","capability","$promiseResolve","remaining","alreadyCalled","race","ignoreCase","dotAll","returnMethod","SHARED","PromiseCapability","$$resolve","$$reject","flush","head","toggle","macrotask","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","IE8_DOM_DEFINE","toPrimitive","nativeDefineProperty","Attributes","feature","detection","POLYFILL","NATIVE","copyright","promiseCapability","nativeGetOwnPropertyDescriptor","variable","nativeMatch","callRegExpExec","arrayPush","MAX_UINT32","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","toAbsoluteIndex","IS_INCLUDES","fromIndex","includes","internalObjectKeys","arraySpeciesCreate","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","specificCreate","findIndex","integer","originalArray"],"mappings":"oGAAA,IAAIA,EAAY,EAAQ,QAEpBC,EAAMC,KAAKD,IAIfE,EAAOC,QAAU,SAAUC,GACzB,OAAOA,EAAW,EAAIJ,EAAID,EAAUK,GAAW,kBAAoB,I,uBCPrE,IAAIC,EAAS,EAAQ,QAErBH,EAAOC,QAAUE,G,qBCFjBH,EAAOC,QAAU,SAAUG,GACzB,IACE,QAASA,IACT,MAAOC,GACP,OAAO,K,uBCJX,IAAIC,EAAa,EAAQ,QACrBC,EAA4B,EAAQ,QACpCC,EAA8B,EAAQ,QACtCC,EAAW,EAAQ,QAGvBT,EAAOC,QAAUK,EAAW,UAAW,YAAc,SAAiBI,GACpE,IAAIC,EAAOJ,EAA0BK,EAAEH,EAASC,IAC5CG,EAAwBL,EAA4BI,EACxD,OAAOC,EAAwBF,EAAKG,OAAOD,EAAsBH,IAAOC,I,uBCT1E,IAAII,EAAiB,EAAQ,QAAuCH,EAChEI,EAAM,EAAQ,QACdC,EAAkB,EAAQ,QAE1BC,EAAgBD,EAAgB,eAEpCjB,EAAOC,QAAU,SAAUS,EAAIS,EAAKC,GAC9BV,IAAOM,EAAIN,EAAKU,EAASV,EAAKA,EAAGW,UAAWH,IAC9CH,EAAeL,EAAIQ,EAAe,CAAEI,cAAc,EAAMC,MAAOJ,M,uBCRnE,IAAIK,EAAW,EAAQ,QACnBC,EAAU,EAAQ,QAClBR,EAAkB,EAAQ,QAE1BS,EAAQT,EAAgB,SAI5BjB,EAAOC,QAAU,SAAUS,GACzB,IAAIiB,EACJ,OAAOH,EAASd,UAAmCkB,KAA1BD,EAAWjB,EAAGgB,MAA0BC,EAA0B,UAAfF,EAAQf,M,qBCVtF,IAAIc,EAAW,EAAQ,QAEvBxB,EAAOC,QAAU,SAAUS,GACzB,IAAKc,EAASd,GACZ,MAAMmB,UAAUC,OAAOpB,GAAM,qBAC7B,OAAOA,I,qBCLX,IAAIqB,EAAOhC,KAAKgC,KACZC,EAAQjC,KAAKiC,MAIjBhC,EAAOC,QAAU,SAAUC,GACzB,OAAO+B,MAAM/B,GAAYA,GAAY,GAAKA,EAAW,EAAI8B,EAAQD,GAAM7B,K,uBCNzE,IAAIuB,EAAU,EAAQ,QAClBS,EAAa,EAAQ,QAIzBlC,EAAOC,QAAU,SAAUkC,EAAGC,GAC5B,IAAIhC,EAAO+B,EAAE/B,KACb,GAAoB,oBAATA,EAAqB,CAC9B,IAAIiC,EAASjC,EAAKkC,KAAKH,EAAGC,GAC1B,GAAsB,kBAAXC,EACT,MAAMR,UAAU,sEAElB,OAAOQ,EAGT,GAAmB,WAAfZ,EAAQU,GACV,MAAMN,UAAU,+CAGlB,OAAOK,EAAWI,KAAKH,EAAGC,K,oCClB5B,IAAIG,EAAI,EAAQ,QACZC,EAAgB,EAAQ,QACxBC,EAAkB,EAAQ,QAC1BC,EAAsB,EAAQ,QAE9BC,EAAa,GAAGC,KAEhBC,EAAcL,GAAiBM,OAC/BC,EAAgBL,EAAoB,OAAQ,KAIhDH,EAAE,CAAES,OAAQ,QAASC,OAAO,EAAMC,OAAQL,IAAgBE,GAAiB,CACzEH,KAAM,SAAcO,GAClB,OAAOR,EAAWL,KAAKG,EAAgBW,WAAqBxB,IAAduB,EAA0B,IAAMA,O,qBCflF,IAAIE,EAAY,EAAQ,QAExBrD,EAAOC,QAAU,mCAAmCqD,KAAKD,I,qBCDzDrD,EAAOC,QAAU,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,Y,uBCRF,IAAIsD,EAAwB,EAAQ,QAChCC,EAAW,EAAQ,QACnBC,EAAW,EAAQ,QAIlBF,GACHC,EAASV,OAAOzB,UAAW,WAAYoC,EAAU,CAAEC,QAAQ,K,qBCP7D,IAAIC,EAAK,EACLC,EAAU7D,KAAK8D,SAEnB7D,EAAOC,QAAU,SAAU6D,GACzB,MAAO,UAAYhC,YAAeF,IAARkC,EAAoB,GAAKA,GAAO,QAAUH,EAAKC,GAASH,SAAS,M,uBCJ7F,IASIM,EAAKC,EAAKhD,EATViD,EAAkB,EAAQ,QAC1B9D,EAAS,EAAQ,QACjBqB,EAAW,EAAQ,QACnB0C,EAA8B,EAAQ,QACtCC,EAAY,EAAQ,QACpBC,EAAY,EAAQ,QACpBC,EAAa,EAAQ,QAErBC,EAAUnE,EAAOmE,QAGjBC,EAAU,SAAU7D,GACtB,OAAOM,EAAIN,GAAMsD,EAAItD,GAAMqD,EAAIrD,EAAI,KAGjC8D,EAAY,SAAUC,GACxB,OAAO,SAAU/D,GACf,IAAIgE,EACJ,IAAKlD,EAASd,KAAQgE,EAAQV,EAAItD,IAAKiE,OAASF,EAC9C,MAAM5C,UAAU,0BAA4B4C,EAAO,aACnD,OAAOC,IAIb,GAAIT,EAAiB,CACnB,IAAIW,EAAQ,IAAIN,EACZO,EAAQD,EAAMZ,IACdc,EAAQF,EAAM5D,IACd+D,EAAQH,EAAMb,IAClBA,EAAM,SAAUrD,EAAIsE,GAElB,OADAD,EAAMzC,KAAKsC,EAAOlE,EAAIsE,GACfA,GAEThB,EAAM,SAAUtD,GACd,OAAOmE,EAAMvC,KAAKsC,EAAOlE,IAAO,IAElCM,EAAM,SAAUN,GACd,OAAOoE,EAAMxC,KAAKsC,EAAOlE,QAEtB,CACL,IAAIuE,EAAQb,EAAU,SACtBC,EAAWY,IAAS,EACpBlB,EAAM,SAAUrD,EAAIsE,GAElB,OADAd,EAA4BxD,EAAIuE,EAAOD,GAChCA,GAEThB,EAAM,SAAUtD,GACd,OAAOyD,EAAUzD,EAAIuE,GAASvE,EAAGuE,GAAS,IAE5CjE,EAAM,SAAUN,GACd,OAAOyD,EAAUzD,EAAIuE,IAIzBjF,EAAOC,QAAU,CACf8D,IAAKA,EACLC,IAAKA,EACLhD,IAAKA,EACLuD,QAASA,EACTC,UAAWA,I,oCC1Db,IAAIjC,EAAI,EAAQ,QACZ2C,EAAO,EAAQ,QAAgCC,IAC/CC,EAA+B,EAAQ,QACvCC,EAA0B,EAAQ,QAElCC,EAAsBF,EAA6B,OAEnDG,EAAiBF,EAAwB,OAK7C9C,EAAE,CAAES,OAAQ,QAASC,OAAO,EAAMC,QAASoC,IAAwBC,GAAkB,CACnFJ,IAAK,SAAaK,GAChB,OAAON,EAAK9B,KAAMoC,EAAYC,UAAUC,OAAS,EAAID,UAAU,QAAK7D,O,oCCdxE,IAAIW,EAAI,EAAQ,QACZnC,EAAO,EAAQ,QAEnBmC,EAAE,CAAES,OAAQ,SAAUC,OAAO,EAAMC,OAAQ,IAAI9C,OAASA,GAAQ,CAC9DA,KAAMA,K,qBCLR,IAAIuF,EAAc,EAAQ,QACtBC,EAAuB,EAAQ,QAC/BnF,EAAW,EAAQ,QACnBoF,EAAa,EAAQ,QAIzB7F,EAAOC,QAAU0F,EAAc7C,OAAOgD,iBAAmB,SAA0BC,EAAGC,GACpFvF,EAASsF,GACT,IAGIjC,EAHAnD,EAAOkF,EAAWG,GAClBN,EAAS/E,EAAK+E,OACdO,EAAQ,EAEZ,MAAOP,EAASO,EAAOL,EAAqBhF,EAAEmF,EAAGjC,EAAMnD,EAAKsF,KAAUD,EAAWlC,IACjF,OAAOiC,I,qBCdT,IAAIG,EAGJA,EAAI,WACH,OAAO9C,KADJ,GAIJ,IAEC8C,EAAIA,GAAK,IAAIC,SAAS,cAAb,GACR,MAAOC,GAEc,kBAAXC,SAAqBH,EAAIG,QAOrCrG,EAAOC,QAAUiG,G,oCClBjB,IAAII,EAAS,EAAQ,QAAiCA,OAItDtG,EAAOC,QAAU,SAAUmC,EAAG6D,EAAOM,GACnC,OAAON,GAASM,EAAUD,EAAOlE,EAAG6D,GAAOP,OAAS,K,qBCNtD,IAAIpF,EAAa,EAAQ,QAEzBN,EAAOC,QAAUK,EAAW,YAAa,cAAgB,I,uBCFzD,IAAIqF,EAAc,EAAQ,QACtBa,EAAQ,EAAQ,QAChBxF,EAAM,EAAQ,QAEdD,EAAiB+B,OAAO/B,eACxB0F,EAAQ,GAERC,EAAU,SAAUhG,GAAM,MAAMA,GAEpCV,EAAOC,QAAU,SAAU0G,EAAaC,GACtC,GAAI5F,EAAIyF,EAAOE,GAAc,OAAOF,EAAME,GACrCC,IAASA,EAAU,IACxB,IAAIC,EAAS,GAAGF,GACZG,IAAY9F,EAAI4F,EAAS,cAAeA,EAAQE,UAChDC,EAAY/F,EAAI4F,EAAS,GAAKA,EAAQ,GAAKF,EAC3CM,EAAYhG,EAAI4F,EAAS,GAAKA,EAAQ,QAAKhF,EAE/C,OAAO6E,EAAME,KAAiBE,IAAWL,GAAM,WAC7C,GAAIM,IAAcnB,EAAa,OAAO,EACtC,IAAII,EAAI,CAAEL,QAAS,GAEfoB,EAAW/F,EAAegF,EAAG,EAAG,CAAEkB,YAAY,EAAMjD,IAAK0C,IACxDX,EAAE,GAAK,EAEZc,EAAOvE,KAAKyD,EAAGgB,EAAWC,Q,oCCvB9B,IAAIR,EAAQ,EAAQ,QAEpBxG,EAAOC,QAAU,SAAU0G,EAAazG,GACtC,IAAI2G,EAAS,GAAGF,GAChB,QAASE,GAAUL,GAAM,WAEvBK,EAAOvE,KAAK,KAAMpC,GAAY,WAAc,MAAM,GAAM,Q,qBCP5D,IAAIsD,EAAW,EAAQ,QAEvBxD,EAAOC,QAAU,SAAU+C,EAAQkE,EAAKN,GACtC,IAAK,IAAI9C,KAAOoD,EAAK1D,EAASR,EAAQc,EAAKoD,EAAIpD,GAAM8C,GACrD,OAAO5D,I,uBCJT,IAAI7C,EAAS,EAAQ,QACjBgH,EAAO,EAAQ,QAA4BA,KAC3CC,EAAc,EAAQ,QAEtBC,EAAclH,EAAOmH,WACrBC,EAAS,EAAIF,EAAYD,EAAc,SAAWI,IAItDxH,EAAOC,QAAUsH,EAAS,SAAoBE,GAC5C,IAAIC,EAAgBP,EAAKrF,OAAO2F,IAC5BpF,EAASgF,EAAYK,GACzB,OAAkB,IAAXrF,GAA2C,KAA3BqF,EAAcpB,OAAO,IAAa,EAAIjE,GAC3DgF,G,uBCbJ,IAAI9E,EAAI,EAAQ,QACZoF,EAAS,EAAQ,QAIrBpF,EAAE,CAAES,OAAQ,SAAU4E,MAAM,EAAM1E,OAAQJ,OAAO6E,SAAWA,GAAU,CACpEA,OAAQA,K,qBCNV3H,EAAOC,QAAU,SAAUS,GACzB,GAAiB,mBAANA,EACT,MAAMmB,UAAUC,OAAOpB,GAAM,sBAC7B,OAAOA,I,uBCHX,IAAIP,EAAS,EAAQ,QAErBH,EAAOC,QAAU,SAAU4H,EAAGC,GAC5B,IAAIC,EAAU5H,EAAO4H,QACjBA,GAAWA,EAAQ1H,QACA,IAArBoF,UAAUC,OAAeqC,EAAQ1H,MAAMwH,GAAKE,EAAQ1H,MAAMwH,EAAGC,M,uBCLjE,IAAIrG,EAAU,EAAQ,QAClBuG,EAAY,EAAQ,QACpB/G,EAAkB,EAAQ,QAE1BgH,EAAWhH,EAAgB,YAE/BjB,EAAOC,QAAU,SAAUS,GACzB,QAAUkB,GAANlB,EAAiB,OAAOA,EAAGuH,IAC1BvH,EAAG,eACHsH,EAAUvG,EAAQf,M,uBCTzB,IAAIJ,EAAa,EAAQ,QAEzBN,EAAOC,QAAUK,EAAW,WAAY,oB,qBCFxCN,EAAOC,QAAU,SAAUG,GACzB,IACE,MAAO,CAAEC,OAAO,EAAOkB,MAAOnB,KAC9B,MAAOC,GACP,MAAO,CAAEA,OAAO,EAAMkB,MAAOlB,M,oCCHjC,IAAIkC,EAAI,EAAQ,QACZ2F,EAAU,EAAQ,QAClBC,EAAgB,EAAQ,QACxB3B,EAAQ,EAAQ,QAChBlG,EAAa,EAAQ,QACrB8H,EAAqB,EAAQ,QAC7BC,EAAiB,EAAQ,QACzB7E,EAAW,EAAQ,QAGnB8E,IAAgBH,GAAiB3B,GAAM,WACzC2B,EAAc9G,UAAU,WAAWiB,KAAK,CAAEiG,KAAM,eAA+B,kBAKjFhG,EAAE,CAAES,OAAQ,UAAWC,OAAO,EAAMuF,MAAM,EAAMtF,OAAQoF,GAAe,CACrE,QAAW,SAAUG,GACnB,IAAIC,EAAIN,EAAmBhF,KAAM9C,EAAW,YACxCqI,EAAiC,mBAAbF,EACxB,OAAOrF,KAAKmF,KACVI,EAAa,SAAUC,GACrB,OAAOP,EAAeK,EAAGD,KAAaF,MAAK,WAAc,OAAOK,MAC9DH,EACJE,EAAa,SAAUvC,GACrB,OAAOiC,EAAeK,EAAGD,KAAaF,MAAK,WAAc,MAAMnC,MAC7DqC,MAMLP,GAAmC,mBAAjBC,GAAgCA,EAAc9G,UAAU,YAC7EmC,EAAS2E,EAAc9G,UAAW,UAAWf,EAAW,WAAWe,UAAU,a,oCCjC/E,IAAIwH,EAAoB,EAAQ,QAA+BA,kBAC3DC,EAAS,EAAQ,QACjBC,EAA2B,EAAQ,QACnCC,EAAiB,EAAQ,QACzBhB,EAAY,EAAQ,QAEpBiB,EAAa,WAAc,OAAO7F,MAEtCpD,EAAOC,QAAU,SAAUiJ,EAAqBC,EAAMC,GACpD,IAAIlI,EAAgBiI,EAAO,YAI3B,OAHAD,EAAoB7H,UAAYyH,EAAOD,EAAmB,CAAEO,KAAML,EAAyB,EAAGK,KAC9FJ,EAAeE,EAAqBhI,GAAe,GAAO,GAC1D8G,EAAU9G,GAAiB+H,EACpBC,I,oCCbT,IAAI3G,EAAI,EAAQ,QACZ8G,EAAY,EAAQ,QACpBC,EAAW,EAAQ,QACnB9C,EAAQ,EAAQ,QAChB9D,EAAsB,EAAQ,QAE9BY,EAAO,GACPiG,EAAajG,EAAKkG,KAGlBC,EAAqBjD,GAAM,WAC7BlD,EAAKkG,UAAK5H,MAGR8H,EAAgBlD,GAAM,WACxBlD,EAAKkG,KAAK,SAGRzG,EAAgBL,EAAoB,QAEpC6E,EAASkC,IAAuBC,IAAkB3G,EAItDR,EAAE,CAAES,OAAQ,QAASC,OAAO,EAAMC,OAAQqE,GAAU,CAClDiC,KAAM,SAAcG,GAClB,YAAqB/H,IAAd+H,EACHJ,EAAWjH,KAAKgH,EAASlG,OACzBmG,EAAWjH,KAAKgH,EAASlG,MAAOiG,EAAUM,Q,oCC5BlD,IAAIrJ,EAAa,EAAQ,QACrBsF,EAAuB,EAAQ,QAC/B3E,EAAkB,EAAQ,QAC1B0E,EAAc,EAAQ,QAEtBiE,EAAU3I,EAAgB,WAE9BjB,EAAOC,QAAU,SAAU4J,GACzB,IAAIC,EAAcxJ,EAAWuJ,GACzB9I,EAAiB6E,EAAqBhF,EAEtC+E,GAAemE,IAAgBA,EAAYF,IAC7C7I,EAAe+I,EAAaF,EAAS,CACnCtI,cAAc,EACd0C,IAAK,WAAc,OAAOZ,U,qBCfhCnD,EAAQW,EAAIkC,OAAOjC,uB,qBCAnB,IAmDIkJ,EAnDAtJ,EAAW,EAAQ,QACnBqF,EAAmB,EAAQ,QAC3BkE,EAAc,EAAQ,QACtB3F,EAAa,EAAQ,QACrB4F,EAAO,EAAQ,QACfC,EAAwB,EAAQ,QAChC9F,EAAY,EAAQ,QAEpB+F,EAAK,IACLC,EAAK,IACLC,EAAY,YACZC,EAAS,SACTC,EAAWnG,EAAU,YAErBoG,EAAmB,aAEnBC,EAAY,SAAUC,GACxB,OAAON,EAAKE,EAASH,EAAKO,EAAUN,EAAK,IAAME,EAASH,GAItDQ,EAA4B,SAAUZ,GACxCA,EAAgBa,MAAMH,EAAU,KAChCV,EAAgBc,QAChB,IAAIC,EAAOf,EAAgBgB,aAAajI,OAExC,OADAiH,EAAkB,KACXe,GAILE,EAA2B,WAE7B,IAEIC,EAFAC,EAAShB,EAAsB,UAC/BiB,EAAK,OAASb,EAAS,IAU3B,OARAY,EAAOE,MAAMC,QAAU,OACvBpB,EAAKqB,YAAYJ,GAEjBA,EAAOhE,IAAMpF,OAAOqJ,GACpBF,EAAiBC,EAAOK,cAAcC,SACtCP,EAAeQ,OACfR,EAAeL,MAAMH,EAAU,sBAC/BQ,EAAeJ,QACRI,EAAeS,GASpBC,EAAkB,WACpB,IAEE5B,EAAkByB,SAASI,QAAU,IAAIC,cAAc,YACvD,MAAOxL,IACTsL,EAAkB5B,EAAkBY,EAA0BZ,GAAmBiB,IACjF,IAAItF,EAASsE,EAAYtE,OACzB,MAAOA,WAAiBiG,EAAgBtB,GAAWL,EAAYtE,IAC/D,OAAOiG,KAGTtH,EAAWkG,IAAY,EAIvBvK,EAAOC,QAAU6C,OAAOgG,QAAU,SAAgB/C,EAAGC,GACnD,IAAI3D,EAQJ,OAPU,OAAN0D,GACFyE,EAAiBH,GAAa5J,EAASsF,GACvC1D,EAAS,IAAImI,EACbA,EAAiBH,GAAa,KAE9BhI,EAAOkI,GAAYxE,GACd1D,EAASsJ,SACM/J,IAAfoE,EAA2B3D,EAASyD,EAAiBzD,EAAQ2D,K,uBC5EtE,IAAIxE,EAAW,EAAQ,QAEvBxB,EAAOC,QAAU,SAAUS,GACzB,IAAKc,EAASd,IAAc,OAAPA,EACnB,MAAMmB,UAAU,aAAeC,OAAOpB,GAAM,mBAC5C,OAAOA,I,uBCLX,IAAID,EAAW,EAAQ,QACnBqL,EAAqB,EAAQ,QAMjC9L,EAAOC,QAAU6C,OAAOiJ,iBAAmB,aAAe,GAAK,WAC7D,IAEIC,EAFAC,GAAiB,EACjB3I,EAAO,GAEX,IACE0I,EAASlJ,OAAOoJ,yBAAyBpJ,OAAOzB,UAAW,aAAa0C,IACxEiI,EAAO1J,KAAKgB,EAAM,IAClB2I,EAAiB3I,aAAgB6I,MACjC,MAAO9L,IACT,OAAO,SAAwB0F,EAAG9C,GAKhC,OAJAxC,EAASsF,GACT+F,EAAmB7I,GACfgJ,EAAgBD,EAAO1J,KAAKyD,EAAG9C,GAC9B8C,EAAEqG,UAAYnJ,EACZ8C,GAdoD,QAgBzDnE,I,uBCvBN,IAAIW,EAAI,EAAQ,QACZ8J,EAA2B,EAAQ,QAIvC9J,EAAE,CAAEpC,QAAQ,EAAM+C,OAAQoE,YAAc+E,GAA4B,CAClE/E,WAAY+E,K,uBCNd,IAAIlM,EAAS,EAAQ,QACjBmM,EAAS,EAAQ,QACjBtL,EAAM,EAAQ,QACduL,EAAM,EAAQ,QACdC,EAAgB,EAAQ,QACxBC,EAAoB,EAAQ,QAE5BC,EAAwBJ,EAAO,OAC/BK,EAASxM,EAAOwM,OAChBC,EAAwBH,EAAoBE,EAASA,GAAUA,EAAOE,eAAiBN,EAE3FvM,EAAOC,QAAU,SAAU6M,GAIvB,OAHG9L,EAAI0L,EAAuBI,KAC1BN,GAAiBxL,EAAI2L,EAAQG,GAAOJ,EAAsBI,GAAQH,EAAOG,GACxEJ,EAAsBI,GAAQF,EAAsB,UAAYE,IAC9DJ,EAAsBI,K,uBCfjC,IAAIvJ,EAAwB,EAAQ,QAChCwJ,EAAa,EAAQ,QACrB9L,EAAkB,EAAQ,QAE1BC,EAAgBD,EAAgB,eAEhC+L,EAAuE,aAAnDD,EAAW,WAAc,OAAOtH,UAArB,IAG/BwH,EAAS,SAAUvM,EAAIoD,GACzB,IACE,OAAOpD,EAAGoD,GACV,MAAOzD,MAIXL,EAAOC,QAAUsD,EAAwBwJ,EAAa,SAAUrM,GAC9D,IAAIqF,EAAGmH,EAAK7K,EACZ,YAAcT,IAAPlB,EAAmB,YAAqB,OAAPA,EAAc,OAEM,iBAAhDwM,EAAMD,EAAOlH,EAAIjD,OAAOpC,GAAKQ,IAA8BgM,EAEnEF,EAAoBD,EAAWhH,GAEH,WAA3B1D,EAAS0K,EAAWhH,KAAsC,mBAAZA,EAAEoH,OAAuB,YAAc9K,I,kCClB7E,SAAS+K,EACtBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,IAqBIC,EArBAjH,EAAmC,oBAAlByG,EACjBA,EAAczG,QACdyG,EAsDJ,GAnDIC,IACF1G,EAAQ0G,OAASA,EACjB1G,EAAQ2G,gBAAkBA,EAC1B3G,EAAQkH,WAAY,GAIlBN,IACF5G,EAAQmH,YAAa,GAInBL,IACF9G,EAAQoH,SAAW,UAAYN,GAI7BC,GACFE,EAAO,SAAUI,GAEfA,EACEA,GACC7K,KAAK8K,QAAU9K,KAAK8K,OAAOC,YAC3B/K,KAAKgL,QAAUhL,KAAKgL,OAAOF,QAAU9K,KAAKgL,OAAOF,OAAOC,WAEtDF,GAA0C,qBAAxBI,sBACrBJ,EAAUI,qBAGRZ,GACFA,EAAanL,KAAKc,KAAM6K,GAGtBA,GAAWA,EAAQK,uBACrBL,EAAQK,sBAAsBC,IAAIZ,IAKtC/G,EAAQ4H,aAAeX,GACdJ,IACTI,EAAOD,EACH,WACAH,EAAanL,KACXc,MACCwD,EAAQmH,WAAa3K,KAAKgL,OAAShL,MAAMqL,MAAMC,SAASC,aAG3DlB,GAGFI,EACF,GAAIjH,EAAQmH,WAAY,CAGtBnH,EAAQgI,cAAgBf,EAExB,IAAIgB,EAAiBjI,EAAQ0G,OAC7B1G,EAAQ0G,OAAS,SAAmCwB,EAAGb,GAErD,OADAJ,EAAKvL,KAAK2L,GACHY,EAAeC,EAAGb,QAEtB,CAEL,IAAIc,EAAWnI,EAAQoI,aACvBpI,EAAQoI,aAAeD,EACnB,GAAGjO,OAAOiO,EAAUlB,GACpB,CAACA,GAIT,MAAO,CACL5N,QAASoN,EACTzG,QAASA,GA/Fb,mC,qBCAA5G,EAAOC,QAAU,SAAUgP,EAAQ1N,GACjC,MAAO,CACL0F,aAAuB,EAATgI,GACd3N,eAAyB,EAAT2N,GAChBC,WAAqB,EAATD,GACZ1N,MAAOA,K,uBCLX,IAAId,EAAW,EAAQ,QACnB0O,EAAwB,EAAQ,QAChCC,EAAW,EAAQ,QACnBC,EAAO,EAAQ,QACfC,EAAoB,EAAQ,QAC5BC,EAA+B,EAAQ,QAEvCC,EAAS,SAAUC,EAASpN,GAC9Be,KAAKqM,QAAUA,EACfrM,KAAKf,OAASA,GAGZqN,EAAU1P,EAAOC,QAAU,SAAU0P,EAAUC,EAAIC,EAAMC,EAAYC,GACvE,IACIC,EAAUC,EAAQhK,EAAOP,EAAQrD,EAAQ+G,EAAM8G,EAD/CC,EAAgBd,EAAKO,EAAIC,EAAMC,EAAa,EAAI,GAGpD,GAAIC,EACFC,EAAWL,MACN,CAEL,GADAM,EAASX,EAAkBK,GACN,mBAAVM,EAAsB,MAAMpO,UAAU,0BAEjD,GAAIsN,EAAsBc,GAAS,CACjC,IAAKhK,EAAQ,EAAGP,EAAS0J,EAASO,EAASjK,QAASA,EAASO,EAAOA,IAIlE,GAHA5D,EAASyN,EACLK,EAAc1P,EAASyP,EAAOP,EAAS1J,IAAQ,GAAIiK,EAAK,IACxDC,EAAcR,EAAS1J,IACvB5D,GAAUA,aAAkBmN,EAAQ,OAAOnN,EAC/C,OAAO,IAAImN,GAAO,GAEtBQ,EAAWC,EAAO3N,KAAKqN,GAGzBvG,EAAO4G,EAAS5G,KAChB,QAAS8G,EAAO9G,EAAK9G,KAAK0N,IAAWI,KAEnC,GADA/N,EAASkN,EAA6BS,EAAUG,EAAeD,EAAK3O,MAAOuO,GACtD,iBAAVzN,GAAsBA,GAAUA,aAAkBmN,EAAQ,OAAOnN,EAC5E,OAAO,IAAImN,GAAO,IAGtBE,EAAQW,KAAO,SAAUhO,GACvB,OAAO,IAAImN,GAAO,EAAMnN,K,uBCzC1B,IAAImE,EAAQ,EAAQ,QAChB/E,EAAU,EAAQ,QAElB6O,EAAQ,GAAGA,MAGftQ,EAAOC,QAAUuG,GAAM,WAGrB,OAAQ1D,OAAO,KAAKyN,qBAAqB,MACtC,SAAU7P,GACb,MAAsB,UAAfe,EAAQf,GAAkB4P,EAAMhO,KAAK5B,EAAI,IAAMoC,OAAOpC,IAC3DoC,Q,uBCZJ,IAAI7B,EAAkB,EAAQ,QAC1B+G,EAAY,EAAQ,QAEpBC,EAAWhH,EAAgB,YAC3BuP,EAAiBrE,MAAM9K,UAG3BrB,EAAOC,QAAU,SAAUS,GACzB,YAAckB,IAAPlB,IAAqBsH,EAAUmE,QAAUzL,GAAM8P,EAAevI,KAAcvH,K,uTCR9E,ICAQ,gBACb,OAAOmH,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAID,GAAKC,EAAI,EAAI2I,KCChC,cAEb,OADuB,IAAnBC,EAAQhL,SAAcgL,EAAUC,EAAoBD,IACjD,CACLE,KAAM,SAAS/I,EAAGe,EAAGiI,EAAIC,GACb,MAAND,IAAYA,EAAK,GACX,MAANC,IAAYA,EAAKjJ,EAAEnC,QACvB,MAAOmL,EAAKC,EAAI,CACd,IAAIC,EAAMF,EAAKC,IAAO,EAClBJ,EAAQ7I,EAAEkJ,GAAMnI,GAAK,EAAGiI,EAAKE,EAAM,EAClCD,EAAKC,EAEZ,OAAOF,GAETG,MAAO,SAASnJ,EAAGe,EAAGiI,EAAIC,GACd,MAAND,IAAYA,EAAK,GACX,MAANC,IAAYA,EAAKjJ,EAAEnC,QACvB,MAAOmL,EAAKC,EAAI,CACd,IAAIC,EAAMF,EAAKC,IAAO,EAClBJ,EAAQ7I,EAAEkJ,GAAMnI,GAAK,EAAGkI,EAAKC,EAC5BF,EAAKE,EAAM,EAElB,OAAOF,KAKb,SAASF,EAAoB/P,GAC3B,OAAO,SAASqQ,EAAGrI,GACjB,OAAOsI,EAAUtQ,EAAEqQ,GAAIrI,IC3B3B,IAAIuI,EAAkBC,EAASF,GACpBG,EAAcF,EAAgBH,MAE1BM,GADSH,EAAgBP,KACzB,GCJA,ICFX,EAAQzE,MAAM9K,UCAH,GDEI,EAAMkQ,MACR,EAAMpM,ICHR,gBACbqM,GAASA,EAAOnB,GAAQA,EAAMH,GAAQuB,EAAIhM,UAAUC,QAAU,GAAK2K,EAAOmB,EAAOA,EAAQ,EAAG,GAAKC,EAAI,EAAI,GAAKvB,EAE9G,IAAIwB,GAAK,EACLD,EAAoD,EAAhD1R,KAAK4R,IAAI,EAAG5R,KAAKgC,MAAMsO,EAAOmB,GAAStB,IAC3C0B,EAAQ,IAAIzF,MAAMsF,GAEtB,QAASC,EAAID,EACXG,EAAMF,GAAKF,EAAQE,EAAIxB,EAGzB,OAAO0B,ICXLC,EAAM9R,KAAK+R,KAAK,IAChBC,EAAKhS,KAAK+R,KAAK,IACfE,EAAKjS,KAAK+R,KAAK,GAEJ,kBACb,IAAIG,EAEAR,EACAS,EACAhC,EAHAwB,GAAK,EAMT,GADArB,GAAQA,EAAMmB,GAASA,EAAOW,GAASA,EACnCX,IAAUnB,GAAQ8B,EAAQ,EAAG,MAAO,CAACX,GAEzC,IADIS,EAAU5B,EAAOmB,KAAOC,EAAID,EAAOA,EAAQnB,EAAMA,EAAOoB,GACT,KAA9CvB,EAAOkC,EAAcZ,EAAOnB,EAAM8B,MAAkBE,SAASnC,GAAO,MAAO,GAEhF,GAAIA,EAAO,EAAG,CACZsB,EAAQzR,KAAKgC,KAAKyP,EAAQtB,GAC1BG,EAAOtQ,KAAKiC,MAAMqO,EAAOH,GACzBgC,EAAQ,IAAI/F,MAAMsF,EAAI1R,KAAKgC,KAAKsO,EAAOmB,EAAQ,IAC/C,QAASE,EAAID,EAAGS,EAAMR,IAAMF,EAAQE,GAAKxB,MACpC,CACLsB,EAAQzR,KAAKiC,MAAMwP,EAAQtB,GAC3BG,EAAOtQ,KAAKgC,KAAKsO,EAAOH,GACxBgC,EAAQ,IAAI/F,MAAMsF,EAAI1R,KAAKgC,KAAKyP,EAAQnB,EAAO,IAC/C,QAASqB,EAAID,EAAGS,EAAMR,IAAMF,EAAQE,GAAKxB,EAK3C,OAFI+B,GAASC,EAAMD,UAEZC,GAGF,SAASE,EAAcZ,EAAOnB,EAAM8B,GACzC,IAAIjC,GAAQG,EAAOmB,GAASzR,KAAK4R,IAAI,EAAGQ,GACpCG,EAAQvS,KAAKiC,MAAMjC,KAAKwS,IAAIrC,GAAQnQ,KAAKyS,MACzCnS,EAAQ6P,EAAOnQ,KAAK0S,IAAI,GAAIH,GAChC,OAAOA,GAAS,GACTjS,GAASwR,EAAM,GAAKxR,GAAS0R,EAAK,EAAI1R,GAAS2R,EAAK,EAAI,GAAKjS,KAAK0S,IAAI,GAAIH,IAC1EvS,KAAK0S,IAAI,IAAKH,IAAUjS,GAASwR,EAAM,GAAKxR,GAAS0R,EAAK,EAAI1R,GAAS2R,EAAK,EAAI,GAGlF,SAASU,EAASlB,EAAOnB,EAAM8B,GACpC,IAAIQ,EAAQ5S,KAAK6S,IAAIvC,EAAOmB,GAASzR,KAAK4R,IAAI,EAAGQ,GAC7CU,EAAQ9S,KAAK0S,IAAI,GAAI1S,KAAKiC,MAAMjC,KAAKwS,IAAII,GAAS5S,KAAKyS,OACvDnS,EAAQsS,EAAQE,EAIpB,OAHIxS,GAASwR,EAAKgB,GAAS,GAClBxS,GAAS0R,EAAIc,GAAS,EACtBxS,GAAS2R,IAAIa,GAAS,GACxBxC,EAAOmB,GAASqB,EAAQA,ECjDlB,ICAA,gBACb,IAEItR,EACAoQ,EAHAF,EAAIqB,EAAOpN,OACXgM,GAAK,EAIT,GAAe,MAAXqB,GACF,QAASrB,EAAID,EACX,GAA2B,OAAtBlQ,EAAQuR,EAAOpB,KAAenQ,GAASA,EAAO,CACjDoQ,EAAMpQ,EACN,QAASmQ,EAAID,EACgB,OAAtBlQ,EAAQuR,EAAOpB,KAAenQ,EAAQoQ,IACzCA,EAAMpQ,SAQd,QAASmQ,EAAID,EACX,GAA+C,OAA1ClQ,EAAQwR,EAAQD,EAAOpB,GAAIA,EAAGoB,KAAoBvR,GAASA,EAAO,CACrEoQ,EAAMpQ,EACN,QAASmQ,EAAID,EACoC,OAA1ClQ,EAAQwR,EAAQD,EAAOpB,GAAIA,EAAGoB,KAAoBvR,EAAQoQ,IAC7DA,EAAMpQ,GAOhB,OAAOoQ,GChCM,cACb,IACIqB,EAGAC,EACAC,EALAzB,EAAI0B,EAAOzN,OAEXgM,GAAK,EACL0B,EAAI,EAIR,QAAS1B,EAAID,EAAG2B,GAAKD,EAAOzB,GAAGhM,OAC/BuN,EAAS,IAAI9G,MAAMiH,GAEnB,QAAS3B,GAAK,EAAG,CACfyB,EAAQC,EAAO1B,GACfuB,EAAIE,EAAMxN,OACV,QAASsN,GAAK,EACZC,IAASG,GAAKF,EAAMF,GAIxB,OAAOC,GCjBM,ICFJ,EAAQ9G,MAAM9K,UAAUkQ,MCApB,cACb,OAAO3I,GCEL,EAAM,EACN,EAAQ,EACR,EAAS,EACT,EAAO,EACPyK,EAAU,KAEd,SAASC,EAAW1K,GAClB,MAAO,cAAgBA,EAAI,IAAO,MAGpC,SAAS2K,EAAWC,GAClB,MAAO,gBAAkBA,EAAI,IAAO,IAGtC,SAAS,EAAOC,GACd,OAAO,SAASxC,GACd,OAAQwC,EAAMxC,IAIlB,SAAS,EAAOwC,GACd,IAAIC,EAAS3T,KAAK4R,IAAI,EAAG8B,EAAME,YAAc,GAAK,EAElD,OADIF,EAAMG,UAASF,EAAS3T,KAAK6T,MAAMF,IAChC,SAASzC,GACd,OAAQwC,EAAMxC,GAAKyC,GAIvB,SAASG,IACP,OAAQzQ,KAAK0Q,OAGf,SAAS,EAAKC,EAAQN,GACpB,IAAIO,EAAgB,GAChBC,EAAa,KACbC,EAAa,KACbC,EAAgB,EAChBC,EAAgB,EAChBC,EAAc,EACdC,EAAIP,IAAW,GAAOA,IAAW,GAAQ,EAAI,EAC7CnL,EAAImL,IAAW,GAAQA,IAAW,EAAQ,IAAM,IAChDQ,EAAYR,IAAW,GAAOA,IAAW,EAAST,EAAaC,EAEnE,SAASiB,EAAKvG,GACZ,IAAI6E,EAAuB,MAAdmB,EAAsBR,EAAMvB,MAAQuB,EAAMvB,MAAMuC,MAAMhB,EAAOO,GAAiBP,EAAM7H,SAAYqI,EACzGS,EAAuB,MAAdR,EAAsBT,EAAMS,WAAaT,EAAMS,WAAWO,MAAMhB,EAAOO,GAAiB,EAAYE,EAC7GS,EAAU5U,KAAK4R,IAAIwC,EAAe,GAAKE,EACvCzC,EAAQ6B,EAAM7B,QACdgD,GAAUhD,EAAM,GAAK,GACrBiD,GAAUjD,EAAMA,EAAMlM,OAAS,GAAK,GACpCoP,GAAYrB,EAAME,UAAY,EAAS,GAAQF,EAAMsB,QACrDC,EAAY/G,EAAQ+G,UAAY/G,EAAQ+G,YAAc/G,EACtDgH,EAAOD,EAAUE,UAAU,WAAWC,KAAK,CAAC,OAC5CC,EAAOJ,EAAUE,UAAU,SAASC,KAAKrC,EAAQW,GAAO4B,QACxDC,EAAWF,EAAKG,OAChBC,EAAYJ,EAAKK,QAAQC,OAAO,KAAKC,KAAK,QAAS,QACnDC,EAAOR,EAAKS,OAAO,QACnBC,EAAOV,EAAKS,OAAO,QAEvBZ,EAAOA,EAAKc,MAAMd,EAAKQ,QAAQO,OAAO,OAAQ,SACzCL,KAAK,QAAS,UACdA,KAAK,SAAU,iBAEpBP,EAAOA,EAAKW,MAAMP,GAElBI,EAAOA,EAAKG,MAAMP,EAAUE,OAAO,QAC9BC,KAAK,SAAU,gBACfA,KAAK/M,EAAI,IAAK0L,EAAIH,IAEvB2B,EAAOA,EAAKC,MAAMP,EAAUE,OAAO,QAC9BC,KAAK,OAAQ,gBACbA,KAAK/M,EAAG0L,EAAIK,GACZgB,KAAK,KAAM5B,IAAW,EAAM,MAAQA,IAAW,EAAS,SAAW,WAEpE9F,IAAY+G,IACdC,EAAOA,EAAKgB,WAAWhI,GACvBmH,EAAOA,EAAKa,WAAWhI,GACvB2H,EAAOA,EAAKK,WAAWhI,GACvB6H,EAAOA,EAAKG,WAAWhI,GAEvBqH,EAAWA,EAASW,WAAWhI,GAC1B0H,KAAK,UAAWtC,GAChBsC,KAAK,aAAa,SAAS1E,GAAK,OAAOoB,SAASpB,EAAI6D,EAAS7D,IAAMsD,EAAUtD,GAAK7N,KAAK8S,aAAa,gBAEzGV,EACKG,KAAK,UAAWtC,GAChBsC,KAAK,aAAa,SAAS1E,GAAK,IAAIkF,EAAI/S,KAAKgT,WAAWtC,OAAQ,OAAOS,EAAU4B,GAAK9D,SAAS8D,EAAIA,EAAElF,IAAMkF,EAAIrB,EAAS7D,QAG/HqE,EAASe,SAETpB,EACKU,KAAK,IAAK5B,IAAW,GAAQA,GAAU,EACjCK,EAAgB,IAAME,EAAIF,EAAgB,IAAMQ,EAAS,QAAUC,EAAS,IAAMP,EAAIF,EAAgB,QAAUQ,EAAS,IAAMC,EAC/HT,EAAgB,IAAMQ,EAAS,IAAMN,EAAIF,EAAgB,QAAUS,EAAS,IAAMP,EAAIF,EAAgB,IAAMQ,EAAS,QAAUC,GAE1IO,EACKO,KAAK,UAAW,GAChBA,KAAK,aAAa,SAAS1E,GAAK,OAAOsD,EAAUO,EAAS7D,OAE/D2E,EACKD,KAAK/M,EAAI,IAAK0L,EAAIH,GAEvB2B,EACKH,KAAK/M,EAAG0L,EAAIK,GACZmB,KAAKpB,GAEVM,EAAUsB,OAAOzC,GACZ8B,KAAK,OAAQ,QACbA,KAAK,YAAa,IAClBA,KAAK,cAAe,cACpBA,KAAK,cAAe5B,IAAW,EAAQ,QAAUA,IAAW,EAAO,MAAQ,UAEhFiB,EACKuB,MAAK,WAAanT,KAAK0Q,OAASgB,KAuCvC,OApCAN,EAAKf,MAAQ,SAAS+C,GACpB,OAAO/Q,UAAUC,QAAU+N,EAAQ+C,EAAGhC,GAAQf,GAGhDe,EAAKtC,MAAQ,WACX,OAAO8B,EAAgB,EAAM1R,KAAKmD,WAAY+O,GAGhDA,EAAKR,cAAgB,SAASwC,GAC5B,OAAO/Q,UAAUC,QAAUsO,EAAqB,MAALwC,EAAY,GAAK,EAAMlU,KAAKkU,GAAIhC,GAAQR,EAAczC,SAGnGiD,EAAKP,WAAa,SAASuC,GACzB,OAAO/Q,UAAUC,QAAUuO,EAAkB,MAALuC,EAAY,KAAO,EAAMlU,KAAKkU,GAAIhC,GAAQP,GAAcA,EAAW1C,SAG7GiD,EAAKN,WAAa,SAASsC,GACzB,OAAO/Q,UAAUC,QAAUwO,EAAasC,EAAGhC,GAAQN,GAGrDM,EAAKiC,SAAW,SAASD,GACvB,OAAO/Q,UAAUC,QAAUyO,EAAgBC,GAAiBoC,EAAGhC,GAAQL,GAGzEK,EAAKL,cAAgB,SAASqC,GAC5B,OAAO/Q,UAAUC,QAAUyO,GAAiBqC,EAAGhC,GAAQL,GAGzDK,EAAKJ,cAAgB,SAASoC,GAC5B,OAAO/Q,UAAUC,QAAU0O,GAAiBoC,EAAGhC,GAAQJ,GAGzDI,EAAKH,YAAc,SAASmC,GAC1B,OAAO/Q,UAAUC,QAAU2O,GAAemC,EAAGhC,GAAQH,GAGhDG,EAWF,SAASkC,EAAWjD,GACzB,OAAO,EAAK,EAAQA,GAGf,SAASkD,EAASlD,GACvB,OAAO,EAAK,EAAMA,GC5KpB,IAAImD,EAAO,CAACrV,MAAO,cAEnB,SAASsV,IACP,IAAK,IAAyCC,EAArCpF,EAAI,EAAGD,EAAIhM,UAAUC,OAAQ8Q,EAAI,GAAO9E,EAAID,IAAKC,EAAG,CAC3D,KAAMoF,EAAIrR,UAAUiM,GAAK,KAAQoF,KAAKN,EAAI,MAAM,IAAIO,MAAM,iBAAmBD,GAC7EN,EAAEM,GAAK,GAET,OAAO,IAAIE,EAASR,GAGtB,SAASQ,EAASR,GAChBpT,KAAKoT,EAAIA,EAGX,SAASS,EAAeC,EAAWC,GACjC,OAAOD,EAAU/P,OAAOmJ,MAAM,SAASnL,KAAI,SAAS2R,GAClD,IAAIhK,EAAO,GAAI4E,EAAIoF,EAAEM,QAAQ,KAE7B,GADI1F,GAAK,IAAG5E,EAAOgK,EAAEvF,MAAMG,EAAI,GAAIoF,EAAIA,EAAEvF,MAAM,EAAGG,IAC9CoF,IAAMK,EAAME,eAAeP,GAAI,MAAM,IAAIC,MAAM,iBAAmBD,GACtE,MAAO,CAACnS,KAAMmS,EAAGhK,KAAMA,MA6C3B,SAAS9I,EAAIW,EAAMmI,GACjB,IAAK,IAA4BwK,EAAxB5F,EAAI,EAAGD,EAAI9M,EAAKe,OAAWgM,EAAID,IAAKC,EAC3C,IAAK4F,EAAI3S,EAAK+M,IAAI5E,OAASA,EACzB,OAAOwK,EAAE/V,MAKf,SAASwC,EAAIY,EAAMmI,EAAMyK,GACvB,IAAK,IAAI7F,EAAI,EAAGD,EAAI9M,EAAKe,OAAQgM,EAAID,IAAKC,EACxC,GAAI/M,EAAK+M,GAAG5E,OAASA,EAAM,CACzBnI,EAAK+M,GAAKkF,EAAMjS,EAAOA,EAAK4M,MAAM,EAAGG,GAAG5Q,OAAO6D,EAAK4M,MAAMG,EAAI,IAC9D,MAIJ,OADgB,MAAZ6F,GAAkB5S,EAAK6S,KAAK,CAAC1K,KAAMA,EAAMvL,MAAOgW,IAC7C5S,EAzDTqS,EAAS3V,UAAYwV,EAASxV,UAAY,CACxCoW,YAAaT,EACbU,GAAI,SAASC,EAAUJ,GACrB,IAEIT,EAFAN,EAAIpT,KAAKoT,EACToB,EAAIX,EAAeU,EAAW,GAAInB,GAElC9E,GAAK,EACLD,EAAImG,EAAElS,OAGV,KAAID,UAAUC,OAAS,GAAvB,CAOA,GAAgB,MAAZ6R,GAAwC,oBAAbA,EAAyB,MAAM,IAAIR,MAAM,qBAAuBQ,GAC/F,QAAS7F,EAAID,EACX,GAAIqF,GAAKa,EAAWC,EAAElG,IAAI/M,KAAM6R,EAAEM,GAAK/S,EAAIyS,EAAEM,GAAIa,EAAS7K,KAAMyK,QAC3D,GAAgB,MAAZA,EAAkB,IAAKT,KAAKN,EAAGA,EAAEM,GAAK/S,EAAIyS,EAAEM,GAAIa,EAAS7K,KAAM,MAG1E,OAAO1J,KAZL,QAASsO,EAAID,EAAG,IAAKqF,GAAKa,EAAWC,EAAElG,IAAI/M,QAAUmS,EAAI9S,EAAIwS,EAAEM,GAAIa,EAAS7K,OAAQ,OAAOgK,GAc/F/B,KAAM,WACJ,IAAIA,EAAO,GAAIyB,EAAIpT,KAAKoT,EACxB,IAAK,IAAIM,KAAKN,EAAGzB,EAAK+B,GAAKN,EAAEM,GAAGvF,QAChC,OAAO,IAAIyF,EAASjC,IAEtBzS,KAAM,SAASqC,EAAMkL,GACnB,IAAK4B,EAAIhM,UAAUC,OAAS,GAAK,EAAG,IAAK,IAAgC+L,EAAGqF,EAA/Be,EAAO,IAAI1L,MAAMsF,GAAIC,EAAI,EAASA,EAAID,IAAKC,EAAGmG,EAAKnG,GAAKjM,UAAUiM,EAAI,GACnH,IAAKtO,KAAKoT,EAAEa,eAAe1S,GAAO,MAAM,IAAIoS,MAAM,iBAAmBpS,GACrE,IAAKmS,EAAI1T,KAAKoT,EAAE7R,GAAO+M,EAAI,EAAGD,EAAIqF,EAAEpR,OAAQgM,EAAID,IAAKC,EAAGoF,EAAEpF,GAAGnQ,MAAMkT,MAAM5E,EAAMgI,IAEjFpD,MAAO,SAAS9P,EAAMkL,EAAMgI,GAC1B,IAAKzU,KAAKoT,EAAEa,eAAe1S,GAAO,MAAM,IAAIoS,MAAM,iBAAmBpS,GACrE,IAAK,IAAImS,EAAI1T,KAAKoT,EAAE7R,GAAO+M,EAAI,EAAGD,EAAIqF,EAAEpR,OAAQgM,EAAID,IAAKC,EAAGoF,EAAEpF,GAAGnQ,MAAMkT,MAAM5E,EAAMgI,KAuBxE,QCnFJC,EAAQ,+BAEJ,GACbC,IAAK,6BACLD,MAAOA,EACPE,MAAO,+BACPC,IAAK,uCACLC,MAAO,iCCLM,cACb,IAAIC,EAASrL,GAAQ,GAAI4E,EAAIyG,EAAOf,QAAQ,KAE5C,OADI1F,GAAK,GAAqC,WAA/ByG,EAASrL,EAAKyE,MAAM,EAAGG,MAAiB5E,EAAOA,EAAKyE,MAAMG,EAAI,IACtE0G,EAAWf,eAAec,GAAU,CAACE,MAAOD,EAAWD,GAASG,MAAOxL,GAAQA,GCFxF,SAASyL,EAAezL,GACtB,OAAO,WACL,IAAItB,EAAWpI,KAAKoV,cAChBC,EAAMrV,KAAKsV,aACf,OAAOD,IAAQX,GAAStM,EAASmN,gBAAgBD,eAAiBZ,EAC5DtM,EAASoN,cAAc9L,GACvBtB,EAASqN,gBAAgBJ,EAAK3L,IAIxC,SAASgM,EAAaC,GACpB,OAAO,WACL,OAAO3V,KAAKoV,cAAcK,gBAAgBE,EAASV,MAAOU,EAAST,QAIxD,kBACb,IAAIS,EAAWC,EAAUlM,GACzB,OAAQiM,EAAST,MACXQ,EACAP,GAAgBQ,ICvBxB,SAASE,KAEM,kBACb,OAAmB,MAAZC,EAAmBD,EAAO,WAC/B,OAAO7V,KAAK+V,cAAcD,KCDf,cACS,oBAAXrD,IAAuBA,EAAS,EAASA,IAEpD,IAAK,IAAIuD,EAAShW,KAAKiW,QAASrG,EAAIoG,EAAO1T,OAAQ4T,EAAY,IAAInN,MAAM6G,GAAII,EAAI,EAAGA,EAAIJ,IAAKI,EAC3F,IAAK,IAAiFmG,EAAMC,EAAnFC,EAAQL,EAAOhG,GAAI3B,EAAIgI,EAAM/T,OAAQgU,EAAWJ,EAAUlG,GAAK,IAAIjH,MAAMsF,GAAmBC,EAAI,EAAGA,EAAID,IAAKC,GAC9G6H,EAAOE,EAAM/H,MAAQ8H,EAAU3D,EAAOvT,KAAKiX,EAAMA,EAAKI,SAAUjI,EAAG+H,MAClE,aAAcF,IAAMC,EAAQG,SAAWJ,EAAKI,UAChDD,EAAShI,GAAK8H,GAKpB,OAAO,IAAII,GAAUN,EAAWlW,KAAKyW,WCfvC,SAAS,IACP,MAAO,GAGM,kBACb,OAAmB,MAAZX,EAAmB,EAAQ,WAChC,OAAO9V,KAAK0W,iBAAiBZ,KCHlB,cACS,oBAAXrD,IAAuBA,EAASkE,EAAYlE,IAEvD,IAAK,IAAIuD,EAAShW,KAAKiW,QAASrG,EAAIoG,EAAO1T,OAAQ4T,EAAY,GAAIU,EAAU,GAAI5G,EAAI,EAAGA,EAAIJ,IAAKI,EAC/F,IAAK,IAAyCmG,EAArCE,EAAQL,EAAOhG,GAAI3B,EAAIgI,EAAM/T,OAAcgM,EAAI,EAAGA,EAAID,IAAKC,GAC9D6H,EAAOE,EAAM/H,MACf4H,EAAU9B,KAAK3B,EAAOvT,KAAKiX,EAAMA,EAAKI,SAAUjI,EAAG+H,IACnDO,EAAQxC,KAAK+B,IAKnB,OAAO,IAAIK,GAAUN,EAAWU,ICfnB,cACb,OAAO,WACL,OAAO5W,KAAK6W,QAAQf,KCCT,eACQ,oBAAVgB,IAAsBA,EAAQC,EAAQD,IAEjD,IAAK,IAAId,EAAShW,KAAKiW,QAASrG,EAAIoG,EAAO1T,OAAQ4T,EAAY,IAAInN,MAAM6G,GAAII,EAAI,EAAGA,EAAIJ,IAAKI,EAC3F,IAAK,IAAuEmG,EAAnEE,EAAQL,EAAOhG,GAAI3B,EAAIgI,EAAM/T,OAAQgU,EAAWJ,EAAUlG,GAAK,GAAU1B,EAAI,EAAGA,EAAID,IAAKC,GAC3F6H,EAAOE,EAAM/H,KAAOwI,EAAM5X,KAAKiX,EAAMA,EAAKI,SAAUjI,EAAG+H,IAC1DC,EAASlC,KAAK+B,GAKpB,OAAO,IAAIK,GAAUN,EAAWlW,KAAKyW,WCdxB,eACb,OAAO,IAAI1N,MAAMiO,EAAO1U,SCEX,cACb,OAAO,IAAIkU,GAAUxW,KAAKiX,QAAUjX,KAAKiW,QAAQlU,IAAImV,IAASlX,KAAKyW,WAG9D,SAASU,GAAUnM,EAAQoM,GAChCpX,KAAKoV,cAAgBpK,EAAOoK,cAC5BpV,KAAKsV,aAAetK,EAAOsK,aAC3BtV,KAAKqX,MAAQ,KACbrX,KAAKsX,QAAUtM,EACfhL,KAAKuW,SAAWa,EAGlBD,GAAUlZ,UAAY,CACpBoW,YAAa8C,GACbjP,YAAa,SAASqP,GAAS,OAAOvX,KAAKsX,QAAQE,aAAaD,EAAOvX,KAAKqX,QAC5EG,aAAc,SAASD,EAAOvR,GAAQ,OAAOhG,KAAKsX,QAAQE,aAAaD,EAAOvR,IAC9E+P,cAAe,SAASD,GAAY,OAAO9V,KAAKsX,QAAQvB,cAAcD,IACtEY,iBAAkB,SAASZ,GAAY,OAAO9V,KAAKsX,QAAQZ,iBAAiBZ,KCpB/D,mBACb,OAAO,WACL,OAAOtQ,ICEPiS,GAAY,IAEhB,SAASC,GAAU1M,EAAQqL,EAAOhE,EAAO2E,EAAQ7E,EAAMJ,GASrD,IARA,IACIoE,EADA7H,EAAI,EAEJqJ,EAActB,EAAM/T,OACpBsV,EAAa7F,EAAKzP,OAKfgM,EAAIsJ,IAActJ,GACnB6H,EAAOE,EAAM/H,KACf6H,EAAKI,SAAWxE,EAAKzD,GACrB0I,EAAO1I,GAAK6H,GAEZ9D,EAAM/D,GAAK,IAAI6I,GAAUnM,EAAQ+G,EAAKzD,IAK1C,KAAOA,EAAIqJ,IAAerJ,GACpB6H,EAAOE,EAAM/H,MACf6D,EAAK7D,GAAK6H,GAKhB,SAAS0B,GAAQ7M,EAAQqL,EAAOhE,EAAO2E,EAAQ7E,EAAMJ,EAAMrR,GACzD,IAAI4N,EACA6H,EAKA2B,EAJAC,EAAiB,GACjBJ,EAActB,EAAM/T,OACpBsV,EAAa7F,EAAKzP,OAClB0V,EAAY,IAAIjP,MAAM4O,GAK1B,IAAKrJ,EAAI,EAAGA,EAAIqJ,IAAerJ,GACzB6H,EAAOE,EAAM/H,MACf0J,EAAU1J,GAAKwJ,EAAWL,GAAY/W,EAAIxB,KAAKiX,EAAMA,EAAKI,SAAUjI,EAAG+H,GACnEyB,KAAYC,EACd5F,EAAK7D,GAAK6H,EAEV4B,EAAeD,GAAY3B,GAQjC,IAAK7H,EAAI,EAAGA,EAAIsJ,IAActJ,EAC5BwJ,EAAWL,GAAY/W,EAAIxB,KAAK8L,EAAQ+G,EAAKzD,GAAIA,EAAGyD,IAChDoE,EAAO4B,EAAeD,KACxBd,EAAO1I,GAAK6H,EACZA,EAAKI,SAAWxE,EAAKzD,GACrByJ,EAAeD,GAAY,MAE3BzF,EAAM/D,GAAK,IAAI6I,GAAUnM,EAAQ+G,EAAKzD,IAK1C,IAAKA,EAAI,EAAGA,EAAIqJ,IAAerJ,GACxB6H,EAAOE,EAAM/H,KAAQyJ,EAAeC,EAAU1J,MAAQ6H,IACzDhE,EAAK7D,GAAK6H,GAKD,qBACb,IAAKhY,EAGH,OAFA4T,EAAO,IAAIhJ,MAAM/I,KAAKiY,QAASjI,GAAK,EACpChQ,KAAKmT,MAAK,SAAStF,GAAKkE,IAAO/B,GAAKnC,KAC7BkE,EAGT,IAAI9F,EAAOvL,EAAMmX,GAAUH,GACvBd,EAAU5W,KAAKyW,SACfT,EAAShW,KAAKiW,QAEG,oBAAV9X,IAAsBA,EAAQ,GAASA,IAElD,IAAK,IAAIyR,EAAIoG,EAAO1T,OAAQ0U,EAAS,IAAIjO,MAAM6G,GAAIyC,EAAQ,IAAItJ,MAAM6G,GAAIuC,EAAO,IAAIpJ,MAAM6G,GAAII,EAAI,EAAGA,EAAIJ,IAAKI,EAAG,CAC/G,IAAIhF,EAAS4L,EAAQ5G,GACjBqG,EAAQL,EAAOhG,GACf2H,EAActB,EAAM/T,OACpByP,EAAO5T,EAAMe,KAAK8L,EAAQA,GAAUA,EAAOuL,SAAUvG,EAAG4G,GACxDgB,EAAa7F,EAAKzP,OAClB4V,EAAa7F,EAAMrC,GAAK,IAAIjH,MAAM6O,GAClCO,EAAcnB,EAAOhH,GAAK,IAAIjH,MAAM6O,GACpCQ,EAAYjG,EAAKnC,GAAK,IAAIjH,MAAM4O,GAEpC1L,EAAKjB,EAAQqL,EAAO6B,EAAYC,EAAaC,EAAWrG,EAAMrR,GAK9D,IAAK,IAAoB2X,EAAUrS,EAA1BsS,EAAK,EAAGC,EAAK,EAAmBD,EAAKV,IAAcU,EAC1D,GAAID,EAAWH,EAAWI,GAAK,CACzBA,GAAMC,IAAIA,EAAKD,EAAK,GACxB,QAAStS,EAAOmS,EAAYI,OAAUA,EAAKX,GAC3CS,EAAShB,MAAQrR,GAAQ,MAQ/B,OAHAgR,EAAS,IAAIR,GAAUQ,EAAQJ,GAC/BI,EAAOC,OAAS5E,EAChB2E,EAAOwB,MAAQrG,EACR6E,GCjHM,cACb,OAAO,IAAIR,GAAUxW,KAAKwY,OAASxY,KAAKiW,QAAQlU,IAAImV,IAASlX,KAAKyW,WCJrD,mBACb,IAAIpE,EAAQrS,KAAKqS,QAAS2E,EAAShX,KAAMmS,EAAOnS,KAAKmS,OAIrD,OAHAE,EAA2B,oBAAZoG,EAAyBA,EAAQpG,GAASA,EAAMC,OAAOmG,EAAU,IAChE,MAAZC,IAAkB1B,EAAS0B,EAAS1B,IAC1B,MAAV2B,EAAgBxG,EAAKc,SAAe0F,EAAOxG,GACxCE,GAAS2E,EAAS3E,EAAMM,MAAMqE,GAAQ/E,QAAU+E,GCH1C,eAEb,IAAK,IAAI4B,EAAU5Y,KAAKiW,QAAS4C,EAAUjH,EAAUqE,QAAS6C,EAAKF,EAAQtW,OAAQyW,EAAKF,EAAQvW,OAAQsN,EAAIjT,KAAKD,IAAIoc,EAAIC,GAAKC,EAAS,IAAIjQ,MAAM+P,GAAK9I,EAAI,EAAGA,EAAIJ,IAAKI,EACpK,IAAK,IAAmGmG,EAA/F8C,EAASL,EAAQ5I,GAAIkJ,EAASL,EAAQ7I,GAAI3B,EAAI4K,EAAO3W,OAAQqQ,EAAQqG,EAAOhJ,GAAK,IAAIjH,MAAMsF,GAAUC,EAAI,EAAGA,EAAID,IAAKC,GACxH6H,EAAO8C,EAAO3K,IAAM4K,EAAO5K,MAC7BqE,EAAMrE,GAAK6H,GAKjB,KAAOnG,EAAI8I,IAAM9I,EACfgJ,EAAOhJ,GAAK4I,EAAQ5I,GAGtB,OAAO,IAAIwG,GAAUwC,EAAQhZ,KAAKyW,WChBrB,cAEb,IAAK,IAAIT,EAAShW,KAAKiW,QAASjG,GAAK,EAAGJ,EAAIoG,EAAO1T,SAAU0N,EAAIJ,GAC/D,IAAK,IAA8DuG,EAA1DE,EAAQL,EAAOhG,GAAI1B,EAAI+H,EAAM/T,OAAS,EAAG0D,EAAOqQ,EAAM/H,KAAYA,GAAK,IAC1E6H,EAAOE,EAAM/H,MACXtI,GAA6C,EAArCmQ,EAAKgD,wBAAwBnT,IAAWA,EAAKgN,WAAWwE,aAAarB,EAAMnQ,GACvFA,EAAOmQ,GAKb,OAAOnW,MCTM,eAGb,SAASoZ,EAAY3U,EAAGC,GACtB,OAAOD,GAAKC,EAAI4I,EAAQ7I,EAAE8R,SAAU7R,EAAE6R,WAAa9R,GAAKC,EAHrD4I,IAASA,EAAU,IAMxB,IAAK,IAAI0I,EAAShW,KAAKiW,QAASrG,EAAIoG,EAAO1T,OAAQ+W,EAAa,IAAItQ,MAAM6G,GAAII,EAAI,EAAGA,EAAIJ,IAAKI,EAAG,CAC/F,IAAK,IAAmFmG,EAA/EE,EAAQL,EAAOhG,GAAI3B,EAAIgI,EAAM/T,OAAQgX,EAAYD,EAAWrJ,GAAK,IAAIjH,MAAMsF,GAAUC,EAAI,EAAGA,EAAID,IAAKC,GACxG6H,EAAOE,EAAM/H,MACfgL,EAAUhL,GAAK6H,GAGnBmD,EAAUlT,KAAKgT,GAGjB,OAAO,IAAI5C,GAAU6C,EAAYrZ,KAAKyW,UAAUxE,SAGlD,SAAS,GAAUxN,EAAGC,GACpB,OAAOD,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAID,GAAKC,EAAI,EAAI2I,ICtBhC,kBACb,IAAI8G,EAAW9R,UAAU,GAGzB,OAFAA,UAAU,GAAKrC,KACfmU,EAAS9C,MAAM,KAAMhP,WACdrC,MCJM,cACb,IAAIuZ,EAAQ,IAAIxQ,MAAM/I,KAAKiY,QAAS3J,GAAK,EAEzC,OADAtO,KAAKmT,MAAK,WAAaoG,IAAQjL,GAAKtO,QAC7BuZ,GCHM,cAEb,IAAK,IAAIvD,EAAShW,KAAKiW,QAASjG,EAAI,EAAGJ,EAAIoG,EAAO1T,OAAQ0N,EAAIJ,IAAKI,EACjE,IAAK,IAAIqG,EAAQL,EAAOhG,GAAI1B,EAAI,EAAGD,EAAIgI,EAAM/T,OAAQgM,EAAID,IAAKC,EAAG,CAC/D,IAAI6H,EAAOE,EAAM/H,GACjB,GAAI6H,EAAM,OAAOA,EAIrB,OAAO,MCTM,cACb,IAAI8B,EAAO,EAEX,OADAjY,KAAKmT,MAAK,aAAe8E,KAClBA,GCHM,cACb,OAAQjY,KAAKmW,QCDA,eAEb,IAAK,IAAIH,EAAShW,KAAKiW,QAASjG,EAAI,EAAGJ,EAAIoG,EAAO1T,OAAQ0N,EAAIJ,IAAKI,EACjE,IAAK,IAAgDmG,EAA5CE,EAAQL,EAAOhG,GAAI1B,EAAI,EAAGD,EAAIgI,EAAM/T,OAAcgM,EAAID,IAAKC,GAC9D6H,EAAOE,EAAM/H,KAAI6F,EAASjV,KAAKiX,EAAMA,EAAKI,SAAUjI,EAAG+H,GAI/D,OAAOrW,MCNT,SAASwZ,GAAW9P,GAClB,OAAO,WACL1J,KAAKyZ,gBAAgB/P,IAIzB,SAASgQ,GAAa/D,GACpB,OAAO,WACL3V,KAAK2Z,kBAAkBhE,EAASV,MAAOU,EAAST,QAIpD,SAAS0E,GAAalQ,EAAMvL,GAC1B,OAAO,WACL6B,KAAK6Z,aAAanQ,EAAMvL,IAI5B,SAAS2b,GAAenE,EAAUxX,GAChC,OAAO,WACL6B,KAAK+Z,eAAepE,EAASV,MAAOU,EAAST,MAAO/W,IAIxD,SAAS6b,GAAatQ,EAAMvL,GAC1B,OAAO,WACL,IAAI8b,EAAI9b,EAAMkT,MAAMrR,KAAMqC,WACjB,MAAL4X,EAAWja,KAAKyZ,gBAAgB/P,GAC/B1J,KAAK6Z,aAAanQ,EAAMuQ,IAIjC,SAASC,GAAevE,EAAUxX,GAChC,OAAO,WACL,IAAI8b,EAAI9b,EAAMkT,MAAMrR,KAAMqC,WACjB,MAAL4X,EAAWja,KAAK2Z,kBAAkBhE,EAASV,MAAOU,EAAST,OAC1DlV,KAAK+Z,eAAepE,EAASV,MAAOU,EAAST,MAAO+E,IAI9C,qBACb,IAAItE,EAAWC,EAAUlM,GAEzB,GAAIrH,UAAUC,OAAS,EAAG,CACxB,IAAI6T,EAAOnW,KAAKmW,OAChB,OAAOR,EAAST,MACViB,EAAKgE,eAAexE,EAASV,MAAOU,EAAST,OAC7CiB,EAAKrD,aAAa6C,GAG1B,OAAO3V,KAAKmT,MAAe,MAAThV,EACXwX,EAAST,MAAQwE,GAAeF,GAAgC,oBAAVrb,EACtDwX,EAAST,MAAQgF,GAAiBF,GAClCrE,EAAST,MAAQ4E,GAAiBF,IAAgBjE,EAAUxX,KCvDtD,eACb,OAAQgY,EAAKf,eAAiBe,EAAKf,cAAcgF,aACzCjE,EAAK/N,UAAY+N,GAClBA,EAAKiE,aCDd,SAASC,GAAY3Q,GACnB,OAAO,WACL1J,KAAKgI,MAAMsS,eAAe5Q,IAI9B,SAAS6Q,GAAc7Q,EAAMvL,EAAOqc,GAClC,OAAO,WACLxa,KAAKgI,MAAMyS,YAAY/Q,EAAMvL,EAAOqc,IAIxC,SAASE,GAAchR,EAAMvL,EAAOqc,GAClC,OAAO,WACL,IAAIP,EAAI9b,EAAMkT,MAAMrR,KAAMqC,WACjB,MAAL4X,EAAWja,KAAKgI,MAAMsS,eAAe5Q,GACpC1J,KAAKgI,MAAMyS,YAAY/Q,EAAMuQ,EAAGO,IAI1B,uBACb,OAAOnY,UAAUC,OAAS,EACpBtC,KAAKmT,MAAe,MAAThV,EACLkc,GAA+B,oBAAVlc,EACrBuc,GACAH,IAAe7Q,EAAMvL,EAAmB,MAAZqc,EAAmB,GAAKA,IAC1DG,GAAW3a,KAAKmW,OAAQzM,IAGzB,SAASiR,GAAWxE,EAAMzM,GAC/B,OAAOyM,EAAKnO,MAAM4S,iBAAiBlR,IAC5B,GAAYyM,GAAM0E,iBAAiB1E,EAAM,MAAMyE,iBAAiBlR,GCjCzE,SAASoR,GAAepR,GACtB,OAAO,kBACE1J,KAAK0J,IAIhB,SAASqR,GAAiBrR,EAAMvL,GAC9B,OAAO,WACL6B,KAAK0J,GAAQvL,GAIjB,SAAS6c,GAAiBtR,EAAMvL,GAC9B,OAAO,WACL,IAAI8b,EAAI9b,EAAMkT,MAAMrR,KAAMqC,WACjB,MAAL4X,SAAkBja,KAAK0J,GACtB1J,KAAK0J,GAAQuQ,GAIP,qBACb,OAAO5X,UAAUC,OAAS,EACpBtC,KAAKmT,MAAe,MAAThV,EACP2c,GAAkC,oBAAV3c,EACxB6c,GACAD,IAAkBrR,EAAMvL,IAC5B6B,KAAKmW,OAAOzM,IC1BpB,SAASuR,GAAW5W,GAClB,OAAOA,EAAON,OAAOmJ,MAAM,SAG7B,SAASgO,GAAU/E,GACjB,OAAOA,EAAK+E,WAAa,IAAIC,GAAUhF,GAGzC,SAASgF,GAAUhF,GACjBnW,KAAKob,MAAQjF,EACbnW,KAAKqb,OAASJ,GAAW9E,EAAKrD,aAAa,UAAY,IAuBzD,SAASwI,GAAWnF,EAAMoF,GACxB,IAAIC,EAAON,GAAU/E,GAAO7H,GAAK,EAAGD,EAAIkN,EAAMjZ,OAC9C,QAASgM,EAAID,EAAGmN,EAAKrQ,IAAIoQ,EAAMjN,IAGjC,SAASmN,GAActF,EAAMoF,GAC3B,IAAIC,EAAON,GAAU/E,GAAO7H,GAAK,EAAGD,EAAIkN,EAAMjZ,OAC9C,QAASgM,EAAID,EAAGmN,EAAKvI,OAAOsI,EAAMjN,IAGpC,SAASoN,GAAYH,GACnB,OAAO,WACLD,GAAWtb,KAAMub,IAIrB,SAASI,GAAaJ,GACpB,OAAO,WACLE,GAAczb,KAAMub,IAIxB,SAASK,GAAgBL,EAAOpd,GAC9B,OAAO,YACJA,EAAMkT,MAAMrR,KAAMqC,WAAaiZ,GAAaG,IAAezb,KAAMub,IA5CtEJ,GAAUld,UAAY,CACpBkN,IAAK,SAASzB,GACZ,IAAI4E,EAAItO,KAAKqb,OAAOrH,QAAQtK,GACxB4E,EAAI,IACNtO,KAAKqb,OAAOjH,KAAK1K,GACjB1J,KAAKob,MAAMvB,aAAa,QAAS7Z,KAAKqb,OAAO7b,KAAK,QAGtDyT,OAAQ,SAASvJ,GACf,IAAI4E,EAAItO,KAAKqb,OAAOrH,QAAQtK,GACxB4E,GAAK,IACPtO,KAAKqb,OAAOQ,OAAOvN,EAAG,GACtBtO,KAAKob,MAAMvB,aAAa,QAAS7Z,KAAKqb,OAAO7b,KAAK,QAGtDsc,SAAU,SAASpS,GACjB,OAAO1J,KAAKqb,OAAOrH,QAAQtK,IAAS,IAgCzB,qBACb,IAAI6R,EAAQN,GAAWvR,EAAO,IAE9B,GAAIrH,UAAUC,OAAS,EAAG,CACxB,IAAIkZ,EAAON,GAAUlb,KAAKmW,QAAS7H,GAAK,EAAGD,EAAIkN,EAAMjZ,OACrD,QAASgM,EAAID,EAAG,IAAKmN,EAAKM,SAASP,EAAMjN,IAAK,OAAO,EACrD,OAAO,EAGT,OAAOtO,KAAKmT,MAAuB,oBAAVhV,EACnByd,GAAkBzd,EAClBud,GACAC,IAAcJ,EAAOpd,KCzE7B,SAAS4d,KACP/b,KAAKgc,YAAc,GAGrB,SAASC,GAAa9d,GACpB,OAAO,WACL6B,KAAKgc,YAAc7d,GAIvB,SAAS+d,GAAa/d,GACpB,OAAO,WACL,IAAI8b,EAAI9b,EAAMkT,MAAMrR,KAAMqC,WAC1BrC,KAAKgc,YAAmB,MAAL/B,EAAY,GAAKA,GAIzB,mBACb,OAAO5X,UAAUC,OACXtC,KAAKmT,KAAc,MAAThV,EACN4d,IAA+B,oBAAV5d,EACrB+d,GACAD,IAAc9d,IAClB6B,KAAKmW,OAAO6F,aCvBpB,SAASG,KACPnc,KAAKoc,UAAY,GAGnB,SAASC,GAAale,GACpB,OAAO,WACL6B,KAAKoc,UAAYje,GAIrB,SAASme,GAAane,GACpB,OAAO,WACL,IAAI8b,EAAI9b,EAAMkT,MAAMrR,KAAMqC,WAC1BrC,KAAKoc,UAAiB,MAALnC,EAAY,GAAKA,GAIvB,mBACb,OAAO5X,UAAUC,OACXtC,KAAKmT,KAAc,MAAThV,EACNge,IAA+B,oBAAVhe,EACrBme,GACAD,IAAcle,IAClB6B,KAAKmW,OAAOiG,WCvBpB,SAASG,KACHvc,KAAKwc,aAAaxc,KAAKgT,WAAW9K,YAAYlI,MAGrC,kBACb,OAAOA,KAAKmT,KAAKoJ,KCLnB,SAASE,KACHzc,KAAK0c,iBAAiB1c,KAAKgT,WAAWwE,aAAaxX,KAAMA,KAAKgT,WAAW2J,YAGhE,kBACb,OAAO3c,KAAKmT,KAAKsJ,KCHJ,eACb,IAAI/W,EAAyB,oBAATgE,EAAsBA,EAAOkT,EAAQlT,GACzD,OAAO1J,KAAKyS,QAAO,WACjB,OAAOzS,KAAKkI,YAAYxC,EAAO2L,MAAMrR,KAAMqC,gBCF/C,SAASwa,KACP,OAAO,KAGM,qBACb,IAAInX,EAAyB,oBAATgE,EAAsBA,EAAOkT,EAAQlT,GACrD+I,EAAmB,MAAVqK,EAAiBD,GAAiC,oBAAXC,EAAwBA,EAAS,EAASA,GAC9F,OAAO9c,KAAKyS,QAAO,WACjB,OAAOzS,KAAKwX,aAAa9R,EAAO2L,MAAMrR,KAAMqC,WAAYoQ,EAAOpB,MAAMrR,KAAMqC,YAAc,UCX7F,SAAS,KACP,IAAI2I,EAAShL,KAAKgT,WACdhI,GAAQA,EAAO+R,YAAY/c,MAGlB,kBACb,OAAOA,KAAKmT,KAAK,KCNnB,SAAS6J,KACP,OAAOhd,KAAKgT,WAAWwE,aAAaxX,KAAKid,WAAU,GAAQjd,KAAKwc,aAGlE,SAASU,KACP,OAAOld,KAAKgT,WAAWwE,aAAaxX,KAAKid,WAAU,GAAOjd,KAAKwc,aAGlD,mBACb,OAAOxc,KAAKyS,OAAO0K,EAAOD,GAAsBF,KCTnC,eACb,OAAO3a,UAAUC,OACXtC,KAAKod,SAAS,WAAYjf,GAC1B6B,KAAKmW,OAAOI,UCHhB8G,GAAe,GAER,GAAQ,KAEnB,GAAwB,qBAAbjV,SAA0B,CACnC,IAAI,GAAUA,SAASmN,gBACjB,iBAAkB,KACtB8H,GAAe,CAACC,WAAY,YAAaC,WAAY,aAIzD,SAASC,GAAsBC,EAAU5a,EAAOwT,GAE9C,OADAoH,EAAWC,GAAgBD,EAAU5a,EAAOwT,GACrC,SAASsH,GACd,IAAIC,EAAUD,EAAME,cACfD,IAAYA,IAAY5d,MAAkD,EAAxC4d,EAAQzE,wBAAwBnZ,QACrEyd,EAASve,KAAKc,KAAM2d,IAK1B,SAASD,GAAgBD,EAAU5a,EAAOwT,GACxC,OAAO,SAASyH,GACd,IAAIC,EAAS,GACb,GAAQD,EACR,IACEL,EAASve,KAAKc,KAAMA,KAAKuW,SAAU1T,EAAOwT,GAC1C,QACA,GAAQ0H,IAKd,SAAS,GAAejK,GACtB,OAAOA,EAAU/P,OAAOmJ,MAAM,SAASnL,KAAI,SAAS2R,GAClD,IAAIhK,EAAO,GAAI4E,EAAIoF,EAAEM,QAAQ,KAE7B,OADI1F,GAAK,IAAG5E,EAAOgK,EAAEvF,MAAMG,EAAI,GAAIoF,EAAIA,EAAEvF,MAAM,EAAGG,IAC3C,CAAC/M,KAAMmS,EAAGhK,KAAMA,MAI3B,SAASsU,GAASzJ,GAChB,OAAO,WACL,IAAID,EAAKtU,KAAKie,KACd,GAAK3J,EAAL,CACA,IAAK,IAAkC4J,EAA9BlO,EAAI,EAAG1B,GAAK,EAAGsB,EAAI0E,EAAGhS,OAAW0N,EAAIJ,IAAKI,EAC7CkO,EAAI5J,EAAGtE,GAAMuE,EAAShT,MAAQ2c,EAAE3c,OAASgT,EAAShT,MAAS2c,EAAExU,OAAS6K,EAAS7K,KAGjF4K,IAAKhG,GAAK4P,EAFVle,KAAKme,oBAAoBD,EAAE3c,KAAM2c,EAAET,SAAUS,EAAEE,WAK7C9P,EAAGgG,EAAGhS,OAASgM,SACTtO,KAAKie,OAIrB,SAASI,GAAM9J,EAAUpW,EAAOigB,GAC9B,IAAIE,EAAOjB,GAAapJ,eAAeM,EAAShT,MAAQic,GAAwBE,GAChF,OAAO,SAAS7P,EAAGS,EAAG+H,GACpB,IAAoB6H,EAAhB5J,EAAKtU,KAAKie,KAASR,EAAWa,EAAKngB,EAAOmQ,EAAG+H,GACjD,GAAI/B,EAAI,IAAK,IAAItE,EAAI,EAAGJ,EAAI0E,EAAGhS,OAAQ0N,EAAIJ,IAAKI,EAC9C,IAAKkO,EAAI5J,EAAGtE,IAAIzO,OAASgT,EAAShT,MAAQ2c,EAAExU,OAAS6K,EAAS7K,KAI5D,OAHA1J,KAAKme,oBAAoBD,EAAE3c,KAAM2c,EAAET,SAAUS,EAAEE,SAC/Cpe,KAAKue,iBAAiBL,EAAE3c,KAAM2c,EAAET,SAAWA,EAAUS,EAAEE,QAAUA,QACjEF,EAAE/f,MAAQA,GAId6B,KAAKue,iBAAiBhK,EAAShT,KAAMkc,EAAUW,GAC/CF,EAAI,CAAC3c,KAAMgT,EAAShT,KAAMmI,KAAM6K,EAAS7K,KAAMvL,MAAOA,EAAOsf,SAAUA,EAAUW,QAASA,GACrF9J,EACAA,EAAGF,KAAK8J,GADJle,KAAKie,KAAO,CAACC,IAKX,uBACb,IAA+C5P,EAAyBoF,EAApEI,EAAY,GAAeS,EAAW,IAAQlG,EAAIyF,EAAUxR,OAEhE,KAAID,UAAUC,OAAS,GAAvB,CAcA,IAFAgS,EAAKnW,EAAQkgB,GAAQL,GACN,MAAXI,IAAiBA,GAAU,GAC1B9P,EAAI,EAAGA,EAAID,IAAKC,EAAGtO,KAAKmT,KAAKmB,EAAGR,EAAUxF,GAAInQ,EAAOigB,IAC1D,OAAOpe,KAdL,IAAIsU,EAAKtU,KAAKmW,OAAO8H,KACrB,GAAI3J,EAAI,IAAK,IAA0B4J,EAAtBlO,EAAI,EAAGJ,EAAI0E,EAAGhS,OAAW0N,EAAIJ,IAAKI,EACjD,IAAK1B,EAAI,EAAG4P,EAAI5J,EAAGtE,GAAI1B,EAAID,IAAKC,EAC9B,IAAKoF,EAAII,EAAUxF,IAAI/M,OAAS2c,EAAE3c,MAAQmS,EAAEhK,OAASwU,EAAExU,KACrD,OAAOwU,EAAE/f,OClFnB,SAASqgB,GAAcrI,EAAM5U,EAAMkd,GACjC,IAAIxb,EAAS,GAAYkT,GACrBwH,EAAQ1a,EAAOyb,YAEE,oBAAVf,EACTA,EAAQ,IAAIA,EAAMpc,EAAMkd,IAExBd,EAAQ1a,EAAOmF,SAASuW,YAAY,SAChCF,GAAQd,EAAMiB,UAAUrd,EAAMkd,EAAOI,QAASJ,EAAOK,YAAanB,EAAMoB,OAASN,EAAOM,QACvFpB,EAAMiB,UAAUrd,GAAM,GAAO,IAGpC4U,EAAKqI,cAAcb,GAGrB,SAASqB,GAAiBzd,EAAMkd,GAC9B,OAAO,WACL,OAAOD,GAAcxe,KAAMuB,EAAMkd,IAIrC,SAASQ,GAAiB1d,EAAMkd,GAC9B,OAAO,WACL,OAAOD,GAAcxe,KAAMuB,EAAMkd,EAAOpN,MAAMrR,KAAMqC,aAIzC,qBACb,OAAOrC,KAAKmT,MAAwB,oBAAXsL,EACnBQ,GACAD,IAAkBzd,EAAMkd,KCArB,GAAO,CAAC,MAEZ,SAASjI,GAAUR,EAAQY,GAChC5W,KAAKiW,QAAUD,EACfhW,KAAKyW,SAAWG,EAGlB,SAAS,KACP,OAAO,IAAIJ,GAAU,CAAC,CAACpO,SAASmN,kBAAmB,IAGrDiB,GAAUvY,UAAY,GAAUA,UAAY,CAC1CoW,YAAamC,GACb/D,OAAQyM,EACRpN,UAAW,EACXoB,OAAQiM,GACRpN,KAAMqN,GACN/M,MAAOgN,GACPlN,KAAMmN,GACN9f,KAAM,GACNmT,MAAO4M,GACPtN,MAAOuN,GACPpZ,KAAMqZ,GACNvgB,KAAM,GACNqa,MAAOmG,GACPvJ,KAAMwJ,GACN1H,KAAM2H,GACNC,MAAOC,GACP3M,KAAM,GACNZ,KAAM,GACNvK,MAAO,GACPoV,SAAU,GACV2C,QAAS,GACTrN,KAAMsN,GACNnZ,KAAM,GACN0V,MAAO0D,GACPxD,MAAOyD,GACP5N,OAAQ,GACRM,OAAQ,GACRK,OAAQkN,GACRC,MAAO,GACPhJ,MAAO,GACP9C,GAAI+L,GACJ5M,SAAU6M,IAGG,UC5EA,eACb,MAA2B,kBAAbxK,EACR,IAAIU,GAAU,CAAC,CAACpO,SAAS2N,cAAcD,KAAa,CAAC1N,SAASmN,kBAC9D,IAAIiB,GAAU,CAAC,CAACV,IAAY,KCLhCyK,GAAS,EAEE,SAASrL,KACtB,OAAO,IAAIsL,GAGb,SAASA,KACPxgB,KAAKoT,EAAI,OAASmN,IAAQlgB,SAAS,IAGrCmgB,GAAMviB,UAAYiX,GAAMjX,UAAY,CAClCoW,YAAamM,GACb5f,IAAK,SAASuV,GACZ,IAAI5V,EAAKP,KAAKoT,EACd,QAAS7S,KAAM4V,GAAO,KAAMA,EAAOA,EAAKnD,YAAa,OACrD,OAAOmD,EAAK5V,IAEdI,IAAK,SAASwV,EAAMhY,GAClB,OAAOgY,EAAKnW,KAAKoT,GAAKjV,GAExB8U,OAAQ,SAASkD,GACf,OAAOnW,KAAKoT,KAAK+C,UAAeA,EAAKnW,KAAKoT,IAE5C/S,SAAU,WACR,OAAOL,KAAKoT,ICtBD,ICAA,eACb,MAA2B,kBAAb0C,EACR,IAAIU,GAAU,CAACpO,SAASsO,iBAAiBZ,IAAY,CAAC1N,SAASmN,kBAC/D,IAAIiB,GAAU,CAAa,MAAZV,EAAmB,GAAKA,GAAW,KCL3C,SAAS2K,GAAU7gB,EAAQ2B,EAAMmf,EAASngB,EAAIogB,EAAQnb,EAAG4K,EAAGwQ,EAAIC,EAAIpN,GACjFzT,KAAKJ,OAASA,EACdI,KAAKuB,KAAOA,EACZvB,KAAK0gB,QAAUA,EACf1gB,KAAK8gB,WAAavgB,EAClBP,KAAK2gB,OAASA,EACd3gB,KAAKwF,EAAIA,EACTxF,KAAKoQ,EAAIA,EACTpQ,KAAK4gB,GAAKA,EACV5gB,KAAK6gB,GAAKA,EACV7gB,KAAKoT,EAAIK,EAGXgN,GAAUxiB,UAAUqW,GAAK,WACvB,IAAInW,EAAQ6B,KAAKoT,EAAEkB,GAAGjD,MAAMrR,KAAKoT,EAAG/Q,WACpC,OAAOlE,IAAU6B,KAAKoT,EAAIpT,KAAO7B,GCSpB,ICxBA,mBACbkW,EAAYpW,UAAY8iB,EAAQ9iB,UAAYA,EAC5CA,EAAUoW,YAAcA,GAGnB,SAAS2M,GAAOhW,EAAQiW,GAC7B,IAAIhjB,EAAYyB,OAAOgG,OAAOsF,EAAO/M,WACrC,IAAK,IAAIyC,KAAOugB,EAAYhjB,EAAUyC,GAAOugB,EAAWvgB,GACxD,OAAOzC,ECNF,SAASijB,MAET,IAAIC,GAAS,GACTC,GAAW,EAAID,GAEtBE,GAAM,sBACNC,GAAM,gDACNC,GAAM,iDACNC,GAAS,mBACTC,GAAS,mBACTC,GAAe,IAAIC,OAAO,UAAY,CAACN,GAAKA,GAAKA,IAAO,QACxDO,GAAe,IAAID,OAAO,UAAY,CAACJ,GAAKA,GAAKA,IAAO,QACxDM,GAAgB,IAAIF,OAAO,WAAa,CAACN,GAAKA,GAAKA,GAAKC,IAAO,QAC/DQ,GAAgB,IAAIH,OAAO,WAAa,CAACJ,GAAKA,GAAKA,GAAKD,IAAO,QAC/DS,GAAe,IAAIJ,OAAO,UAAY,CAACL,GAAKC,GAAKA,IAAO,QACxDS,GAAgB,IAAIL,OAAO,WAAa,CAACL,GAAKC,GAAKA,GAAKD,IAAO,QAE/DW,GAAQ,CACVC,UAAW,SACXC,aAAc,SACdC,KAAM,MACNC,WAAY,QACZC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,MAAO,EACPC,eAAgB,SAChBC,KAAM,IACNC,WAAY,QACZC,MAAO,SACPC,UAAW,SACXC,UAAW,QACXC,WAAY,QACZC,UAAW,SACXC,MAAO,SACPC,eAAgB,QAChBC,SAAU,SACVC,QAAS,SACTC,KAAM,MACNC,SAAU,IACVC,SAAU,MACVC,cAAe,SACfC,SAAU,SACVC,UAAW,MACXC,SAAU,SACVC,UAAW,SACXC,YAAa,QACbC,eAAgB,QAChBC,WAAY,SACZC,WAAY,SACZC,QAAS,QACTC,WAAY,SACZC,aAAc,QACdC,cAAe,QACfC,cAAe,QACfC,cAAe,QACfC,cAAe,MACfC,WAAY,QACZC,SAAU,SACVC,YAAa,MACbC,QAAS,QACTC,QAAS,QACTC,WAAY,QACZC,UAAW,SACXC,YAAa,SACbC,YAAa,QACbC,QAAS,SACTC,UAAW,SACXC,WAAY,SACZC,KAAM,SACNC,UAAW,SACXC,KAAM,QACNC,MAAO,MACPC,YAAa,SACbC,KAAM,QACNC,SAAU,SACVC,QAAS,SACTC,UAAW,SACXC,OAAQ,QACRC,MAAO,SACPC,MAAO,SACPC,SAAU,SACVC,cAAe,SACfC,UAAW,QACXC,aAAc,SACdC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,qBAAsB,SACtBC,UAAW,SACXC,WAAY,QACZC,UAAW,SACXC,UAAW,SACXC,YAAa,SACbC,cAAe,QACfC,aAAc,QACdC,eAAgB,QAChBC,eAAgB,QAChBC,eAAgB,SAChBC,YAAa,SACbC,KAAM,MACNC,UAAW,QACXC,MAAO,SACPC,QAAS,SACTC,OAAQ,QACRC,iBAAkB,QAClBC,WAAY,IACZC,aAAc,SACdC,aAAc,QACdC,eAAgB,QAChBC,gBAAiB,QACjBC,kBAAmB,MACnBC,gBAAiB,QACjBC,gBAAiB,SACjBC,aAAc,QACdC,UAAW,SACXC,UAAW,SACXC,SAAU,SACVC,YAAa,SACbC,KAAM,IACNC,QAAS,SACTC,MAAO,QACPC,UAAW,QACXC,OAAQ,SACRC,UAAW,SACXC,OAAQ,SACRC,cAAe,SACfC,UAAW,SACXC,cAAe,SACfC,cAAe,SACfC,WAAY,SACZC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,WAAY,SACZC,OAAQ,QACRC,cAAe,QACfC,IAAK,SACLC,UAAW,SACXC,UAAW,QACXC,YAAa,QACbC,OAAQ,SACRC,WAAY,SACZC,SAAU,QACVC,SAAU,SACVC,OAAQ,SACRC,OAAQ,SACRC,QAAS,QACTC,UAAW,QACXC,UAAW,QACXC,UAAW,QACXC,KAAM,SACNC,YAAa,MACbC,UAAW,QACXC,IAAK,SACLC,KAAM,MACNC,QAAS,SACTC,OAAQ,SACRC,UAAW,QACXC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,WAAY,SACZC,OAAQ,SACRC,YAAa,UAeA,SAAS,GAAM/Z,GAC5B,IAAI1B,EAEJ,OADA0B,GAAUA,EAAS,IAAIvN,OAAOunB,eACtB1b,EAAI4R,GAAOxkB,KAAKsU,KAAY1B,EAAI2b,SAAS3b,EAAE,GAAI,IAAK,IAAI4b,GAAK5b,GAAK,EAAI,GAAQA,GAAK,EAAI,IAASA,GAAK,EAAI,GAAY,IAAJA,GAAiB,GAAJA,IAAY,EAAU,GAAJA,EAAU,KAC3JA,EAAI6R,GAAOzkB,KAAKsU,IAAWma,GAAKF,SAAS3b,EAAE,GAAI,MAC/CA,EAAI8R,GAAa1kB,KAAKsU,IAAW,IAAIka,GAAI5b,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI,IAC3DA,EAAIgS,GAAa5kB,KAAKsU,IAAW,IAAIka,GAAW,IAAP5b,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAK,IAC/FA,EAAIiS,GAAc7kB,KAAKsU,IAAWoa,GAAK9b,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAC3DA,EAAIkS,GAAc9kB,KAAKsU,IAAWoa,GAAY,IAAP9b,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAKA,EAAE,KAC/FA,EAAImS,GAAa/kB,KAAKsU,IAAWqa,GAAK/b,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAK,IACpEA,EAAIoS,GAAchlB,KAAKsU,IAAWqa,GAAK/b,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAKA,EAAE,IACxEqS,GAAMhO,eAAe3C,GAAUma,GAAKxJ,GAAM3Q,IAC/B,gBAAXA,EAA2B,IAAIka,GAAIne,IAAKA,IAAKA,IAAK,GAClD,KAGR,SAASoe,GAAKpd,GACZ,OAAO,IAAImd,GAAInd,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAU,IAAJA,EAAU,GAG1D,SAASqd,GAAKE,EAAG9oB,EAAG4B,EAAGD,GAErB,OADIA,GAAK,IAAGmnB,EAAI9oB,EAAI4B,EAAI2I,KACjB,IAAIme,GAAII,EAAG9oB,EAAG4B,EAAGD,GAGnB,SAASonB,GAAW3N,GAEzB,OADMA,aAAagD,KAAQhD,EAAI,GAAMA,IAChCA,GACLA,EAAIA,EAAE4N,MACC,IAAIN,GAAItN,EAAE0N,EAAG1N,EAAEpb,EAAGob,EAAExZ,EAAGwZ,EAAE6N,UAFjB,IAAIP,GAKd,SAAS,GAAII,EAAG9oB,EAAG4B,EAAGqnB,GAC3B,OAA4B,IAArB1pB,UAAUC,OAAeupB,GAAWD,GAAK,IAAIJ,GAAII,EAAG9oB,EAAG4B,EAAc,MAAXqnB,EAAkB,EAAIA,GAGlF,SAASP,GAAII,EAAG9oB,EAAG4B,EAAGqnB,GAC3B/rB,KAAK4rB,GAAKA,EACV5rB,KAAK8C,GAAKA,EACV9C,KAAK0E,GAAKA,EACV1E,KAAK+rB,SAAWA,EAkClB,SAASC,GAAI7tB,GAEX,OADAA,EAAQxB,KAAK4R,IAAI,EAAG5R,KAAKD,IAAI,IAAKC,KAAK6T,MAAMrS,IAAU,KAC/CA,EAAQ,GAAK,IAAM,IAAMA,EAAMkC,SAAS,IAGlD,SAASsrB,GAAKjgB,EAAGugB,EAAGC,EAAGznB,GAIrB,OAHIA,GAAK,EAAGiH,EAAIugB,EAAIC,EAAI7e,IACf6e,GAAK,GAAKA,GAAK,EAAGxgB,EAAIugB,EAAI5e,IAC1B4e,GAAK,IAAGvgB,EAAI2B,KACd,IAAI8e,GAAIzgB,EAAGugB,EAAGC,EAAGznB,GAGnB,SAAS2nB,GAAWlO,GACzB,GAAIA,aAAaiO,GAAK,OAAO,IAAIA,GAAIjO,EAAExS,EAAGwS,EAAE+N,EAAG/N,EAAEgO,EAAGhO,EAAE6N,SAEtD,GADM7N,aAAagD,KAAQhD,EAAI,GAAMA,KAChCA,EAAG,OAAO,IAAIiO,GACnB,GAAIjO,aAAaiO,GAAK,OAAOjO,EAC7BA,EAAIA,EAAE4N,MACN,IAAIF,EAAI1N,EAAE0N,EAAI,IACV9oB,EAAIob,EAAEpb,EAAI,IACV4B,EAAIwZ,EAAExZ,EAAI,IACVhI,EAAMC,KAAKD,IAAIkvB,EAAG9oB,EAAG4B,GACrB6J,EAAM5R,KAAK4R,IAAIqd,EAAG9oB,EAAG4B,GACrBgH,EAAI2B,IACJ4e,EAAI1d,EAAM7R,EACVwvB,GAAK3d,EAAM7R,GAAO,EAUtB,OATIuvB,GACavgB,EAAXkgB,IAAMrd,GAAUzL,EAAI4B,GAAKunB,EAAc,GAATnpB,EAAI4B,GAC7B5B,IAAMyL,GAAU7J,EAAIknB,GAAKK,EAAI,GAC5BL,EAAI9oB,GAAKmpB,EAAI,EACvBA,GAAKC,EAAI,GAAM3d,EAAM7R,EAAM,EAAI6R,EAAM7R,EACrCgP,GAAK,IAELugB,EAAIC,EAAI,GAAKA,EAAI,EAAI,EAAIxgB,EAEpB,IAAIygB,GAAIzgB,EAAGugB,EAAGC,EAAGhO,EAAE6N,SAGrB,SAASM,GAAI3gB,EAAGugB,EAAGC,EAAGH,GAC3B,OAA4B,IAArB1pB,UAAUC,OAAe8pB,GAAW1gB,GAAK,IAAIygB,GAAIzgB,EAAGugB,EAAGC,EAAc,MAAXH,EAAkB,EAAIA,GAGzF,SAASI,GAAIzgB,EAAGugB,EAAGC,EAAGH,GACpB/rB,KAAK0L,GAAKA,EACV1L,KAAKisB,GAAKA,EACVjsB,KAAKksB,GAAKA,EACVlsB,KAAK+rB,SAAWA,EAiClB,SAASO,GAAQ5gB,EAAGqN,EAAIwT,GACtB,OAGY,KAHJ7gB,EAAI,GAAKqN,GAAMwT,EAAKxT,GAAMrN,EAAI,GAChCA,EAAI,IAAM6gB,EACV7gB,EAAI,IAAMqN,GAAMwT,EAAKxT,IAAO,IAAMrN,GAAK,GACvCqN,GAzKRyT,GAAOtL,GAAO,GAAO,CACnBuL,YAAa,WACX,OAAOzsB,KAAK8rB,MAAMW,eAEpBT,IAAK,WACH,OAAOhsB,KAAK8rB,MAAME,OAEpB3rB,SAAU,WACR,OAAOL,KAAK8rB,MAAQ,MA+CxBU,GAAOhB,GAAK,GAAKxK,GAAOE,GAAO,CAC7BE,SAAU,SAASlQ,GAEjB,OADAA,EAAS,MAALA,EAAYkQ,GAAWzkB,KAAK0S,IAAI+R,GAAUlQ,GACvC,IAAIsa,GAAIxrB,KAAK4rB,EAAI1a,EAAGlR,KAAK8C,EAAIoO,EAAGlR,KAAK0E,EAAIwM,EAAGlR,KAAK+rB,UAE1D5K,OAAQ,SAASjQ,GAEf,OADAA,EAAS,MAALA,EAAYiQ,GAASxkB,KAAK0S,IAAI8R,GAAQjQ,GACnC,IAAIsa,GAAIxrB,KAAK4rB,EAAI1a,EAAGlR,KAAK8C,EAAIoO,EAAGlR,KAAK0E,EAAIwM,EAAGlR,KAAK+rB,UAE1DD,IAAK,WACH,OAAO9rB,MAETysB,YAAa,WACX,OAAQ,GAAKzsB,KAAK4rB,GAAK5rB,KAAK4rB,GAAK,KACzB,GAAK5rB,KAAK8C,GAAK9C,KAAK8C,GAAK,KACzB,GAAK9C,KAAK0E,GAAK1E,KAAK0E,GAAK,KACzB,GAAK1E,KAAK+rB,SAAW/rB,KAAK+rB,SAAW,GAE/CC,IAAK,WACH,MAAO,IAAMA,GAAIhsB,KAAK4rB,GAAKI,GAAIhsB,KAAK8C,GAAKkpB,GAAIhsB,KAAK0E,IAEpDrE,SAAU,WACR,IAAIoE,EAAIzE,KAAK+rB,QACb,OADsBtnB,EAAI5F,MAAM4F,GAAK,EAAI9H,KAAK4R,IAAI,EAAG5R,KAAKD,IAAI,EAAG+H,KACnD,IAANA,EAAU,OAAS,SACrB9H,KAAK4R,IAAI,EAAG5R,KAAKD,IAAI,IAAKC,KAAK6T,MAAMxQ,KAAK4rB,IAAM,IAAM,KACtDjvB,KAAK4R,IAAI,EAAG5R,KAAKD,IAAI,IAAKC,KAAK6T,MAAMxQ,KAAK8C,IAAM,IAAM,KACtDnG,KAAK4R,IAAI,EAAG5R,KAAKD,IAAI,IAAKC,KAAK6T,MAAMxQ,KAAK0E,IAAM,KACzC,IAAND,EAAU,IAAM,KAAOA,EAAI,SAqDtC+nB,GAAOL,GAAKE,GAAKrL,GAAOE,GAAO,CAC7BE,SAAU,SAASlQ,GAEjB,OADAA,EAAS,MAALA,EAAYkQ,GAAWzkB,KAAK0S,IAAI+R,GAAUlQ,GACvC,IAAIib,GAAInsB,KAAK0L,EAAG1L,KAAKisB,EAAGjsB,KAAKksB,EAAIhb,EAAGlR,KAAK+rB,UAElD5K,OAAQ,SAASjQ,GAEf,OADAA,EAAS,MAALA,EAAYiQ,GAASxkB,KAAK0S,IAAI8R,GAAQjQ,GACnC,IAAIib,GAAInsB,KAAK0L,EAAG1L,KAAKisB,EAAGjsB,KAAKksB,EAAIhb,EAAGlR,KAAK+rB,UAElDD,IAAK,WACH,IAAIpgB,EAAI1L,KAAK0L,EAAI,IAAqB,KAAd1L,KAAK0L,EAAI,GAC7BugB,EAAIptB,MAAM6M,IAAM7M,MAAMmB,KAAKisB,GAAK,EAAIjsB,KAAKisB,EACzCC,EAAIlsB,KAAKksB,EACTK,EAAKL,GAAKA,EAAI,GAAMA,EAAI,EAAIA,GAAKD,EACjClT,EAAK,EAAImT,EAAIK,EACjB,OAAO,IAAIf,GACTc,GAAQ5gB,GAAK,IAAMA,EAAI,IAAMA,EAAI,IAAKqN,EAAIwT,GAC1CD,GAAQ5gB,EAAGqN,EAAIwT,GACfD,GAAQ5gB,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAKqN,EAAIwT,GACzCvsB,KAAK+rB,UAGTU,YAAa,WACX,OAAQ,GAAKzsB,KAAKisB,GAAKjsB,KAAKisB,GAAK,GAAKptB,MAAMmB,KAAKisB,KACzC,GAAKjsB,KAAKksB,GAAKlsB,KAAKksB,GAAK,GACzB,GAAKlsB,KAAK+rB,SAAW/rB,KAAK+rB,SAAW,MC1U1C,IAAIW,GAAU/vB,KAAKgwB,GAAK,IACpBC,GAAU,IAAMjwB,KAAKgwB,GCI5BE,GAAI,GACJC,GAAK,OACLC,GAAK,EACLC,GAAK,OACL,GAAK,EAAI,GACT,GAAK,EAAI,GACT,GAAK,EAAI,GAAK,GACdC,GAAK,GAAK,GAAK,GAEnB,SAASC,GAAWhP,GAClB,GAAIA,aAAaiP,GAAK,OAAO,IAAIA,GAAIjP,EAAEgO,EAAGhO,EAAEzZ,EAAGyZ,EAAExZ,EAAGwZ,EAAE6N,SACtD,GAAI7N,aAAakP,GAAK,CACpB,GAAIvuB,MAAMqf,EAAExS,GAAI,OAAO,IAAIyhB,GAAIjP,EAAEgO,EAAG,EAAG,EAAGhO,EAAE6N,SAC5C,IAAIrgB,EAAIwS,EAAExS,EAAIghB,GACd,OAAO,IAAIS,GAAIjP,EAAEgO,EAAGvvB,KAAK0wB,IAAI3hB,GAAKwS,EAAEhK,EAAGvX,KAAK2wB,IAAI5hB,GAAKwS,EAAEhK,EAAGgK,EAAE6N,SAExD7N,aAAasN,KAAMtN,EAAI2N,GAAW3N,IACxC,IAGuE1Y,EAAG+nB,EAHtE3B,EAAI4B,GAAStP,EAAE0N,GACf9oB,EAAI0qB,GAAStP,EAAEpb,GACf4B,EAAI8oB,GAAStP,EAAExZ,GACf0L,EAAIqd,IAAS,SAAY7B,EAAI,SAAY9oB,EAAI,SAAY4B,GAAKqoB,IAKlE,OAJInB,IAAM9oB,GAAKA,IAAM4B,EAAGc,EAAI+nB,EAAInd,GAC9B5K,EAAIioB,IAAS,SAAY7B,EAAI,SAAY9oB,EAAI,SAAY4B,GAAKooB,IAC9DS,EAAIE,IAAS,SAAY7B,EAAI,SAAY9oB,EAAI,SAAY4B,GAAKsoB,KAEzD,IAAIG,GAAI,IAAM/c,EAAI,GAAI,KAAO5K,EAAI4K,GAAI,KAAOA,EAAImd,GAAIrP,EAAE6N,SAOhD,SAAS2B,GAAIxB,EAAGznB,EAAGC,EAAGqnB,GACnC,OAA4B,IAArB1pB,UAAUC,OAAe4qB,GAAWhB,GAAK,IAAIiB,GAAIjB,EAAGznB,EAAGC,EAAc,MAAXqnB,EAAkB,EAAIA,GAGlF,SAASoB,GAAIjB,EAAGznB,EAAGC,EAAGqnB,GAC3B/rB,KAAKksB,GAAKA,EACVlsB,KAAKyE,GAAKA,EACVzE,KAAK0E,GAAKA,EACV1E,KAAK+rB,SAAWA,EA0BlB,SAAS0B,GAAQ/Z,GACf,OAAOA,EAAIuZ,GAAKtwB,KAAK0S,IAAIqE,EAAG,EAAI,GAAKA,EAAI,GAAK,GAGhD,SAASia,GAAQja,GACf,OAAOA,EAAI,GAAKA,EAAIA,EAAIA,EAAI,IAAMA,EAAI,IAGxC,SAASka,GAASpoB,GAChB,OAAO,KAAOA,GAAK,SAAY,MAAQA,EAAI,MAAQ7I,KAAK0S,IAAI7J,EAAG,EAAI,KAAO,MAG5E,SAASgoB,GAAShoB,GAChB,OAAQA,GAAK,MAAQ,OAAUA,EAAI,MAAQ7I,KAAK0S,KAAK7J,EAAI,MAAS,MAAO,KAG3E,SAASqoB,GAAW3P,GAClB,GAAIA,aAAakP,GAAK,OAAO,IAAIA,GAAIlP,EAAExS,EAAGwS,EAAEhK,EAAGgK,EAAEgO,EAAGhO,EAAE6N,SAEtD,GADM7N,aAAaiP,KAAMjP,EAAIgP,GAAWhP,IAC5B,IAARA,EAAEzZ,GAAmB,IAARyZ,EAAExZ,EAAS,OAAO,IAAI0oB,GAAI/f,IAAK,EAAG6Q,EAAEgO,EAAGhO,EAAE6N,SAC1D,IAAIrgB,EAAI/O,KAAKmxB,MAAM5P,EAAExZ,EAAGwZ,EAAEzZ,GAAKmoB,GAC/B,OAAO,IAAIQ,GAAI1hB,EAAI,EAAIA,EAAI,IAAMA,EAAG/O,KAAK+R,KAAKwP,EAAEzZ,EAAIyZ,EAAEzZ,EAAIyZ,EAAExZ,EAAIwZ,EAAExZ,GAAIwZ,EAAEgO,EAAGhO,EAAE6N,SAOxE,SAASgC,GAAIriB,EAAGwI,EAAGgY,EAAGH,GAC3B,OAA4B,IAArB1pB,UAAUC,OAAeurB,GAAWniB,GAAK,IAAI0hB,GAAI1hB,EAAGwI,EAAGgY,EAAc,MAAXH,EAAkB,EAAIA,GAGlF,SAASqB,GAAI1hB,EAAGwI,EAAGgY,EAAGH,GAC3B/rB,KAAK0L,GAAKA,EACV1L,KAAKkU,GAAKA,EACVlU,KAAKksB,GAAKA,EACVlsB,KAAK+rB,SAAWA,EA3DlBS,GAAOW,GAAKO,GAAK1M,GAAOE,GAAO,CAC7BE,SAAU,SAASlQ,GACjB,OAAO,IAAIic,GAAIntB,KAAKksB,EAAIW,IAAU,MAAL3b,EAAY,EAAIA,GAAIlR,KAAKyE,EAAGzE,KAAK0E,EAAG1E,KAAK+rB,UAExE5K,OAAQ,SAASjQ,GACf,OAAO,IAAIic,GAAIntB,KAAKksB,EAAIW,IAAU,MAAL3b,EAAY,EAAIA,GAAIlR,KAAKyE,EAAGzE,KAAK0E,EAAG1E,KAAK+rB,UAExED,IAAK,WACH,IAAI1b,GAAKpQ,KAAKksB,EAAI,IAAM,IACpB1mB,EAAI3G,MAAMmB,KAAKyE,GAAK2L,EAAIA,EAAIpQ,KAAKyE,EAAI,IACrC8oB,EAAI1uB,MAAMmB,KAAK0E,GAAK0L,EAAIA,EAAIpQ,KAAK0E,EAAI,IAIzC,OAHAc,EAAIsnB,GAAKa,GAAQnoB,GACjB4K,EAAI2c,GAAKY,GAAQvd,GACjBmd,EAAIP,GAAKW,GAAQJ,GACV,IAAI/B,GACToC,GAAU,UAAYpoB,EAAI,UAAY4K,EAAI,SAAYmd,GACtDK,IAAU,SAAYpoB,EAAI,UAAY4K,EAAI,QAAYmd,GACtDK,GAAU,SAAYpoB,EAAI,SAAY4K,EAAI,UAAYmd,GACtDvtB,KAAK+rB,aA4CXS,GAAOY,GAAKW,GAAK/M,GAAOE,GAAO,CAC7BE,SAAU,SAASlQ,GACjB,OAAO,IAAIkc,GAAIptB,KAAK0L,EAAG1L,KAAKkU,EAAGlU,KAAKksB,EAAIW,IAAU,MAAL3b,EAAY,EAAIA,GAAIlR,KAAK+rB,UAExE5K,OAAQ,SAASjQ,GACf,OAAO,IAAIkc,GAAIptB,KAAK0L,EAAG1L,KAAKkU,EAAGlU,KAAKksB,EAAIW,IAAU,MAAL3b,EAAY,EAAIA,GAAIlR,KAAK+rB,UAExED,IAAK,WACH,OAAOoB,GAAWltB,MAAM8rB,UClH5B,IAAI,IAAK,OACL,GAAI,QACJxmB,IAAK,OACL,IAAK,OACL,GAAI,QACJ0oB,GAAK,GAAI,GACTC,GAAK,GAAI,GACTC,GAAQ,GAAI5oB,GAAI,GAAI,GAExB,SAAS6oB,GAAiBjQ,GACxB,GAAIA,aAAakQ,GAAW,OAAO,IAAIA,GAAUlQ,EAAExS,EAAGwS,EAAE+N,EAAG/N,EAAEgO,EAAGhO,EAAE6N,SAC5D7N,aAAasN,KAAMtN,EAAI2N,GAAW3N,IACxC,IAAI0N,EAAI1N,EAAE0N,EAAI,IACV9oB,EAAIob,EAAEpb,EAAI,IACV4B,EAAIwZ,EAAExZ,EAAI,IACVwnB,GAAKgC,GAAQxpB,EAAIspB,GAAKpC,EAAIqC,GAAKnrB,IAAMorB,GAAQF,GAAKC,IAClDI,EAAK3pB,EAAIwnB,EACThb,GAAK,IAAKpO,EAAIopB,GAAK5mB,GAAI+oB,GAAM,GAC7BpC,EAAItvB,KAAK+R,KAAKwC,EAAIA,EAAImd,EAAKA,IAAO,GAAInC,GAAK,EAAIA,IAC/CxgB,EAAIugB,EAAItvB,KAAKmxB,MAAM5c,EAAGmd,GAAMzB,GAAU,IAAMvf,IAChD,OAAO,IAAI+gB,GAAU1iB,EAAI,EAAIA,EAAI,IAAMA,EAAGugB,EAAGC,EAAGhO,EAAE6N,SAGrC,SAAS,GAAUrgB,EAAGugB,EAAGC,EAAGH,GACzC,OAA4B,IAArB1pB,UAAUC,OAAe6rB,GAAiBziB,GAAK,IAAI0iB,GAAU1iB,EAAGugB,EAAGC,EAAc,MAAXH,EAAkB,EAAIA,GAG9F,SAASqC,GAAU1iB,EAAGugB,EAAGC,EAAGH,GACjC/rB,KAAK0L,GAAKA,EACV1L,KAAKisB,GAAKA,EACVjsB,KAAKksB,GAAKA,EACVlsB,KAAK+rB,SAAWA,ECnCX,SAASuC,GAAMC,EAAIC,EAAIC,EAAIC,EAAIC,GACpC,IAAIC,EAAKL,EAAKA,EAAItB,EAAK2B,EAAKL,EAC5B,QAAS,EAAI,EAAIA,EAAK,EAAIK,EAAK3B,GAAMuB,GAC9B,EAAI,EAAII,EAAK,EAAI3B,GAAMwB,GACvB,EAAI,EAAIF,EAAK,EAAIK,EAAK,EAAI3B,GAAMyB,EACjCzB,EAAK0B,GAAM,EDiCnBnC,GAAO4B,GAAW,GAAWpN,GAAOE,GAAO,CACzCE,SAAU,SAASlQ,GAEjB,OADAA,EAAS,MAALA,EAAYkQ,GAAWzkB,KAAK0S,IAAI+R,GAAUlQ,GACvC,IAAIkd,GAAUpuB,KAAK0L,EAAG1L,KAAKisB,EAAGjsB,KAAKksB,EAAIhb,EAAGlR,KAAK+rB,UAExD5K,OAAQ,SAASjQ,GAEf,OADAA,EAAS,MAALA,EAAYiQ,GAASxkB,KAAK0S,IAAI8R,GAAQjQ,GACnC,IAAIkd,GAAUpuB,KAAK0L,EAAG1L,KAAKisB,EAAGjsB,KAAKksB,EAAIhb,EAAGlR,KAAK+rB,UAExDD,IAAK,WACH,IAAIpgB,EAAI7M,MAAMmB,KAAK0L,GAAK,GAAK1L,KAAK0L,EAAI,KAAOghB,GACzCR,GAAKlsB,KAAKksB,EACVznB,EAAI5F,MAAMmB,KAAKisB,GAAK,EAAIjsB,KAAKisB,EAAIC,GAAK,EAAIA,GAC1C2C,EAAOlyB,KAAK0wB,IAAI3hB,GAChBojB,EAAOnyB,KAAK2wB,IAAI5hB,GACpB,OAAO,IAAI8f,GACT,KAAOU,EAAIznB,GAAK,GAAIoqB,EAAO,GAAIC,IAC/B,KAAO5C,EAAIznB,GAAKa,GAAIupB,EAAO,GAAIC,IAC/B,KAAO5C,EAAIznB,GAAK,GAAIoqB,IACpB7uB,KAAK+rB,aCjDI,mBACb,IAAI1d,EAAIqB,EAAOpN,OAAS,EACxB,OAAO,SAASoR,GACd,IAAIpF,EAAIoF,GAAK,EAAKA,EAAI,EAAKA,GAAK,GAAKA,EAAI,EAAGrF,EAAI,GAAK1R,KAAKiC,MAAM8U,EAAIrF,GAChEogB,EAAK/e,EAAOpB,GACZogB,EAAKhf,EAAOpB,EAAI,GAChBkgB,EAAKlgB,EAAI,EAAIoB,EAAOpB,EAAI,GAAK,EAAImgB,EAAKC,EACtCC,EAAKrgB,EAAID,EAAI,EAAIqB,EAAOpB,EAAI,GAAK,EAAIogB,EAAKD,EAC9C,OAAOH,IAAO5a,EAAIpF,EAAID,GAAKA,EAAGmgB,EAAIC,EAAIC,EAAIC,KCd/B,eACb,IAAItgB,EAAIqB,EAAOpN,OACf,OAAO,SAASoR,GACd,IAAIpF,EAAI3R,KAAKiC,QAAQ8U,GAAK,GAAK,IAAMA,EAAIA,GAAKrF,GAC1CmgB,EAAK9e,GAAQpB,EAAID,EAAI,GAAKA,GAC1BogB,EAAK/e,EAAOpB,EAAID,GAChBqgB,EAAKhf,GAAQpB,EAAI,GAAKD,GACtBsgB,EAAKjf,GAAQpB,EAAI,GAAKD,GAC1B,OAAOigB,IAAO5a,EAAIpF,EAAID,GAAKA,EAAGmgB,EAAIC,EAAIC,EAAIC,KCV/B,eACb,OAAO,WACL,OAAOnpB,ICAX,SAASupB,GAAOtqB,EAAGoJ,GACjB,OAAO,SAAS6F,GACd,OAAOjP,EAAIiP,EAAI7F,GAInB,SAASmhB,GAAYvqB,EAAGC,EAAG0L,GACzB,OAAO3L,EAAI9H,KAAK0S,IAAI5K,EAAG2L,GAAI1L,EAAI/H,KAAK0S,IAAI3K,EAAG0L,GAAK3L,EAAG2L,EAAI,EAAIA,EAAG,SAASsD,GACrE,OAAO/W,KAAK0S,IAAI5K,EAAIiP,EAAIhP,EAAG0L,IAIxB,SAAS,GAAI3L,EAAGC,GACrB,IAAImJ,EAAInJ,EAAID,EACZ,OAAOoJ,EAAIkhB,GAAOtqB,EAAGoJ,EAAI,KAAOA,GAAK,IAAMA,EAAI,IAAMlR,KAAK6T,MAAM3C,EAAI,KAAOA,GAAK,GAAShP,MAAM4F,GAAKC,EAAID,GAGnG,SAASwqB,GAAM7e,GACpB,OAAoB,KAAZA,GAAKA,GAAW8e,GAAU,SAASzqB,EAAGC,GAC5C,OAAOA,EAAID,EAAIuqB,GAAYvqB,EAAGC,EAAG0L,GAAK,GAASvR,MAAM4F,GAAKC,EAAID,IAInD,SAASyqB,GAAQzqB,EAAGC,GACjC,IAAImJ,EAAInJ,EAAID,EACZ,OAAOoJ,EAAIkhB,GAAOtqB,EAAGoJ,GAAK,GAAShP,MAAM4F,GAAKC,EAAID,GCtBrC,qBACb,IAAI0qB,EAAQF,GAAM7e,GAElB,SAAS0b,EAAI1d,EAAOghB,GAClB,IAAIxD,EAAIuD,GAAO/gB,EAAQ,GAASA,IAAQwd,GAAIwD,EAAM,GAASA,IAAMxD,GAC7D9oB,EAAIqsB,EAAM/gB,EAAMtL,EAAGssB,EAAItsB,GACvB4B,EAAIyqB,EAAM/gB,EAAM1J,EAAG0qB,EAAI1qB,GACvBqnB,EAAUmD,GAAQ9gB,EAAM2d,QAASqD,EAAIrD,SACzC,OAAO,SAASrY,GAKd,OAJAtF,EAAMwd,EAAIA,EAAElY,GACZtF,EAAMtL,EAAIA,EAAE4Q,GACZtF,EAAM1J,EAAIA,EAAEgP,GACZtF,EAAM2d,QAAUA,EAAQrY,GACjBtF,EAAQ,IAMnB,OAFA0d,EAAImD,MAAQI,EAELvD,EAnBM,CAoBZ,GAEH,SAASwD,GAAUC,GACjB,OAAO,SAASC,GACd,IAIIlhB,EAAG6gB,EAJH9gB,EAAImhB,EAAOltB,OACXspB,EAAI,IAAI7iB,MAAMsF,GACdvL,EAAI,IAAIiG,MAAMsF,GACd3J,EAAI,IAAIqE,MAAMsF,GAElB,IAAKC,EAAI,EAAGA,EAAID,IAAKC,EACnB6gB,EAAQ,GAASK,EAAOlhB,IACxBsd,EAAEtd,GAAK6gB,EAAMvD,GAAK,EAClB9oB,EAAEwL,GAAK6gB,EAAMrsB,GAAK,EAClB4B,EAAE4J,GAAK6gB,EAAMzqB,GAAK,EAMpB,OAJAknB,EAAI2D,EAAO3D,GACX9oB,EAAIysB,EAAOzsB,GACX4B,EAAI6qB,EAAO7qB,GACXyqB,EAAMpD,QAAU,EACT,SAASrY,GAId,OAHAyb,EAAMvD,EAAIA,EAAElY,GACZyb,EAAMrsB,EAAIA,EAAE4Q,GACZyb,EAAMzqB,EAAIA,EAAEgP,GACLyb,EAAQ,KAKd,IAAIM,GAAWH,GAAU,ICnDjB,IDoDaA,GAAUI,ICpDvB,cACb,IAIIphB,EAJAqhB,EAAKjrB,EAAIA,EAAEpC,OAAS,EACpBstB,EAAKnrB,EAAI9H,KAAKD,IAAIizB,EAAIlrB,EAAEnC,QAAU,EAClCkD,EAAI,IAAIuD,MAAM6mB,GACd1b,EAAI,IAAInL,MAAM4mB,GAGlB,IAAKrhB,EAAI,EAAGA,EAAIshB,IAAMthB,EAAG9I,EAAE8I,GAAK,GAAM7J,EAAE6J,GAAI5J,EAAE4J,IAC9C,KAAOA,EAAIqhB,IAAMrhB,EAAG4F,EAAE5F,GAAK5J,EAAE4J,GAE7B,OAAO,SAASoF,GACd,IAAKpF,EAAI,EAAGA,EAAIshB,IAAMthB,EAAG4F,EAAE5F,GAAK9I,EAAE8I,GAAGoF,GACrC,OAAOQ,KCdI,iBACb,IAAIrG,EAAI,IAAIgiB,KACZ,OAAOprB,GAAKA,EAAGC,GAAKD,EAAG,SAASiP,GAC9B,OAAO7F,EAAEiiB,QAAQrrB,EAAIC,EAAIgP,GAAI7F,ICHlB,iBACb,OAAOpJ,GAAKA,EAAGC,GAAKD,EAAG,SAASiP,GAC9B,OAAOjP,EAAIC,EAAIgP,ICAJ,iBACb,IAEIxC,EAFA5C,EAAI,GACJ4F,EAAI,GAMR,IAAKhD,KAHK,OAANzM,GAA2B,kBAANA,IAAgBA,EAAI,IACnC,OAANC,GAA2B,kBAANA,IAAgBA,EAAI,IAEnCA,EACJwM,KAAKzM,EACP6J,EAAE4C,GAAK,GAAMzM,EAAEyM,GAAIxM,EAAEwM,IAErBgD,EAAEhD,GAAKxM,EAAEwM,GAIb,OAAO,SAASwC,GACd,IAAKxC,KAAK5C,EAAG4F,EAAEhD,GAAK5C,EAAE4C,GAAGwC,GACzB,OAAOQ,IClBP6b,GAAM,8CACNC,GAAM,IAAIrO,OAAOoO,GAAIE,OAAQ,KAEjC,SAAS,GAAKvrB,GACZ,OAAO,WACL,OAAOA,GAIX,SAASwrB,GAAIxrB,GACX,OAAO,SAASgP,GACd,OAAOhP,EAAEgP,GAAK,IAIH,ICfXyc,GACAC,GACAC,GACAC,GDYW,iBACb,IACIC,EACAC,EACAC,EAHAC,EAAKX,GAAIY,UAAYX,GAAIW,UAAY,EAIrCriB,GAAK,EACL2d,EAAI,GACJ2E,EAAI,GAGRnsB,GAAQ,GAAIC,GAAQ,GAGpB,OAAQ6rB,EAAKR,GAAI/yB,KAAKyH,MACd+rB,EAAKR,GAAIhzB,KAAK0H,KACf+rB,EAAKD,EAAG3tB,OAAS6tB,IACpBD,EAAK/rB,EAAEyJ,MAAMuiB,EAAID,GACbxE,EAAE3d,GAAI2d,EAAE3d,IAAMmiB,EACbxE,IAAI3d,GAAKmiB,IAEXF,EAAKA,EAAG,OAASC,EAAKA,EAAG,IACxBvE,EAAE3d,GAAI2d,EAAE3d,IAAMkiB,EACbvE,IAAI3d,GAAKkiB,GAEdvE,IAAI3d,GAAK,KACTsiB,EAAExc,KAAK,CAAC9F,EAAGA,EAAG9I,EAAG,GAAO+qB,EAAIC,MAE9BE,EAAKV,GAAIW,UAYX,OARID,EAAKhsB,EAAEpC,SACTmuB,EAAK/rB,EAAEyJ,MAAMuiB,GACTzE,EAAE3d,GAAI2d,EAAE3d,IAAMmiB,EACbxE,IAAI3d,GAAKmiB,GAKTxE,EAAE3pB,OAAS,EAAKsuB,EAAE,GACnBV,GAAIU,EAAE,GAAGprB,GACT,GAAKd,IACJA,EAAIksB,EAAEtuB,OAAQ,SAASoR,GACtB,IAAK,IAAWwK,EAAP5P,EAAI,EAAMA,EAAI5J,IAAK4J,EAAG2d,GAAG/N,EAAI0S,EAAEtiB,IAAIA,GAAK4P,EAAE1Y,EAAEkO,GACrD,OAAOuY,EAAEzsB,KAAK,OEpDT,iBACb,IAAkB0U,EAAdR,SAAWhP,EACf,OAAY,MAALA,GAAmB,YAANgP,EAAkB,GAAShP,IAClC,WAANgP,EAAiB,GACZ,WAANA,GAAmBQ,EAAI,GAAMxP,KAAOA,EAAIwP,EAAG,IAAO,GAClDxP,aAAa,GAAQ,GACrBA,aAAamrB,KAAO,GACpB9mB,MAAM8nB,QAAQnsB,GAAK,GACE,oBAAdA,EAAEosB,SAAgD,oBAAfpsB,EAAErE,UAA2BxB,MAAM6F,GAAK,GAClF,IAAQD,EAAGC,IClBJ,iBACb,OAAOD,GAAKA,EAAGC,GAAKD,EAAG,SAASiP,GAC9B,OAAO/W,KAAK6T,MAAM/L,EAAIC,EAAIgP,KCF1Bqd,GAAU,IAAMp0B,KAAKgwB,GAEd,GAAW,CACpBzc,WAAY,EACZC,WAAY,EACZ6gB,OAAQ,EACRC,MAAO,EACPC,OAAQ,EACRC,OAAQ,GAGK,sBAAA3zB,GACb,IAAI0zB,EAAQC,EAAQF,EAKpB,OAJIC,EAASv0B,KAAK+R,KAAKjK,EAAIA,EAAIC,EAAIA,MAAID,GAAKysB,EAAQxsB,GAAKwsB,IACrDD,EAAQxsB,EAAIyP,EAAIxP,EAAImJ,KAAGqG,GAAKzP,EAAIwsB,EAAOpjB,GAAKnJ,EAAIusB,IAChDE,EAASx0B,KAAK+R,KAAKwF,EAAIA,EAAIrG,EAAIA,MAAIqG,GAAKid,EAAQtjB,GAAKsjB,EAAQF,GAASE,GACtE1sB,EAAIoJ,EAAInJ,EAAIwP,IAAGzP,GAAKA,EAAGC,GAAKA,EAAGusB,GAASA,EAAOC,GAAUA,GACtD,CACLhhB,WAAYlN,EACZmN,WAAY3S,EACZwzB,OAAQr0B,KAAKmxB,MAAMppB,EAAGD,GAAKssB,GAC3BE,MAAOt0B,KAAKy0B,KAAKH,GAASF,GAC1BG,OAAQA,EACRC,OAAQA,IHhBL,SAASE,GAASlzB,GACvB,MAAc,SAAVA,EAAyB,IACxBgyB,KAASA,GAAU/nB,SAASoN,cAAc,OAAQ4a,GAAUhoB,SAASmN,gBAAiB8a,GAAUjoB,SAASgS,aAC9G+V,GAAQnoB,MAAMmJ,UAAYhT,EAC1BA,EAAQkyB,GAAQxV,iBAAiBuV,GAAQloB,YAAYioB,IAAU,MAAMvV,iBAAiB,aACtFwV,GAAQrT,YAAYoT,IACpBhyB,EAAQA,EAAMgQ,MAAM,GAAI,GAAGjB,MAAM,KAC1BokB,IAAWnzB,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,KAG1E,SAASozB,GAASpzB,GACvB,OAAa,MAATA,EAAsB,IACrBmyB,KAASA,GAAUloB,SAASqN,gBAAgB,6BAA8B,MAC/E6a,GAAQzW,aAAa,YAAa1b,IAC5BA,EAAQmyB,GAAQnf,UAAUqgB,QAAQC,gBACxCtzB,EAAQA,EAAMuzB,OACPJ,GAAUnzB,EAAMsG,EAAGtG,EAAMuG,EAAGvG,EAAM+V,EAAG/V,EAAM0P,EAAG1P,EAAM6E,EAAG7E,EAAMX,IAFL,IIlBjE,SAASm0B,GAAqBC,EAAOC,EAASC,EAASC,GAErD,SAASC,EAAI/F,GACX,OAAOA,EAAE3pB,OAAS2pB,EAAE+F,MAAQ,IAAM,GAGpC,SAASC,EAAUC,EAAIC,EAAIC,EAAIC,EAAIpG,EAAG2E,GACpC,GAAIsB,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAI/jB,EAAI2d,EAAE7X,KAAK,aAAc,KAAMyd,EAAS,KAAMC,GAClDlB,EAAExc,KAAK,CAAC9F,EAAGA,EAAI,EAAG9I,EAAG,GAAO0sB,EAAIE,IAAM,CAAC9jB,EAAGA,EAAI,EAAG9I,EAAG,GAAO2sB,EAAIE,UACtDD,GAAMC,IACfpG,EAAE7X,KAAK,aAAege,EAAKP,EAAUQ,EAAKP,GAI9C,SAASd,EAAOvsB,EAAGC,EAAGunB,EAAG2E,GACnBnsB,IAAMC,GACJD,EAAIC,EAAI,IAAKA,GAAK,IAAcA,EAAID,EAAI,MAAKA,GAAK,KACtDmsB,EAAExc,KAAK,CAAC9F,EAAG2d,EAAE7X,KAAK4d,EAAI/F,GAAK,UAAW,KAAM8F,GAAY,EAAGvsB,EAAG,GAAOf,EAAGC,MAC/DA,GACTunB,EAAE7X,KAAK4d,EAAI/F,GAAK,UAAYvnB,EAAIqtB,GAIpC,SAASd,EAAMxsB,EAAGC,EAAGunB,EAAG2E,GAClBnsB,IAAMC,EACRksB,EAAExc,KAAK,CAAC9F,EAAG2d,EAAE7X,KAAK4d,EAAI/F,GAAK,SAAU,KAAM8F,GAAY,EAAGvsB,EAAG,GAAOf,EAAGC,KAC9DA,GACTunB,EAAE7X,KAAK4d,EAAI/F,GAAK,SAAWvnB,EAAIqtB,GAInC,SAAS1hB,EAAM6hB,EAAIC,EAAIC,EAAIC,EAAIpG,EAAG2E,GAChC,GAAIsB,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAI/jB,EAAI2d,EAAE7X,KAAK4d,EAAI/F,GAAK,SAAU,KAAM,IAAK,KAAM,KACnD2E,EAAExc,KAAK,CAAC9F,EAAGA,EAAI,EAAG9I,EAAG,GAAO0sB,EAAIE,IAAM,CAAC9jB,EAAGA,EAAI,EAAG9I,EAAG,GAAO2sB,EAAIE,UAC/C,IAAPD,GAAmB,IAAPC,GACrBpG,EAAE7X,KAAK4d,EAAI/F,GAAK,SAAWmG,EAAK,IAAMC,EAAK,KAI/C,OAAO,SAAS5tB,EAAGC,GACjB,IAAIunB,EAAI,GACJ2E,EAAI,GAOR,OANAnsB,EAAImtB,EAAMntB,GAAIC,EAAIktB,EAAMltB,GACxButB,EAAUxtB,EAAEyL,WAAYzL,EAAE0L,WAAYzL,EAAEwL,WAAYxL,EAAEyL,WAAY8b,EAAG2E,GACrEI,EAAOvsB,EAAEusB,OAAQtsB,EAAEssB,OAAQ/E,EAAG2E,GAC9BK,EAAMxsB,EAAEwsB,MAAOvsB,EAAEusB,MAAOhF,EAAG2E,GAC3BvgB,EAAM5L,EAAEysB,OAAQzsB,EAAE0sB,OAAQzsB,EAAEwsB,OAAQxsB,EAAEysB,OAAQlF,EAAG2E,GACjDnsB,EAAIC,EAAI,KACD,SAASgP,GACd,IAA0BwK,EAAtB5P,GAAK,EAAGD,EAAIuiB,EAAEtuB,OAClB,QAASgM,EAAID,EAAG4d,GAAG/N,EAAI0S,EAAEtiB,IAAIA,GAAK4P,EAAE1Y,EAAEkO,GACtC,OAAOuY,EAAEzsB,KAAK,MAKb,IAAI8yB,GAA0BX,GAAqBN,GAAU,OAAQ,MAAO,QACxEkB,GAA0BZ,GAAqBJ,GAAU,KAAM,IAAK,KC9DrE50B,KAAK61B,MCGf,SAAS,GAAIC,GACX,OAAO,SAASrkB,EAAOghB,GACrB,IAAI1jB,EAAI+mB,GAAKrkB,EAAQ,GAASA,IAAQ1C,GAAI0jB,EAAM,GAASA,IAAM1jB,GAC3DugB,EAAI,GAAM7d,EAAM6d,EAAGmD,EAAInD,GACvBC,EAAI,GAAM9d,EAAM8d,EAAGkD,EAAIlD,GACvBH,EAAU,GAAM3d,EAAM2d,QAASqD,EAAIrD,SACvC,OAAO,SAASrY,GAKd,OAJAtF,EAAM1C,EAAIA,EAAEgI,GACZtF,EAAM6d,EAAIA,EAAEvY,GACZtF,EAAM8d,EAAIA,EAAExY,GACZtF,EAAM2d,QAAUA,EAAQrY,GACjBtF,EAAQ,KAKN,GAAI,IACE,GAAI,ICjBzB,SAAS,GAAIqkB,GACX,OAAO,SAASrkB,EAAOghB,GACrB,IAAI1jB,EAAI+mB,GAAKrkB,EAAQ,GAASA,IAAQ1C,GAAI0jB,EAAM,GAASA,IAAM1jB,GAC3DwI,EAAI,GAAM9F,EAAM8F,EAAGkb,EAAIlb,GACvBgY,EAAI,GAAM9d,EAAM8d,EAAGkD,EAAIlD,GACvBH,EAAU,GAAM3d,EAAM2d,QAASqD,EAAIrD,SACvC,OAAO,SAASrY,GAKd,OAJAtF,EAAM1C,EAAIA,EAAEgI,GACZtF,EAAM8F,EAAIA,EAAER,GACZtF,EAAM8d,EAAIA,EAAExY,GACZtF,EAAM2d,QAAUA,EAAQrY,GACjBtF,EAAQ,KAKN,GAAI,IACE,GAAI,ICjBzB,SAAS,GAAUqkB,GACjB,OAAO,SAAUC,EAAetiB,GAG9B,SAASuiB,EAAUvkB,EAAOghB,GACxB,IAAI1jB,EAAI+mB,GAAKrkB,EAAQ,GAAeA,IAAQ1C,GAAI0jB,EAAM,GAAeA,IAAM1jB,GACvEugB,EAAI,GAAM7d,EAAM6d,EAAGmD,EAAInD,GACvBC,EAAI,GAAM9d,EAAM8d,EAAGkD,EAAIlD,GACvBH,EAAU,GAAM3d,EAAM2d,QAASqD,EAAIrD,SACvC,OAAO,SAASrY,GAKd,OAJAtF,EAAM1C,EAAIA,EAAEgI,GACZtF,EAAM6d,EAAIA,EAAEvY,GACZtF,EAAM8d,EAAIA,EAAEvvB,KAAK0S,IAAIqE,EAAGtD,IACxBhC,EAAM2d,QAAUA,EAAQrY,GACjBtF,EAAQ,IAMnB,OAlBAgC,GAAKA,EAgBLuiB,EAAU1D,MAAQyD,EAEXC,EAnBF,CAoBJ,GAGU,GAAU,IAAV,IACJC,GAAgB,GAAU,IC5BtB,ICIXC,GACAC,GALA,GAAQ,EACRC,GAAU,EACV,GAAW,EACXC,GAAY,IAGZC,GAAY,EACZC,GAAW,EACXC,GAAY,EACZC,GAA+B,kBAAhBC,aAA4BA,YAAYC,IAAMD,YAAcxD,KAC3E0D,GAA6B,kBAAXtwB,QAAuBA,OAAOuwB,sBAAwBvwB,OAAOuwB,sBAAsBvnB,KAAKhJ,QAAU,SAASzF,GAAKi2B,WAAWj2B,EAAG,KAE7I,SAAS81B,KACd,OAAOJ,KAAaK,GAASG,IAAWR,GAAWE,GAAME,MAAQH,IAGnE,SAASO,KACPR,GAAW,EAGN,SAASS,KACd3zB,KAAK4zB,MACL5zB,KAAK6zB,MACL7zB,KAAKqX,MAAQ,KA0BR,SAASyc,GAAM3f,EAAU4f,EAAOC,GACrC,IAAItgB,EAAI,IAAIigB,GAEZ,OADAjgB,EAAEugB,QAAQ9f,EAAU4f,EAAOC,GACpBtgB,EAGF,SAASwgB,KACdZ,OACE,GACF,IAAkBtwB,EAAd0Q,EAAImf,GACR,MAAOnf,GACA1Q,EAAIkwB,GAAWxf,EAAEmgB,QAAU,GAAGngB,EAAEkgB,MAAM10B,KAAK,KAAM8D,GACtD0Q,EAAIA,EAAE2D,QAEN,GAGJ,SAAS8c,KACPjB,IAAYD,GAAYG,GAAME,OAASH,GACvC,GAAQJ,GAAU,EAClB,IACEmB,KACA,QACA,GAAQ,EACRE,KACAlB,GAAW,GAIf,SAASmB,KACP,IAAIf,EAAMF,GAAME,MAAOS,EAAQT,EAAML,GACjCc,EAAQf,KAAWG,IAAaY,EAAOd,GAAYK,GAGzD,SAASc,KACP,IAAIE,EAAmB1F,EAAfL,EAAKsE,GAAcmB,EAAO5vB,IAClC,MAAOmqB,EACDA,EAAGqF,OACDI,EAAOzF,EAAGsF,QAAOG,EAAOzF,EAAGsF,OAC/BS,EAAK/F,EAAIA,EAAKA,EAAGlX,QAEjBuX,EAAKL,EAAGlX,MAAOkX,EAAGlX,MAAQ,KAC1BkX,EAAK+F,EAAKA,EAAGjd,MAAQuX,EAAKiE,GAAWjE,GAGzCkE,GAAWwB,EACXC,GAAMP,GAGR,SAASO,GAAMP,GACb,IAAI,GAAJ,CACIjB,KAASA,GAAUyB,aAAazB,KACpC,IAAIgB,EAAQC,EAAOd,GACfa,EAAQ,IACNC,EAAO5vB,MAAU2uB,GAAUU,WAAWU,GAAMH,EAAOZ,GAAME,MAAQH,KACjE,KAAU,GAAWsB,cAAc,OAElC,KAAUxB,GAAYG,GAAME,MAAO,GAAWoB,YAAYL,GAAMrB,KACrE,GAAQ,EAAGO,GAASY,MAjFxBR,GAAM11B,UAAY61B,GAAM71B,UAAY,CAClCoW,YAAasf,GACbM,QAAS,SAAS9f,EAAU4f,EAAOC,GACjC,GAAwB,oBAAb7f,EAAyB,MAAM,IAAI1V,UAAU,8BACxDu1B,GAAgB,MAARA,EAAeV,MAASU,IAAkB,MAATD,EAAgB,GAAKA,GACzD/zB,KAAKqX,OAASyb,KAAa9yB,OAC1B8yB,GAAUA,GAASzb,MAAQrX,KAC1B6yB,GAAW7yB,KAChB8yB,GAAW9yB,MAEbA,KAAK4zB,MAAQzf,EACbnU,KAAK6zB,MAAQG,EACbO,MAEFtnB,KAAM,WACAjN,KAAK4zB,QACP5zB,KAAK4zB,MAAQ,KACb5zB,KAAK6zB,MAAQzvB,IACbmwB,QC1CS,uBACb,IAAI7gB,EAAI,IAAIigB,GAMZ,OALAI,EAAiB,MAATA,EAAgB,GAAKA,EAC7BrgB,EAAEugB,SAAQ,SAASU,GACjBjhB,EAAEzG,OACFkH,EAASwgB,EAAUZ,KAClBA,EAAOC,GACHtgB,GCNLkhB,GAAU,EAAS,QAAS,MAAO,SAAU,aAC7CC,GAAa,GAENC,GAAU,EACVC,GAAY,EACZC,GAAW,EACXC,GAAU,EACVC,GAAU,EACVC,GAAS,EACTC,GAAQ,EAEJ,yBACb,IAAIC,EAAYlf,EAAKmf,aACrB,GAAKD,GACA,GAAI90B,KAAM80B,EAAW,YADVlf,EAAKmf,aAAe,GAEpC,GAAOnf,EAAM5V,EAAI,CACfmJ,KAAMA,EACN7G,MAAOA,EACPwT,MAAOA,EACP/B,GAAIsgB,GACJW,MAAOV,GACPb,KAAMwB,EAAOxB,KACbD,MAAOyB,EAAOzB,MACd0B,SAAUD,EAAOC,SACjBC,KAAMF,EAAOE,KACb5B,MAAO,KACPxyB,MAAOwzB,MAIJ,SAAS,GAAK3e,EAAM5V,GACzB,IAAIo1B,EAAW,GAAIxf,EAAM5V,GACzB,GAAIo1B,EAASr0B,MAAQwzB,GAAS,MAAM,IAAInhB,MAAM,+BAC9C,OAAOgiB,EAGF,SAAS,GAAIxf,EAAM5V,GACxB,IAAIo1B,EAAW,GAAIxf,EAAM5V,GACzB,GAAIo1B,EAASr0B,MAAQ2zB,GAAS,MAAM,IAAIthB,MAAM,6BAC9C,OAAOgiB,EAGF,SAAS,GAAIxf,EAAM5V,GACxB,IAAIo1B,EAAWxf,EAAKmf,aACpB,IAAKK,KAAcA,EAAWA,EAASp1B,IAAM,MAAM,IAAIoT,MAAM,wBAC7D,OAAOgiB,EAGT,SAAS,GAAOxf,EAAM5V,EAAIq1B,GACxB,IACIL,EADAF,EAAYlf,EAAKmf,aAQrB,SAASK,EAAShB,GAChBiB,EAAKt0B,MAAQyzB,GACba,EAAK9B,MAAMG,QAAQ7lB,EAAOwnB,EAAK7B,MAAO6B,EAAK5B,MAGvC4B,EAAK7B,OAASY,GAASvmB,EAAMumB,EAAUiB,EAAK7B,OAGlD,SAAS3lB,EAAMumB,GACb,IAAIrmB,EAAG0B,EAAG3B,EAAG6P,EAGb,GAAI0X,EAAKt0B,QAAUyzB,GAAW,OAAO9nB,IAErC,IAAKqB,KAAK+mB,EAER,GADAnX,EAAImX,EAAU/mB,GACV4P,EAAExU,OAASksB,EAAKlsB,KAApB,CAKA,GAAIwU,EAAE5c,QAAU2zB,GAAS,OAAO,GAAQ7mB,GAGpC8P,EAAE5c,QAAU4zB,IACdhX,EAAE5c,MAAQ8zB,GACVlX,EAAE4V,MAAM7mB,OACRiR,EAAE5J,GAAGpV,KAAK,YAAaiX,EAAMA,EAAKI,SAAU2H,EAAErb,MAAOqb,EAAE7H,cAChDgf,EAAU/mB,KAITA,EAAI/N,IACZ2d,EAAE5c,MAAQ8zB,GACVlX,EAAE4V,MAAM7mB,OACRiR,EAAE5J,GAAGpV,KAAK,SAAUiX,EAAMA,EAAKI,SAAU2H,EAAErb,MAAOqb,EAAE7H,cAC7Cgf,EAAU/mB,IAoBrB,GAZA,IAAQ,WACFsnB,EAAKt0B,QAAU2zB,KACjBW,EAAKt0B,MAAQ4zB,GACbU,EAAK9B,MAAMG,QAAQjiB,EAAM4jB,EAAK7B,MAAO6B,EAAK5B,MAC1ChiB,EAAK2iB,OAMTiB,EAAKt0B,MAAQ0zB,GACbY,EAAKthB,GAAGpV,KAAK,QAASiX,EAAMA,EAAKI,SAAUqf,EAAK/yB,MAAO+yB,EAAKvf,OACxDuf,EAAKt0B,QAAU0zB,GAAnB,CAKA,IAJAY,EAAKt0B,MAAQ2zB,GAGbM,EAAQ,IAAIxsB,MAAMsF,EAAIunB,EAAKL,MAAMjzB,QAC5BgM,EAAI,EAAG0B,GAAK,EAAG1B,EAAID,IAAKC,GACvB4P,EAAI0X,EAAKL,MAAMjnB,GAAGnQ,MAAMe,KAAKiX,EAAMA,EAAKI,SAAUqf,EAAK/yB,MAAO+yB,EAAKvf,UACrEkf,IAAQvlB,GAAKkO,GAGjBqX,EAAMjzB,OAAS0N,EAAI,GAGrB,SAASgC,EAAK2iB,GACZ,IAAIjhB,EAAIihB,EAAUiB,EAAKH,SAAWG,EAAKF,KAAKx2B,KAAK,KAAMy1B,EAAUiB,EAAKH,WAAaG,EAAK9B,MAAMG,QAAQhnB,GAAO2oB,EAAKt0B,MAAQ6zB,GAAQ,GAC9H7mB,GAAK,EACLD,EAAIknB,EAAMjzB,OAEd,QAASgM,EAAID,EACXknB,EAAMjnB,GAAGpP,KAAKiX,EAAMzC,GAIlBkiB,EAAKt0B,QAAU6zB,KACjBS,EAAKthB,GAAGpV,KAAK,MAAOiX,EAAMA,EAAKI,SAAUqf,EAAK/yB,MAAO+yB,EAAKvf,OAC1DpJ,KAIJ,SAASA,IAIP,IAAK,IAAIqB,KAHTsnB,EAAKt0B,MAAQ8zB,GACbQ,EAAK9B,MAAM7mB,cACJooB,EAAU90B,GACH80B,EAAW,cAClBlf,EAAKmf,aA7FdD,EAAU90B,GAAMq1B,EAChBA,EAAK9B,MAAQA,GAAM6B,EAAU,EAAGC,EAAK5B,MCxDxB,qBACb,IACI2B,EACAhV,EAEArS,EAJA+mB,EAAYlf,EAAKmf,aAGjBzV,GAAQ,EAGZ,GAAKwV,EAAL,CAIA,IAAK/mB,KAFL5E,EAAe,MAARA,EAAe,KAAOA,EAAO,GAE1B2rB,GACHM,EAAWN,EAAU/mB,IAAI5E,OAASA,GACvCiX,EAASgV,EAASr0B,MAAQ0zB,IAAYW,EAASr0B,MAAQ6zB,GACvDQ,EAASr0B,MAAQ8zB,GACjBO,EAAS7B,MAAM7mB,OACf0oB,EAASrhB,GAAGpV,KAAKyhB,EAAS,YAAc,SAAUxK,EAAMA,EAAKI,SAAUof,EAAS9yB,MAAO8yB,EAAStf,cACzFgf,EAAU/mB,IAL8BuR,GAAQ,EAQrDA,UAAc1J,EAAKmf,eCpBV,eACb,OAAOt1B,KAAKmT,MAAK,WACf0iB,GAAU71B,KAAM0J,OCFpB,SAASosB,GAAYv1B,EAAImJ,GACvB,IAAIqsB,EAAQC,EACZ,OAAO,WACL,IAAIL,EAAW,GAAI31B,KAAMO,GACrBg1B,EAAQI,EAASJ,MAKrB,GAAIA,IAAUQ,EAAQ,CACpBC,EAASD,EAASR,EAClB,IAAK,IAAIjnB,EAAI,EAAGD,EAAI2nB,EAAO1zB,OAAQgM,EAAID,IAAKC,EAC1C,GAAI0nB,EAAO1nB,GAAG5E,OAASA,EAAM,CAC3BssB,EAASA,EAAO7nB,QAChB6nB,EAAOna,OAAOvN,EAAG,GACjB,OAKNqnB,EAASJ,MAAQS,GAIrB,SAASC,GAAc11B,EAAImJ,EAAMvL,GAC/B,IAAI43B,EAAQC,EACZ,GAAqB,oBAAV73B,EAAsB,MAAM,IAAIwV,MAC3C,OAAO,WACL,IAAIgiB,EAAW,GAAI31B,KAAMO,GACrBg1B,EAAQI,EAASJ,MAKrB,GAAIA,IAAUQ,EAAQ,CACpBC,GAAUD,EAASR,GAAOpnB,QAC1B,IAAK,IAAIuF,EAAI,CAAChK,KAAMA,EAAMvL,MAAOA,GAAQmQ,EAAI,EAAGD,EAAI2nB,EAAO1zB,OAAQgM,EAAID,IAAKC,EAC1E,GAAI0nB,EAAO1nB,GAAG5E,OAASA,EAAM,CAC3BssB,EAAO1nB,GAAKoF,EACZ,MAGApF,IAAMD,GAAG2nB,EAAO5hB,KAAKV,GAG3BiiB,EAASJ,MAAQS,GAIN,qBACb,IAAIz1B,EAAKP,KAAKk2B,IAId,GAFAxsB,GAAQ,GAEJrH,UAAUC,OAAS,EAAG,CAExB,IADA,IACkCoR,EAD9B6hB,EAAQ,GAAIv1B,KAAKmW,OAAQ5V,GAAIg1B,MACxBjnB,EAAI,EAAGD,EAAIknB,EAAMjzB,OAAWgM,EAAID,IAAKC,EAC5C,IAAKoF,EAAI6hB,EAAMjnB,IAAI5E,OAASA,EAC1B,OAAOgK,EAAEvV,MAGb,OAAO,KAGT,OAAO6B,KAAKmT,MAAe,MAAThV,EAAgB23B,GAAcG,IAAe11B,EAAImJ,EAAMvL,KAGpE,SAASg4B,GAAWtjB,EAAYnJ,EAAMvL,GAC3C,IAAIoC,EAAKsS,EAAWqjB,IAOpB,OALArjB,EAAWM,MAAK,WACd,IAAIwiB,EAAW,GAAI31B,KAAMO,IACxBo1B,EAASx3B,QAAUw3B,EAASx3B,MAAQ,KAAKuL,GAAQvL,EAAMkT,MAAMrR,KAAMqC,cAG/D,SAAS8T,GACd,OAAO,GAAIA,EAAM5V,GAAIpC,MAAMuL,IC3EhB,qBACb,IAAIwK,EACJ,OAAqB,kBAANxP,EAAiB,GAC1BA,aAAa,GAAQ,IACpBwP,EAAI,GAAMxP,KAAOA,EAAIwP,EAAG,IACzB,IAAmBzP,EAAGC,ICH9B,SAAS,GAAWgF,GAClB,OAAO,WACL1J,KAAKyZ,gBAAgB/P,IAIzB,SAAS,GAAaiM,GACpB,OAAO,WACL3V,KAAK2Z,kBAAkBhE,EAASV,MAAOU,EAAST,QAIpD,SAAS,GAAaxL,EAAM0sB,EAAaC,GACvC,IAAIC,EAEAC,EADAC,EAAUH,EAAS,GAEvB,OAAO,WACL,IAAII,EAAUz2B,KAAK8S,aAAapJ,GAChC,OAAO+sB,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAeH,EAAYE,EAAWG,EAASJ,IAIzD,SAAS,GAAe1gB,EAAUygB,EAAaC,GAC7C,IAAIC,EAEAC,EADAC,EAAUH,EAAS,GAEvB,OAAO,WACL,IAAII,EAAUz2B,KAAKma,eAAexE,EAASV,MAAOU,EAAST,OAC3D,OAAOuhB,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAeH,EAAYE,EAAWG,EAASJ,IAIzD,SAAS,GAAa3sB,EAAM0sB,EAAaj4B,GACvC,IAAIm4B,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAA+BD,EAAtBH,EAASl4B,EAAM6B,MAC5B,GAAc,MAAVq2B,EAGJ,OAFAI,EAAUz2B,KAAK8S,aAAapJ,GAC5B8sB,EAAUH,EAAS,GACZI,IAAYD,EAAU,KACvBC,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAeH,EAAYE,EAAWG,EAASJ,IAL1Cr2B,KAAKyZ,gBAAgB/P,IASzD,SAAS,GAAeiM,EAAUygB,EAAaj4B,GAC7C,IAAIm4B,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAA+BD,EAAtBH,EAASl4B,EAAM6B,MAC5B,GAAc,MAAVq2B,EAGJ,OAFAI,EAAUz2B,KAAKma,eAAexE,EAASV,MAAOU,EAAST,OACvDshB,EAAUH,EAAS,GACZI,IAAYD,EAAU,KACvBC,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAeH,EAAYE,EAAWG,EAASJ,IAL1Cr2B,KAAK2Z,kBAAkBhE,EAASV,MAAOU,EAAST,QASrE,qBACb,IAAIS,EAAWC,EAAUlM,GAAO4E,EAAiB,cAAbqH,EAA2B,GAAuB,GACtF,OAAO3V,KAAK22B,UAAUjtB,EAAuB,oBAAVvL,GAC5BwX,EAAST,MAAQ,GAAiB,IAAcS,EAAUrH,EAAG6nB,GAAWn2B,KAAM,QAAU0J,EAAMvL,IACtF,MAATA,GAAiBwX,EAAST,MAAQ,GAAe,IAAYS,IAC5DA,EAAST,MAAQ,GAAiB,IAAcS,EAAUrH,EAAGnQ,KC1EtE,SAASy4B,GAAgBltB,EAAM4E,GAC7B,OAAO,SAASoF,GACd1T,KAAK6Z,aAAanQ,EAAM4E,EAAEoF,KAI9B,SAASmjB,GAAkBlhB,EAAUrH,GACnC,OAAO,SAASoF,GACd1T,KAAK+Z,eAAepE,EAASV,MAAOU,EAAST,MAAO5G,EAAEoF,KAI1D,SAASojB,GAAYnhB,EAAUxX,GAC7B,IAAIm2B,EAAIhc,EACR,SAASid,IACP,IAAIjnB,EAAInQ,EAAMkT,MAAMrR,KAAMqC,WAE1B,OADIiM,IAAMgK,IAAIgc,GAAMhc,EAAKhK,IAAMuoB,GAAkBlhB,EAAUrH,IACpDgmB,EAGT,OADAiB,EAAMwB,OAAS54B,EACRo3B,EAGT,SAASoB,GAAUjtB,EAAMvL,GACvB,IAAIm2B,EAAIhc,EACR,SAASid,IACP,IAAIjnB,EAAInQ,EAAMkT,MAAMrR,KAAMqC,WAE1B,OADIiM,IAAMgK,IAAIgc,GAAMhc,EAAKhK,IAAMsoB,GAAgBltB,EAAM4E,IAC9CgmB,EAGT,OADAiB,EAAMwB,OAAS54B,EACRo3B,EAGM,qBACb,IAAI70B,EAAM,QAAUgJ,EACpB,GAAIrH,UAAUC,OAAS,EAAG,OAAQ5B,EAAMV,KAAKu1B,MAAM70B,KAASA,EAAIq2B,OAChE,GAAa,MAAT54B,EAAe,OAAO6B,KAAKu1B,MAAM70B,EAAK,MAC1C,GAAqB,oBAAVvC,EAAsB,MAAM,IAAIwV,MAC3C,IAAIgC,EAAWC,EAAUlM,GACzB,OAAO1J,KAAKu1B,MAAM70B,GAAMiV,EAAST,MAAQ4hB,GAAcH,IAAWhhB,EAAUxX,KCxC9E,SAAS64B,GAAcz2B,EAAIpC,GACzB,OAAO,WACL,GAAK6B,KAAMO,GAAIwzB,OAAS51B,EAAMkT,MAAMrR,KAAMqC,YAI9C,SAAS40B,GAAc12B,EAAIpC,GACzB,OAAOA,GAASA,EAAO,WACrB,GAAK6B,KAAMO,GAAIwzB,MAAQ51B,GAIZ,mBACb,IAAIoC,EAAKP,KAAKk2B,IAEd,OAAO7zB,UAAUC,OACXtC,KAAKmT,MAAuB,oBAAVhV,EACd64B,GACAC,IAAe12B,EAAIpC,IACvB,GAAI6B,KAAKmW,OAAQ5V,GAAIwzB,OCnB7B,SAASmD,GAAiB32B,EAAIpC,GAC5B,OAAO,WACL,GAAI6B,KAAMO,GAAIk1B,UAAYt3B,EAAMkT,MAAMrR,KAAMqC,YAIhD,SAAS80B,GAAiB52B,EAAIpC,GAC5B,OAAOA,GAASA,EAAO,WACrB,GAAI6B,KAAMO,GAAIk1B,SAAWt3B,GAId,mBACb,IAAIoC,EAAKP,KAAKk2B,IAEd,OAAO7zB,UAAUC,OACXtC,KAAKmT,MAAuB,oBAAVhV,EACd+4B,GACAC,IAAkB52B,EAAIpC,IAC1B,GAAI6B,KAAKmW,OAAQ5V,GAAIk1B,UCnB7B,SAAS2B,GAAa72B,EAAIpC,GACxB,GAAqB,oBAAVA,EAAsB,MAAM,IAAIwV,MAC3C,OAAO,WACL,GAAI3T,KAAMO,GAAIm1B,KAAOv3B,GAIV,mBACb,IAAIoC,EAAKP,KAAKk2B,IAEd,OAAO7zB,UAAUC,OACXtC,KAAKmT,KAAKikB,GAAa72B,EAAIpC,IAC3B,GAAI6B,KAAKmW,OAAQ5V,GAAIm1B,MCXd,eACQ,oBAAV5e,IAAsBA,EAAQC,EAAQD,IAEjD,IAAK,IAAId,EAAShW,KAAKiW,QAASrG,EAAIoG,EAAO1T,OAAQ4T,EAAY,IAAInN,MAAM6G,GAAII,EAAI,EAAGA,EAAIJ,IAAKI,EAC3F,IAAK,IAAuEmG,EAAnEE,EAAQL,EAAOhG,GAAI3B,EAAIgI,EAAM/T,OAAQgU,EAAWJ,EAAUlG,GAAK,GAAU1B,EAAI,EAAGA,EAAID,IAAKC,GAC3F6H,EAAOE,EAAM/H,KAAOwI,EAAM5X,KAAKiX,EAAMA,EAAKI,SAAUjI,EAAG+H,IAC1DC,EAASlC,KAAK+B,GAKpB,OAAO,IAAIkhB,GAAWnhB,EAAWlW,KAAKyW,SAAUzW,KAAKs3B,MAAOt3B,KAAKk2B,MCZpD,eACb,GAAIrjB,EAAWqjB,MAAQl2B,KAAKk2B,IAAK,MAAM,IAAIviB,MAE3C,IAAK,IAAIiF,EAAU5Y,KAAKiW,QAAS4C,EAAUhG,EAAWoD,QAAS6C,EAAKF,EAAQtW,OAAQyW,EAAKF,EAAQvW,OAAQsN,EAAIjT,KAAKD,IAAIoc,EAAIC,GAAKC,EAAS,IAAIjQ,MAAM+P,GAAK9I,EAAI,EAAGA,EAAIJ,IAAKI,EACrK,IAAK,IAAmGmG,EAA/F8C,EAASL,EAAQ5I,GAAIkJ,EAASL,EAAQ7I,GAAI3B,EAAI4K,EAAO3W,OAAQqQ,EAAQqG,EAAOhJ,GAAK,IAAIjH,MAAMsF,GAAUC,EAAI,EAAGA,EAAID,IAAKC,GACxH6H,EAAO8C,EAAO3K,IAAM4K,EAAO5K,MAC7BqE,EAAMrE,GAAK6H,GAKjB,KAAOnG,EAAI8I,IAAM9I,EACfgJ,EAAOhJ,GAAK4I,EAAQ5I,GAGtB,OAAO,IAAIqnB,GAAWre,EAAQhZ,KAAKyW,SAAUzW,KAAKs3B,MAAOt3B,KAAKk2B,MCfhE,SAAS,GAAMxsB,GACb,OAAQA,EAAO,IAAI3F,OAAOmJ,MAAM,SAASqqB,OAAM,SAAS7jB,GACtD,IAAIpF,EAAIoF,EAAEM,QAAQ,KAElB,OADI1F,GAAK,IAAGoF,EAAIA,EAAEvF,MAAM,EAAGG,KACnBoF,GAAW,UAANA,KAIjB,SAAS8jB,GAAWj3B,EAAImJ,EAAM+T,GAC5B,IAAIga,EAAKC,EAAKC,EAAM,GAAMjuB,GAAQ,GAAO,GACzC,OAAO,WACL,IAAIisB,EAAWgC,EAAI33B,KAAMO,GACrB+T,EAAKqhB,EAASrhB,GAKdA,IAAOmjB,IAAMC,GAAOD,EAAMnjB,GAAI3C,QAAQ2C,GAAG5K,EAAM+T,GAEnDkY,EAASrhB,GAAKojB,GAIH,qBACb,IAAIn3B,EAAKP,KAAKk2B,IAEd,OAAO7zB,UAAUC,OAAS,EACpB,GAAItC,KAAKmW,OAAQ5V,GAAI+T,GAAGA,GAAG5K,GAC3B1J,KAAKmT,KAAKqkB,GAAWj3B,EAAImJ,EAAM+T,KC9BvC,SAASma,GAAer3B,GACtB,OAAO,WACL,IAAIyK,EAAShL,KAAKgT,WAClB,IAAK,IAAI1E,KAAKtO,KAAKs1B,aAAc,IAAKhnB,IAAM/N,EAAI,OAC5CyK,GAAQA,EAAO+R,YAAY/c,OAIpB,kBACb,OAAOA,KAAKsU,GAAG,aAAcsjB,GAAe53B,KAAKk2B,OCLpC,eACb,IAAIxsB,EAAO1J,KAAKs3B,MACZ/2B,EAAKP,KAAKk2B,IAEQ,oBAAXzjB,IAAuBA,EAAS,EAASA,IAEpD,IAAK,IAAIuD,EAAShW,KAAKiW,QAASrG,EAAIoG,EAAO1T,OAAQ4T,EAAY,IAAInN,MAAM6G,GAAII,EAAI,EAAGA,EAAIJ,IAAKI,EAC3F,IAAK,IAAiFmG,EAAMC,EAAnFC,EAAQL,EAAOhG,GAAI3B,EAAIgI,EAAM/T,OAAQgU,EAAWJ,EAAUlG,GAAK,IAAIjH,MAAMsF,GAAmBC,EAAI,EAAGA,EAAID,IAAKC,GAC9G6H,EAAOE,EAAM/H,MAAQ8H,EAAU3D,EAAOvT,KAAKiX,EAAMA,EAAKI,SAAUjI,EAAG+H,MAClE,aAAcF,IAAMC,EAAQG,SAAWJ,EAAKI,UAChDD,EAAShI,GAAK8H,EACd,GAASE,EAAShI,GAAI5E,EAAMnJ,EAAI+N,EAAGgI,EAAU,GAAIH,EAAM5V,KAK7D,OAAO,IAAI82B,GAAWnhB,EAAWlW,KAAKyW,SAAU/M,EAAMnJ,IChBzC,eACb,IAAImJ,EAAO1J,KAAKs3B,MACZ/2B,EAAKP,KAAKk2B,IAEQ,oBAAXzjB,IAAuBA,EAASkE,EAAYlE,IAEvD,IAAK,IAAIuD,EAAShW,KAAKiW,QAASrG,EAAIoG,EAAO1T,OAAQ4T,EAAY,GAAIU,EAAU,GAAI5G,EAAI,EAAGA,EAAIJ,IAAKI,EAC/F,IAAK,IAAyCmG,EAArCE,EAAQL,EAAOhG,GAAI3B,EAAIgI,EAAM/T,OAAcgM,EAAI,EAAGA,EAAID,IAAKC,EAClE,GAAI6H,EAAOE,EAAM/H,GAAI,CACnB,IAAK,IAA2DiJ,EAAvDsgB,EAAWplB,EAAOvT,KAAKiX,EAAMA,EAAKI,SAAUjI,EAAG+H,GAAeyhB,EAAU,GAAI3hB,EAAM5V,GAAK2Q,EAAI,EAAGgb,EAAI2L,EAASv1B,OAAQ4O,EAAIgb,IAAKhb,GAC/HqG,EAAQsgB,EAAS3mB,KACnB,GAASqG,EAAO7N,EAAMnJ,EAAI2Q,EAAG2mB,EAAUC,GAG3C5hB,EAAU9B,KAAKyjB,GACfjhB,EAAQxC,KAAK+B,GAKnB,OAAO,IAAIkhB,GAAWnhB,EAAWU,EAASlN,EAAMnJ,ICtB9C,GAAY,GAAUtC,UAAUoW,YAErB,cACb,OAAO,IAAI,GAAUrU,KAAKiW,QAASjW,KAAKyW,WCC1C,SAASshB,GAAUruB,EAAM0sB,GACvB,IAAIE,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAAU,GAAMz2B,KAAM0J,GACtB8sB,GAAWx2B,KAAKgI,MAAMsS,eAAe5Q,GAAO,GAAM1J,KAAM0J,IAC5D,OAAO+sB,IAAYD,EAAU,KACvBC,IAAYH,GAAYE,IAAYE,EAAWH,EAC/CA,EAAeH,EAAYE,EAAWG,EAASC,EAAWF,IAIpE,SAAS,GAAY9sB,GACnB,OAAO,WACL1J,KAAKgI,MAAMsS,eAAe5Q,IAI9B,SAAS,GAAcA,EAAM0sB,EAAaC,GACxC,IAAIC,EAEAC,EADAC,EAAUH,EAAS,GAEvB,OAAO,WACL,IAAII,EAAU,GAAMz2B,KAAM0J,GAC1B,OAAO+sB,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAeH,EAAYE,EAAWG,EAASJ,IAIzD,SAAS,GAAc3sB,EAAM0sB,EAAaj4B,GACxC,IAAIm4B,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAAU,GAAMz2B,KAAM0J,GACtB2sB,EAASl4B,EAAM6B,MACfw2B,EAAUH,EAAS,GAEvB,OADc,MAAVA,IAAoCr2B,KAAKgI,MAAMsS,eAAe5Q,GAA9C8sB,EAAUH,EAA2C,GAAMr2B,KAAM0J,IAC9E+sB,IAAYD,EAAU,KACvBC,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAeH,EAAYE,EAAWG,EAASJ,KAI9E,SAAS2B,GAAiBz3B,EAAImJ,GAC5B,IAAI+tB,EAAKC,EAAKO,EAAwDhlB,EAA7CvS,EAAM,SAAWgJ,EAAMiU,EAAQ,OAASjd,EACjE,OAAO,WACL,IAAIi1B,EAAW,GAAI31B,KAAMO,GACrB+T,EAAKqhB,EAASrhB,GACdmJ,EAAkC,MAAvBkY,EAASx3B,MAAMuC,GAAeuS,IAAWA,EAAS,GAAYvJ,SAASlL,EAKlF8V,IAAOmjB,GAAOQ,IAAcxa,IAAWia,GAAOD,EAAMnjB,GAAI3C,QAAQ2C,GAAGqJ,EAAOsa,EAAYxa,GAE1FkY,EAASrhB,GAAKojB,GAIH,uBACb,IAAIppB,EAAqB,eAAhB5E,GAAQ,IAAsB,GAAuB,GAC9D,OAAgB,MAATvL,EAAgB6B,KAClBk4B,WAAWxuB,EAAMquB,GAAUruB,EAAM4E,IACjCgG,GAAG,aAAe5K,EAAM,GAAYA,IACpB,oBAAVvL,EAAuB6B,KAC7Bk4B,WAAWxuB,EAAM,GAAcA,EAAM4E,EAAG6nB,GAAWn2B,KAAM,SAAW0J,EAAMvL,KAC1EgV,KAAK6kB,GAAiBh4B,KAAKk2B,IAAKxsB,IACjC1J,KACCk4B,WAAWxuB,EAAM,GAAcA,EAAM4E,EAAGnQ,GAAQqc,GAChDlG,GAAG,aAAe5K,EAAM,OC9E/B,SAASyuB,GAAiBzuB,EAAM4E,EAAGkM,GACjC,OAAO,SAAS9G,GACd1T,KAAKgI,MAAMyS,YAAY/Q,EAAM4E,EAAEoF,GAAI8G,IAIvC,SAAS0d,GAAWxuB,EAAMvL,EAAOqc,GAC/B,IAAI9G,EAAG4E,EACP,SAASid,IACP,IAAIjnB,EAAInQ,EAAMkT,MAAMrR,KAAMqC,WAE1B,OADIiM,IAAMgK,IAAI5E,GAAK4E,EAAKhK,IAAM6pB,GAAiBzuB,EAAM4E,EAAGkM,IACjD9G,EAGT,OADA6hB,EAAMwB,OAAS54B,EACRo3B,EAGM,uBACb,IAAI70B,EAAM,UAAYgJ,GAAQ,IAC9B,GAAIrH,UAAUC,OAAS,EAAG,OAAQ5B,EAAMV,KAAKu1B,MAAM70B,KAASA,EAAIq2B,OAChE,GAAa,MAAT54B,EAAe,OAAO6B,KAAKu1B,MAAM70B,EAAK,MAC1C,GAAqB,oBAAVvC,EAAsB,MAAM,IAAIwV,MAC3C,OAAO3T,KAAKu1B,MAAM70B,EAAKw3B,GAAWxuB,EAAMvL,EAAmB,MAAZqc,EAAmB,GAAKA,KCpBzE,SAAS,GAAarc,GACpB,OAAO,WACL6B,KAAKgc,YAAc7d,GAIvB,SAAS,GAAaA,GACpB,OAAO,WACL,IAAIk4B,EAASl4B,EAAM6B,MACnBA,KAAKgc,YAAwB,MAAVqa,EAAiB,GAAKA,GAI9B,mBACb,OAAOr2B,KAAKu1B,MAAM,OAAyB,oBAAVp3B,EAC3B,GAAag4B,GAAWn2B,KAAM,OAAQ7B,IACtC,GAAsB,MAATA,EAAgB,GAAKA,EAAQ,MCfnC,cAKb,IAJA,IAAIuL,EAAO1J,KAAKs3B,MACZc,EAAMp4B,KAAKk2B,IACXmC,EAAMC,KAEDtiB,EAAShW,KAAKiW,QAASrG,EAAIoG,EAAO1T,OAAQ0N,EAAI,EAAGA,EAAIJ,IAAKI,EACjE,IAAK,IAAyCmG,EAArCE,EAAQL,EAAOhG,GAAI3B,EAAIgI,EAAM/T,OAAcgM,EAAI,EAAGA,EAAID,IAAKC,EAClE,GAAI6H,EAAOE,EAAM/H,GAAI,CACnB,IAAIwpB,EAAU,GAAI3hB,EAAMiiB,GACxB,GAASjiB,EAAMzM,EAAM2uB,EAAK/pB,EAAG+H,EAAO,CAClC2d,KAAM8D,EAAQ9D,KAAO8D,EAAQ/D,MAAQ+D,EAAQrC,SAC7C1B,MAAO,EACP0B,SAAUqC,EAAQrC,SAClBC,KAAMoC,EAAQpC,OAMtB,OAAO,IAAI2B,GAAWrhB,EAAQhW,KAAKyW,SAAU/M,EAAM2uB,ICpBtC,cACb,IAAIZ,EAAKC,EAAKjrB,EAAOzM,KAAMO,EAAKkM,EAAKypB,IAAKje,EAAOxL,EAAKwL,OACtD,OAAO,IAAIsgB,SAAQ,SAASC,EAASC,GACnC,IAAIC,EAAS,CAACv6B,MAAOs6B,GACjBrJ,EAAM,CAACjxB,MAAO,WAA4B,MAAT8Z,GAAYugB,MAEjD/rB,EAAK0G,MAAK,WACR,IAAIwiB,EAAW,GAAI31B,KAAMO,GACrB+T,EAAKqhB,EAASrhB,GAKdA,IAAOmjB,IACTC,GAAOD,EAAMnjB,GAAI3C,OACjB+lB,EAAItkB,EAAEslB,OAAOtkB,KAAKskB,GAClBhB,EAAItkB,EAAEyiB,UAAUzhB,KAAKskB,GACrBhB,EAAItkB,EAAEgc,IAAIhb,KAAKgb,IAGjBuG,EAASrhB,GAAKojB,SCFhB,GAAK,EAEF,SAASL,GAAWrhB,EAAQY,EAASlN,EAAMnJ,GAChDP,KAAKiW,QAAUD,EACfhW,KAAKyW,SAAWG,EAChB5W,KAAKs3B,MAAQ5tB,EACb1J,KAAKk2B,IAAM31B,EAGE,SAAS,GAAWmJ,GACjC,OAAO,KAAYmJ,WAAWnJ,GAGzB,SAAS4uB,KACd,QAAS,GAGX,IAAIK,GAAsB,GAAU16B,UC7B7B,SAAS26B,GAAWllB,GACzB,QAASA,GAAK,IAAM,EAAIA,EAAIA,EAAIA,GAAKA,GAAK,GAAKA,EAAIA,EAAI,GAAK,ED8B9D2jB,GAAWp5B,UAAY,GAAWA,UAAY,CAC5CoW,YAAagjB,GACb5kB,OAAQomB,GACR/mB,UAAWgnB,GACX5lB,OAAQ6lB,GACRpmB,MAAOqmB,GACPpnB,UAAWqnB,GACXpmB,WAAYqmB,GACZh6B,KAAMy5B,GAAoBz5B,KAC1Bqa,MAAOof,GAAoBpf,MAC3BpD,KAAMwiB,GAAoBxiB,KAC1B8B,KAAM0gB,GAAoB1gB,KAC1B4H,MAAO8Y,GAAoB9Y,MAC3B1M,KAAMwlB,GAAoBxlB,KAC1BmB,GAAI6kB,GACJ5mB,KAAM6mB,GACNzC,UAAW0C,GACXrxB,MAAOsxB,GACPpB,WAAYqB,GACZ7mB,KAAM8mB,GACNvmB,OAAQwmB,GACRlE,MAAOmE,GACP3F,MAAO4F,GACPlE,SAAUmE,GACVlE,KAAM,GACNtG,IAAKyK,IEhEP,IAAI,GAAW,GAEK,SAAUC,EAAO92B,GAGnC,SAAS+2B,EAAOrmB,GACd,OAAO/W,KAAK0S,IAAIqE,EAAG1Q,GAKrB,OARAA,GAAKA,EAML+2B,EAAOC,SAAWF,EAEXC,GATW,CAUjB,IAEkB,SAAUD,EAAO92B,GAGpC,SAASi3B,EAAQvmB,GACf,OAAO,EAAI/W,KAAK0S,IAAI,EAAIqE,EAAG1Q,GAK7B,OARAA,GAAKA,EAMLi3B,EAAQD,SAAWF,EAEZG,EATY,CAUlB,IAEoB,SAAUH,EAAO92B,GAGtC,SAASk3B,EAAUxmB,GACjB,QAASA,GAAK,IAAM,EAAI/W,KAAK0S,IAAIqE,EAAG1Q,GAAK,EAAIrG,KAAK0S,IAAI,EAAIqE,EAAG1Q,IAAM,EAKrE,OARAA,GAAKA,EAMLk3B,EAAUF,SAAWF,EAEdI,EATc,CAUpB,ICpCMv9B,KAAKgwB,GCAd,IAAIwN,GAAY,QCAZC,IDEgB,SAAUN,EAAO7N,GAGnC,SAASoO,EAAO3mB,GACd,OAAOA,EAAIA,IAAMuY,EAAI,GAAKvY,EAAIuY,GAKhC,OARAA,GAAKA,EAMLoO,EAAOF,UAAYL,EAEZO,EATW,CAUjBF,IAEkB,SAAUL,EAAO7N,GAGpC,SAASqO,EAAQ5mB,GACf,QAASA,EAAIA,IAAMuY,EAAI,GAAKvY,EAAIuY,GAAK,EAKvC,OARAA,GAAKA,EAMLqO,EAAQH,UAAYL,EAEbQ,EATY,CAUlBH,IAEoB,SAAUL,EAAO7N,GAGtC,SAASsO,EAAU7mB,GACjB,QAASA,GAAK,GAAK,EAAIA,EAAIA,IAAMuY,EAAI,GAAKvY,EAAIuY,IAAMvY,GAAK,GAAKA,IAAMuY,EAAI,GAAKvY,EAAIuY,GAAK,GAAK,EAK7F,OARAA,GAAKA,EAMLsO,EAAUJ,UAAYL,EAEfS,EATc,CAUpBJ,ICpCO,EAAIx9B,KAAKgwB,IACf6N,GAAY,EACZC,GAAS,GCGTC,IDDmB,SAAUZ,EAAOr1B,EAAGsO,GACzC,IAAIkZ,EAAItvB,KAAKg+B,KAAK,GAAKl2B,EAAI9H,KAAK4R,IAAI,EAAG9J,MAAQsO,GAAKqnB,IAEpD,SAASQ,EAAUlnB,GACjB,OAAOjP,EAAI9H,KAAK0S,IAAI,EAAG,KAAOqE,GAAK/W,KAAK2wB,KAAKrB,EAAIvY,GAAKX,GAMxD,OAHA6nB,EAAUJ,UAAY,SAAS/1B,GAAK,OAAOq1B,EAAOr1B,EAAGsO,EAAIqnB,KACzDQ,EAAUH,OAAS,SAAS1nB,GAAK,OAAO+mB,EAAOr1B,EAAGsO,IAE3C6nB,EAVc,CAWpBJ,GAAWC,IAEU,SAAUX,EAAOr1B,EAAGsO,GAC1C,IAAIkZ,EAAItvB,KAAKg+B,KAAK,GAAKl2B,EAAI9H,KAAK4R,IAAI,EAAG9J,MAAQsO,GAAKqnB,IAEpD,SAASS,EAAWnnB,GAClB,OAAO,EAAIjP,EAAI9H,KAAK0S,IAAI,GAAI,IAAMqE,GAAKA,IAAM/W,KAAK2wB,KAAK5Z,EAAIuY,GAAKlZ,GAMlE,OAHA8nB,EAAWL,UAAY,SAAS/1B,GAAK,OAAOq1B,EAAOr1B,EAAGsO,EAAIqnB,KAC1DS,EAAWJ,OAAS,SAAS1nB,GAAK,OAAO+mB,EAAOr1B,EAAGsO,IAE5C8nB,EAVe,CAWrBL,GAAWC,IAEY,SAAUX,EAAOr1B,EAAGsO,GAC5C,IAAIkZ,EAAItvB,KAAKg+B,KAAK,GAAKl2B,EAAI9H,KAAK4R,IAAI,EAAG9J,MAAQsO,GAAKqnB,IAEpD,SAASU,EAAapnB,GACpB,QAASA,EAAQ,EAAJA,EAAQ,GAAK,EACpBjP,EAAI9H,KAAK0S,IAAI,EAAG,GAAKqE,GAAK/W,KAAK2wB,KAAKrB,EAAIvY,GAAKX,GAC7C,EAAItO,EAAI9H,KAAK0S,IAAI,GAAI,GAAKqE,GAAK/W,KAAK2wB,KAAKrB,EAAIvY,GAAKX,IAAM,EAMhE,OAHA+nB,EAAaN,UAAY,SAAS/1B,GAAK,OAAOq1B,EAAOr1B,EAAGsO,EAAIqnB,KAC5DU,EAAaL,OAAS,SAAS1nB,GAAK,OAAO+mB,EAAOr1B,EAAGsO,IAE9C+nB,EAZiB,CAavBN,GAAWC,ICtCM,CAClBzG,KAAM,KACND,MAAO,EACP0B,SAAU,IACVC,KAAM,KAGR,SAAS,GAAQvf,EAAM5V,GACrB,IAAIi1B,EACJ,QAASA,EAASrf,EAAKmf,iBAAmBE,EAASA,EAAOj1B,IACxD,KAAM4V,EAAOA,EAAKnD,YAChB,OAAO0nB,GAAc1G,KAAOV,KAAOoH,GAGvC,OAAOlF,EAGM,mBACb,IAAIj1B,EACAi1B,EAEA9rB,aAAgB2tB,IAClB92B,EAAKmJ,EAAKwsB,IAAKxsB,EAAOA,EAAK4tB,QAE3B/2B,EAAK+3B,MAAU9C,EAASkF,IAAe1G,KAAOV,KAAO5pB,EAAe,MAARA,EAAe,KAAOA,EAAO,IAG3F,IAAK,IAAIsM,EAAShW,KAAKiW,QAASrG,EAAIoG,EAAO1T,OAAQ0N,EAAI,EAAGA,EAAIJ,IAAKI,EACjE,IAAK,IAAyCmG,EAArCE,EAAQL,EAAOhG,GAAI3B,EAAIgI,EAAM/T,OAAcgM,EAAI,EAAGA,EAAID,IAAKC,GAC9D6H,EAAOE,EAAM/H,KACf,GAAS6H,EAAMzM,EAAMnJ,EAAI+N,EAAG+H,EAAOmf,GAAU,GAAQrf,EAAM5V,IAKjE,OAAO,IAAI82B,GAAWrhB,EAAQhW,KAAKyW,SAAU/M,EAAMnJ,ICpCrD,GAAUtC,UAAU43B,UAAYkF,GAChC,GAAU98B,UAAU4U,WAAamoB,GCWtB,CAAC,IAAK,KAAKj5B,IAAI,IAOf,CAAC,IAAK,KAAKA,IAAI,IAOf,CAAC,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,MAAMA,IAAI,IA8D5D,SAAS,GAAK2R,GACZ,MAAO,CAACnS,KAAMmS,GC7FC/W,KAAK0wB,IACL1wB,KAAK2wB,IACN3wB,KAAKgwB,GAGJhwB,KAAK4R,ICLHxF,MAAM9K,UAAUkQ,MCYpB,ICZX,GAAKxR,KAAKgwB,GACV,GAAM,EAAI,GACV,GAAU,KACVsO,GAAa,GAAM,GAEvB,SAASC,KACPl7B,KAAKm7B,IAAMn7B,KAAKo7B,IAChBp7B,KAAKq7B,IAAMr7B,KAAKs7B,IAAM,KACtBt7B,KAAKoT,EAAI,GAGX,SAAS,KACP,OAAO,IAAI8nB,GAGbA,GAAKj9B,UAAY,GAAKA,UAAY,CAChCoW,YAAa6mB,GACbK,OAAQ,SAAS/1B,EAAG4K,GAClBpQ,KAAKoT,GAAK,KAAOpT,KAAKm7B,IAAMn7B,KAAKq7B,KAAO71B,GAAK,KAAOxF,KAAKo7B,IAAMp7B,KAAKs7B,KAAOlrB,IAE7EorB,UAAW,WACQ,OAAbx7B,KAAKq7B,MACPr7B,KAAKq7B,IAAMr7B,KAAKm7B,IAAKn7B,KAAKs7B,IAAMt7B,KAAKo7B,IACrCp7B,KAAKoT,GAAK,MAGdqoB,OAAQ,SAASj2B,EAAG4K,GAClBpQ,KAAKoT,GAAK,KAAOpT,KAAKq7B,KAAO71B,GAAK,KAAOxF,KAAKs7B,KAAOlrB,IAEvDsrB,iBAAkB,SAASC,EAAIC,EAAIp2B,EAAG4K,GACpCpQ,KAAKoT,GAAK,MAAQuoB,EAAM,MAAQC,EAAM,KAAO57B,KAAKq7B,KAAO71B,GAAK,KAAOxF,KAAKs7B,KAAOlrB,IAEnFyrB,cAAe,SAASF,EAAIC,EAAIE,EAAIC,EAAIv2B,EAAG4K,GACzCpQ,KAAKoT,GAAK,MAAQuoB,EAAM,MAAQC,EAAM,MAAQE,EAAM,MAAQC,EAAM,KAAO/7B,KAAKq7B,KAAO71B,GAAK,KAAOxF,KAAKs7B,KAAOlrB,IAE/G4rB,MAAO,SAASL,EAAIC,EAAIE,EAAIC,EAAInQ,GAC9B+P,GAAMA,EAAIC,GAAMA,EAAIE,GAAMA,EAAIC,GAAMA,EAAInQ,GAAKA,EAC7C,IAAIqQ,EAAKj8B,KAAKq7B,IACVa,EAAKl8B,KAAKs7B,IACVa,EAAML,EAAKH,EACXS,EAAML,EAAKH,EACXS,EAAMJ,EAAKN,EACXW,EAAMJ,EAAKN,EACXW,EAAQF,EAAMA,EAAMC,EAAMA,EAG9B,GAAI1Q,EAAI,EAAG,MAAM,IAAIjY,MAAM,oBAAsBiY,GAGjD,GAAiB,OAAb5rB,KAAKq7B,IACPr7B,KAAKoT,GAAK,KAAOpT,KAAKq7B,IAAMM,GAAM,KAAO37B,KAAKs7B,IAAMM,QAIjD,GAAMW,EAAQ,GAKd,GAAM5/B,KAAK6S,IAAI8sB,EAAMH,EAAMC,EAAMC,GAAO,IAAazQ,EAKrD,CACH,IAAI4Q,EAAMV,EAAKG,EACXQ,EAAMV,EAAKG,EACXQ,EAAQP,EAAMA,EAAMC,EAAMA,EAC1BO,EAAQH,EAAMA,EAAMC,EAAMA,EAC1BG,EAAMjgC,KAAK+R,KAAKguB,GAChBG,EAAMlgC,KAAK+R,KAAK6tB,GAChBrQ,EAAIN,EAAIjvB,KAAKguB,KAAK,GAAKhuB,KAAKmgC,MAAMJ,EAAQH,EAAQI,IAAU,EAAIC,EAAMC,KAAS,GAC/EE,EAAM7Q,EAAI2Q,EACVG,EAAM9Q,EAAI0Q,EAGVjgC,KAAK6S,IAAIutB,EAAM,GAAK,KACtB/8B,KAAKoT,GAAK,KAAOuoB,EAAKoB,EAAMV,GAAO,KAAOT,EAAKmB,EAAMT,IAGvDt8B,KAAKoT,GAAK,IAAMwY,EAAI,IAAMA,EAAI,WAAa0Q,EAAME,EAAMH,EAAMI,GAAQ,KAAOz8B,KAAKq7B,IAAMM,EAAKqB,EAAMb,GAAO,KAAOn8B,KAAKs7B,IAAMM,EAAKoB,EAAMZ,QApBtIp8B,KAAKoT,GAAK,KAAOpT,KAAKq7B,IAAMM,GAAM,KAAO37B,KAAKs7B,IAAMM,UAuBxDqB,IAAK,SAASz3B,EAAG4K,EAAGwb,EAAGsR,EAAIC,EAAIC,GAC7B53B,GAAKA,EAAG4K,GAAKA,EAAGwb,GAAKA,EACrB,IAAIhL,EAAKgL,EAAIjvB,KAAK0wB,IAAI6P,GAClBrc,EAAK+K,EAAIjvB,KAAK2wB,IAAI4P,GAClBjB,EAAKz2B,EAAIob,EACTsb,EAAK9rB,EAAIyQ,EACTwc,EAAK,EAAID,EACTE,EAAKF,EAAMF,EAAKC,EAAKA,EAAKD,EAG9B,GAAItR,EAAI,EAAG,MAAM,IAAIjY,MAAM,oBAAsBiY,GAGhC,OAAb5rB,KAAKq7B,IACPr7B,KAAKoT,GAAK,IAAM6oB,EAAK,IAAMC,GAIpBv/B,KAAK6S,IAAIxP,KAAKq7B,IAAMY,GAAM,IAAWt/B,KAAK6S,IAAIxP,KAAKs7B,IAAMY,GAAM,MACtEl8B,KAAKoT,GAAK,IAAM6oB,EAAK,IAAMC,GAIxBtQ,IAGD0R,EAAK,IAAGA,EAAKA,EAAK,GAAM,IAGxBA,EAAKrC,GACPj7B,KAAKoT,GAAK,IAAMwY,EAAI,IAAMA,EAAI,QAAUyR,EAAK,KAAO73B,EAAIob,GAAM,KAAOxQ,EAAIyQ,GAAM,IAAM+K,EAAI,IAAMA,EAAI,QAAUyR,EAAK,KAAOr9B,KAAKq7B,IAAMY,GAAM,KAAOj8B,KAAKs7B,IAAMY,GAIrJoB,EAAK,KACZt9B,KAAKoT,GAAK,IAAMwY,EAAI,IAAMA,EAAI,SAAW0R,GAAM,IAAO,IAAMD,EAAK,KAAOr9B,KAAKq7B,IAAM71B,EAAIomB,EAAIjvB,KAAK0wB,IAAI8P,IAAO,KAAOn9B,KAAKs7B,IAAMlrB,EAAIwb,EAAIjvB,KAAK2wB,IAAI6P,OAGlJI,KAAM,SAAS/3B,EAAG4K,EAAGotB,EAAG9xB,GACtB1L,KAAKoT,GAAK,KAAOpT,KAAKm7B,IAAMn7B,KAAKq7B,KAAO71B,GAAK,KAAOxF,KAAKo7B,IAAMp7B,KAAKs7B,KAAOlrB,GAAK,MAAQotB,EAAK,MAAQ9xB,EAAK,KAAQ8xB,EAAK,KAEzHn9B,SAAU,WACR,OAAOL,KAAKoT,ICpGD,ICzBJ,GAAS,IAEpB,SAASqqB,MAkDT,SAAS,GAAIC,EAAQlgC,GACnB,IAAIuE,EAAM,IAAI07B,GAGd,GAAIC,aAAkBD,GAAKC,EAAOvqB,MAAK,SAAShV,EAAOuC,GAAOqB,EAAIpB,IAAID,EAAKvC,WAGtE,GAAI4K,MAAM8nB,QAAQ6M,GAAS,CAC9B,IAEIxf,EAFA5P,GAAK,EACLD,EAAIqvB,EAAOp7B,OAGf,GAAS,MAAL9E,EAAW,QAAS8Q,EAAID,EAAGtM,EAAIpB,IAAI2N,EAAGovB,EAAOpvB,SAC5C,QAASA,EAAID,EAAGtM,EAAIpB,IAAInD,EAAE0gB,EAAIwf,EAAOpvB,GAAIA,EAAGovB,GAASxf,QAIvD,GAAIwf,EAAQ,IAAK,IAAIh9B,KAAOg9B,EAAQ37B,EAAIpB,IAAID,EAAKg9B,EAAOh9B,IAE7D,OAAOqB,EAnET07B,GAAIx/B,UAAY,GAAIA,UAAY,CAC9BoW,YAAaopB,GACb7/B,IAAK,SAAS8C,GACZ,OAAQ,GAASA,KAAQV,MAE3BY,IAAK,SAASF,GACZ,OAAOV,KAAK,GAASU,IAEvBC,IAAK,SAASD,EAAKvC,GAEjB,OADA6B,KAAK,GAASU,GAAOvC,EACd6B,MAETiT,OAAQ,SAASvS,GACf,IAAI0c,EAAW,GAAS1c,EACxB,OAAO0c,KAAYpd,aAAeA,KAAKod,IAEzCugB,MAAO,WACL,IAAK,IAAIvgB,KAAYpd,KAAUod,EAAS,KAAO,WAAepd,KAAKod,IAErE7f,KAAM,WACJ,IAAIA,EAAO,GACX,IAAK,IAAI6f,KAAYpd,KAAUod,EAAS,KAAO,IAAQ7f,EAAK6W,KAAKgJ,EAASjP,MAAM,IAChF,OAAO5Q,GAETmS,OAAQ,WACN,IAAIA,EAAS,GACb,IAAK,IAAI0N,KAAYpd,KAAUod,EAAS,KAAO,IAAQ1N,EAAO0E,KAAKpU,KAAKod,IACxE,OAAO1N,GAETkuB,QAAS,WACP,IAAIA,EAAU,GACd,IAAK,IAAIxgB,KAAYpd,KAAUod,EAAS,KAAO,IAAQwgB,EAAQxpB,KAAK,CAAC1T,IAAK0c,EAASjP,MAAM,GAAIhQ,MAAO6B,KAAKod,KACzG,OAAOwgB,GAET3lB,KAAM,WACJ,IAAIA,EAAO,EACX,IAAK,IAAImF,KAAYpd,KAAUod,EAAS,KAAO,MAAUnF,EACzD,OAAOA,GAET4H,MAAO,WACL,IAAK,IAAIzC,KAAYpd,KAAM,GAAIod,EAAS,KAAO,GAAQ,OAAO,EAC9D,OAAO,GAETjK,KAAM,SAAS3V,GACb,IAAK,IAAI4f,KAAYpd,KAAUod,EAAS,KAAO,IAAQ5f,EAAEwC,KAAKod,GAAWA,EAASjP,MAAM,GAAInO,QA0BjF,UCxEf,SAAS69B,MAET,IAAIh+B,GAAQ,GAAI5B,UAkBhB,SAAS,GAAIy/B,EAAQlgC,GACnB,IAAImD,EAAM,IAAIk9B,GAGd,GAAIH,aAAkBG,GAAKH,EAAOvqB,MAAK,SAAShV,GAASwC,EAAIwK,IAAIhN,WAG5D,GAAIu/B,EAAQ,CACf,IAAIpvB,GAAK,EAAGD,EAAIqvB,EAAOp7B,OACvB,GAAS,MAAL9E,EAAW,QAAS8Q,EAAID,EAAG1N,EAAIwK,IAAIuyB,EAAOpvB,SACzC,QAASA,EAAID,EAAG1N,EAAIwK,IAAI3N,EAAEkgC,EAAOpvB,GAAIA,EAAGovB,IAG/C,OAAO/8B,EA7BTk9B,GAAI5/B,UAAY,GAAIA,UAAY,CAC9BoW,YAAawpB,GACbjgC,IAAKiC,GAAMjC,IACXuN,IAAK,SAAShN,GAGZ,OAFAA,GAAS,GACT6B,KAAK,GAAS7B,GAASA,EAChB6B,MAETiT,OAAQpT,GAAMoT,OACd0qB,MAAO99B,GAAM89B,MACbjuB,OAAQ7P,GAAMtC,KACd0a,KAAMpY,GAAMoY,KACZ4H,MAAOhgB,GAAMggB,MACb1M,KAAMtT,GAAMsT,MAmBC,ICtCX,GAAQpK,MAAM9K,UAEC,GAAMkQ,MCgBV,IClBX2vB,GAAM,GACNC,GAAM,GACNC,GAAQ,GACRC,GAAU,GACVC,GAAS,GAEb,SAASC,GAAgBC,GACvB,OAAO,IAAIr7B,SAAS,IAAK,WAAaq7B,EAAQr8B,KAAI,SAAS2H,EAAM4E,GAC/D,OAAO+vB,KAAKC,UAAU50B,GAAQ,OAAS4E,EAAI,OAC1C9O,KAAK,KAAO,KAGjB,SAAS++B,GAAgBH,EAAS5gC,GAChC,IAAIkgC,EAASS,GAAgBC,GAC7B,OAAO,SAASI,EAAKlwB,GACnB,OAAO9Q,EAAEkgC,EAAOc,GAAMlwB,EAAG8vB,IAK7B,SAASK,GAAaC,GACpB,IAAIC,EAAYj/B,OAAOgG,OAAO,MAC1B04B,EAAU,GAUd,OARAM,EAAKE,SAAQ,SAASJ,GACpB,IAAK,IAAIK,KAAUL,EACXK,KAAUF,GACdP,EAAQhqB,KAAKuqB,EAAUE,GAAUA,MAKhCT,EAGT,SAASU,GAAI3gC,EAAO4gC,GAClB,IAAI9S,EAAI9tB,EAAQ,GAAImE,EAAS2pB,EAAE3pB,OAC/B,OAAOA,EAASy8B,EAAQ,IAAIh2B,MAAMg2B,EAAQz8B,EAAS,GAAG9C,KAAK,GAAKysB,EAAIA,EAGtE,SAAS,GAAW+S,GAClB,OAAOA,EAAO,EAAI,IAAMF,IAAKE,EAAM,GAC/BA,EAAO,KAAO,IAAMF,GAAIE,EAAM,GAC9BF,GAAIE,EAAM,GAGhB,SAASC,GAAWC,GAClB,IAAIC,EAAQD,EAAKE,cACbC,EAAUH,EAAKI,gBACfC,EAAUL,EAAKM,gBACfC,EAAeP,EAAKQ,qBACxB,OAAO7gC,MAAMqgC,GAAQ,eACf,GAAWA,EAAKS,iBAAkB,GAAK,IAAMb,GAAII,EAAKU,cAAgB,EAAG,GAAK,IAAMd,GAAII,EAAKW,aAAc,IAC1GJ,EAAe,IAAMX,GAAIK,EAAO,GAAK,IAAML,GAAIO,EAAS,GAAK,IAAMP,GAAIS,EAAS,GAAK,IAAMT,GAAIW,EAAc,GAAK,IACnHF,EAAU,IAAMT,GAAIK,EAAO,GAAK,IAAML,GAAIO,EAAS,GAAK,IAAMP,GAAIS,EAAS,GAAK,IAChFF,GAAWF,EAAQ,IAAML,GAAIK,EAAO,GAAK,IAAML,GAAIO,EAAS,GAAK,IACjE,IAGO,mBACb,IAAIS,EAAW,IAAIne,OAAO,KAAQoe,EAAY,SAC1CC,EAAYD,EAAUE,WAAW,GAErC,SAASrO,EAAMlf,EAAMlV,GACnB,IAAI0iC,EAAS9B,EAASM,EAAOyB,EAAUztB,GAAM,SAAS8rB,EAAKlwB,GACzD,GAAI4xB,EAAS,OAAOA,EAAQ1B,EAAKlwB,EAAI,GACrC8vB,EAAUI,EAAK0B,EAAU1iC,EAAI+gC,GAAgBC,EAAKhhC,GAAK2gC,GAAgBK,MAGzE,OADAE,EAAKN,QAAUA,GAAW,GACnBM,EAGT,SAASyB,EAAUztB,EAAMlV,GACvB,IAIIkW,EAJAgrB,EAAO,GACP0B,EAAI1tB,EAAKpQ,OACT+9B,EAAI,EACJhyB,EAAI,EAEJiyB,EAAMF,GAAK,EACXG,GAAM,EAMV,SAASC,IACP,GAAIF,EAAK,OAAOvC,GAChB,GAAIwC,EAAK,OAAOA,GAAM,EAAOzC,GAG7B,IAAIxvB,EAAU4F,EAAPlE,EAAIqwB,EACX,GAAI3tB,EAAKutB,WAAWjwB,KAAOguB,GAAO,CAChC,MAAOqC,IAAMD,GAAK1tB,EAAKutB,WAAWI,KAAOrC,IAAStrB,EAAKutB,aAAaI,KAAOrC,IAI3E,OAHK1vB,EAAI+xB,IAAMD,EAAGE,GAAM,GACdpsB,EAAIxB,EAAKutB,WAAWI,QAAUpC,GAASsC,GAAM,EAC9CrsB,IAAMgqB,KAAUqC,GAAM,EAAU7tB,EAAKutB,WAAWI,KAAOpC,MAAWoC,GACpE3tB,EAAKvE,MAAM6B,EAAI,EAAG1B,EAAI,GAAGmyB,QAAQ,MAAO,KAIjD,MAAOJ,EAAID,EAAG,CACZ,IAAKlsB,EAAIxB,EAAKutB,WAAW3xB,EAAI+xB,QAAUpC,GAASsC,GAAM,OACjD,GAAIrsB,IAAMgqB,GAAUqC,GAAM,EAAU7tB,EAAKutB,WAAWI,KAAOpC,MAAWoC,OACtE,GAAInsB,IAAM8rB,EAAW,SAC1B,OAAOttB,EAAKvE,MAAM6B,EAAG1B,GAIvB,OAAOgyB,GAAM,EAAM5tB,EAAKvE,MAAM6B,EAAGowB,GA1B/B1tB,EAAKutB,WAAWG,EAAI,KAAOnC,MAAWmC,EACtC1tB,EAAKutB,WAAWG,EAAI,KAAOlC,MAAUkC,EA4BzC,OAAQ1sB,EAAI8sB,OAAazC,GAAK,CAC5B,IAAIS,EAAM,GACV,MAAO9qB,IAAMoqB,IAAOpqB,IAAMqqB,GAAKS,EAAIpqB,KAAKV,GAAIA,EAAI8sB,IAC5ChjC,GAA4B,OAAtBghC,EAAMhhC,EAAEghC,EAAKnwB,OACvBqwB,EAAKtqB,KAAKoqB,GAGZ,OAAOE,EAGT,SAASgC,EAAchC,EAAMN,GAC3B,OAAOM,EAAK38B,KAAI,SAASy8B,GACvB,OAAOJ,EAAQr8B,KAAI,SAAS88B,GAC1B,OAAO8B,EAAYnC,EAAIK,OACtBr/B,KAAKugC,MAIZ,SAASzuB,EAAOotB,EAAMN,GAEpB,OADe,MAAXA,IAAiBA,EAAUK,GAAaC,IACrC,CAACN,EAAQr8B,IAAI4+B,GAAanhC,KAAKugC,IAAYriC,OAAOgjC,EAAchC,EAAMN,IAAU5+B,KAAK,MAG9F,SAASohC,EAAWlC,EAAMN,GAExB,OADe,MAAXA,IAAiBA,EAAUK,GAAaC,IACrCgC,EAAchC,EAAMN,GAAS5+B,KAAK,MAG3C,SAASqhC,EAAWnC,GAClB,OAAOA,EAAK38B,IAAI++B,GAAWthC,KAAK,MAGlC,SAASshC,EAAUtC,GACjB,OAAOA,EAAIz8B,IAAI4+B,GAAanhC,KAAKugC,GAGnC,SAASY,EAAYxiC,GACnB,OAAgB,MAATA,EAAgB,GACjBA,aAAiB0xB,KAAOoP,GAAW9gC,GACnC2hC,EAAS5/B,KAAK/B,GAAS,IAAM,IAAOA,EAAMsiC,QAAQ,KAAM,MAAU,IAClEtiC,EAGR,MAAO,CACLyzB,MAAOA,EACPuO,UAAWA,EACX7uB,OAAQA,EACRsvB,WAAYA,EACZC,WAAYA,IC7JZE,GAAMC,GAAI,KAEHC,GAAWF,GAAInP,MCFtBsP,IDGsBH,GAAIZ,UACPY,GAAIzvB,OACAyvB,GAAIH,WACJG,GAAIF,WCNrBG,GAAI,OAEHG,GAAWD,GAAItP,MACAsP,GAAIf,UACPe,GAAI5vB,OACA4vB,GAAIN,WACJM,GAAIL,WCR/B,SAASO,GAAaC,GACpB,IAAKA,EAASC,GAAI,MAAM,IAAI3tB,MAAM0tB,EAASE,OAAS,IAAMF,EAASG,YACnE,OAAOH,EAAS3uB,OAGH,qBACb,OAAO+uB,MAAMC,EAAOC,GAAMx8B,KAAKi8B,KCHjC,SAASQ,GAAShQ,GAChB,OAAO,SAAS8P,EAAOC,EAAMnD,GAE3B,OADyB,IAArBn8B,UAAUC,QAAgC,oBAATq/B,IAAqBnD,EAAMmD,EAAMA,OAAOnjC,GACtE,GAAKkjC,EAAOC,GAAMx8B,MAAK,SAASk8B,GACrC,OAAOzP,EAAMyP,EAAU7C,OAaZoD,GAASX,IACTW,GAAST,ICrB1B,SAASU,GAAaR,GACpB,IAAKA,EAASC,GAAI,MAAM,IAAI3tB,MAAM0tB,EAASE,OAAS,IAAMF,EAASG,YACnE,OAAOH,EAASS,OAGH,qBACb,OAAOL,MAAMC,EAAOC,GAAMx8B,KAAK08B,KCJjC,SAASE,GAAOxgC,GACd,OAAO,SAASmgC,EAAOC,GACrB,OAAO,GAAKD,EAAOC,GAAMx8B,MAAK,SAASuN,GACrC,OAAO,IAAKsvB,WAAWC,gBAAgBvvB,EAAMnR,OAKpCwgC,GAAA,mBAEGA,GAAO,aAERA,GAAO,iBAJT,ICVA,eACb,IAAIv8B,GAAKxF,KAAKkiC,GAAGhjC,KAAK,KAAM2O,GACxBuC,GAAKpQ,KAAKmiC,GAAGjjC,KAAK,KAAM2O,GAC5B,OAAO,GAAI7N,KAAKoiC,MAAM58B,EAAG4K,GAAI5K,EAAG4K,EAAGvC,IAGrC,SAAS,GAAIw0B,EAAM78B,EAAG4K,EAAGvC,GACvB,GAAIhP,MAAM2G,IAAM3G,MAAMuR,GAAI,OAAOiyB,EAEjC,IAAIr3B,EAOAs3B,EACAC,EACAC,EACAC,EACA70B,EACA80B,EACAp0B,EACA0B,EAbAmG,EAAOksB,EAAKM,MACZC,EAAO,CAAC7wB,KAAMlE,GACdouB,EAAKoG,EAAKlH,IACVe,EAAKmG,EAAKjH,IACVO,EAAK0G,EAAKhH,IACVO,EAAKyG,EAAK/G,IAWd,IAAKnlB,EAAM,OAAOksB,EAAKM,MAAQC,EAAMP,EAGrC,MAAOlsB,EAAK7T,OAGV,IAFIsL,EAAQpI,IAAM88B,GAAMrG,EAAKN,GAAM,IAAIM,EAAKqG,EAAS3G,EAAK2G,GACtDI,EAAStyB,IAAMmyB,GAAMrG,EAAKN,GAAM,IAAIM,EAAKqG,EAAS3G,EAAK2G,EACvDv3B,EAASmL,IAAQA,EAAOA,EAAK7H,EAAIo0B,GAAU,EAAI90B,IAAS,OAAO5C,EAAOsD,GAAKs0B,EAAMP,EAMvF,GAFAG,GAAMH,EAAKH,GAAGhjC,KAAK,KAAMiX,EAAKpE,MAC9B0wB,GAAMJ,EAAKF,GAAGjjC,KAAK,KAAMiX,EAAKpE,MAC1BvM,IAAMg9B,GAAMpyB,IAAMqyB,EAAI,OAAOG,EAAK58B,KAAOmQ,EAAMnL,EAASA,EAAOsD,GAAKs0B,EAAOP,EAAKM,MAAQC,EAAMP,EAGlG,GACEr3B,EAASA,EAASA,EAAOsD,GAAK,IAAIvF,MAAM,GAAKs5B,EAAKM,MAAQ,IAAI55B,MAAM,IAChE6E,EAAQpI,IAAM88B,GAAMrG,EAAKN,GAAM,IAAIM,EAAKqG,EAAS3G,EAAK2G,GACtDI,EAAStyB,IAAMmyB,GAAMrG,EAAKN,GAAM,IAAIM,EAAKqG,EAAS3G,EAAK2G,SACnDj0B,EAAIo0B,GAAU,EAAI90B,MAAYoC,GAAKyyB,GAAMF,IAAO,EAAKC,GAAMF,IACrE,OAAOt3B,EAAOgF,GAAKmG,EAAMnL,EAAOsD,GAAKs0B,EAAMP,EAGtC,SAASQ,GAAO9wB,GACrB,IAAIlE,EAAGS,EACH9I,EACA4K,EAFM/B,EAAI0D,EAAKzP,OAGfwgC,EAAK,IAAI/5B,MAAMsF,GACf00B,EAAK,IAAIh6B,MAAMsF,GACf4tB,EAAK73B,IACL83B,EAAK93B,IACLu3B,GAAMv3B,IACNw3B,GAAMx3B,IAGV,IAAKkK,EAAI,EAAGA,EAAID,IAAKC,EACfzP,MAAM2G,GAAKxF,KAAKkiC,GAAGhjC,KAAK,KAAM2O,EAAIkE,EAAKzD,MAAQzP,MAAMuR,GAAKpQ,KAAKmiC,GAAGjjC,KAAK,KAAM2O,MACjFi1B,EAAGx0B,GAAK9I,EACRu9B,EAAGz0B,GAAK8B,EACJ5K,EAAIy2B,IAAIA,EAAKz2B,GACbA,EAAIm2B,IAAIA,EAAKn2B,GACb4K,EAAI8rB,IAAIA,EAAK9rB,GACbA,EAAIwrB,IAAIA,EAAKxrB,IAInB,GAAI6rB,EAAKN,GAAMO,EAAKN,EAAI,OAAO57B,KAM/B,IAHAA,KAAKoiC,MAAMnG,EAAIC,GAAIkG,MAAMzG,EAAIC,GAGxBttB,EAAI,EAAGA,EAAID,IAAKC,EACnB,GAAItO,KAAM8iC,EAAGx0B,GAAIy0B,EAAGz0B,GAAIyD,EAAKzD,IAG/B,OAAOtO,KClFM,qBACb,GAAInB,MAAM2G,GAAKA,IAAM3G,MAAMuR,GAAKA,GAAI,OAAOpQ,KAE3C,IAAIi8B,EAAKj8B,KAAKm7B,IACVe,EAAKl8B,KAAKo7B,IACVO,EAAK37B,KAAKq7B,IACVO,EAAK57B,KAAKs7B,IAKd,GAAIz8B,MAAMo9B,GACRN,GAAMM,EAAKt/B,KAAKiC,MAAM4G,IAAM,EAC5Bo2B,GAAMM,EAAKv/B,KAAKiC,MAAMwR,IAAM,MAIzB,CACH,IAEIpF,EACAsD,EAHAif,EAAIoO,EAAKM,EACT9lB,EAAOnW,KAAK2iC,MAIhB,MAAO1G,EAAKz2B,GAAKA,GAAKm2B,GAAMO,EAAK9rB,GAAKA,GAAKwrB,EAGzC,OAFAttB,GAAK8B,EAAI8rB,IAAO,EAAK12B,EAAIy2B,EACzBjxB,EAAS,IAAIjC,MAAM,GAAIiC,EAAOsD,GAAK6H,EAAMA,EAAOnL,EAAQuiB,GAAK,EACrDjf,GACN,KAAK,EAAGqtB,EAAKM,EAAK1O,EAAGqO,EAAKM,EAAK3O,EAAG,MAClC,KAAK,EAAG0O,EAAKN,EAAKpO,EAAGqO,EAAKM,EAAK3O,EAAG,MAClC,KAAK,EAAGoO,EAAKM,EAAK1O,EAAG2O,EAAKN,EAAKrO,EAAG,MAClC,KAAK,EAAG0O,EAAKN,EAAKpO,EAAG2O,EAAKN,EAAKrO,EAAG,MAIlCvtB,KAAK2iC,OAAS3iC,KAAK2iC,MAAMrgC,SAAQtC,KAAK2iC,MAAQxsB,GAOpD,OAJAnW,KAAKm7B,IAAMc,EACXj8B,KAAKo7B,IAAMc,EACXl8B,KAAKq7B,IAAMM,EACX37B,KAAKs7B,IAAMM,EACJ57B,MCzCM,cACb,IAAI+R,EAAO,GAIX,OAHA/R,KAAKgjC,OAAM,SAAS7sB,GAClB,IAAKA,EAAK7T,OAAQ,GAAGyP,EAAKqC,KAAK+B,EAAKpE,YAAcoE,EAAOA,EAAKnQ,SAEzD+L,GCLM,eACb,OAAO1P,UAAUC,OACXtC,KAAKoiC,OAAOhvB,EAAE,GAAG,IAAKA,EAAE,GAAG,IAAIgvB,OAAOhvB,EAAE,GAAG,IAAKA,EAAE,GAAG,IACrDvU,MAAMmB,KAAKm7B,UAAO38B,EAAY,CAAC,CAACwB,KAAKm7B,IAAKn7B,KAAKo7B,KAAM,CAACp7B,KAAKq7B,IAAKr7B,KAAKs7B,OCH9D,uBACbt7B,KAAKmW,KAAOA,EACZnW,KAAKi8B,GAAKA,EACVj8B,KAAKk8B,GAAKA,EACVl8B,KAAK27B,GAAKA,EACV37B,KAAK47B,GAAKA,GCHG,mBACb,IAAI7pB,EAGA4pB,EACAC,EACAE,EACAC,EAKAnL,EACAtiB,EAXA2tB,EAAKj8B,KAAKm7B,IACVe,EAAKl8B,KAAKo7B,IAKV6H,EAAKjjC,KAAKq7B,IACV6H,EAAKljC,KAAKs7B,IACV6H,EAAQ,GACRhtB,EAAOnW,KAAK2iC,MAIZxsB,GAAMgtB,EAAM/uB,KAAK,IAAI,GAAK+B,EAAM8lB,EAAIC,EAAI+G,EAAIC,IAClC,MAAVE,EAAgBA,EAASh/B,KAE3B63B,EAAKz2B,EAAI49B,EAAQlH,EAAK9rB,EAAIgzB,EAC1BH,EAAKz9B,EAAI49B,EAAQF,EAAK9yB,EAAIgzB,EAC1BA,GAAUA,GAGZ,MAAOxS,EAAIuS,EAAMnR,MAGf,OAAM7b,EAAOya,EAAEza,QACPwlB,EAAK/K,EAAEqL,IAAMgH,IACbrH,EAAKhL,EAAEsL,IAAMgH,IACbpH,EAAKlL,EAAE+K,IAAMM,IACbF,EAAKnL,EAAEgL,IAAMM,GAGrB,GAAI/lB,EAAK7T,OAAQ,CACf,IAAIggC,GAAM3G,EAAKG,GAAM,EACjByG,GAAM3G,EAAKG,GAAM,EAErBoH,EAAM/uB,KACJ,IAAI,GAAK+B,EAAK,GAAImsB,EAAIC,EAAIzG,EAAIC,GAC9B,IAAI,GAAK5lB,EAAK,GAAIwlB,EAAI4G,EAAID,EAAIvG,GAC9B,IAAI,GAAK5lB,EAAK,GAAImsB,EAAI1G,EAAIE,EAAIyG,GAC9B,IAAI,GAAKpsB,EAAK,GAAIwlB,EAAIC,EAAI0G,EAAIC,KAI5Bj0B,GAAK8B,GAAKmyB,IAAO,EAAK/8B,GAAK88B,KAC7B1R,EAAIuS,EAAMA,EAAM7gC,OAAS,GACzB6gC,EAAMA,EAAM7gC,OAAS,GAAK6gC,EAAMA,EAAM7gC,OAAS,EAAIgM,GACnD60B,EAAMA,EAAM7gC,OAAS,EAAIgM,GAAKsiB,OAK7B,CACH,IAAIhQ,EAAKpb,GAAKxF,KAAKkiC,GAAGhjC,KAAK,KAAMiX,EAAKpE,MAClC8O,EAAKzQ,GAAKpQ,KAAKmiC,GAAGjjC,KAAK,KAAMiX,EAAKpE,MAClCsxB,EAAKziB,EAAKA,EAAKC,EAAKA,EACxB,GAAIwiB,EAAKD,EAAQ,CACf,IAAIv1B,EAAIlR,KAAK+R,KAAK00B,EAASC,GAC3BpH,EAAKz2B,EAAIqI,EAAGquB,EAAK9rB,EAAIvC,EACrBo1B,EAAKz9B,EAAIqI,EAAGq1B,EAAK9yB,EAAIvC,EACrBkE,EAAOoE,EAAKpE,MAKlB,OAAOA,GCpEM,eACb,GAAIlT,MAAM2G,GAAKxF,KAAKkiC,GAAGhjC,KAAK,KAAM2O,KAAOhP,MAAMuR,GAAKpQ,KAAKmiC,GAAGjjC,KAAK,KAAM2O,IAAK,OAAO7N,KAEnF,IAAIgL,EAEAs4B,EACAjrB,EACArS,EAKAR,EACA4K,EACAkyB,EACAC,EACA30B,EACA80B,EACAp0B,EACA0B,EAfAmG,EAAOnW,KAAK2iC,MAIZ1G,EAAKj8B,KAAKm7B,IACVe,EAAKl8B,KAAKo7B,IACVO,EAAK37B,KAAKq7B,IACVO,EAAK57B,KAAKs7B,IAWd,IAAKnlB,EAAM,OAAOnW,KAIlB,GAAImW,EAAK7T,OAAQ,MAAO,EAAM,CAG5B,IAFIsL,EAAQpI,IAAM88B,GAAMrG,EAAKN,GAAM,IAAIM,EAAKqG,EAAS3G,EAAK2G,GACtDI,EAAStyB,IAAMmyB,GAAMrG,EAAKN,GAAM,IAAIM,EAAKqG,EAAS3G,EAAK2G,EACrDv3B,EAASmL,IAAMA,EAAOA,EAAK7H,EAAIo0B,GAAU,EAAI90B,IAAS,OAAO5N,KACnE,IAAKmW,EAAK7T,OAAQ,OACd0I,EAAQsD,EAAI,EAAK,IAAMtD,EAAQsD,EAAI,EAAK,IAAMtD,EAAQsD,EAAI,EAAK,MAAIg1B,EAAWt4B,EAAQgF,EAAI1B,GAIhG,MAAO6H,EAAKpE,OAASlE,EAAG,GAAMwK,EAAWlC,IAAMA,EAAOA,EAAKnQ,MAAO,OAAOhG,KAIzE,OAHIgG,EAAOmQ,EAAKnQ,cAAamQ,EAAKnQ,KAG9BqS,GAAkBrS,EAAOqS,EAASrS,KAAOA,SAAcqS,EAASrS,KAAOhG,MAGtEgL,GAGLhF,EAAOgF,EAAOsD,GAAKtI,SAAcgF,EAAOsD,IAGnC6H,EAAOnL,EAAO,IAAMA,EAAO,IAAMA,EAAO,IAAMA,EAAO,KACnDmL,KAAUnL,EAAO,IAAMA,EAAO,IAAMA,EAAO,IAAMA,EAAO,MACvDmL,EAAK7T,SACPghC,EAAUA,EAAStzB,GAAKmG,EACvBnW,KAAK2iC,MAAQxsB,GAGbnW,OAbaA,KAAK2iC,MAAQ38B,EAAMhG,OAgBlC,SAASujC,GAAUxxB,GACxB,IAAK,IAAIzD,EAAI,EAAGD,EAAI0D,EAAKzP,OAAQgM,EAAID,IAAKC,EAAGtO,KAAKiT,OAAOlB,EAAKzD,IAC9D,OAAOtO,KC5DM,kBACb,OAAOA,KAAK2iC,OCDC,cACb,IAAI1qB,EAAO,EAIX,OAHAjY,KAAKgjC,OAAM,SAAS7sB,GAClB,IAAKA,EAAK7T,OAAQ,KAAK2V,QAAa9B,EAAOA,EAAKnQ,SAE3CiS,GCHM,eACb,IAAgB2Y,EAAsBrZ,EAAO0kB,EAAIC,EAAIP,EAAIC,EAArDuH,EAAQ,GAAOhtB,EAAOnW,KAAK2iC,MAC3BxsB,GAAMgtB,EAAM/uB,KAAK,IAAI,GAAK+B,EAAMnW,KAAKm7B,IAAKn7B,KAAKo7B,IAAKp7B,KAAKq7B,IAAKr7B,KAAKs7B,MACvE,MAAO1K,EAAIuS,EAAMnR,MACf,IAAK7d,EAASgC,EAAOya,EAAEza,KAAM8lB,EAAKrL,EAAEqL,GAAIC,EAAKtL,EAAEsL,GAAIP,EAAK/K,EAAE+K,GAAIC,EAAKhL,EAAEgL,KAAOzlB,EAAK7T,OAAQ,CACvF,IAAIggC,GAAMrG,EAAKN,GAAM,EAAG4G,GAAMrG,EAAKN,GAAM,GACrCrkB,EAAQpB,EAAK,KAAIgtB,EAAM/uB,KAAK,IAAI,GAAKmD,EAAO+qB,EAAIC,EAAI5G,EAAIC,KACxDrkB,EAAQpB,EAAK,KAAIgtB,EAAM/uB,KAAK,IAAI,GAAKmD,EAAO0kB,EAAIsG,EAAID,EAAI1G,KACxDrkB,EAAQpB,EAAK,KAAIgtB,EAAM/uB,KAAK,IAAI,GAAKmD,EAAO+qB,EAAIpG,EAAIP,EAAI4G,KACxDhrB,EAAQpB,EAAK,KAAIgtB,EAAM/uB,KAAK,IAAI,GAAKmD,EAAO0kB,EAAIC,EAAIoG,EAAIC,IAGhE,OAAOviC,MCZM,eACb,IAA2B4wB,EAAvBuS,EAAQ,GAAIn9B,EAAO,GACnBhG,KAAK2iC,OAAOQ,EAAM/uB,KAAK,IAAI,GAAKpU,KAAK2iC,MAAO3iC,KAAKm7B,IAAKn7B,KAAKo7B,IAAKp7B,KAAKq7B,IAAKr7B,KAAKs7B,MACnF,MAAO1K,EAAIuS,EAAMnR,MAAO,CACtB,IAAI7b,EAAOya,EAAEza,KACb,GAAIA,EAAK7T,OAAQ,CACf,IAAIiV,EAAO0kB,EAAKrL,EAAEqL,GAAIC,EAAKtL,EAAEsL,GAAIP,EAAK/K,EAAE+K,GAAIC,EAAKhL,EAAEgL,GAAI0G,GAAMrG,EAAKN,GAAM,EAAG4G,GAAMrG,EAAKN,GAAM,GACxFrkB,EAAQpB,EAAK,KAAIgtB,EAAM/uB,KAAK,IAAI,GAAKmD,EAAO0kB,EAAIC,EAAIoG,EAAIC,KACxDhrB,EAAQpB,EAAK,KAAIgtB,EAAM/uB,KAAK,IAAI,GAAKmD,EAAO+qB,EAAIpG,EAAIP,EAAI4G,KACxDhrB,EAAQpB,EAAK,KAAIgtB,EAAM/uB,KAAK,IAAI,GAAKmD,EAAO0kB,EAAIsG,EAAID,EAAI1G,KACxDrkB,EAAQpB,EAAK,KAAIgtB,EAAM/uB,KAAK,IAAI,GAAKmD,EAAO+qB,EAAIC,EAAI5G,EAAIC,IAE9D51B,EAAKoO,KAAKwc,GAEZ,MAAOA,EAAI5qB,EAAKgsB,MACd7d,EAASyc,EAAEza,KAAMya,EAAEqL,GAAIrL,EAAEsL,GAAItL,EAAE+K,GAAI/K,EAAEgL,IAEvC,OAAO57B,MCnBF,SAAS,GAAS6N,GACvB,OAAOA,EAAE,GAGI,mBACb,OAAOxL,UAAUC,QAAUtC,KAAKkiC,GAAK9uB,EAAGpT,MAAQA,KAAKkiC,ICLhD,SAAS,GAASr0B,GACvB,OAAOA,EAAE,GAGI,mBACb,OAAOxL,UAAUC,QAAUtC,KAAKmiC,GAAK/uB,EAAGpT,MAAQA,KAAKmiC,ICQxC,SAASqB,GAASjqB,EAAO/T,EAAG4K,GACzC,IAAIiyB,EAAO,IAAIoB,GAAc,MAALj+B,EAAY,GAAWA,EAAQ,MAAL4K,EAAY,GAAWA,EAAG/C,IAAKA,IAAKA,IAAKA,KAC3F,OAAgB,MAATkM,EAAgB8oB,EAAOA,EAAKQ,OAAOtpB,GAG5C,SAASkqB,GAASj+B,EAAG4K,EAAG6rB,EAAIC,EAAIP,EAAIC,GAClC57B,KAAKkiC,GAAK18B,EACVxF,KAAKmiC,GAAK/xB,EACVpQ,KAAKm7B,IAAMc,EACXj8B,KAAKo7B,IAAMc,EACXl8B,KAAKq7B,IAAMM,EACX37B,KAAKs7B,IAAMM,EACX57B,KAAK2iC,WAAQnkC,EAGf,SAASklC,GAAUd,GACjB,IAAIjxB,EAAO,CAACI,KAAM6wB,EAAK7wB,MAAO/L,EAAO2L,EACrC,MAAOixB,EAAOA,EAAK58B,KAAMA,EAAOA,EAAKA,KAAO,CAAC+L,KAAM6wB,EAAK7wB,MACxD,OAAOJ,EAGT,IAAIgyB,GAAYH,GAASvlC,UAAYwlC,GAASxlC,UAE9C0lC,GAAUhyB,KAAO,WACf,IAEI4H,EACAhC,EAHA5F,EAAO,IAAI8xB,GAASzjC,KAAKkiC,GAAIliC,KAAKmiC,GAAIniC,KAAKm7B,IAAKn7B,KAAKo7B,IAAKp7B,KAAKq7B,IAAKr7B,KAAKs7B,KACzEnlB,EAAOnW,KAAK2iC,MAIhB,IAAKxsB,EAAM,OAAOxE,EAElB,IAAKwE,EAAK7T,OAAQ,OAAOqP,EAAKgxB,MAAQe,GAAUvtB,GAAOxE,EAEvD4H,EAAQ,CAAC,CAAC0W,OAAQ9Z,EAAMvW,OAAQ+R,EAAKgxB,MAAQ,IAAI55B,MAAM,KACvD,MAAOoN,EAAOoD,EAAMyY,MAClB,IAAK,IAAI1jB,EAAI,EAAGA,EAAI,IAAKA,GACnBiJ,EAAQpB,EAAK8Z,OAAO3hB,MAClBiJ,EAAMjV,OAAQiX,EAAMnF,KAAK,CAAC6b,OAAQ1Y,EAAO3X,OAAQuW,EAAKvW,OAAO0O,GAAK,IAAIvF,MAAM,KAC3EoN,EAAKvW,OAAO0O,GAAKo1B,GAAUnsB,IAKtC,OAAO5F,GAGTgyB,GAAUx4B,IAAM,GAChBw4B,GAAUd,OAAS,GACnBc,GAAUvB,MAAQ,GAClBuB,GAAU5xB,KAAO,GACjB4xB,GAAUC,OAAS,GACnBD,GAAUE,KAAO,GACjBF,GAAU1wB,OAAS,GACnB0wB,GAAUJ,UAAY,GACtBI,GAAUG,KAAO,GACjBH,GAAU1rB,KAAO,GACjB0rB,GAAUX,MAAQ,GAClBW,GAAUI,WAAa,GACvBJ,GAAUn+B,EAAI,GACdm+B,GAAUvzB,EAAI,GC3DKzT,KAAKgwB,GAAUhwB,KAAK+R,KAAK,GAD5C,ICTe,iBACb,IAAKJ,GAAK9I,EAAIuN,EAAIvN,EAAEw+B,cAAcjxB,EAAI,GAAKvN,EAAEw+B,iBAAiBhwB,QAAQ,MAAQ,EAAG,OAAO,KACxF,IAAI1F,EAAG21B,EAAcz+B,EAAE2I,MAAM,EAAGG,GAIhC,MAAO,CACL21B,EAAY3hC,OAAS,EAAI2hC,EAAY,GAAKA,EAAY91B,MAAM,GAAK81B,GAChEz+B,EAAE2I,MAAMG,EAAI,KCTF,eACb,OAAO9I,EAAI0+B,GAAcvnC,KAAK6S,IAAIhK,IAAKA,EAAIA,EAAE,GAAK6H,KCHrC,iBACb,OAAO,SAASlP,EAAO4gC,GACrB,IAAIzwB,EAAInQ,EAAMmE,OACVoR,EAAI,GACJ1D,EAAI,EACJlN,EAAIqhC,EAAS,GACb7hC,EAAS,EAEb,MAAOgM,EAAI,GAAKxL,EAAI,EAAG,CAGrB,GAFIR,EAASQ,EAAI,EAAIi8B,IAAOj8B,EAAInG,KAAK4R,IAAI,EAAGwwB,EAAQz8B,IACpDoR,EAAEU,KAAKjW,EAAMimC,UAAU91B,GAAKxL,EAAGwL,EAAIxL,KAC9BR,GAAUQ,EAAI,GAAKi8B,EAAO,MAC/Bj8B,EAAIqhC,EAASn0B,GAAKA,EAAI,GAAKm0B,EAAS7hC,QAGtC,OAAOoR,EAAE7E,UAAUrP,KAAK6kC,KCfb,eACb,OAAO,SAASlmC,GACd,OAAOA,EAAMsiC,QAAQ,UAAU,SAASnyB,GACtC,OAAOg2B,GAAUh2B,QCFnBi2B,GAAK,2EAEM,SAASC,GAAgBC,GACtC,OAAO,IAAIC,GAAgBD,GAK7B,SAASC,GAAgBD,GACvB,KAAM3tB,EAAQytB,GAAGvnC,KAAKynC,IAAa,MAAM,IAAI9wB,MAAM,mBAAqB8wB,GACxE,IAAI3tB,EACJ9W,KAAK2kC,KAAO7tB,EAAM,IAAM,IACxB9W,KAAK4kC,MAAQ9tB,EAAM,IAAM,IACzB9W,KAAK6kC,KAAO/tB,EAAM,IAAM,IACxB9W,KAAK8kC,OAAShuB,EAAM,IAAM,GAC1B9W,KAAK+kC,OAASjuB,EAAM,GACpB9W,KAAK++B,MAAQjoB,EAAM,KAAOA,EAAM,GAChC9W,KAAKglC,QAAUluB,EAAM,GACrB9W,KAAKilC,UAAYnuB,EAAM,KAAOA,EAAM,GAAG3I,MAAM,GAC7CnO,KAAK+D,OAAS+S,EAAM,GACpB9W,KAAKuB,KAAOuV,EAAM,KAAO,GAd3B0tB,GAAgBvmC,UAAYymC,GAAgBzmC,UAiB5CymC,GAAgBzmC,UAAUoC,SAAW,WACnC,OAAOL,KAAK2kC,KACN3kC,KAAK4kC,MACL5kC,KAAK6kC,KACL7kC,KAAK8kC,QACJ9kC,KAAK+kC,KAAO,IAAM,KACJ,MAAd/kC,KAAK++B,MAAgB,GAAKpiC,KAAK4R,IAAI,EAAgB,EAAbvO,KAAK++B,SAC3C/+B,KAAKglC,MAAQ,IAAM,KACD,MAAlBhlC,KAAKilC,UAAoB,GAAK,IAAMtoC,KAAK4R,IAAI,EAAoB,EAAjBvO,KAAKilC,aACrDjlC,KAAK+D,KAAO,IAAM,IACnB/D,KAAKuB,MCjCE,ICCJ2jC,GCAP,GACO,GACA,GFHI,eACbC,EAAK,IAAK,IAAkC5sB,EAA9BlK,EAAI4d,EAAE3pB,OAAQgM,EAAI,EAAGgK,GAAM,EAAOhK,EAAID,IAAKC,EACvD,OAAQ2d,EAAE3d,IACR,IAAK,IAAKgK,EAAKC,EAAKjK,EAAG,MACvB,IAAK,IAAgB,IAAPgK,IAAUA,EAAKhK,GAAGiK,EAAKjK,EAAG,MACxC,QAAS,GAAIgK,EAAK,EAAG,CAAE,KAAM2T,EAAE3d,GAAI,MAAM62B,EAAK7sB,EAAK,EAAK,MAG5D,OAAOA,EAAK,EAAI2T,EAAE9d,MAAM,EAAGmK,GAAM2T,EAAE9d,MAAMoK,EAAK,GAAK0T,GCLtC,iBACb,IAAIpe,EAAIq2B,GAAc1+B,EAAGuN,GACzB,IAAKlF,EAAG,OAAOrI,EAAI,GACnB,IAAIy+B,EAAcp2B,EAAE,GAChBmsB,EAAWnsB,EAAE,GACbS,EAAI0rB,GAAYkL,GAAuE,EAAtDvoC,KAAK4R,KAAK,EAAG5R,KAAKD,IAAI,EAAGC,KAAKiC,MAAMo7B,EAAW,MAAY,EAC5F3rB,EAAI41B,EAAY3hC,OACpB,OAAOgM,IAAMD,EAAI41B,EACX31B,EAAID,EAAI41B,EAAc,IAAIl7B,MAAMuF,EAAID,EAAI,GAAG7O,KAAK,KAChD8O,EAAI,EAAI21B,EAAY91B,MAAM,EAAGG,GAAK,IAAM21B,EAAY91B,MAAMG,GAC1D,KAAO,IAAIvF,MAAM,EAAIuF,GAAG9O,KAAK,KAAO0kC,GAAc1+B,EAAG7I,KAAK4R,IAAI,EAAGwE,EAAIzE,EAAI,IAAI,IEZtE,iBACb,IAAIT,EAAIq2B,GAAc1+B,EAAGuN,GACzB,IAAKlF,EAAG,OAAOrI,EAAI,GACnB,IAAIy+B,EAAcp2B,EAAE,GAChBmsB,EAAWnsB,EAAE,GACjB,OAAOmsB,EAAW,EAAI,KAAO,IAAIjxB,OAAOixB,GAAUx6B,KAAK,KAAOykC,EACxDA,EAAY3hC,OAAS03B,EAAW,EAAIiK,EAAY91B,MAAM,EAAG6rB,EAAW,GAAK,IAAMiK,EAAY91B,MAAM6rB,EAAW,GAC5GiK,EAAc,IAAIl7B,MAAMixB,EAAWiK,EAAY3hC,OAAS,GAAG9C,KAAK,MCNzD,IACb,IAAK,SAASgG,EAAGuN,GAAK,OAAY,IAAJvN,GAAS4/B,QAAQryB,IAC/C,EAAK,SAASvN,GAAK,OAAO7I,KAAK6T,MAAMhL,GAAGnF,SAAS,IACjD,EAAK,SAASmF,GAAK,OAAOA,EAAI,IAC9B,EAAK,SAASA,GAAK,OAAO7I,KAAK6T,MAAMhL,GAAGnF,SAAS,KACjD,EAAK,SAASmF,EAAGuN,GAAK,OAAOvN,EAAEw+B,cAAcjxB,IAC7C,EAAK,SAASvN,EAAGuN,GAAK,OAAOvN,EAAE4/B,QAAQryB,IACvC,EAAK,SAASvN,EAAGuN,GAAK,OAAOvN,EAAE6/B,YAAYtyB,IAC3C,EAAK,SAASvN,GAAK,OAAO7I,KAAK6T,MAAMhL,GAAGnF,SAAS,IACjD,EAAK,SAASmF,EAAGuN,GAAK,OAAOuyB,GAAkB,IAAJ9/B,EAASuN,IACpD,EAAKuyB,GACL,EAAKC,GACL,EAAK,SAAS//B,GAAK,OAAO7I,KAAK6T,MAAMhL,GAAGnF,SAAS,IAAImlC,eACrD,EAAK,SAAShgC,GAAK,OAAO7I,KAAK6T,MAAMhL,GAAGnF,SAAS,MChBpC,eACb,OAAOmF,GCQLigC,GAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAEhE,eACb,IAAIpvB,EAAQqvB,EAAOvB,UAAYuB,EAAOrB,UAAYsB,GAAYD,EAAOvB,SAAUuB,EAAOrB,WAAa,GAC/FuB,EAAWF,EAAOE,SAClBC,EAAUH,EAAOG,QACjBvB,EAAWoB,EAAOpB,SAAWwB,GAAeJ,EAAOpB,UAAY,GAC/DyB,EAAUL,EAAOK,SAAW,IAEhC,SAASC,EAAUvB,GACjBA,EAAYD,GAAgBC,GAE5B,IAAIE,EAAOF,EAAUE,KACjBC,EAAQH,EAAUG,MAClBC,EAAOJ,EAAUI,KACjBC,EAASL,EAAUK,OACnBC,EAAON,EAAUM,KACjBhG,EAAQ0F,EAAU1F,MAClBiG,EAAQP,EAAUO,MAClBC,EAAYR,EAAUQ,UACtBlhC,EAAO0gC,EAAU1gC,KACjBxC,EAAOkjC,EAAUljC,KAGR,MAATA,GAAcyjC,GAAQ,EAAMzjC,EAAO,KAG7B0kC,GAAY1kC,KAAoB,MAAb0jC,IAAsBA,EAAY,IAAKlhC,GAAO,EAAMxC,EAAO,MAGpFwjC,GAAkB,MAATJ,GAA0B,MAAVC,KAAgBG,GAAO,EAAMJ,EAAO,IAAKC,EAAQ,KAI9E,IAAI7vB,EAAoB,MAAX+vB,EAAiBc,EAAS,GAAgB,MAAXd,GAAkB,SAAS5kC,KAAKqB,GAAQ,IAAMA,EAAK+pB,cAAgB,GAC3G4a,EAAoB,MAAXpB,EAAiBc,EAAS,GAAK,OAAO1lC,KAAKqB,GAAQwkC,EAAU,GAKtEI,EAAaF,GAAY1kC,GACzB6kC,EAAc,aAAalmC,KAAKqB,GAUpC,SAAS+P,EAAOnT,GACd,IAEImQ,EAAGD,EAAG6F,EAFNmyB,EAActxB,EACduxB,EAAcJ,EAGlB,GAAa,MAAT3kC,EACF+kC,EAAcH,EAAWhoC,GAASmoC,EAClCnoC,EAAQ,OACH,CACLA,GAASA,EAGT,IAAIooC,EAAgBpoC,EAAQ,EAe5B,GAdAA,EAAQgoC,EAAWxpC,KAAK6S,IAAIrR,GAAQ8mC,GAGhClhC,IAAM5F,EAAQqoC,GAAWroC,IAGzBooC,GAA4B,KAAVpoC,IAAaooC,GAAgB,GAGnDF,GAAeE,EAA0B,MAAT1B,EAAeA,EAAO,IAAgB,MAATA,GAAyB,MAATA,EAAe,GAAKA,GAAQwB,EACzGC,GAAwB,MAAT/kC,EAAekkC,GAAS,EAAIP,GAAiB,GAAK,IAAMoB,GAAeC,GAA0B,MAAT1B,EAAe,IAAM,IAIxHuB,EAAa,CACf93B,GAAK,EAAGD,EAAIlQ,EAAMmE,OAClB,QAASgM,EAAID,EACX,GAAI6F,EAAI/V,EAAM8hC,WAAW3xB,GAAI,GAAK4F,GAAKA,EAAI,GAAI,CAC7CoyB,GAAqB,KAANpyB,EAAW2xB,EAAU1nC,EAAMgQ,MAAMG,EAAI,GAAKnQ,EAAMgQ,MAAMG,IAAMg4B,EAC3EnoC,EAAQA,EAAMgQ,MAAM,EAAGG,GACvB,QAOJ02B,IAAUD,IAAM5mC,EAAQkY,EAAMlY,EAAOiG,MAGzC,IAAI9B,EAAS+jC,EAAY/jC,OAASnE,EAAMmE,OAASgkC,EAAYhkC,OACzDmkC,EAAUnkC,EAASy8B,EAAQ,IAAIh2B,MAAMg2B,EAAQz8B,EAAS,GAAG9C,KAAKmlC,GAAQ,GAM1E,OAHIK,GAASD,IAAM5mC,EAAQkY,EAAMowB,EAAUtoC,EAAOsoC,EAAQnkC,OAASy8B,EAAQuH,EAAYhkC,OAAS8B,KAAWqiC,EAAU,IAG7G7B,GACN,IAAK,IAAKzmC,EAAQkoC,EAAcloC,EAAQmoC,EAAcG,EAAS,MAC/D,IAAK,IAAKtoC,EAAQkoC,EAAcI,EAAUtoC,EAAQmoC,EAAa,MAC/D,IAAK,IAAKnoC,EAAQsoC,EAAQt4B,MAAM,EAAG7L,EAASmkC,EAAQnkC,QAAU,GAAK+jC,EAAcloC,EAAQmoC,EAAcG,EAAQt4B,MAAM7L,GAAS,MAC9H,QAASnE,EAAQsoC,EAAUJ,EAAcloC,EAAQmoC,EAAa,MAGhE,OAAOhC,EAASnmC,GAOlB,OApEA8mC,EAAyB,MAAbA,EAAoB,EAC1B,SAAS/kC,KAAKqB,GAAQ5E,KAAK4R,IAAI,EAAG5R,KAAKD,IAAI,GAAIuoC,IAC/CtoC,KAAK4R,IAAI,EAAG5R,KAAKD,IAAI,GAAIuoC,IA8D/B3zB,EAAOjR,SAAW,WAChB,OAAOokC,EAAY,IAGdnzB,EAGT,SAASo1B,EAAajC,EAAWtmC,GAC/B,IAAIX,EAAIwoC,GAAWvB,EAAYD,GAAgBC,GAAYA,EAAUljC,KAAO,IAAKkjC,IAC7EzhC,EAAiE,EAA7DrG,KAAK4R,KAAK,EAAG5R,KAAKD,IAAI,EAAGC,KAAKiC,MAAM,GAAST,GAAS,KAC1D+S,EAAIvU,KAAK0S,IAAI,IAAKrM,GAClB+R,EAAS0wB,GAAS,EAAIziC,EAAI,GAC9B,OAAO,SAAS7E,GACd,OAAOX,EAAE0T,EAAI/S,GAAS4W,GAI1B,MAAO,CACLzD,OAAQ00B,EACRU,aAAcA,IJ9HH,SAASC,GAAc1lB,GAIpC,OAHA,GAAS,GAAaA,GACtB,GAAS,GAAO3P,OAChB,GAAe,GAAOo1B,aACf,GAXTC,GAAc,CACZd,QAAS,IACTxB,UAAW,IACXF,SAAU,CAAC,GACXyB,SAAU,CAAC,IAAK,MKRH,mBACb,OAAOjpC,KAAK4R,IAAI,GAAI,GAAS5R,KAAK6S,IAAI1C,MCDzB,iBACb,OAAOnQ,KAAK4R,IAAI,EAAgE,EAA7D5R,KAAK4R,KAAK,EAAG5R,KAAKD,IAAI,EAAGC,KAAKiC,MAAM,GAAST,GAAS,KAAW,GAASxB,KAAK6S,IAAI1C,MCDzF,iBAEb,OADAA,EAAOnQ,KAAK6S,IAAI1C,GAAOyB,EAAM5R,KAAK6S,IAAIjB,GAAOzB,EACtCnQ,KAAK4R,IAAI,EAAG,GAASA,GAAO,GAASzB,IAAS,GCGxC,cACb,OAAO,IAAI85B,IAGb,SAASA,KACP5mC,KAAK6mC,QAGPD,GAAM3oC,UAAY,CAChBoW,YAAauyB,GACbC,MAAO,WACL7mC,KAAKisB,EACLjsB,KAAK0T,EAAI,GAEXvI,IAAK,SAASiF,GACZ,GAAI1I,GAAM0I,EAAGpQ,KAAK0T,GAClB,GAAI1T,KAAM0H,GAAKukB,EAAGjsB,KAAKisB,GACnBjsB,KAAKisB,EAAGjsB,KAAK0T,GAAKhM,GAAKgM,EACtB1T,KAAKisB,EAAIvkB,GAAKgM,GAErBod,QAAS,WACP,OAAO9wB,KAAKisB,IAIhB,IAAIvkB,GAAO,IAAIk/B,GAEf,SAAS,GAAIE,EAAOriC,EAAGC,GACrB,IAAIc,EAAIshC,EAAM7a,EAAIxnB,EAAIC,EAClBqiC,EAAKvhC,EAAIf,EACTuiC,EAAKxhC,EAAIuhC,EACbD,EAAMpzB,EAAKjP,EAAIuiC,GAAOtiC,EAAIqiC,GCtCrB,IAAI,GAAU,KACV,GAAW,MACX,GAAKpqC,KAAKgwB,GACV,GAAS,GAAK,EACdsa,GAAY,GAAK,EACjB,GAAW,EAAL,GAGNC,GAAU,GAAK,IAEf13B,GAAM7S,KAAK6S,IACX4hB,GAAOz0B,KAAKy0B,KACZtD,GAAQnxB,KAAKmxB,MACb,GAAMnxB,KAAK0wB,IAEX8Z,IADOxqC,KAAKgC,KACNhC,KAAKwqC,KAEXh4B,IADQxS,KAAKiC,MACPjC,KAAKwS,KAEX,IADMxS,KAAK0S,IACL1S,KAAK2wB,KAEX5e,IADO/R,KAAKkoC,KACLloC,KAAK+R,MACZic,GAAMhuB,KAAKguB,IAEf,SAASmS,GAAKt3B,GACnB,OAAOA,EAAI,EAAI,EAAIA,GAAK,EAAI,GAAK7I,KAAKmgC,KAAKt3B,GAGtC,SAASm1B,GAAKn1B,GACnB,OAAOA,EAAI,EAAI,GAASA,GAAK,GAAK,GAAS7I,KAAKg+B,KAAKn1B,GC7BxC,SAAS,MCKCshC,KAEXA,KCDP,SAAS,GAAUM,GACxB,IAAIC,EAASD,EAAU,GAAIE,EAAMF,EAAU,GAAIG,EAAS,GAAID,GAC5D,MAAO,CAACC,EAAS,GAAIF,GAASE,EAAS,GAAIF,GAAS,GAAIC,IAOnD,SAASE,GAAe/iC,EAAGC,GAChC,MAAO,CAACD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAID,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAID,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,IAahF,SAAS+iC,GAA0B55B,GACxC,IAAIqe,EAAIxd,GAAKb,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAClDA,EAAE,IAAMqe,EAAGre,EAAE,IAAMqe,EAAGre,EAAE,IAAMqe,ECrBjB4a,KCPf,SAASY,GAAiBL,EAAQC,GAChC,MAAO,CAAC93B,GAAI63B,GAAU,GAAKA,EAAS1qC,KAAK6T,OAAO62B,EAAS,IAAO,GAAMA,EAAQC,GAGhFI,GAAiBC,OAASD,GC0BX,IC/BA,cACb,IACIl1B,EADAo1B,EAAQ,GAEZ,MAAO,CACLC,MAAO,SAASriC,EAAG4K,GACjBoC,EAAK4B,KAAK,CAAC5O,EAAG4K,KAEhB03B,UAAW,WACTF,EAAMxzB,KAAK5B,EAAO,KAEpBu1B,QAAS,GACTC,OAAQ,WACFJ,EAAMtlC,OAAS,GAAGslC,EAAMxzB,KAAKwzB,EAAM5V,MAAMt0B,OAAOkqC,EAAMK,WAE5DhpC,OAAQ,WACN,IAAIA,EAAS2oC,EAGb,OAFAA,EAAQ,GACRp1B,EAAO,KACAvT,KClBE,iBACb,OAAOuQ,GAAI/K,EAAE,GAAKC,EAAE,IAAM,IAAW8K,GAAI/K,EAAE,GAAKC,EAAE,IAAM,ICD1D,SAASwjC,GAAaL,EAAOM,EAAQC,EAAOC,GAC1CroC,KAAKwF,EAAIqiC,EACT7nC,KAAKutB,EAAI4a,EACTnoC,KAAKke,EAAIkqB,EACTpoC,KAAKgD,EAAIqlC,EACTroC,KAAKia,GAAI,EACTja,KAAKqO,EAAIrO,KAAK+S,EAAI,KAML,2BACb,IAEIzE,EACAD,EAHAqS,EAAU,GACV4nB,EAAO,GAwBX,GApBAC,EAAS3J,SAAQ,SAAS4J,GACxB,MAAKn6B,EAAIm6B,EAAQlmC,OAAS,IAAM,GAAhC,CACA,IAAI+L,EAAqC7I,EAAlCijC,EAAKD,EAAQ,GAAIE,EAAKF,EAAQn6B,GAKrC,GAAIs6B,GAAWF,EAAIC,GAAnB,CAEE,IADAE,EAAOd,YACFx5B,EAAI,EAAGA,EAAID,IAAKC,EAAGs6B,EAAOf,OAAOY,EAAKD,EAAQl6B,IAAI,GAAIm6B,EAAG,IAC9DG,EAAOb,eAITrnB,EAAQtM,KAAK5O,EAAI,IAAI0iC,GAAaO,EAAID,EAAS,MAAM,IACrDF,EAAKl0B,KAAK5O,EAAE0Y,EAAI,IAAIgqB,GAAaO,EAAI,KAAMjjC,GAAG,IAC9Ckb,EAAQtM,KAAK5O,EAAI,IAAI0iC,GAAaQ,EAAIF,EAAS,MAAM,IACrDF,EAAKl0B,KAAK5O,EAAE0Y,EAAI,IAAIgqB,GAAaQ,EAAI,KAAMljC,GAAG,QAG3Ckb,EAAQpe,OAAb,CAMA,IAJAgmC,EAAKliC,KAAKyiC,GACV,GAAKnoB,GACL,GAAK4nB,GAEAh6B,EAAI,EAAGD,EAAIi6B,EAAKhmC,OAAQgM,EAAID,IAAKC,EACpCg6B,EAAKh6B,GAAGtL,EAAI8lC,GAAeA,EAG7B,IACIX,EACAN,EAFAz5B,EAAQsS,EAAQ,GAIpB,MAAO,EAAG,CAER,IAAIqoB,EAAU36B,EACV46B,GAAY,EAChB,MAAOD,EAAQ9uB,EAAG,IAAK8uB,EAAUA,EAAQ16B,KAAOD,EAAO,OACvD+5B,EAASY,EAAQxb,EACjBqb,EAAOd,YACP,EAAG,CAED,GADAiB,EAAQ9uB,EAAI8uB,EAAQ7qB,EAAEjE,GAAI,EACtB8uB,EAAQ/lC,EAAG,CACb,GAAIgmC,EACF,IAAK16B,EAAI,EAAGD,EAAI85B,EAAO7lC,OAAQgM,EAAID,IAAKC,EAAGs6B,EAAOf,OAAOA,EAAQM,EAAO75B,IAAI,GAAIu5B,EAAM,SAEtFzR,EAAY2S,EAAQvjC,EAAGujC,EAAQ16B,EAAE7I,EAAG,EAAGojC,GAEzCG,EAAUA,EAAQ16B,MACb,CACL,GAAI26B,EAEF,IADAb,EAASY,EAAQh2B,EAAEwa,EACdjf,EAAI65B,EAAO7lC,OAAS,EAAGgM,GAAK,IAAKA,EAAGs6B,EAAOf,OAAOA,EAAQM,EAAO75B,IAAI,GAAIu5B,EAAM,SAEpFzR,EAAY2S,EAAQvjC,EAAGujC,EAAQh2B,EAAEvN,GAAI,EAAGojC,GAE1CG,EAAUA,EAAQh2B,EAEpBg2B,EAAUA,EAAQ7qB,EAClBiqB,EAASY,EAAQxb,EACjByb,GAAaA,SACLD,EAAQ9uB,GAClB2uB,EAAOb,aAIX,SAAS,GAAKj4B,GACZ,GAAMzB,EAAIyB,EAAMxN,OAAhB,CACA,IAAI+L,EAGA3J,EAFA4J,EAAI,EACJ7J,EAAIqL,EAAM,GAEd,QAASxB,EAAID,EACX5J,EAAE4J,EAAI3J,EAAIoL,EAAMxB,GAChB5J,EAAEqO,EAAItO,EACNA,EAAIC,EAEND,EAAE4J,EAAI3J,EAAIoL,EAAM,GAChBpL,EAAEqO,EAAItO,GC/FR,IAAI,GAAMqiC,KAEK,iBACb,IAAIO,EAASQ,EAAM,GACfP,EAAMO,EAAM,GACZoB,EAAS,GAAI3B,GACb4B,EAAS,CAAC,GAAI7B,IAAU,GAAIA,GAAS,GACrC8B,EAAQ,EACRC,EAAU,EAEd,GAAIvC,QAEW,IAAXoC,EAAc3B,EAAM,GAAS,IACZ,IAAZ2B,IAAe3B,GAAO,GAAS,IAExC,IAAK,IAAIh5B,EAAI,EAAGD,EAAIg7B,EAAQ/mC,OAAQgM,EAAID,IAAKC,EAC3C,GAAMsB,GAAK05B,EAAOD,EAAQ/6B,IAAIhM,OAS9B,IARA,IAAIgnC,EACA15B,EACA25B,EAASD,EAAK15B,EAAI,GAClB45B,EAAUD,EAAO,GACjBE,EAAOF,EAAO,GAAK,EAAItC,GACvByC,EAAU,GAAID,GACdE,EAAU,GAAIF,GAETz5B,EAAI,EAAGA,EAAIJ,IAAKI,EAAGw5B,EAAUI,EAASF,EAAUG,EAASF,EAAUG,EAASP,EAASQ,EAAQ,CACpG,IAAIA,EAAST,EAAKt5B,GACd45B,EAAUG,EAAO,GACjBC,EAAOD,EAAO,GAAK,EAAI9C,GACvB4C,EAAU,GAAIG,GACdF,EAAU,GAAIE,GACdC,EAAQL,EAAUJ,EAClB3E,EAAOoF,GAAS,EAAI,GAAK,EACzBC,EAAWrF,EAAOoF,EAClBE,EAAeD,EAAW,GAC1Bh5B,EAAIw4B,EAAUG,EAOlB,GALA,GAAI1+B,IAAI2iB,GAAM5c,EAAI2zB,EAAO,GAAIqF,GAAWP,EAAUG,EAAU54B,EAAI,GAAIg5B,KACpEf,GAASgB,EAAeF,EAAQpF,EAAO,GAAMoF,EAIzCE,EAAeX,GAAWnC,EAASuC,GAAWvC,EAAQ,CACxD,IAAIpK,EAAMuK,GAAe,GAAU+B,GAAS,GAAUQ,IACtDtC,GAA0BxK,GAC1B,IAAImN,EAAe5C,GAAe0B,EAAQjM,GAC1CwK,GAA0B2C,GAC1B,IAAIC,GAAUF,EAAeF,GAAS,GAAK,EAAI,GAAKtP,GAAKyP,EAAa,KAClE9C,EAAM+C,GAAU/C,IAAQ+C,IAAWpN,EAAI,IAAMA,EAAI,OACnDmM,GAAWe,EAAeF,GAAS,EAAI,GAAK,IAiBpD,OAAQd,GAAS,IAAWA,EAAQ,IAAW,IAAO,IAAsB,EAAVC,GChErD,qBACb,OAAO,SAASkB,GACd,IAIIjB,EACAd,EACAe,EANA92B,EAAO+3B,EAASD,GAChBE,EAAa,KACbC,EAAWF,EAASC,GACpBE,GAAiB,EAKjBpC,EAAO,CACTT,MAAOA,EACPC,UAAWA,EACXC,QAASA,EACT4C,aAAc,WACZrC,EAAKT,MAAQ+C,EACbtC,EAAKR,UAAY+C,EACjBvC,EAAKP,QAAU+C,EACfvC,EAAW,GACXc,EAAU,IAEZ0B,WAAY,WACVzC,EAAKT,MAAQA,EACbS,EAAKR,UAAYA,EACjBQ,EAAKP,QAAUA,EACfQ,EAAW,EAAMA,GACjB,IAAIO,EAAckC,GAAgB3B,EAASj7B,GACvCm6B,EAASjmC,QACNooC,IAAgBJ,EAAKK,eAAgBD,GAAiB,GAC3D,GAAWnC,EAAU,GAAqBO,EAAa1S,EAAakU,IAC3DxB,IACJ4B,IAAgBJ,EAAKK,eAAgBD,GAAiB,GAC3DJ,EAAKxC,YACL1R,EAAY,KAAM,KAAM,EAAGkU,GAC3BA,EAAKvC,WAEH2C,IAAgBJ,EAAKS,aAAcL,GAAiB,GACxDnC,EAAWc,EAAU,MAEvB4B,OAAQ,WACNX,EAAKK,eACLL,EAAKxC,YACL1R,EAAY,KAAM,KAAM,EAAGkU,GAC3BA,EAAKvC,UACLuC,EAAKS,eAIT,SAASlD,EAAMR,EAAQC,GACjB4D,EAAa7D,EAAQC,IAAMgD,EAAKzC,MAAMR,EAAQC,GAGpD,SAAS6D,EAAU9D,EAAQC,GACzB90B,EAAKq1B,MAAMR,EAAQC,GAGrB,SAASQ,IACPQ,EAAKT,MAAQsD,EACb34B,EAAKs1B,YAGP,SAASC,IACPO,EAAKT,MAAQA,EACbr1B,EAAKu1B,UAGP,SAAS6C,EAAUvD,EAAQC,GACzBgC,EAAKl1B,KAAK,CAACizB,EAAQC,IACnBmD,EAAS5C,MAAMR,EAAQC,GAGzB,SAASuD,IACPJ,EAAS3C,YACTwB,EAAO,GAGT,SAASwB,IACPF,EAAUtB,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC9BmB,EAAS1C,UAET,IAEIz5B,EAA4BsB,EAC5B44B,EACAX,EAJAuD,EAAQX,EAASW,QACjBC,EAAeb,EAAWvrC,SACvBoP,EAAIg9B,EAAa/oC,OAQxB,GAJAgnC,EAAKtX,MACLqX,EAAQj1B,KAAKk1B,GACbA,EAAO,KAEFj7B,EAGL,GAAY,EAAR+8B,GAEF,GADA5C,EAAU6C,EAAa,IAClBz7B,EAAI44B,EAAQlmC,OAAS,GAAK,EAAG,CAGhC,IAFKooC,IAAgBJ,EAAKK,eAAgBD,GAAiB,GAC3DJ,EAAKxC,YACAx5B,EAAI,EAAGA,EAAIsB,IAAKtB,EAAGg8B,EAAKzC,OAAOA,EAAQW,EAAQl6B,IAAI,GAAIu5B,EAAM,IAClEyC,EAAKvC,gBAOL15B,EAAI,GAAa,EAAR+8B,GAAWC,EAAaj3B,KAAKi3B,EAAarZ,MAAMt0B,OAAO2tC,EAAapD,UAEjFM,EAASn0B,KAAKi3B,EAAan4B,OAAOo4B,KAGpC,OAAOhD,IAIX,SAASgD,GAAa9C,GACpB,OAAOA,EAAQlmC,OAAS,EAK1B,SAAS,GAAoBmC,EAAGC,GAC9B,QAASD,EAAIA,EAAEe,GAAG,GAAK,EAAIf,EAAE,GAAK,GAAS,GAAU,GAASA,EAAE,MACvDC,EAAIA,EAAEc,GAAG,GAAK,EAAId,EAAE,GAAK,GAAS,GAAU,GAASA,EAAE,IC9HnD,IACb,WAAa,OAAO,IACpB6mC,GACAC,GACA,EAAE,IAAK,KAMT,SAASD,GAAqB3C,GAC5B,IAGIwC,EAHA5B,EAAUn8B,IACVo8B,EAAOp8B,IACPo+B,EAAQp+B,IAGZ,MAAO,CACLy6B,UAAW,WACTc,EAAOd,YACPsD,EAAQ,GAEVvD,MAAO,SAAS+B,EAASI,GACvB,IAAI0B,EAAQ9B,EAAU,EAAI,IAAM,GAC5BK,EAAQz6B,GAAIo6B,EAAUJ,GACtBh6B,GAAIy6B,EAAQ,IAAM,IACpBrB,EAAOf,MAAM2B,EAASC,GAAQA,EAAOO,GAAQ,EAAI,EAAI,IAAU,IAC/DpB,EAAOf,MAAM4D,EAAOhC,GACpBb,EAAOb,UACPa,EAAOd,YACPc,EAAOf,MAAM6D,EAAOjC,GACpBb,EAAOf,MAAM+B,EAASH,GACtB2B,EAAQ,GACCK,IAAUC,GAASzB,GAAS,KACjCz6B,GAAIg6B,EAAUiC,GAAS,KAASjC,GAAWiC,EAAQ,IACnDj8B,GAAIo6B,EAAU8B,GAAS,KAAS9B,GAAW8B,EAAQ,IACvDjC,EAAOkC,GAA0BnC,EAASC,EAAMG,EAASI,GACzDpB,EAAOf,MAAM4D,EAAOhC,GACpBb,EAAOb,UACPa,EAAOd,YACPc,EAAOf,MAAM6D,EAAOjC,GACpB2B,EAAQ,GAEVxC,EAAOf,MAAM2B,EAAUI,EAASH,EAAOO,GACvCyB,EAAQC,GAEV3D,QAAS,WACPa,EAAOb,UACPyB,EAAUC,EAAOp8B,KAEnB+9B,MAAO,WACL,OAAO,EAAIA,IAKjB,SAASO,GAA0BnC,EAASC,EAAMG,EAASI,GACzD,IAAIL,EACAG,EACA8B,EAAoB,GAAIpC,EAAUI,GACtC,OAAOp6B,GAAIo8B,GAAqB,GAC1Bxa,IAAM,GAAIqY,IAASK,EAAU,GAAIE,IAAS,GAAIJ,GAC1C,GAAII,IAASL,EAAU,GAAIF,IAAS,GAAID,KACvCG,EAAUG,EAAU8B,KACxBnC,EAAOO,GAAQ,EAGxB,SAASwB,GAA4BK,EAAMC,EAAIC,EAAWnD,GACxD,IAAItB,EACJ,GAAY,MAARuE,EACFvE,EAAMyE,EAAY,GAClBnD,EAAOf,OAAO,GAAIP,GAClBsB,EAAOf,MAAM,EAAGP,GAChBsB,EAAOf,MAAM,GAAIP,GACjBsB,EAAOf,MAAM,GAAI,GACjBe,EAAOf,MAAM,IAAKP,GAClBsB,EAAOf,MAAM,GAAIP,GACjBsB,EAAOf,OAAO,IAAKP,GACnBsB,EAAOf,OAAO,GAAI,GAClBe,EAAOf,OAAO,GAAIP,QACb,GAAI93B,GAAIq8B,EAAK,GAAKC,EAAG,IAAM,GAAS,CACzC,IAAIzE,EAASwE,EAAK,GAAKC,EAAG,GAAK,IAAM,GACrCxE,EAAMyE,EAAY1E,EAAS,EAC3BuB,EAAOf,OAAOR,EAAQC,GACtBsB,EAAOf,MAAM,EAAGP,GAChBsB,EAAOf,MAAMR,EAAQC,QAErBsB,EAAOf,MAAMiE,EAAG,GAAIA,EAAG,ICpFXhF,KCDFA,KACIA,KCFH,SAASkF,GAAYnhC,GAClC7K,KAAKisC,SAAWphC,EAGlBmhC,GAAY/tC,UAAY,CACtBiuC,QAAS,IACTC,YAAa,SAAS/4B,GACpB,OAAOpT,KAAKksC,QAAU94B,EAAGpT,MAE3B2qC,aAAc,WACZ3qC,KAAKosC,MAAQ,GAEfrB,WAAY,WACV/qC,KAAKosC,MAAQ/+B,KAEfy6B,UAAW,WACT9nC,KAAKqsC,OAAS,GAEhBtE,QAAS,WACY,IAAf/nC,KAAKosC,OAAapsC,KAAKisC,SAASzQ,YACpCx7B,KAAKqsC,OAASh/B,KAEhBw6B,MAAO,SAASriC,EAAG4K,GACjB,OAAQpQ,KAAKqsC,QACX,KAAK,EACHrsC,KAAKisC,SAAS1Q,OAAO/1B,EAAG4K,GACxBpQ,KAAKqsC,OAAS,EACd,MAEF,KAAK,EACHrsC,KAAKisC,SAASxQ,OAAOj2B,EAAG4K,GACxB,MAEF,QACEpQ,KAAKisC,SAAS1Q,OAAO/1B,EAAIxF,KAAKksC,QAAS97B,GACvCpQ,KAAKisC,SAAShP,IAAIz3B,EAAG4K,EAAGpQ,KAAKksC,QAAS,EAAG,IACzC,QAINjtC,OAAQ,ICvCM6nC,KCJD,SAASwF,KACtBtsC,KAAKusC,QAAU,GAoDjB,SAAS,GAAOnJ,GACd,MAAO,MAAQA,EACT,IAAMA,EAAS,IAAMA,EAAS,aAAe,EAAIA,EACjD,IAAMA,EAAS,IAAMA,EAAS,YAAc,EAAIA,EAChD,IArDRkJ,GAAWruC,UAAY,CACrBiuC,QAAS,IACTM,QAAS,GAAO,KAChBL,YAAa,SAAS/4B,GAEpB,OADKA,GAAKA,KAAOpT,KAAKksC,UAASlsC,KAAKksC,QAAU94B,EAAGpT,KAAKwsC,QAAU,MACzDxsC,MAET2qC,aAAc,WACZ3qC,KAAKosC,MAAQ,GAEfrB,WAAY,WACV/qC,KAAKosC,MAAQ/+B,KAEfy6B,UAAW,WACT9nC,KAAKqsC,OAAS,GAEhBtE,QAAS,WACY,IAAf/nC,KAAKosC,OAAapsC,KAAKusC,QAAQn4B,KAAK,KACxCpU,KAAKqsC,OAASh/B,KAEhBw6B,MAAO,SAASriC,EAAG4K,GACjB,OAAQpQ,KAAKqsC,QACX,KAAK,EACHrsC,KAAKusC,QAAQn4B,KAAK,IAAK5O,EAAG,IAAK4K,GAC/BpQ,KAAKqsC,OAAS,EACd,MAEF,KAAK,EACHrsC,KAAKusC,QAAQn4B,KAAK,IAAK5O,EAAG,IAAK4K,GAC/B,MAEF,QACsB,MAAhBpQ,KAAKwsC,UAAiBxsC,KAAKwsC,QAAU,GAAOxsC,KAAKksC,UACrDlsC,KAAKusC,QAAQn4B,KAAK,IAAK5O,EAAG,IAAK4K,EAAGpQ,KAAKwsC,SACvC,QAINvtC,OAAQ,WACN,GAAIe,KAAKusC,QAAQjqC,OAAQ,CACvB,IAAIrD,EAASe,KAAKusC,QAAQ/sC,KAAK,IAE/B,OADAQ,KAAKusC,QAAU,GACRttC,EAEP,OAAO,OC1CN,SAASwtC,GAAYC,GAC1B,OAAO,SAAS9D,GACd,IAAI3c,EAAI,IAAI0gB,GACZ,IAAK,IAAIjsC,KAAOgsC,EAASzgB,EAAEvrB,GAAOgsC,EAAQhsC,GAE1C,OADAurB,EAAE2c,OAASA,EACJ3c,GAIX,SAAS0gB,MAETA,GAAgB1uC,UAAY,CAC1BoW,YAAas4B,GACb9E,MAAO,SAASriC,EAAG4K,GAAKpQ,KAAK4oC,OAAOf,MAAMriC,EAAG4K,IAC7C66B,OAAQ,WAAajrC,KAAK4oC,OAAOqC,UACjCnD,UAAW,WAAa9nC,KAAK4oC,OAAOd,aACpCC,QAAS,WAAa/nC,KAAK4oC,OAAOb,WAClC4C,aAAc,WAAa3qC,KAAK4oC,OAAO+B,gBACvCI,WAAY,WAAa/qC,KAAK4oC,OAAOmC,eCnBlB,GAAI,GAAK7D,ICMPuF,GAAY,CACjC5E,MAAO,SAASriC,EAAG4K,GACjBpQ,KAAK4oC,OAAOf,MAAMriC,EAAI0hC,GAAS92B,EAAI82B,OCXhC,SAAS0F,GAAav8B,GAC3B,OAAO,SAAS7K,EAAG4K,GACjB,IAAIy8B,EAAK,GAAIrnC,GACTsnC,EAAK,GAAI18B,GACTc,EAAIb,EAAMw8B,EAAKC,GACnB,MAAO,CACL57B,EAAI47B,EAAK,GAAItnC,GACb0L,EAAI,GAAId,KAKP,SAAS28B,GAAgB5D,GAC9B,OAAO,SAAS3jC,EAAG4K,GACjB,IAAImd,EAAI7e,GAAKlJ,EAAIA,EAAI4K,EAAIA,GACrB8D,EAAIi1B,EAAM5b,GACVyf,EAAK,GAAI94B,GACT+4B,EAAK,GAAI/4B,GACb,MAAO,CACL4Z,GAAMtoB,EAAIwnC,EAAIzf,EAAI0f,GAClBtS,GAAKpN,GAAKnd,EAAI48B,EAAKzf,KClBlB,IAAI2f,GAAwBN,IAAa,SAASO,GACvD,OAAOz+B,GAAK,GAAK,EAAIy+B,OAGvBD,GAAsBvF,OAASoF,IAAgB,SAASxf,GACtD,OAAO,EAAIoN,GAAKpN,EAAI,MAGP,ICRJ6f,GAA0BR,IAAa,SAAS14B,GACzD,OAAQA,EAAI4oB,GAAK5oB,KAAOA,EAAI,GAAIA,MAGlCk5B,GAAwBzF,OAASoF,IAAgB,SAASxf,GACxD,OAAOA,KCLF,SAAS8f,GAAYhG,EAAQC,GAClC,MAAO,CAACD,EAAQl4B,GAAIwb,IAAK,GAAS2c,GAAO,KAG3C+F,GAAY1F,OAAS,SAASniC,EAAG4K,GAC/B,MAAO,CAAC5K,EAAG,EAAI4rB,GAAK+V,GAAI/2B,IAAM,KCPzB,SAASk9B,GAAmBjG,EAAQC,GACzC,MAAO,CAACD,EAAQC,GAGlBgG,GAAmB3F,OAAS2F,GCkBb,ICrBXC,GAAK,SACLC,IAAM,QACNC,GAAK,OACLC,GAAK,QACLC,GAAIj/B,GAAK,GAAK,EACd,GAAa,GAEV,SAASk/B,GAAcvG,EAAQC,GACpC,IAAIpb,EAAIyO,GAAKgT,GAAI,GAAIrG,IAAOuG,EAAK3hB,EAAIA,EAAG4hB,EAAKD,EAAKA,EAAKA,EACvD,MAAO,CACLxG,EAAS,GAAInb,IAAMyhB,IAAKJ,GAAK,EAAIC,GAAKK,EAAKC,GAAM,EAAIL,GAAK,EAAIC,GAAKG,KACnE3hB,GAAKqhB,GAAKC,GAAKK,EAAKC,GAAML,GAAKC,GAAKG,KAIxCD,GAAcjG,OAAS,SAASniC,EAAG4K,GAEjC,IADA,IACgB65B,EAAO8D,EAAIC,EADvB9hB,EAAI9b,EAAGy9B,EAAK3hB,EAAIA,EAAG4hB,EAAKD,EAAKA,EAAKA,EAC7Bv/B,EAAI,EAAmBA,EAAI,KAAcA,EAIhD,GAHAy/B,EAAK7hB,GAAKqhB,GAAKC,GAAKK,EAAKC,GAAML,GAAKC,GAAKG,IAAOz9B,EAChD49B,EAAMT,GAAK,EAAIC,GAAKK,EAAKC,GAAM,EAAIL,GAAK,EAAIC,GAAKG,GACjD3hB,GAAK+d,EAAQ8D,EAAKC,EAAKH,EAAK3hB,EAAIA,EAAG4hB,EAAKD,EAAKA,EAAKA,EAC9Cr+B,GAAIy6B,GAAS,GAAU,MAE7B,MAAO,CACL0D,GAAInoC,GAAK+nC,GAAK,EAAIC,GAAKK,EAAKC,GAAM,EAAIL,GAAK,EAAIC,GAAKG,IAAO,GAAI3hB,GAC/DyO,GAAK,GAAIzO,GAAKyhB,MCxBX,SAASM,GAAYzoC,EAAG4K,GAC7B,IAAI08B,EAAK,GAAI18B,GAAIc,EAAI,GAAI1L,GAAKsnC,EAC9B,MAAO,CAACA,EAAK,GAAItnC,GAAK0L,EAAG,GAAId,GAAKc,GAGpC+8B,GAAYtG,OAASoF,GAAgB3b,ICN9B,SAAS8c,GAAiB7G,EAAQC,GACvC,IAAI6G,EAAO7G,EAAMA,EAAK8G,EAAOD,EAAOA,EACpC,MAAO,CACL9G,GAAU,MAAS,QAAW8G,EAAOC,GAAoBA,GAAQ,QAAWD,EAAO,QAAWC,GAAhD,UAC9C9G,GAAO,SAAW6G,GAAQ,QAAWC,GAAoB,QAAWD,EAAtB,QAA6B,QAAWC,MAI1FF,GAAiBvG,OAAS,SAASniC,EAAG4K,GACpC,IAAqB65B,EAAjB3C,EAAMl3B,EAAG9B,EAAI,GACjB,EAAG,CACD,IAAI6/B,EAAO7G,EAAMA,EAAK8G,EAAOD,EAAOA,EACpC7G,GAAO2C,GAAS3C,GAAO,SAAW6G,GAAQ,QAAWC,GAAoB,QAAWD,EAAtB,QAA6B,QAAWC,KAAUh+B,IAC3G,SAAW+9B,GAAQ,QAAeC,GAAwB,QAAeD,EAA/B,QAAsC,QAAW,GAAKC,WAC9F5+B,GAAIy6B,GAAS,MAAa37B,EAAI,GACvC,MAAO,CACL9I,GAAK,OAAU2oC,EAAO7G,EAAMA,IAAoB6G,GAAoBA,EAAOA,EAAOA,GAAQ,QAAW,QAAWA,GAAvD,SAApB,UACrC7G,IChBG,SAAS+G,GAAgB7oC,EAAG4K,GACjC,MAAO,CAAC,GAAIA,GAAK,GAAI5K,GAAI,GAAI4K,IAG/Bi+B,GAAgB1G,OAASoF,GAAgBpS,ICJlC,SAAS2T,GAAiB9oC,EAAG4K,GAClC,IAAI08B,EAAK,GAAI18B,GAAIc,EAAI,EAAI,GAAI1L,GAAKsnC,EAClC,MAAO,CAACA,EAAK,GAAItnC,GAAK0L,EAAG,GAAId,GAAKc,GAGpCo9B,GAAiB3G,OAASoF,IAAgB,SAASxf,GACjD,OAAO,EAAI6D,GAAK7D,MCPX,SAASghB,GAAsBlH,EAAQC,GAC5C,MAAO,CAACn4B,GAAIwb,IAAK,GAAS2c,GAAO,KAAMD,GAGzCkH,GAAsB5G,OAAS,SAASniC,EAAG4K,GACzC,MAAO,EAAEA,EAAG,EAAIghB,GAAK+V,GAAI3hC,IAAM,KCRjC,SAAS,GAAM2Q,GACb,IAAIq4B,EAAM,EACN3W,EAAW1hB,EAAK0hB,SAChBvpB,EAAIupB,GAAYA,EAASv1B,OAC7B,GAAKgM,EACA,QAASA,GAAK,EAAGkgC,GAAO3W,EAASvpB,GAAGnQ,WADjCqwC,EAAM,EAEdr4B,EAAKhY,MAAQqwC,EAGA,kBACb,OAAOxuC,KAAKyuC,UAAU,KCVT,eACb,IAAiB1F,EAAwBlR,EAAUvpB,EAAGD,EAAlD8H,EAAOnW,KAAegG,EAAO,CAACmQ,GAClC,EAAG,CACD4yB,EAAU/iC,EAAK6I,UAAW7I,EAAO,GACjC,MAAOmQ,EAAO4yB,EAAQ/W,MAEpB,GADA7d,EAASgC,GAAO0hB,EAAW1hB,EAAK0hB,SAC5BA,EAAU,IAAKvpB,EAAI,EAAGD,EAAIwpB,EAASv1B,OAAQgM,EAAID,IAAKC,EACtDtI,EAAKoO,KAAKyjB,EAASvpB,UAGhBtI,EAAK1D,QACd,OAAOtC,MCXM,eACb,IAAiC63B,EAAUvpB,EAAvC6H,EAAOnW,KAAMuZ,EAAQ,CAACpD,GAC1B,MAAOA,EAAOoD,EAAMyY,MAElB,GADA7d,EAASgC,GAAO0hB,EAAW1hB,EAAK0hB,SAC5BA,EAAU,IAAKvpB,EAAIupB,EAASv1B,OAAS,EAAGgM,GAAK,IAAKA,EACpDiL,EAAMnF,KAAKyjB,EAASvpB,IAGxB,OAAOtO,MCRM,eACb,IAA4C63B,EAAUvpB,EAAGD,EAArD8H,EAAOnW,KAAMuZ,EAAQ,CAACpD,GAAOnQ,EAAO,GACxC,MAAOmQ,EAAOoD,EAAMyY,MAElB,GADAhsB,EAAKoO,KAAK+B,GAAO0hB,EAAW1hB,EAAK0hB,SAC7BA,EAAU,IAAKvpB,EAAI,EAAGD,EAAIwpB,EAASv1B,OAAQgM,EAAID,IAAKC,EACtDiL,EAAMnF,KAAKyjB,EAASvpB,IAGxB,MAAO6H,EAAOnQ,EAAKgsB,MACjB7d,EAASgC,GAEX,OAAOnW,MCXM,eACb,OAAOA,KAAKyuC,WAAU,SAASt4B,GAC7B,IAAIq4B,GAAOrwC,EAAMgY,EAAKpE,OAAS,EAC3B8lB,EAAW1hB,EAAK0hB,SAChBvpB,EAAIupB,GAAYA,EAASv1B,OAC7B,QAASgM,GAAK,EAAGkgC,GAAO3W,EAASvpB,GAAGnQ,MACpCgY,EAAKhY,MAAQqwC,MCNF,eACb,OAAOxuC,KAAK0uC,YAAW,SAASv4B,GAC1BA,EAAK0hB,UACP1hB,EAAK0hB,SAASzxB,KAAKkH,OCHV,eACb,IAAIc,EAAQpO,KACR2uC,EAAWC,GAAoBxgC,EAAOghB,GACtC7V,EAAQ,CAACnL,GACb,MAAOA,IAAUugC,EACfvgC,EAAQA,EAAMpD,OACduO,EAAMnF,KAAKhG,GAEb,IAAI8C,EAAIqI,EAAMjX,OACd,MAAO8sB,IAAQuf,EACbp1B,EAAMsC,OAAO3K,EAAG,EAAGke,GACnBA,EAAMA,EAAIpkB,OAEZ,OAAOuO,GAGT,SAASq1B,GAAoBnqC,EAAGC,GAC9B,GAAID,IAAMC,EAAG,OAAOD,EACpB,IAAIoqC,EAASpqC,EAAEqqC,YACXC,EAASrqC,EAAEoqC,YACX56B,EAAI,KACRzP,EAAIoqC,EAAO7c,MACXttB,EAAIqqC,EAAO/c,MACX,MAAOvtB,IAAMC,EACXwP,EAAIzP,EACJA,EAAIoqC,EAAO7c,MACXttB,EAAIqqC,EAAO/c,MAEb,OAAO9d,EC5BM,kBACb,IAAIiC,EAAOnW,KAAMuZ,EAAQ,CAACpD,GAC1B,MAAOA,EAAOA,EAAKnL,OACjBuO,EAAMnF,KAAK+B,GAEb,OAAOoD,GCLM,cACb,IAAIA,EAAQ,GAIZ,OAHAvZ,KAAKmT,MAAK,SAASgD,GACjBoD,EAAMnF,KAAK+B,MAENoD,GCLM,cACb,IAAIy1B,EAAS,GAMb,OALAhvC,KAAK0uC,YAAW,SAASv4B,GAClBA,EAAK0hB,UACRmX,EAAO56B,KAAK+B,MAGT64B,GCPM,cACb,IAAIlL,EAAO9jC,KAAMivC,EAAQ,GAMzB,OALAnL,EAAK3wB,MAAK,SAASgD,GACbA,IAAS2tB,GACXmL,EAAM76B,KAAK,CAAC6b,OAAQ9Z,EAAKnL,OAAQpL,OAAQuW,OAGtC84B,GCKM,SAASC,GAAUn9B,EAAM8lB,GACtC,IAEI1hB,EAEAoB,EACA43B,EACA7gC,EACAD,EAPAy1B,EAAO,IAAIsL,GAAKr9B,GAChBs9B,GAAUt9B,EAAK5T,QAAU2lC,EAAK3lC,MAAQ4T,EAAK5T,OAE3Cob,EAAQ,CAACuqB,GAMG,MAAZjM,IAAkBA,EAAWyX,IAEjC,MAAOn5B,EAAOoD,EAAMyY,MAElB,GADIqd,IAAQl5B,EAAKhY,OAASgY,EAAKpE,KAAK5T,QAC/BgxC,EAAStX,EAAS1hB,EAAKpE,SAAW1D,EAAI8gC,EAAO7sC,QAEhD,IADA6T,EAAK0hB,SAAW,IAAI9uB,MAAMsF,GACrBC,EAAID,EAAI,EAAGC,GAAK,IAAKA,EACxBiL,EAAMnF,KAAKmD,EAAQpB,EAAK0hB,SAASvpB,GAAK,IAAI8gC,GAAKD,EAAO7gC,KACtDiJ,EAAMvM,OAASmL,EACfoB,EAAMg4B,MAAQp5B,EAAKo5B,MAAQ,EAKjC,OAAOzL,EAAK4K,WAAWc,IAGzB,SAASC,KACP,OAAOP,GAAUlvC,MAAM0uC,WAAWgB,IAGpC,SAASJ,GAAgBzhC,GACvB,OAAOA,EAAEgqB,SAGX,SAAS6X,GAASv5B,GAChBA,EAAKpE,KAAOoE,EAAKpE,KAAKA,KAGjB,SAASy9B,GAAcr5B,GAC5B,IAAIw5B,EAAS,EACb,GAAGx5B,EAAKw5B,OAASA,SACTx5B,EAAOA,EAAKnL,SAAYmL,EAAKw5B,SAAWA,GAG3C,SAASP,GAAKr9B,GACnB/R,KAAK+R,KAAOA,EACZ/R,KAAKuvC,MACLvvC,KAAK2vC,OAAS,EACd3vC,KAAKgL,OAAS,KAGhBokC,GAAKnxC,UAAYixC,GAAUjxC,UAAY,CACrCoW,YAAa+6B,GACbrgC,MAAO,GACPoE,KAAM,GACNs7B,UAAW,GACXC,WAAY,GACZF,IAAK,GACLpoC,KAAM,GACNyL,KAAM,GACNi9B,UAAW,GACXc,YAAa,GACbZ,OAAQ,GACRC,MAAO,GACPt9B,KAAM89B,IC7EW1mC,MAAM9K,UAAUkQ,MCApB,ICAA,uBACb,IACIgI,EADAoD,EAAQvO,EAAO6sB,SAEfvpB,GAAK,EACLD,EAAIkL,EAAMjX,OACV4O,EAAIlG,EAAO7M,QAAUw9B,EAAKM,GAAMjxB,EAAO7M,MAE3C,QAASmQ,EAAID,EACX8H,EAAOoD,EAAMjL,GAAI6H,EAAK+lB,GAAKA,EAAI/lB,EAAKylB,GAAKA,EACzCzlB,EAAK8lB,GAAKA,EAAI9lB,EAAKwlB,GAAKM,GAAM9lB,EAAKhY,MAAQ+S,GCkD/C,SAAS2+B,GAAS15B,EAAM7H,GACtBtO,KAAKoT,EAAI+C,EACTnW,KAAKgL,OAAS,KACdhL,KAAK63B,SAAW,KAChB73B,KAAK8vC,EAAI,KACT9vC,KAAKyE,EAAIzE,KACTA,KAAKutB,EAAI,EACTvtB,KAAK4P,EAAI,EACT5P,KAAKkU,EAAI,EACTlU,KAAKisB,EAAI,EACTjsB,KAAK0T,EAAI,KACT1T,KAAKsO,EAAIA,EAGXuhC,GAAS5xC,UAAYyB,OAAOgG,OAAO0pC,GAAKnxC,WA0BzB,ICnGA,uBACb,IACIkY,EADAoD,EAAQvO,EAAO6sB,SAEfvpB,GAAK,EACLD,EAAIkL,EAAMjX,OACV4O,EAAIlG,EAAO7M,QAAUy9B,EAAKM,GAAMlxB,EAAO7M,MAE3C,QAASmQ,EAAID,EACX8H,EAAOoD,EAAMjL,GAAI6H,EAAK8lB,GAAKA,EAAI9lB,EAAKwlB,GAAKA,EACzCxlB,EAAK+lB,GAAKA,EAAI/lB,EAAKylB,GAAKM,GAAM/lB,EAAKhY,MAAQ+S,GCNpC,IAAO,EAAIvU,KAAK+R,KAAK,IAAM,EAE/B,SAASqhC,GAAcC,EAAOhlC,EAAQixB,EAAIC,EAAIP,EAAIC,GACvD,IAEI4C,EACAyR,EAIArvB,EAAIC,EAEJqvB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAfA9R,EAAO,GACPnlB,EAAQvO,EAAO6sB,SAGfvf,EAAK,EACLC,EAAK,EACLlK,EAAIkL,EAAMjX,OAEVnE,EAAQ6M,EAAO7M,MASnB,MAAOma,EAAKjK,EAAG,CACbuS,EAAK+a,EAAKM,EAAIpb,EAAK+a,EAAKM,EAGxB,GAAGgU,EAAW32B,EAAMhB,KAAMpa,aAAe+xC,GAAY33B,EAAKlK,GAO1D,IANA8hC,EAAWC,EAAWF,EACtBK,EAAQ5zC,KAAK4R,IAAIsS,EAAKD,EAAIA,EAAKC,IAAO1iB,EAAQ6xC,GAC9CQ,EAAON,EAAWA,EAAWK,EAC7BD,EAAW3zC,KAAK4R,IAAI6hC,EAAWI,EAAMA,EAAOL,GAGrC53B,EAAKlK,IAAKkK,EAAI,CAMnB,GALA23B,GAAYD,EAAY12B,EAAMhB,GAAIpa,MAC9B8xC,EAAYE,IAAUA,EAAWF,GACjCA,EAAYG,IAAUA,EAAWH,GACrCO,EAAON,EAAWA,EAAWK,EAC7BF,EAAW1zC,KAAK4R,IAAI6hC,EAAWI,EAAMA,EAAOL,GACxCE,EAAWC,EAAU,CAAEJ,GAAYD,EAAW,MAClDK,EAAWD,EAIb3R,EAAKtqB,KAAKoqB,EAAM,CAACrgC,MAAO+xC,EAAUO,KAAM7vB,EAAKC,EAAIgX,SAAUte,EAAMpL,MAAMmK,EAAIC,KACvEimB,EAAIiS,KAAM,GAAYjS,EAAKvC,EAAIC,EAAIP,EAAIx9B,EAAQ+9B,GAAMrb,EAAKqvB,EAAW/xC,EAAQy9B,GAC5E,GAAa4C,EAAKvC,EAAIC,EAAI/9B,EAAQ89B,GAAMrb,EAAKsvB,EAAW/xC,EAAQw9B,EAAIC,GACzEz9B,GAAS+xC,EAAU53B,EAAKC,EAG1B,OAAOmmB,GAGM,cAEb,SAASgS,EAAS1lC,EAAQixB,EAAIC,EAAIP,EAAIC,GACpCmU,GAAcC,EAAOhlC,EAAQixB,EAAIC,EAAIP,EAAIC,GAO3C,OAJA8U,EAASV,MAAQ,SAASxqC,GACxB,OAAOs0B,GAAQt0B,GAAKA,GAAK,EAAIA,EAAI,IAG5BkrC,GAVM,CAWZ,IC7DY,cAEb,SAASC,EAAW3lC,EAAQixB,EAAIC,EAAIP,EAAIC,GACtC,IAAK8C,EAAO1zB,EAAO4lC,YAAelS,EAAKsR,QAAUA,EAAQ,CACvD,IAAItR,EACAF,EACAjlB,EACAjL,EAEAD,EADA2B,GAAK,EAELJ,EAAI8uB,EAAKp8B,OACTnE,EAAQ6M,EAAO7M,MAEnB,QAAS6R,EAAIJ,EAAG,CAEd,IADA4uB,EAAME,EAAK1uB,GAAIuJ,EAAQilB,EAAI3G,SACtBvpB,EAAIkwB,EAAIrgC,MAAQ,EAAGkQ,EAAIkL,EAAMjX,OAAQgM,EAAID,IAAKC,EAAGkwB,EAAIrgC,OAASob,EAAMjL,GAAGnQ,MACxEqgC,EAAIiS,KAAM,GAAYjS,EAAKvC,EAAIC,EAAIP,EAAIO,IAAON,EAAKM,GAAMsC,EAAIrgC,MAAQA,GACpE,GAAaqgC,EAAKvC,EAAIC,EAAID,IAAON,EAAKM,GAAMuC,EAAIrgC,MAAQA,EAAOy9B,GACpEz9B,GAASqgC,EAAIrgC,YAGf6M,EAAO4lC,UAAYlS,EAAOqR,GAAcC,EAAOhlC,EAAQixB,EAAIC,EAAIP,EAAIC,GACnE8C,EAAKsR,MAAQA,EAQjB,OAJAW,EAAWX,MAAQ,SAASxqC,GAC1B,OAAOs0B,GAAQt0B,GAAKA,GAAK,EAAIA,EAAI,IAG5BmrC,EA9BM,CA+BZ,ICbY,ICtBA,cACb,OAAOh0C,KAAK8D,UCCC,ICAA,cACb,SAASowC,EAAcn0C,EAAK6R,GAK1B,OAJA7R,EAAa,MAAPA,EAAc,GAAKA,EACzB6R,EAAa,MAAPA,EAAc,GAAKA,EACA,IAArBlM,UAAUC,QAAciM,EAAM7R,EAAKA,EAAM,GACxC6R,GAAO7R,EACL,WACL,OAAOuzB,IAAW1hB,EAAM7R,GAM5B,OAFAm0C,EAAc5gB,OAAS6gB,EAEhBD,EAbM,CAcZ,IDdY,cACb,SAASE,EAAaC,EAAIC,GACxB,IAAIzrC,EAAGomB,EAGP,OAFAolB,EAAW,MAANA,EAAa,GAAKA,EACvBC,EAAiB,MAATA,EAAgB,GAAKA,EACtB,WACL,IAAI7gC,EAGJ,GAAS,MAAL5K,EAAW4K,EAAI5K,EAAGA,EAAI,UAGrB,GACHA,EAAe,EAAXyqB,IAAe,EACnB7f,EAAe,EAAX6f,IAAe,EACnBrE,EAAIpmB,EAAIA,EAAI4K,EAAIA,SACRwb,GAAKA,EAAI,GAEnB,OAAOolB,EAAKC,EAAQ7gC,EAAIzT,KAAK+R,MAAM,EAAI/R,KAAKwS,IAAIyc,GAAKA,IAMzD,OAFAmlB,EAAa9gB,OAASihB,EAEfH,EAxBM,CAyBZ,KEzBY,ICCA,cACb,SAASI,IACP,IAAIJ,EAAe,GAAO9gB,OAAOA,GAAQ5e,MAAMrR,KAAMqC,WACrD,OAAO,WACL,OAAO1F,KAAKwqC,IAAI4J,MAMpB,OAFAI,EAAgBlhB,OAASmhB,EAElBD,EAVM,CAWZ,IDZY,cACb,SAASE,EAAgBhjC,GACvB,OAAO,WACL,IAAK,IAAImgC,EAAM,EAAGlgC,EAAI,EAAGA,EAAID,IAAKC,EAAGkgC,GAAOve,IAC5C,OAAOue,GAMX,OAFA6C,EAAgBphB,OAASqhB,EAElBD,EAVM,CAWZ,MEVY,cACb,SAASE,EAAYljC,GACnB,IAAIgjC,EAAkBG,GAAUvhB,OAAOA,EAAjBuhB,CAAyBnjC,GAC/C,OAAO,WACL,OAAOgjC,IAAoBhjC,GAM/B,OAFAkjC,EAAYthB,OAASwhB,EAEdF,GAVM,CAWZ,ICZY,cACb,SAASG,EAAkBrK,GACzB,OAAO,WACL,OAAQ1qC,KAAKwS,IAAI,EAAI8gB,KAAYoX,GAMrC,OAFAqK,EAAkBzhB,OAAS0hB,EAEpBD,EATM,CAUZ,ICZI,SAASE,GAAUppC,EAAQgG,GAChC,OAAQnM,UAAUC,QAChB,KAAK,EAAG,MACR,KAAK,EAAGtC,KAAKwO,MAAMhG,GAAS,MAC5B,QAASxI,KAAKwO,MAAMA,GAAOhG,OAAOA,GAAS,MAE7C,OAAOxI,KCNT,IAAI,GAAQ+I,MAAM9K,UAEP,GAAM,GAAM8D,IACZ,GAAQ,GAAMoM,MCCd0jC,GAAW,CAACnoC,KAAM,YAEd,SAASooC,KACtB,IAAIjvC,EAAQ,KACR2F,EAAS,GACTgG,EAAQ,GACRujC,EAAUF,GAEd,SAASxhC,EAAMxC,GACb,IAAInN,EAAMmN,EAAI,GAAIS,EAAIzL,EAAMjC,IAAIF,GAChC,IAAK4N,EAAG,CACN,GAAIyjC,IAAYF,GAAU,OAAOE,EACjClvC,EAAMlC,IAAID,EAAK4N,EAAI9F,EAAO4L,KAAKvG,IAEjC,OAAOW,GAAOF,EAAI,GAAKE,EAAMlM,QAyB/B,OAtBA+N,EAAM7H,OAAS,SAAS4K,GACtB,IAAK/Q,UAAUC,OAAQ,OAAOkG,EAAO2F,QACrC3F,EAAS,GAAI3F,EAAQ,KACrB,IAA0BgL,EAAGnN,EAAzB4N,GAAK,EAAGD,EAAI+E,EAAE9Q,OAClB,QAASgM,EAAID,EAAQxL,EAAMjF,IAAI8C,GAAOmN,EAAIuF,EAAE9E,IAAM,KAAKzL,EAAMlC,IAAID,EAAK8H,EAAO4L,KAAKvG,IAClF,OAAOwC,GAGTA,EAAM7B,MAAQ,SAAS4E,GACrB,OAAO/Q,UAAUC,QAAUkM,EAAQ,GAAMtP,KAAKkU,GAAI/C,GAAS7B,EAAML,SAGnEkC,EAAM0hC,QAAU,SAAS3+B,GACvB,OAAO/Q,UAAUC,QAAUyvC,EAAU3+B,EAAG/C,GAAS0hC,GAGnD1hC,EAAMsB,KAAO,WACX,OAAOmgC,GAAQtpC,EAAQgG,GAAOujC,QAAQA,IAGxCH,GAAUvgC,MAAMhB,EAAOhO,WAEhBgO,ECvCM,SAAS2hC,KACtB,IAIIllC,EACAyD,EALAF,EAAQyhC,KAAUC,aAAQvzC,GAC1BgK,EAAS6H,EAAM7H,OACfypC,EAAe5hC,EAAM7B,MACrBA,EAAQ,CAAC,EAAG,GAGZgC,GAAQ,EACR0hC,EAAe,EACfC,EAAe,EACfvN,EAAQ,GAIZ,SAASwN,IACP,IAAI/jC,EAAI7F,IAASlG,OACbuM,EAAUL,EAAM,GAAKA,EAAM,GAC3BJ,EAAQI,EAAMK,EAAU,GACxB5B,EAAOuB,EAAM,EAAIK,GACrB/B,GAAQG,EAAOmB,GAASzR,KAAK4R,IAAI,EAAGF,EAAI6jC,EAA8B,EAAfC,GACnD3hC,IAAO1D,EAAOnQ,KAAKiC,MAAMkO,IAC7BsB,IAAUnB,EAAOmB,EAAQtB,GAAQuB,EAAI6jC,IAAiBtN,EACtDr0B,EAAYzD,GAAQ,EAAIolC,GACpB1hC,IAAOpC,EAAQzR,KAAK6T,MAAMpC,GAAQmC,EAAY5T,KAAK6T,MAAMD,IAC7D,IAAIb,EAAS,EAASrB,GAAGtM,KAAI,SAASuM,GAAK,OAAOF,EAAQtB,EAAOwB,KACjE,OAAO2jC,EAAapjC,EAAUa,EAAOb,UAAYa,GAmDnD,cAhEOW,EAAM0hC,QAgBb1hC,EAAM7H,OAAS,SAAS4K,GACtB,OAAO/Q,UAAUC,QAAUkG,EAAO4K,GAAIg/B,KAAa5pC,KAGrD6H,EAAM7B,MAAQ,SAAS4E,GACrB,OAAO/Q,UAAUC,QAAUkM,EAAQ,EAAE4E,EAAE,IAAKA,EAAE,IAAKg/B,KAAa5jC,EAAML,SAGxEkC,EAAMgiC,WAAa,SAASj/B,GAC1B,OAAO5E,EAAQ,EAAE4E,EAAE,IAAKA,EAAE,IAAK5C,GAAQ,EAAM4hC,KAG/C/hC,EAAME,UAAY,WAChB,OAAOA,GAGTF,EAAMvD,KAAO,WACX,OAAOA,GAGTuD,EAAMG,MAAQ,SAAS4C,GACrB,OAAO/Q,UAAUC,QAAUkO,IAAU4C,EAAGg/B,KAAa5hC,GAGvDH,EAAMo2B,QAAU,SAASrzB,GACvB,OAAO/Q,UAAUC,QAAU4vC,EAAev1C,KAAKD,IAAI,EAAGy1C,GAAgB/+B,GAAIg/B,KAAaF,GAGzF7hC,EAAM6hC,aAAe,SAAS9+B,GAC5B,OAAO/Q,UAAUC,QAAU4vC,EAAev1C,KAAKD,IAAI,EAAG0W,GAAIg/B,KAAaF,GAGzE7hC,EAAM8hC,aAAe,SAAS/+B,GAC5B,OAAO/Q,UAAUC,QAAU6vC,GAAgB/+B,EAAGg/B,KAAaD,GAG7D9hC,EAAMu0B,MAAQ,SAASxxB,GACrB,OAAO/Q,UAAUC,QAAUsiC,EAAQjoC,KAAK4R,IAAI,EAAG5R,KAAKD,IAAI,EAAG0W,IAAKg/B,KAAaxN,GAG/Ev0B,EAAMsB,KAAO,WACX,OAAOqgC,GAAKxpC,IAAUgG,GACjBgC,MAAMA,GACN0hC,aAAaA,GACbC,aAAaA,GACbvN,MAAMA,IAGNgN,GAAUvgC,MAAM+gC,IAAW/vC,WChFrB,mBACb,OAAO,WACL,OAAOmD,ICFI,eACb,OAAQA,GCKN8sC,GAAO,CAAC,EAAG,GAER,SAAS,GAAS9sC,GACvB,OAAOA,EAGT,SAAS+sC,GAAU9tC,EAAGC,GACpB,OAAQA,GAAMD,GAAKA,GACb,SAASe,GAAK,OAAQA,EAAIf,GAAKC,GAC/B,GAAS7F,MAAM6F,GAAK2I,IAAM,IAGlC,SAASmlC,GAAQhqC,GACf,IAAkDkL,EAA9CjP,EAAI+D,EAAO,GAAI9D,EAAI8D,EAAOA,EAAOlG,OAAS,GAE9C,OADImC,EAAIC,IAAGgP,EAAIjP,EAAGA,EAAIC,EAAGA,EAAIgP,GACtB,SAASlO,GAAK,OAAO7I,KAAK4R,IAAI9J,EAAG9H,KAAKD,IAAIgI,EAAGc,KAKtD,SAASitC,GAAMjqC,EAAQgG,EAAO4nB,GAC5B,IAAIsc,EAAKlqC,EAAO,GAAImqC,EAAKnqC,EAAO,GAAIoqC,EAAKpkC,EAAM,GAAIqkC,EAAKrkC,EAAM,GAG9D,OAFImkC,EAAKD,GAAIA,EAAKH,GAAUI,EAAID,GAAKE,EAAKxc,EAAYyc,EAAID,KACrDF,EAAKH,GAAUG,EAAIC,GAAKC,EAAKxc,EAAYwc,EAAIC,IAC3C,SAASrtC,GAAK,OAAOotC,EAAGF,EAAGltC,KAGpC,SAASstC,GAAQtqC,EAAQgG,EAAO4nB,GAC9B,IAAIpmB,EAAIrT,KAAKD,IAAI8L,EAAOlG,OAAQkM,EAAMlM,QAAU,EAC5CuL,EAAI,IAAI9E,MAAMiH,GACd4b,EAAI,IAAI7iB,MAAMiH,GACd1B,GAAK,EAGL9F,EAAOwH,GAAKxH,EAAO,KACrBA,EAASA,EAAO2F,QAAQU,UACxBL,EAAQA,EAAML,QAAQU,WAGxB,QAASP,EAAI0B,EACXnC,EAAES,GAAKikC,GAAU/pC,EAAO8F,GAAI9F,EAAO8F,EAAI,IACvCsd,EAAEtd,GAAK8nB,EAAY5nB,EAAMF,GAAIE,EAAMF,EAAI,IAGzC,OAAO,SAAS9I,GACd,IAAI8I,EAAIJ,EAAO1F,EAAQhD,EAAG,EAAGwK,GAAK,EAClC,OAAO4b,EAAEtd,GAAGT,EAAES,GAAG9I,KAId,SAASmM,GAAKse,EAAQrwB,GAC3B,OAAOA,EACF4I,OAAOynB,EAAOznB,UACdgG,MAAMyhB,EAAOzhB,SACb4nB,YAAYnG,EAAOmG,eACnB2c,MAAM9iB,EAAO8iB,SACbhB,QAAQ9hB,EAAO8hB,WAGf,SAAS,KACd,IAGI5gC,EACA6hC,EACAjB,EAEAkB,EACAC,EACAxR,EATAl5B,EAAS8pC,GACT9jC,EAAQ8jC,GACRlc,EAAc,GAId2c,EAAQ,GAKZ,SAASX,IAGP,OAFAa,EAAYt2C,KAAKD,IAAI8L,EAAOlG,OAAQkM,EAAMlM,QAAU,EAAIwwC,GAAUL,GAClES,EAASxR,EAAQ,KACVrxB,EAGT,SAASA,EAAM7K,GACb,OAAO3G,MAAM2G,GAAKA,GAAKusC,GAAWmB,IAAWA,EAASD,EAAUzqC,EAAOzG,IAAIoP,GAAY3C,EAAO4nB,KAAejlB,EAAU4hC,EAAMvtC,KA+B/H,OA5BA6K,EAAMs3B,OAAS,SAASv3B,GACtB,OAAO2iC,EAAMC,GAAatR,IAAUA,EAAQuR,EAAUzkC,EAAOhG,EAAOzG,IAAIoP,GAAY,MAAqBf,MAG3GC,EAAM7H,OAAS,SAAS4K,GACtB,OAAO/Q,UAAUC,QAAUkG,EAAS,GAAItJ,KAAKkU,EAAG,IAAS2/B,IAAU,KAAaA,EAAQP,GAAQhqC,IAAU4pC,KAAa5pC,EAAO2F,SAGhIkC,EAAM7B,MAAQ,SAAS4E,GACrB,OAAO/Q,UAAUC,QAAUkM,EAAQ,GAAMtP,KAAKkU,GAAIg/B,KAAa5jC,EAAML,SAGvEkC,EAAMgiC,WAAa,SAASj/B,GAC1B,OAAO5E,EAAQ,GAAMtP,KAAKkU,GAAIgjB,EAAc,GAAkBgc,KAGhE/hC,EAAM0iC,MAAQ,SAAS3/B,GACrB,OAAO/Q,UAAUC,QAAUywC,EAAQ3/B,EAAIo/B,GAAQhqC,GAAU,GAAU6H,GAAS0iC,IAAU,IAGxF1iC,EAAM+lB,YAAc,SAAShjB,GAC3B,OAAO/Q,UAAUC,QAAU8zB,EAAchjB,EAAGg/B,KAAahc,GAG3D/lB,EAAM0hC,QAAU,SAAS3+B,GACvB,OAAO/Q,UAAUC,QAAUyvC,EAAU3+B,EAAG/C,GAAS0hC,GAG5C,SAASr+B,EAAGy/B,GAEjB,OADAhiC,EAAYuC,EAAGs/B,EAAcG,EACtBf,KAII,SAASgB,GAAWjiC,EAAW6hC,GAC5C,OAAO,KAAc7hC,EAAW6hC,GCvHnB,yBACb,IACI/N,EADAn4B,EAAOwC,EAASlB,EAAOnB,EAAM8B,GAGjC,OADA01B,EAAYD,GAA6B,MAAbC,EAAoB,KAAOA,GAC/CA,EAAUljC,MAChB,IAAK,IACH,IAAIpD,EAAQxB,KAAK4R,IAAI5R,KAAK6S,IAAIpB,GAAQzR,KAAK6S,IAAIvC,IAE/C,OAD2B,MAAvBw3B,EAAUQ,WAAsBpmC,MAAMomC,EAAYoO,GAAgBvmC,EAAM3O,MAASsmC,EAAUQ,UAAYA,GACpG,GAAaR,EAAWtmC,GAEjC,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACwB,MAAvBsmC,EAAUQ,WAAsBpmC,MAAMomC,EAAYqO,GAAexmC,EAAMnQ,KAAK4R,IAAI5R,KAAK6S,IAAIpB,GAAQzR,KAAK6S,IAAIvC,QAAUw3B,EAAUQ,UAAYA,GAAgC,MAAnBR,EAAUljC,OACrK,MAEF,IAAK,IACL,IAAK,IACwB,MAAvBkjC,EAAUQ,WAAsBpmC,MAAMomC,EAAYsO,GAAezmC,MAAQ23B,EAAUQ,UAAYA,EAAuC,GAAP,MAAnBR,EAAUljC,OAC1H,MAGJ,OAAO,GAAOkjC,ICtBT,SAAS+O,GAAUnjC,GACxB,IAAI7H,EAAS6H,EAAM7H,OAoDnB,OAlDA6H,EAAMvB,MAAQ,SAASC,GACrB,IAAIlB,EAAIrF,IACR,OAAOsG,EAAMjB,EAAE,GAAIA,EAAEA,EAAEvL,OAAS,GAAa,MAATyM,EAAgB,GAAKA,IAG3DsB,EAAMS,WAAa,SAAS/B,EAAO01B,GACjC,IAAI52B,EAAIrF,IACR,OAAO,GAAWqF,EAAE,GAAIA,EAAEA,EAAEvL,OAAS,GAAa,MAATyM,EAAgB,GAAKA,EAAO01B,IAGvEp0B,EAAMojC,KAAO,SAAS1kC,GACP,MAATA,IAAeA,EAAQ,IAE3B,IAKIjC,EALAe,EAAIrF,IACJ8P,EAAK,EACLC,EAAK1K,EAAEvL,OAAS,EAChB8L,EAAQP,EAAEyK,GACVrL,EAAOY,EAAE0K,GA8Bb,OA3BItL,EAAOmB,IACTtB,EAAOsB,EAAOA,EAAQnB,EAAMA,EAAOH,EACnCA,EAAOwL,EAAIA,EAAKC,EAAIA,EAAKzL,GAG3BA,EAAOkC,EAAcZ,EAAOnB,EAAM8B,GAE9BjC,EAAO,GACTsB,EAAQzR,KAAKiC,MAAMwP,EAAQtB,GAAQA,EACnCG,EAAOtQ,KAAKgC,KAAKsO,EAAOH,GAAQA,EAChCA,EAAOkC,EAAcZ,EAAOnB,EAAM8B,IACzBjC,EAAO,IAChBsB,EAAQzR,KAAKgC,KAAKyP,EAAQtB,GAAQA,EAClCG,EAAOtQ,KAAKiC,MAAMqO,EAAOH,GAAQA,EACjCA,EAAOkC,EAAcZ,EAAOnB,EAAM8B,IAGhCjC,EAAO,GACTe,EAAEyK,GAAM3b,KAAKiC,MAAMwP,EAAQtB,GAAQA,EACnCe,EAAE0K,GAAM5b,KAAKgC,KAAKsO,EAAOH,GAAQA,EACjCtE,EAAOqF,IACEf,EAAO,IAChBe,EAAEyK,GAAM3b,KAAKgC,KAAKyP,EAAQtB,GAAQA,EAClCe,EAAE0K,GAAM5b,KAAKiC,MAAMqO,EAAOH,GAAQA,EAClCtE,EAAOqF,IAGFwC,GAGFA,EAGM,SAAS,KACtB,IAAIA,EAAQ+iC,GAAW,GAAU,IAQjC,OANA/iC,EAAMsB,KAAO,WACX,OAAOA,GAAKtB,EAAO,OAGrBuhC,GAAUvgC,MAAMhB,EAAOhO,WAEhBmxC,GAAUnjC,GCtEnB,IAAI,GAAK,IAAIwf,KACT,GAAK,IAAIA,KAEE,SAAS6jB,GAAYC,EAAQC,EAAS7kC,EAAO8kC,GAE1D,SAASC,EAAS5U,GAChB,OAAOyU,EAAOzU,EAAO,IAAIrP,MAAMqP,IAAQA,EA4DzC,OAzDA4U,EAASl1C,MAAQk1C,EAEjBA,EAASn1C,KAAO,SAASugC,GACvB,OAAOyU,EAAOzU,EAAO,IAAIrP,KAAKqP,EAAO,IAAK0U,EAAQ1U,EAAM,GAAIyU,EAAOzU,GAAOA,GAG5E4U,EAAStjC,MAAQ,SAAS0uB,GACxB,IAAIwT,EAAKoB,EAAS5U,GACdyT,EAAKmB,EAASn1C,KAAKugC,GACvB,OAAOA,EAAOwT,EAAKC,EAAKzT,EAAOwT,EAAKC,GAGtCmB,EAASxjC,OAAS,SAAS4uB,EAAMpyB,GAC/B,OAAO8mC,EAAQ1U,EAAO,IAAIrP,MAAMqP,GAAe,MAARpyB,EAAe,EAAInQ,KAAKiC,MAAMkO,IAAQoyB,GAG/E4U,EAAStlC,MAAQ,SAASJ,EAAOnB,EAAMH,GACrC,IAAgBuL,EAAZ7J,EAAQ,GAGZ,GAFAJ,EAAQ0lC,EAASn1C,KAAKyP,GACtBtB,EAAe,MAARA,EAAe,EAAInQ,KAAKiC,MAAMkO,KAC/BsB,EAAQnB,MAAWH,EAAO,GAAI,OAAO0B,EAC3C,GAAGA,EAAM4F,KAAKiE,EAAW,IAAIwX,MAAMzhB,IAASwlC,EAAQxlC,EAAOtB,GAAO6mC,EAAOvlC,SAClEiK,EAAWjK,GAASA,EAAQnB,GACnC,OAAOuB,GAGTslC,EAAS5gC,OAAS,SAAShT,GACzB,OAAOwzC,IAAY,SAASxU,GAC1B,GAAIA,GAAQA,EAAM,MAAOyU,EAAOzU,IAAQh/B,EAAKg/B,GAAOA,EAAKpP,QAAQoP,EAAO,MACvE,SAASA,EAAMpyB,GAChB,GAAIoyB,GAAQA,EACV,GAAIpyB,EAAO,EAAG,QAASA,GAAQ,EAC7B,MAAO8mC,EAAQ1U,GAAO,IAAKh/B,EAAKg/B,SAC3B,QAASpyB,GAAQ,EACtB,MAAO8mC,EAAQ1U,EAAM,IAAMh/B,EAAKg/B,SAMpCnwB,IACF+kC,EAAS/kC,MAAQ,SAASX,EAAOghB,GAG/B,OAFA,GAAGU,SAAS1hB,GAAQ,GAAG0hB,SAASV,GAChCukB,EAAO,IAAKA,EAAO,IACZh3C,KAAKiC,MAAMmQ,EAAM,GAAI,MAG9B+kC,EAASvc,MAAQ,SAASzqB,GAExB,OADAA,EAAOnQ,KAAKiC,MAAMkO,GACVmC,SAASnC,IAAWA,EAAO,EAC3BA,EAAO,EACTgnC,EAAS5gC,OAAO2gC,EACZ,SAAShmC,GAAK,OAAOgmC,EAAMhmC,GAAKf,IAAS,GACzC,SAASe,GAAK,OAAOimC,EAAS/kC,MAAM,EAAGlB,GAAKf,IAAS,IAH3CgnC,EADoB,OAQrCA,EChET,IAAI,GAAc,IAAS,eAExB,SAAS5U,EAAMpyB,GAChBoyB,EAAKpP,SAASoP,EAAOpyB,MACpB,SAASsB,EAAOghB,GACjB,OAAOA,EAAMhhB,KAIf,GAAYmpB,MAAQ,SAASrmB,GAE3B,OADAA,EAAIvU,KAAKiC,MAAMsS,GACVjC,SAASiC,IAAQA,EAAI,EACpBA,EAAI,EACH,IAAS,SAASguB,GACvBA,EAAKpP,QAAQnzB,KAAKiC,MAAMsgC,EAAOhuB,GAAKA,MACnC,SAASguB,EAAMpyB,GAChBoyB,EAAKpP,SAASoP,EAAOpyB,EAAOoE,MAC3B,SAAS9C,EAAOghB,GACjB,OAAQA,EAAMhhB,GAAS8C,KANJ,GADgB,MAYb,GAAY1C,MADvB,ICxBJulC,GAAiB,IACjBC,GAAiB,IACjBC,GAAe,KACfC,GAAc,MACdC,GAAe,OCDtB,GAAS,IAAS,SAASjV,GAC7BA,EAAKpP,QAAQoP,EAAOA,EAAKkV,sBACxB,SAASlV,EAAMpyB,GAChBoyB,EAAKpP,SAASoP,EAAOpyB,EAAOinC,OAC3B,SAAS3lC,EAAOghB,GACjB,OAAQA,EAAMhhB,GAAS2lC,MACtB,SAAS7U,GACV,OAAOA,EAAKM,mBCPV,IDWiB,GAAOhxB,MCXf,IAAS,SAAS0wB,GAC7BA,EAAKpP,QAAQoP,EAAOA,EAAKkV,kBAAoBlV,EAAKmV,aAAeN,OAChE,SAAS7U,EAAMpyB,GAChBoyB,EAAKpP,SAASoP,EAAOpyB,EAAOknC,OAC3B,SAAS5lC,EAAOghB,GACjB,OAAQA,EAAMhhB,GAAS4lC,MACtB,SAAS9U,GACV,OAAOA,EAAKoV,iBCPV,IDWiB,GAAO9lC,MCXjB,IAAS,SAAS0wB,GAC3BA,EAAKpP,QAAQoP,EAAOA,EAAKkV,kBAAoBlV,EAAKmV,aAAeN,GAAiB7U,EAAKoV,aAAeN,OACrG,SAAS9U,EAAMpyB,GAChBoyB,EAAKpP,SAASoP,EAAOpyB,EAAOmnC,OAC3B,SAAS7lC,EAAOghB,GACjB,OAAQA,EAAMhhB,GAAS6lC,MACtB,SAAS/U,GACV,OAAOA,EAAKqV,eCPV,IDWe,GAAK/lC,MCXd,IAAS,SAAS0wB,GAC1BA,EAAKsV,SAAS,EAAG,EAAG,EAAG,MACtB,SAAStV,EAAMpyB,GAChBoyB,EAAKuV,QAAQvV,EAAKwV,UAAY5nC,MAC7B,SAASsB,EAAOghB,GACjB,OAAQA,EAAMhhB,GAASghB,EAAIulB,oBAAsBvmC,EAAMumC,qBAAuBX,IAAkBE,MAC/F,SAAShV,GACV,OAAOA,EAAKwV,UAAY,MAGX,MACG,GAAIlmC,MCXtB,SAASomC,GAAQtmC,GACf,OAAO,IAAS,SAAS4wB,GACvBA,EAAKuV,QAAQvV,EAAKwV,WAAaxV,EAAK2V,SAAW,EAAIvmC,GAAK,GACxD4wB,EAAKsV,SAAS,EAAG,EAAG,EAAG,MACtB,SAAStV,EAAMpyB,GAChBoyB,EAAKuV,QAAQvV,EAAKwV,UAAmB,EAAP5nC,MAC7B,SAASsB,EAAOghB,GACjB,OAAQA,EAAMhhB,GAASghB,EAAIulB,oBAAsBvmC,EAAMumC,qBAAuBX,IAAkBG,MAI7F,IAAIW,GAASF,GAAQ,GACjBG,GAASH,GAAQ,GACjBI,GAAUJ,GAAQ,GAClBK,GAAYL,GAAQ,GACpBM,GAAWN,GAAQ,GACnBO,GAASP,GAAQ,GACjBQ,GAAWR,GAAQ,GClB1B,IDoBiBE,GAAOtmC,MACPumC,GAAOvmC,MACNwmC,GAAQxmC,MACNymC,GAAUzmC,MACX0mC,GAAS1mC,MACX2mC,GAAO3mC,MACL4mC,GAAS5mC,MC1BpB,IAAS,SAAS0wB,GAC5BA,EAAKuV,QAAQ,GACbvV,EAAKsV,SAAS,EAAG,EAAG,EAAG,MACtB,SAAStV,EAAMpyB,GAChBoyB,EAAKmW,SAASnW,EAAKoW,WAAaxoC,MAC/B,SAASsB,EAAOghB,GACjB,OAAOA,EAAIkmB,WAAalnC,EAAMknC,WAAyD,IAA3ClmB,EAAImmB,cAAgBnnC,EAAMmnC,kBACrE,SAASrW,GACV,OAAOA,EAAKoW,eCRV,IDYgB,GAAM9mC,MCZf,IAAS,SAAS0wB,GAC3BA,EAAKmW,SAAS,EAAG,GACjBnW,EAAKsV,SAAS,EAAG,EAAG,EAAG,MACtB,SAAStV,EAAMpyB,GAChBoyB,EAAKsW,YAAYtW,EAAKqW,cAAgBzoC,MACrC,SAASsB,EAAOghB,GACjB,OAAOA,EAAImmB,cAAgBnnC,EAAMmnC,iBAChC,SAASrW,GACV,OAAOA,EAAKqW,kBAId,GAAKhe,MAAQ,SAASrmB,GACpB,OAAQjC,SAASiC,EAAIvU,KAAKiC,MAAMsS,KAASA,EAAI,EAAY,IAAS,SAASguB,GACzEA,EAAKsW,YAAY74C,KAAKiC,MAAMsgC,EAAKqW,cAAgBrkC,GAAKA,GACtDguB,EAAKmW,SAAS,EAAG,GACjBnW,EAAKsV,SAAS,EAAG,EAAG,EAAG,MACtB,SAAStV,EAAMpyB,GAChBoyB,EAAKsW,YAAYtW,EAAKqW,cAAgBzoC,EAAOoE,MALG,MASrC,UCrBXukC,IDsBe,GAAKjnC,MCtBR,IAAS,SAAS0wB,GAChCA,EAAKwW,cAAc,EAAG,MACrB,SAASxW,EAAMpyB,GAChBoyB,EAAKpP,SAASoP,EAAOpyB,EAAOknC,OAC3B,SAAS5lC,EAAOghB,GACjB,OAAQA,EAAMhhB,GAAS4lC,MACtB,SAAS9U,GACV,OAAOA,EAAKI,oBCPVqW,IDWoBF,GAAUjnC,MCXpB,IAAS,SAAS0wB,GAC9BA,EAAK0W,cAAc,EAAG,EAAG,MACxB,SAAS1W,EAAMpyB,GAChBoyB,EAAKpP,SAASoP,EAAOpyB,EAAOmnC,OAC3B,SAAS7lC,EAAOghB,GACjB,OAAQA,EAAMhhB,GAAS6lC,MACtB,SAAS/U,GACV,OAAOA,EAAKE,kBCPVyW,IDWkBF,GAAQnnC,MCXjB,IAAS,SAAS0wB,GAC7BA,EAAK4W,YAAY,EAAG,EAAG,EAAG,MACzB,SAAS5W,EAAMpyB,GAChBoyB,EAAK6W,WAAW7W,EAAKW,aAAe/yB,MACnC,SAASsB,EAAOghB,GACjB,OAAQA,EAAMhhB,GAAS8lC,MACtB,SAAShV,GACV,OAAOA,EAAKW,aAAe,MAGd,MACMgW,GAAOrnC,MCX5B,SAASwnC,GAAW1nC,GAClB,OAAO,IAAS,SAAS4wB,GACvBA,EAAK6W,WAAW7W,EAAKW,cAAgBX,EAAK+W,YAAc,EAAI3nC,GAAK,GACjE4wB,EAAK4W,YAAY,EAAG,EAAG,EAAG,MACzB,SAAS5W,EAAMpyB,GAChBoyB,EAAK6W,WAAW7W,EAAKW,aAAsB,EAAP/yB,MACnC,SAASsB,EAAOghB,GACjB,OAAQA,EAAMhhB,GAAS+lC,MAIpB,IAAI+B,GAAYF,GAAW,GACvBG,GAAYH,GAAW,GACvBI,GAAaJ,GAAW,GACxBK,GAAeL,GAAW,GAC1BM,GAAcN,GAAW,GACzBO,GAAYP,GAAW,GACvBQ,GAAcR,GAAW,GClBhCS,IDoBoBP,GAAU1nC,MACV2nC,GAAU3nC,MACT4nC,GAAW5nC,MACT6nC,GAAa7nC,MACd8nC,GAAY9nC,MACd+nC,GAAU/nC,MACRgoC,GAAYhoC,MC1BvB,IAAS,SAAS0wB,GAC/BA,EAAK6W,WAAW,GAChB7W,EAAK4W,YAAY,EAAG,EAAG,EAAG,MACzB,SAAS5W,EAAMpyB,GAChBoyB,EAAKwX,YAAYxX,EAAKU,cAAgB9yB,MACrC,SAASsB,EAAOghB,GACjB,OAAOA,EAAIwQ,cAAgBxxB,EAAMwxB,cAAkE,IAAjDxQ,EAAIuQ,iBAAmBvxB,EAAMuxB,qBAC9E,SAAST,GACV,OAAOA,EAAKU,kBCRV+W,IDYmBF,GAASjoC,MCZlB,IAAS,SAAS0wB,GAC9BA,EAAKwX,YAAY,EAAG,GACpBxX,EAAK4W,YAAY,EAAG,EAAG,EAAG,MACzB,SAAS5W,EAAMpyB,GAChBoyB,EAAK0X,eAAe1X,EAAKS,iBAAmB7yB,MAC3C,SAASsB,EAAOghB,GACjB,OAAOA,EAAIuQ,iBAAmBvxB,EAAMuxB,oBACnC,SAAST,GACV,OAAOA,EAAKS,qBAIdgX,GAAQpf,MAAQ,SAASrmB,GACvB,OAAQjC,SAASiC,EAAIvU,KAAKiC,MAAMsS,KAASA,EAAI,EAAY,IAAS,SAASguB,GACzEA,EAAK0X,eAAej6C,KAAKiC,MAAMsgC,EAAKS,iBAAmBzuB,GAAKA,GAC5DguB,EAAKwX,YAAY,EAAG,GACpBxX,EAAK4W,YAAY,EAAG,EAAG,EAAG,MACzB,SAAS5W,EAAMpyB,GAChBoyB,EAAK0X,eAAe1X,EAAKS,iBAAmB7yB,EAAOoE,MALH,MASrC,UACOylC,GAAQnoC,MCZ9B,SAASqoC,GAAUhpC,GACjB,GAAI,GAAKA,EAAEuC,GAAKvC,EAAEuC,EAAI,IAAK,CACzB,IAAI8uB,EAAO,IAAIrP,MAAM,EAAGhiB,EAAE+B,EAAG/B,EAAEA,EAAGA,EAAEipC,EAAGjpC,EAAE8/B,EAAG9/B,EAAE7O,EAAG6O,EAAEkpC,GAEnD,OADA7X,EAAKsW,YAAY3nC,EAAEuC,GACZ8uB,EAET,OAAO,IAAIrP,KAAKhiB,EAAEuC,EAAGvC,EAAE+B,EAAG/B,EAAEA,EAAGA,EAAEipC,EAAGjpC,EAAE8/B,EAAG9/B,EAAE7O,EAAG6O,EAAEkpC,GAGlD,SAASC,GAAQnpC,GACf,GAAI,GAAKA,EAAEuC,GAAKvC,EAAEuC,EAAI,IAAK,CACzB,IAAI8uB,EAAO,IAAIrP,KAAKA,KAAKonB,KAAK,EAAGppC,EAAE+B,EAAG/B,EAAEA,EAAGA,EAAEipC,EAAGjpC,EAAE8/B,EAAG9/B,EAAE7O,EAAG6O,EAAEkpC,IAE5D,OADA7X,EAAK0X,eAAe/oC,EAAEuC,GACf8uB,EAET,OAAO,IAAIrP,KAAKA,KAAKonB,IAAIppC,EAAEuC,EAAGvC,EAAE+B,EAAG/B,EAAEA,EAAGA,EAAEipC,EAAGjpC,EAAE8/B,EAAG9/B,EAAE7O,EAAG6O,EAAEkpC,IAG3D,SAASG,GAAQ9mC,GACf,MAAO,CAACA,EAAGA,EAAGR,EAAG,EAAG/B,EAAG,EAAGipC,EAAG,EAAGnJ,EAAG,EAAG3uC,EAAG,EAAG+3C,EAAG,GAGlC,SAASI,GAAazR,GACnC,IAAI0R,EAAkB1R,EAAO2R,SACzBC,EAAc5R,EAAOxG,KACrBqY,EAAc7R,EAAO1R,KACrBwjB,EAAiB9R,EAAO+R,QACxBC,EAAkBhS,EAAOiS,KACzBC,EAAuBlS,EAAOmS,UAC9BC,EAAgBpS,EAAOqS,OACvBC,EAAqBtS,EAAOuS,YAE5BC,EAAWC,GAASX,GACpBY,EAAeC,GAAab,GAC5Bc,EAAYH,GAAST,GACrBa,EAAgBF,GAAaX,GAC7Bc,EAAiBL,GAASP,GAC1Ba,EAAqBJ,GAAaT,GAClCc,EAAUP,GAASL,GACnBa,EAAcN,GAAaP,GAC3Bc,EAAeT,GAASH,GACxBa,EAAmBR,GAAaL,GAEhCc,EAAU,CACZ,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAK,KACL,EAAKC,GACL,EAAKA,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,EACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAK,KACL,EAAK,KACL,EAAK,GACL,EAAKC,GACL,EAAKC,GACL,IAAKC,IAGHC,EAAa,CACf,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAK,KACL,EAAKC,GACL,EAAKA,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,EACL,EAAKxB,GACL,EAAKC,GACL,EAAKwB,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAK,KACL,EAAK,KACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,IAAKvB,IAGHwB,EAAS,CACX,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAKC,GACL,EAAKA,GACL,EAAKC,GACL,EAAKC,GACL,EAAKA,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,EACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,EACL,EAAKC,EACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,IAAKC,IAWP,SAASzX,EAAUvB,EAAWqU,GAC5B,OAAO,SAAS5Z,GACd,IAIIhrB,EACA4qB,EACAxtB,EANAjN,EAAS,GACTiK,GAAK,EACL0B,EAAI,EACJ3B,EAAIo2B,EAAUniC,OAKZ48B,aAAgBrP,OAAOqP,EAAO,IAAIrP,MAAMqP,IAE9C,QAAS5wB,EAAID,EACqB,KAA5Bo2B,EAAUxE,WAAW3xB,KACvBjK,EAAO+P,KAAKqwB,EAAUt2B,MAAM6B,EAAG1B,IACgB,OAA1CwwB,EAAM4e,GAAKxpC,EAAIuwB,EAAUvhC,SAASoL,KAAc4F,EAAIuwB,EAAUvhC,SAASoL,GACvEwwB,EAAY,MAAN5qB,EAAY,IAAM,KACzB5C,EAASwnC,EAAQ5kC,MAAIA,EAAI5C,EAAO4tB,EAAMJ,IAC1Cz6B,EAAO+P,KAAKF,GACZlE,EAAI1B,EAAI,GAKZ,OADAjK,EAAO+P,KAAKqwB,EAAUt2B,MAAM6B,EAAG1B,IACxBjK,EAAO7E,KAAK,KAIvB,SAASm+C,EAASlZ,EAAWmZ,GAC3B,OAAO,SAASv5C,GACd,IAEIw5C,EAAMC,EAFNjwC,EAAIqpC,GAAQ,MACZ5oC,EAAIyvC,EAAelwC,EAAG42B,EAAWpgC,GAAU,GAAI,GAEnD,GAAIiK,GAAKjK,EAAO/B,OAAQ,OAAO,KAG/B,GAAI,MAAOuL,EAAG,OAAO,IAAIgiB,KAAKhiB,EAAEmwC,GAMhC,GAHI,MAAOnwC,IAAGA,EAAEipC,EAAIjpC,EAAEipC,EAAI,GAAW,GAANjpC,EAAEkF,GAG7B,MAAOlF,EAAG,CACZ,GAAIA,EAAEowC,EAAI,GAAKpwC,EAAEowC,EAAI,GAAI,OAAO,KAC1B,MAAOpwC,IAAIA,EAAE2vB,EAAI,GACnB,MAAO3vB,GACTgwC,EAAO7G,GAAQE,GAAQrpC,EAAEuC,IAAK0tC,EAAMD,EAAK5H,YACzC4H,EAAOC,EAAM,GAAa,IAARA,EAAY3H,GAAUx3C,KAAKk/C,GAAQ1H,GAAU0H,GAC/DA,EAAO,GAAOvtC,OAAOutC,EAAkB,GAAXhwC,EAAEowC,EAAI,IAClCpwC,EAAEuC,EAAIytC,EAAKle,iBACX9xB,EAAE+B,EAAIiuC,EAAKje,cACX/xB,EAAEA,EAAIgwC,EAAKhe,cAAgBhyB,EAAE2vB,EAAI,GAAK,IAEtCqgB,EAAOD,EAAQ1G,GAAQrpC,EAAEuC,IAAK0tC,EAAMD,EAAKhJ,SACzCgJ,EAAOC,EAAM,GAAa,IAARA,EAAY,GAAWn/C,KAAKk/C,GAAQ,GAAWA,GACjEA,EAAO,GAAQvtC,OAAOutC,EAAkB,GAAXhwC,EAAEowC,EAAI,IACnCpwC,EAAEuC,EAAIytC,EAAKtI,cACX1nC,EAAE+B,EAAIiuC,EAAKvI,WACXznC,EAAEA,EAAIgwC,EAAKnJ,WAAa7mC,EAAE2vB,EAAI,GAAK,QAE5B,MAAO3vB,GAAK,MAAOA,KACtB,MAAOA,IAAIA,EAAE2vB,EAAI,MAAO3vB,EAAIA,EAAEslC,EAAI,EAAI,MAAOtlC,EAAI,EAAI,GAC3DiwC,EAAM,MAAOjwC,EAAImpC,GAAQE,GAAQrpC,EAAEuC,IAAI6lC,YAAc2H,EAAQ1G,GAAQrpC,EAAEuC,IAAIykC,SAC3EhnC,EAAE+B,EAAI,EACN/B,EAAEA,EAAI,MAAOA,GAAKA,EAAE2vB,EAAI,GAAK,EAAU,EAAN3vB,EAAEqwC,GAASJ,EAAM,GAAK,EAAIjwC,EAAE2vB,EAAU,EAAN3vB,EAAEswC,GAASL,EAAM,GAAK,GAKzF,MAAI,MAAOjwC,GACTA,EAAEipC,GAAKjpC,EAAEuwC,EAAI,IAAM,EACnBvwC,EAAE8/B,GAAK9/B,EAAEuwC,EAAI,IACNpH,GAAQnpC,IAIV+vC,EAAQ/vC,IAInB,SAASkwC,EAAelwC,EAAG42B,EAAWpgC,EAAQ2L,GAC5C,IAGIkE,EACA0d,EAJAtjB,EAAI,EACJD,EAAIo2B,EAAUniC,OACdsN,EAAIvL,EAAO/B,OAIf,MAAOgM,EAAID,EAAG,CACZ,GAAI2B,GAAKJ,EAAG,OAAQ,EAEpB,GADAsE,EAAIuwB,EAAUxE,WAAW3xB,KACf,KAAN4F,GAGF,GAFAA,EAAIuwB,EAAUvhC,OAAOoL,KACrBsjB,EAAQkqB,EAAO5nC,KAAKwpC,GAAOjZ,EAAUvhC,OAAOoL,KAAO4F,IAC9C0d,IAAW5hB,EAAI4hB,EAAM/jB,EAAGxJ,EAAQ2L,IAAM,EAAI,OAAQ,OAClD,GAAIkE,GAAK7P,EAAO47B,WAAWjwB,KAChC,OAAQ,EAIZ,OAAOA,EAGT,SAAS2sC,EAAY9uC,EAAGxJ,EAAQiK,GAC9B,IAAID,EAAI6pC,EAASl7C,KAAKqH,EAAO8J,MAAMG,IACnC,OAAOD,GAAKR,EAAEkF,EAAIqlC,EAAa/pC,EAAE,GAAGid,eAAgBhd,EAAID,EAAE,GAAG/L,SAAW,EAG1E,SAASy5C,EAAkBluC,EAAGxJ,EAAQiK,GACpC,IAAID,EAAImqC,EAAex7C,KAAKqH,EAAO8J,MAAMG,IACzC,OAAOD,GAAKR,EAAE2vB,EAAIib,EAAmBpqC,EAAE,GAAGid,eAAgBhd,EAAID,EAAE,GAAG/L,SAAW,EAGhF,SAAS05C,EAAanuC,EAAGxJ,EAAQiK,GAC/B,IAAID,EAAIiqC,EAAUt7C,KAAKqH,EAAO8J,MAAMG,IACpC,OAAOD,GAAKR,EAAE2vB,EAAI+a,EAAclqC,EAAE,GAAGid,eAAgBhd,EAAID,EAAE,GAAG/L,SAAW,EAG3E,SAAS25C,EAAgBpuC,EAAGxJ,EAAQiK,GAClC,IAAID,EAAIuqC,EAAa57C,KAAKqH,EAAO8J,MAAMG,IACvC,OAAOD,GAAKR,EAAE+B,EAAIipC,EAAiBxqC,EAAE,GAAGid,eAAgBhd,EAAID,EAAE,GAAG/L,SAAW,EAG9E,SAAS45C,EAAWruC,EAAGxJ,EAAQiK,GAC7B,IAAID,EAAIqqC,EAAQ17C,KAAKqH,EAAO8J,MAAMG,IAClC,OAAOD,GAAKR,EAAE+B,EAAI+oC,EAAYtqC,EAAE,GAAGid,eAAgBhd,EAAID,EAAE,GAAG/L,SAAW,EAGzE,SAAS65C,EAAoBtuC,EAAGxJ,EAAQiK,GACtC,OAAOyvC,EAAelwC,EAAGupC,EAAiB/yC,EAAQiK,GAGpD,SAAS8uC,EAAgBvvC,EAAGxJ,EAAQiK,GAClC,OAAOyvC,EAAelwC,EAAGypC,EAAajzC,EAAQiK,GAGhD,SAAS+uC,EAAgBxvC,EAAGxJ,EAAQiK,GAClC,OAAOyvC,EAAelwC,EAAG0pC,EAAalzC,EAAQiK,GAGhD,SAASyqC,EAAmBlrC,GAC1B,OAAO+pC,EAAqB/pC,EAAEgnC,UAGhC,SAASmE,EAAcnrC,GACrB,OAAO6pC,EAAgB7pC,EAAEgnC,UAG3B,SAASoE,EAAiBprC,GACxB,OAAOmqC,EAAmBnqC,EAAEynC,YAG9B,SAAS4D,EAAYrrC,GACnB,OAAOiqC,EAAcjqC,EAAEynC,YAGzB,SAASqE,EAAa9rC,GACpB,OAAO2pC,IAAiB3pC,EAAE0mC,YAAc,KAG1C,SAASiG,EAAsB3sC,GAC7B,OAAO+pC,EAAqB/pC,EAAEooC,aAGhC,SAASwE,EAAiB5sC,GACxB,OAAO6pC,EAAgB7pC,EAAEooC,aAG3B,SAASyE,EAAoB7sC,GAC3B,OAAOmqC,EAAmBnqC,EAAE+xB,eAG9B,SAAS+a,EAAe9sC,GACtB,OAAOiqC,EAAcjqC,EAAE+xB,eAGzB,SAASwb,EAAgBvtC,GACvB,OAAO2pC,IAAiB3pC,EAAEuxB,eAAiB,KAG7C,OA1LA0Z,EAAQtzC,EAAIwgC,EAAUsR,EAAawB,GACnCA,EAAQuF,EAAIrY,EAAUuR,EAAauB,GACnCA,EAAQ5kC,EAAI8xB,EAAUoR,EAAiB0B,GACvCyB,EAAW/0C,EAAIwgC,EAAUsR,EAAaiD,GACtCA,EAAW8D,EAAIrY,EAAUuR,EAAagD,GACtCA,EAAWrmC,EAAI8xB,EAAUoR,EAAiBmD,GAqLnC,CACLjpC,OAAQ,SAASmzB,GACf,IAAIjnC,EAAIwoC,EAAUvB,GAAa,GAAIqU,GAEnC,OADAt7C,EAAE6C,SAAW,WAAa,OAAOokC,GAC1BjnC,GAETo0B,MAAO,SAAS6S,GACd,IAAI1xB,EAAI4qC,EAASlZ,GAAa,GAAIoS,IAElC,OADA9jC,EAAE1S,SAAW,WAAa,OAAOokC,GAC1B1xB,GAETurC,UAAW,SAAS7Z,GAClB,IAAIjnC,EAAIwoC,EAAUvB,GAAa,GAAI8V,GAEnC,OADA/8C,EAAE6C,SAAW,WAAa,OAAOokC,GAC1BjnC,GAET+gD,SAAU,SAAS9Z,GACjB,IAAI1xB,EAAI4qC,EAASlZ,EAAWuS,IAE5B,OADAjkC,EAAE1S,SAAW,WAAa,OAAOokC,GAC1B1xB,IAKb,ICzWI,GAGOurC,GACAC,GDqWPb,GAAO,CAAC,IAAK,GAAI,EAAK,IAAK,EAAK,KAChCc,GAAW,UACXC,GAAY,KACZC,GAAY,sBAEhB,SAAS,GAAIvgD,EAAOwmC,EAAM5F,GACxB,IAAI8F,EAAO1mC,EAAQ,EAAI,IAAM,GACzBkG,GAAUwgC,GAAQ1mC,EAAQA,GAAS,GACnCmE,EAAS+B,EAAO/B,OACpB,OAAOuiC,GAAQviC,EAASy8B,EAAQ,IAAIh2B,MAAMg2B,EAAQz8B,EAAS,GAAG9C,KAAKmlC,GAAQtgC,EAASA,GAGtF,SAASs6C,GAAQ1yB,GACf,OAAOA,EAAEwU,QAAQie,GAAW,QAG9B,SAASvG,GAAS58B,GAChB,OAAO,IAAIoG,OAAO,OAASpG,EAAMxZ,IAAI48C,IAASn/C,KAAK,KAAO,IAAK,KAGjE,SAAS64C,GAAa98B,GACpB,IAAIxZ,EAAM,GAAIuM,GAAK,EAAGD,EAAIkN,EAAMjZ,OAChC,QAASgM,EAAID,EAAGtM,EAAIwZ,EAAMjN,GAAGgd,eAAiBhd,EAC9C,OAAOvM,EAGT,SAASm7C,GAAyBrvC,EAAGxJ,EAAQiK,GAC3C,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAE2vB,GAAKnvB,EAAE,GAAIC,EAAID,EAAE,GAAG/L,SAAW,EAG/C,SAASy6C,GAAyBlvC,EAAGxJ,EAAQiK,GAC3C,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAEslC,GAAK9kC,EAAE,GAAIC,EAAID,EAAE,GAAG/L,SAAW,EAG/C,SAAS06C,GAAsBnvC,EAAGxJ,EAAQiK,GACxC,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAEswC,GAAK9vC,EAAE,GAAIC,EAAID,EAAE,GAAG/L,SAAW,EAG/C,SAAS26C,GAAmBpvC,EAAGxJ,EAAQiK,GACrC,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAEowC,GAAK5vC,EAAE,GAAIC,EAAID,EAAE,GAAG/L,SAAW,EAG/C,SAAS66C,GAAsBtvC,EAAGxJ,EAAQiK,GACxC,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAEqwC,GAAK7vC,EAAE,GAAIC,EAAID,EAAE,GAAG/L,SAAW,EAG/C,SAASi7C,GAAc1vC,EAAGxJ,EAAQiK,GAChC,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAEuC,GAAK/B,EAAE,GAAIC,EAAID,EAAE,GAAG/L,SAAW,EAG/C,SAASg7C,GAAUzvC,EAAGxJ,EAAQiK,GAC5B,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAEuC,GAAK/B,EAAE,KAAOA,EAAE,GAAK,GAAK,KAAO,KAAOC,EAAID,EAAE,GAAG/L,SAAW,EAG5E,SAASk7C,GAAU3vC,EAAGxJ,EAAQiK,GAC5B,IAAID,EAAI,+BAA+BrR,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAChE,OAAOD,GAAKR,EAAEuwC,EAAI/vC,EAAE,GAAK,IAAMA,EAAE,IAAMA,EAAE,IAAM,OAAQC,EAAID,EAAE,GAAG/L,SAAW,EAG7E,SAASm6C,GAAiB5uC,EAAGxJ,EAAQiK,GACnC,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAE+B,EAAIvB,EAAE,GAAK,EAAGC,EAAID,EAAE,GAAG/L,SAAW,EAGlD,SAAS85C,GAAgBvuC,EAAGxJ,EAAQiK,GAClC,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAEA,GAAKQ,EAAE,GAAIC,EAAID,EAAE,GAAG/L,SAAW,EAG/C,SAASi6C,GAAe1uC,EAAGxJ,EAAQiK,GACjC,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAE+B,EAAI,EAAG/B,EAAEA,GAAKQ,EAAE,GAAIC,EAAID,EAAE,GAAG/L,SAAW,EAGxD,SAASg6C,GAAYzuC,EAAGxJ,EAAQiK,GAC9B,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAEipC,GAAKzoC,EAAE,GAAIC,EAAID,EAAE,GAAG/L,SAAW,EAG/C,SAASo6C,GAAa7uC,EAAGxJ,EAAQiK,GAC/B,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAE8/B,GAAKt/B,EAAE,GAAIC,EAAID,EAAE,GAAG/L,SAAW,EAG/C,SAASw6C,GAAajvC,EAAGxJ,EAAQiK,GAC/B,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAE7O,GAAKqP,EAAE,GAAIC,EAAID,EAAE,GAAG/L,SAAW,EAG/C,SAASk6C,GAAkB3uC,EAAGxJ,EAAQiK,GACpC,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAEkpC,GAAK1oC,EAAE,GAAIC,EAAID,EAAE,GAAG/L,SAAW,EAG/C,SAAS+5C,GAAkBxuC,EAAGxJ,EAAQiK,GACpC,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC1C,OAAOD,GAAKR,EAAEkpC,EAAIp6C,KAAKiC,MAAMyP,EAAE,GAAK,KAAOC,EAAID,EAAE,GAAG/L,SAAW,EAGjE,SAASm7C,GAAoB5vC,EAAGxJ,EAAQiK,GACtC,IAAID,EAAIowC,GAAUzhD,KAAKqH,EAAO8J,MAAMG,EAAGA,EAAI,IAC3C,OAAOD,EAAIC,EAAID,EAAE,GAAG/L,QAAU,EAGhC,SAASs6C,GAAmB/uC,EAAGxJ,EAAQiK,GACrC,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,IACnC,OAAOD,GAAKR,EAAEmwC,GAAK3vC,EAAE,GAAIC,EAAID,EAAE,GAAG/L,SAAW,EAG/C,SAASu6C,GAA0BhvC,EAAGxJ,EAAQiK,GAC5C,IAAID,EAAImwC,GAASxhD,KAAKqH,EAAO8J,MAAMG,IACnC,OAAOD,GAAKR,EAAEmwC,EAAc,KAAR3vC,EAAE,GAAYC,EAAID,EAAE,GAAG/L,SAAW,EAGxD,SAAS62C,GAAiBtrC,EAAGkF,GAC3B,OAAO,GAAIlF,EAAE6mC,UAAW3hC,EAAG,GAG7B,SAASsmC,GAAaxrC,EAAGkF,GACvB,OAAO,GAAIlF,EAAE0mC,WAAYxhC,EAAG,GAG9B,SAASumC,GAAazrC,EAAGkF,GACvB,OAAO,GAAIlF,EAAE0mC,WAAa,IAAM,GAAIxhC,EAAG,GAGzC,SAASwmC,GAAgB1rC,EAAGkF,GAC1B,OAAO,GAAI,EAAI,GAAQhE,MAAM,GAASlB,GAAIA,GAAIkF,EAAG,GAGnD,SAASymC,GAAmB3rC,EAAGkF,GAC7B,OAAO,GAAIlF,EAAEumC,kBAAmBrhC,EAAG,GAGrC,SAASqmC,GAAmBvrC,EAAGkF,GAC7B,OAAOymC,GAAmB3rC,EAAGkF,GAAK,MAGpC,SAAS0mC,GAAkB5rC,EAAGkF,GAC5B,OAAO,GAAIlF,EAAEynC,WAAa,EAAGviC,EAAG,GAGlC,SAAS2mC,GAAc7rC,EAAGkF,GACxB,OAAO,GAAIlF,EAAEymC,aAAcvhC,EAAG,GAGhC,SAAS+mC,GAAcjsC,EAAGkF,GACxB,OAAO,GAAIlF,EAAEwmC,aAActhC,EAAG,GAGhC,SAASgnC,GAA0BlsC,GACjC,IAAIiwC,EAAMjwC,EAAEgnC,SACZ,OAAe,IAARiJ,EAAY,EAAIA,EAGzB,SAAS9D,GAAuBnsC,EAAGkF,GACjC,OAAO,GAAI,GAAWhE,MAAM,GAASlB,GAAIA,GAAIkF,EAAG,GAGlD,SAASknC,GAAoBpsC,EAAGkF,GAC9B,IAAI+qC,EAAMjwC,EAAEgnC,SAEZ,OADAhnC,EAAKiwC,GAAO,GAAa,IAARA,EAAa,GAAajwC,GAAK,GAAalP,KAAKkP,GAC3D,GAAI,GAAakB,MAAM,GAASlB,GAAIA,IAA+B,IAAzB,GAASA,GAAGgnC,UAAiB9hC,EAAG,GAGnF,SAASmnC,GAA0BrsC,GACjC,OAAOA,EAAEgnC,SAGX,SAASsF,GAAuBtsC,EAAGkF,GACjC,OAAO,GAAI,GAAWhE,MAAM,GAASlB,GAAIA,GAAIkF,EAAG,GAGlD,SAAS,GAAWlF,EAAGkF,GACrB,OAAO,GAAIlF,EAAE0nC,cAAgB,IAAKxiC,EAAG,GAGvC,SAASqnC,GAAevsC,EAAGkF,GACzB,OAAO,GAAIlF,EAAE0nC,cAAgB,IAAOxiC,EAAG,GAGzC,SAASsnC,GAAWxsC,GAClB,IAAI0f,EAAI1f,EAAE8mC,oBACV,OAAQpnB,EAAI,EAAI,KAAOA,IAAM,EAAG,MAC1B,GAAIA,EAAI,GAAK,EAAG,IAAK,GACrB,GAAIA,EAAI,GAAI,IAAK,GAGzB,SAASqtB,GAAoB/sC,EAAGkF,GAC9B,OAAO,GAAIlF,EAAEgyB,aAAc9sB,EAAG,GAGhC,SAAS+nC,GAAgBjtC,EAAGkF,GAC1B,OAAO,GAAIlF,EAAEuxB,cAAersB,EAAG,GAGjC,SAASgoC,GAAgBltC,EAAGkF,GAC1B,OAAO,GAAIlF,EAAEuxB,cAAgB,IAAM,GAAIrsB,EAAG,GAG5C,SAASioC,GAAmBntC,EAAGkF,GAC7B,OAAO,GAAI,EAAI,GAAOhE,MAAM,GAAQlB,GAAIA,GAAIkF,EAAG,GAGjD,SAASkoC,GAAsBptC,EAAGkF,GAChC,OAAO,GAAIlF,EAAE6xB,qBAAsB3sB,EAAG,GAGxC,SAAS8nC,GAAsBhtC,EAAGkF,GAChC,OAAOkoC,GAAsBptC,EAAGkF,GAAK,MAGvC,SAASmoC,GAAqBrtC,EAAGkF,GAC/B,OAAO,GAAIlF,EAAE+xB,cAAgB,EAAG7sB,EAAG,GAGrC,SAASooC,GAAiBttC,EAAGkF,GAC3B,OAAO,GAAIlF,EAAEyxB,gBAAiBvsB,EAAG,GAGnC,SAASsoC,GAAiBxtC,EAAGkF,GAC3B,OAAO,GAAIlF,EAAE2xB,gBAAiBzsB,EAAG,GAGnC,SAASuoC,GAA6BztC,GACpC,IAAI+wC,EAAM/wC,EAAEooC,YACZ,OAAe,IAAR2I,EAAY,EAAIA,EAGzB,SAASrD,GAA0B1tC,EAAGkF,GACpC,OAAO,GAAImjC,GAAUnnC,MAAM,GAAQlB,GAAIA,GAAIkF,EAAG,GAGhD,SAASyoC,GAAuB3tC,EAAGkF,GACjC,IAAI+qC,EAAMjwC,EAAEooC,YAEZ,OADApoC,EAAKiwC,GAAO,GAAa,IAARA,EAAaxH,GAAYzoC,GAAKyoC,GAAY33C,KAAKkP,GACzD,GAAIyoC,GAAYvnC,MAAM,GAAQlB,GAAIA,IAAiC,IAA3B,GAAQA,GAAGooC,aAAoBljC,EAAG,GAGnF,SAAS0oC,GAA6B5tC,GACpC,OAAOA,EAAEooC,YAGX,SAASyF,GAA0B7tC,EAAGkF,GACpC,OAAO,GAAIojC,GAAUpnC,MAAM,GAAQlB,GAAIA,GAAIkF,EAAG,GAGhD,SAAS4oC,GAAc9tC,EAAGkF,GACxB,OAAO,GAAIlF,EAAE8xB,iBAAmB,IAAK5sB,EAAG,GAG1C,SAAS6oC,GAAkB/tC,EAAGkF,GAC5B,OAAO,GAAIlF,EAAE8xB,iBAAmB,IAAO5sB,EAAG,GAG5C,SAAS8oC,KACP,MAAO,QAGT,SAASvB,KACP,MAAO,IAGT,SAASV,GAAoB/rC,GAC3B,OAAQA,EAGV,SAASgsC,GAA2BhsC,GAClC,OAAOlR,KAAKiC,OAAOiP,EAAI,KC3mBV,SAAS,GAAcoT,GAMpC,OALA,GAASk2B,GAAal2B,GACT,GAAO3P,OACR,GAAOsgB,MACnB0sB,GAAY,GAAOA,UACnBC,GAAW,GAAOA,SACX,GAjBT,GAAc,CACZlH,SAAU,SACVnY,KAAM,aACNlL,KAAM,eACNyjB,QAAS,CAAC,KAAM,MAChBE,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACzEE,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDE,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvHE,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,SCdtF,IAAI4G,GAAe,wBAE1B,SAASC,GAAgB5f,GACvB,OAAOA,EAAK6f,cAGElvB,KAAK5xB,UAAU8gD,aAEzBT,GAAUO,ICPhB,SAASG,GAAe36C,GACtB,IAAI66B,EAAO,IAAIrP,KAAKxrB,GACpB,OAAOxF,MAAMqgC,GAAQ,KAAOA,GAGd,IAAIrP,KAAK,6BAEnB0uB,GAASM,ICVA,mBACb,IAAIxwC,EAAIo2B,EAAUniC,OAAS,EAAI,EAAGktB,EAAS,IAAIzmB,MAAMsF,GAAIC,EAAI,EAC7D,MAAOA,EAAID,EAAGmhB,EAAOlhB,GAAK,IAAMm2B,EAAUt2B,MAAU,EAAJG,EAAa,IAAJA,GACzD,OAAOkhB,GCDM,ICAA,GAAO,gECAP,GAAO,oDCAP,GAAO,oDCAP,GAAO,4ECAP,GAAO,0DCAP,GAAO,oDCAP,GAAO,0DCAP,GAAO,oDCAP,GAAO,4ETAP,YACb,OAAO,GAAoByvB,EAAOA,EAAO38C,OAAS,MUAzC,GAAS,IAAIyG,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAqE,IAAI,ICVK,IDYIm9C,GAAK,ICZA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAqE,IAAI,KCVK,IDYIm9C,GAAK,ICZA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAqE,IAAI,KCVK,IDYIm9C,GAAK,ICZA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAqE,IAAI,KCVK,IDYIm9C,GAAK,ICZA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAqE,IAAI,KCVK,IDYIm9C,GAAK,ICZA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAqE,IAAI,KCVK,IDYIm9C,GAAK,ICZA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAqE,IAAI,KCVK,IDYIm9C,GAAK,ICZA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAqE,IAAI,KCVK,IDYIm9C,GAAK,ICZA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAqE,IAAI,KCVK,IDYIm9C,GAAK,ICZA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KCRK,IDUIm9C,GAAK,ICVA,IAAIn2C,MAAM,GAAGrL,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAqE,IAAI,KAESm9C,GAAK,ICVL,GAAyB,GAAU,IAAK,GAAK,GAAM,IAAW,IAAK,GAAK,ICArE,GAAyB,IAAW,IAAK,IAAM,KAAO,GAAU,GAAI,IAAM,KAE1E,GAAyB,GAAU,IAAK,IAAM,KAAO,GAAU,GAAI,IAAM,KAEnF,KCLA,KACKviD,KAAKgwB,GACLhwB,KAAKgwB,GCFlB,SAAS,GAAKne,GACZ,IAAIH,EAAIG,EAAMlM,OACd,OAAO,SAASoR,GACd,OAAOlF,EAAM7R,KAAK4R,IAAI,EAAG5R,KAAKD,IAAI2R,EAAI,EAAG1R,KAAKiC,MAAM8U,EAAIrF,OAI7C,GAAK,GAAO,qgDAER,GAAK,GAAO,qgDAEV,GAAK,GAAO,qgDAEb,GAAK,GAAO,qgDCff1R,KAAK6S,IACH7S,KAAKmxB,MACPnxB,KAAK0wB,IACL1wB,KAAK4R,IACL5R,KAAKD,IACLC,KAAK2wB,IACJ3wB,KAAK+R,KDGR,ICDJ,GAAU,MACV,GAAK/R,KAAKgwB,GAEV,GAAM,EAAI,GCXrB,SAASwyB,GAAOt0C,GACd7K,KAAKisC,SAAWphC,EAGlBs0C,GAAOlhD,UAAY,CACjBmhD,UAAW,WACTp/C,KAAKosC,MAAQ,GAEfiT,QAAS,WACPr/C,KAAKosC,MAAQ/+B,KAEfy6B,UAAW,WACT9nC,KAAKqsC,OAAS,GAEhBtE,QAAS,YACH/nC,KAAKosC,OAAyB,IAAfpsC,KAAKosC,OAA+B,IAAhBpsC,KAAKqsC,SAAersC,KAAKisC,SAASzQ,YACzEx7B,KAAKosC,MAAQ,EAAIpsC,KAAKosC,OAExBvE,MAAO,SAASriC,EAAG4K,GAEjB,OADA5K,GAAKA,EAAG4K,GAAKA,EACLpQ,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAGrsC,KAAKosC,MAAQpsC,KAAKisC,SAASxQ,OAAOj2B,EAAG4K,GAAKpQ,KAAKisC,SAAS1Q,OAAO/1B,EAAG4K,GAAI,MAC/F,KAAK,EAAGpQ,KAAKqsC,OAAS,EACtB,QAASrsC,KAAKisC,SAASxQ,OAAOj2B,EAAG4K,GAAI,SAK5B,mBACb,OAAO,IAAI+uC,GAAOt0C,IC3BWy0C,GAAY,IAE3C,SAASC,GAAOC,GACdx/C,KAAKy/C,OAASD,EAqBD,SAASF,GAAYE,GAElC,SAASE,EAAO70C,GACd,OAAO,IAAI00C,GAAOC,EAAM30C,IAK1B,OAFA60C,EAAOD,OAASD,EAETE,EA1BTH,GAAOthD,UAAY,CACjBmhD,UAAW,WACTp/C,KAAKy/C,OAAOL,aAEdC,QAAS,WACPr/C,KAAKy/C,OAAOJ,WAEdvX,UAAW,WACT9nC,KAAKy/C,OAAO3X,aAEdC,QAAS,WACP/nC,KAAKy/C,OAAO1X,WAEdF,MAAO,SAASpjC,EAAGmnB,GACjB5rB,KAAKy/C,OAAO5X,MAAMjc,EAAIjvB,KAAK2wB,IAAI7oB,GAAImnB,GAAKjvB,KAAK0wB,IAAI5oB,MCtBlCsE,MAAM9K,UAAUkQ,MCAvBxR,KAAK+R,KAAK,EAAI,GCEX,ICCXixC,GAAKhjD,KAAK2wB,IAAI,GAAK,IAAM3wB,KAAK2wB,IAAI,EAAI,GAAK,ICHhC,IDIN3wB,KAAK2wB,IAAI,GAAM,IACd3wB,KAAK0wB,IAAI,GAAM,IELb1wB,KAAK+R,KAAK,GCCd/R,KAAK+R,KAAK,GACN/R,KAAK+R,KAAK,IFFP,cGAR,SAAS,GAAMjC,EAAMjH,EAAG4K,GAC7B3D,EAAKw/B,SAASpQ,eACX,EAAIpvB,EAAK0uB,IAAM1uB,EAAK4uB,KAAO,GAC3B,EAAI5uB,EAAK2uB,IAAM3uB,EAAK6uB,KAAO,GAC3B7uB,EAAK0uB,IAAM,EAAI1uB,EAAK4uB,KAAO,GAC3B5uB,EAAK2uB,IAAM,EAAI3uB,EAAK6uB,KAAO,GAC3B7uB,EAAK0uB,IAAM,EAAI1uB,EAAK4uB,IAAM71B,GAAK,GAC/BiH,EAAK2uB,IAAM,EAAI3uB,EAAK6uB,IAAMlrB,GAAK,GAI7B,SAASwvC,GAAM/0C,GACpB7K,KAAKisC,SAAWphC,EAGlB+0C,GAAM3hD,UAAY,CAChBmhD,UAAW,WACTp/C,KAAKosC,MAAQ,GAEfiT,QAAS,WACPr/C,KAAKosC,MAAQ/+B,KAEfy6B,UAAW,WACT9nC,KAAKm7B,IAAMn7B,KAAKq7B,IAChBr7B,KAAKo7B,IAAMp7B,KAAKs7B,IAAMjuB,IACtBrN,KAAKqsC,OAAS,GAEhBtE,QAAS,WACP,OAAQ/nC,KAAKqsC,QACX,KAAK,EAAG,GAAMrsC,KAAMA,KAAKq7B,IAAKr7B,KAAKs7B,KACnC,KAAK,EAAGt7B,KAAKisC,SAASxQ,OAAOz7B,KAAKq7B,IAAKr7B,KAAKs7B,KAAM,OAEhDt7B,KAAKosC,OAAyB,IAAfpsC,KAAKosC,OAA+B,IAAhBpsC,KAAKqsC,SAAersC,KAAKisC,SAASzQ,YACzEx7B,KAAKosC,MAAQ,EAAIpsC,KAAKosC,OAExBvE,MAAO,SAASriC,EAAG4K,GAEjB,OADA5K,GAAKA,EAAG4K,GAAKA,EACLpQ,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAGrsC,KAAKosC,MAAQpsC,KAAKisC,SAASxQ,OAAOj2B,EAAG4K,GAAKpQ,KAAKisC,SAAS1Q,OAAO/1B,EAAG4K,GAAI,MAC/F,KAAK,EAAGpQ,KAAKqsC,OAAS,EAAG,MACzB,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAGrsC,KAAKisC,SAASxQ,QAAQ,EAAIz7B,KAAKm7B,IAAMn7B,KAAKq7B,KAAO,GAAI,EAAIr7B,KAAKo7B,IAAMp7B,KAAKs7B,KAAO,GACzG,QAAS,GAAMt7B,KAAMwF,EAAG4K,GAAI,MAE9BpQ,KAAKm7B,IAAMn7B,KAAKq7B,IAAKr7B,KAAKq7B,IAAM71B,EAChCxF,KAAKo7B,IAAMp7B,KAAKs7B,IAAKt7B,KAAKs7B,IAAMlrB,ICzCpC,SAASyvC,GAAYh1C,GACnB7K,KAAKisC,SAAWphC,EAGlBg1C,GAAY5hD,UAAY,CACtBmhD,UAAW,GACXC,QAAS,GACTvX,UAAW,WACT9nC,KAAKm7B,IAAMn7B,KAAKq7B,IAAMr7B,KAAK8/C,IAAM9/C,KAAK+/C,IAAM//C,KAAKggD,IACjDhgD,KAAKo7B,IAAMp7B,KAAKs7B,IAAMt7B,KAAKigD,IAAMjgD,KAAKkgD,IAAMlgD,KAAKmgD,IAAM9yC,IACvDrN,KAAKqsC,OAAS,GAEhBtE,QAAS,WACP,OAAQ/nC,KAAKqsC,QACX,KAAK,EACHrsC,KAAKisC,SAAS1Q,OAAOv7B,KAAK8/C,IAAK9/C,KAAKigD,KACpCjgD,KAAKisC,SAASzQ,YACd,MAEF,KAAK,EACHx7B,KAAKisC,SAAS1Q,QAAQv7B,KAAK8/C,IAAM,EAAI9/C,KAAK+/C,KAAO,GAAI//C,KAAKigD,IAAM,EAAIjgD,KAAKkgD,KAAO,GAChFlgD,KAAKisC,SAASxQ,QAAQz7B,KAAK+/C,IAAM,EAAI//C,KAAK8/C,KAAO,GAAI9/C,KAAKkgD,IAAM,EAAIlgD,KAAKigD,KAAO,GAChFjgD,KAAKisC,SAASzQ,YACd,MAEF,KAAK,EACHx7B,KAAK6nC,MAAM7nC,KAAK8/C,IAAK9/C,KAAKigD,KAC1BjgD,KAAK6nC,MAAM7nC,KAAK+/C,IAAK//C,KAAKkgD,KAC1BlgD,KAAK6nC,MAAM7nC,KAAKggD,IAAKhgD,KAAKmgD,KAC1B,QAINtY,MAAO,SAASriC,EAAG4K,GAEjB,OADA5K,GAAKA,EAAG4K,GAAKA,EACLpQ,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAGrsC,KAAK8/C,IAAMt6C,EAAGxF,KAAKigD,IAAM7vC,EAAG,MACrD,KAAK,EAAGpQ,KAAKqsC,OAAS,EAAGrsC,KAAK+/C,IAAMv6C,EAAGxF,KAAKkgD,IAAM9vC,EAAG,MACrD,KAAK,EAAGpQ,KAAKqsC,OAAS,EAAGrsC,KAAKggD,IAAMx6C,EAAGxF,KAAKmgD,IAAM/vC,EAAGpQ,KAAKisC,SAAS1Q,QAAQv7B,KAAKm7B,IAAM,EAAIn7B,KAAKq7B,IAAM71B,GAAK,GAAIxF,KAAKo7B,IAAM,EAAIp7B,KAAKs7B,IAAMlrB,GAAK,GAAI,MACjJ,QAAS,GAAMpQ,KAAMwF,EAAG4K,GAAI,MAE9BpQ,KAAKm7B,IAAMn7B,KAAKq7B,IAAKr7B,KAAKq7B,IAAM71B,EAChCxF,KAAKo7B,IAAMp7B,KAAKs7B,IAAKt7B,KAAKs7B,IAAMlrB,IC3CpC,SAASgwC,GAAUv1C,GACjB7K,KAAKisC,SAAWphC,EAGlBu1C,GAAUniD,UAAY,CACpBmhD,UAAW,WACTp/C,KAAKosC,MAAQ,GAEfiT,QAAS,WACPr/C,KAAKosC,MAAQ/+B,KAEfy6B,UAAW,WACT9nC,KAAKm7B,IAAMn7B,KAAKq7B,IAChBr7B,KAAKo7B,IAAMp7B,KAAKs7B,IAAMjuB,IACtBrN,KAAKqsC,OAAS,GAEhBtE,QAAS,YACH/nC,KAAKosC,OAAyB,IAAfpsC,KAAKosC,OAA+B,IAAhBpsC,KAAKqsC,SAAersC,KAAKisC,SAASzQ,YACzEx7B,KAAKosC,MAAQ,EAAIpsC,KAAKosC,OAExBvE,MAAO,SAASriC,EAAG4K,GAEjB,OADA5K,GAAKA,EAAG4K,GAAKA,EACLpQ,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAG,MACzB,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAG,MACzB,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAG,IAAIpQ,GAAMj8B,KAAKm7B,IAAM,EAAIn7B,KAAKq7B,IAAM71B,GAAK,EAAG02B,GAAMl8B,KAAKo7B,IAAM,EAAIp7B,KAAKs7B,IAAMlrB,GAAK,EAAGpQ,KAAKosC,MAAQpsC,KAAKisC,SAASxQ,OAAOQ,EAAIC,GAAMl8B,KAAKisC,SAAS1Q,OAAOU,EAAIC,GAAK,MACvL,KAAK,EAAGl8B,KAAKqsC,OAAS,EACtB,QAAS,GAAMrsC,KAAMwF,EAAG4K,GAAI,MAE9BpQ,KAAKm7B,IAAMn7B,KAAKq7B,IAAKr7B,KAAKq7B,IAAM71B,EAChCxF,KAAKo7B,IAAMp7B,KAAKs7B,IAAKt7B,KAAKs7B,IAAMlrB,IC9BpC,SAASiwC,GAAOx1C,EAAS2lC,GACvBxwC,KAAKsgD,OAAS,IAAIV,GAAM/0C,GACxB7K,KAAKugD,MAAQ/P,EAGf6P,GAAOpiD,UAAY,CACjB6pC,UAAW,WACT9nC,KAAKkiC,GAAK,GACVliC,KAAKmiC,GAAK,GACVniC,KAAKsgD,OAAOxY,aAEdC,QAAS,WACP,IAAIviC,EAAIxF,KAAKkiC,GACT9xB,EAAIpQ,KAAKmiC,GACTnyB,EAAIxK,EAAElD,OAAS,EAEnB,GAAI0N,EAAI,EAAG,CACT,IAKI0D,EALAuoB,EAAKz2B,EAAE,GACP02B,EAAK9rB,EAAE,GACPwQ,EAAKpb,EAAEwK,GAAKisB,EACZpb,EAAKzQ,EAAEJ,GAAKksB,EACZ5tB,GAAK,EAGT,QAASA,GAAK0B,EACZ0D,EAAIpF,EAAI0B,EACRhQ,KAAKsgD,OAAOzY,MACV7nC,KAAKugD,MAAQ/6C,EAAE8I,IAAM,EAAItO,KAAKugD,QAAUtkB,EAAKvoB,EAAIkN,GACjD5gB,KAAKugD,MAAQnwC,EAAE9B,IAAM,EAAItO,KAAKugD,QAAUrkB,EAAKxoB,EAAImN,IAKvD7gB,KAAKkiC,GAAKliC,KAAKmiC,GAAK,KACpBniC,KAAKsgD,OAAOvY,WAEdF,MAAO,SAASriC,EAAG4K,GACjBpQ,KAAKkiC,GAAG9tB,MAAM5O,GACdxF,KAAKmiC,GAAG/tB,MAAMhE,MAIH,cAEb,SAASowC,EAAO31C,GACd,OAAgB,IAAT2lC,EAAa,IAAIoP,GAAM/0C,GAAW,IAAIw1C,GAAOx1C,EAAS2lC,GAO/D,OAJAgQ,EAAOhQ,KAAO,SAASA,GACrB,OAAO1W,GAAQ0W,IAGVgQ,GAVM,CAWZ,KCvDI,SAAS,GAAM/zC,EAAMjH,EAAG4K,GAC7B3D,EAAKw/B,SAASpQ,cACZpvB,EAAK4uB,IAAM5uB,EAAKg0C,IAAMh0C,EAAKqzC,IAAMrzC,EAAK0uB,KACtC1uB,EAAK6uB,IAAM7uB,EAAKg0C,IAAMh0C,EAAKwzC,IAAMxzC,EAAK2uB,KACtC3uB,EAAKqzC,IAAMrzC,EAAKg0C,IAAMh0C,EAAK4uB,IAAM71B,GACjCiH,EAAKwzC,IAAMxzC,EAAKg0C,IAAMh0C,EAAK6uB,IAAMlrB,GACjC3D,EAAKqzC,IACLrzC,EAAKwzC,KAIF,SAASS,GAAS71C,EAAS81C,GAChC3gD,KAAKisC,SAAWphC,EAChB7K,KAAKygD,IAAM,EAAIE,GAAW,EAG5BD,GAASziD,UAAY,CACnBmhD,UAAW,WACTp/C,KAAKosC,MAAQ,GAEfiT,QAAS,WACPr/C,KAAKosC,MAAQ/+B,KAEfy6B,UAAW,WACT9nC,KAAKm7B,IAAMn7B,KAAKq7B,IAAMr7B,KAAK8/C,IAC3B9/C,KAAKo7B,IAAMp7B,KAAKs7B,IAAMt7B,KAAKigD,IAAM5yC,IACjCrN,KAAKqsC,OAAS,GAEhBtE,QAAS,WACP,OAAQ/nC,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKisC,SAASxQ,OAAOz7B,KAAK8/C,IAAK9/C,KAAKigD,KAAM,MAClD,KAAK,EAAG,GAAMjgD,KAAMA,KAAKq7B,IAAKr7B,KAAKs7B,KAAM,OAEvCt7B,KAAKosC,OAAyB,IAAfpsC,KAAKosC,OAA+B,IAAhBpsC,KAAKqsC,SAAersC,KAAKisC,SAASzQ,YACzEx7B,KAAKosC,MAAQ,EAAIpsC,KAAKosC,OAExBvE,MAAO,SAASriC,EAAG4K,GAEjB,OADA5K,GAAKA,EAAG4K,GAAKA,EACLpQ,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAGrsC,KAAKosC,MAAQpsC,KAAKisC,SAASxQ,OAAOj2B,EAAG4K,GAAKpQ,KAAKisC,SAAS1Q,OAAO/1B,EAAG4K,GAAI,MAC/F,KAAK,EAAGpQ,KAAKqsC,OAAS,EAAGrsC,KAAKq7B,IAAM71B,EAAGxF,KAAKs7B,IAAMlrB,EAAG,MACrD,KAAK,EAAGpQ,KAAKqsC,OAAS,EACtB,QAAS,GAAMrsC,KAAMwF,EAAG4K,GAAI,MAE9BpQ,KAAKm7B,IAAMn7B,KAAKq7B,IAAKr7B,KAAKq7B,IAAMr7B,KAAK8/C,IAAK9/C,KAAK8/C,IAAMt6C,EACrDxF,KAAKo7B,IAAMp7B,KAAKs7B,IAAKt7B,KAAKs7B,IAAMt7B,KAAKigD,IAAKjgD,KAAKigD,IAAM7vC,KAI1C,cAEb,SAASwwC,EAAS/1C,GAChB,OAAO,IAAI61C,GAAS71C,EAAS81C,GAO/B,OAJAC,EAASD,QAAU,SAASA,GAC1B,OAAO7mB,GAAQ6mB,IAGVC,GAVM,CAWZ,GCzDI,SAASC,GAAeh2C,EAAS81C,GACtC3gD,KAAKisC,SAAWphC,EAChB7K,KAAKygD,IAAM,EAAIE,GAAW,EAG5BE,GAAe5iD,UAAY,CACzBmhD,UAAW,GACXC,QAAS,GACTvX,UAAW,WACT9nC,KAAKm7B,IAAMn7B,KAAKq7B,IAAMr7B,KAAK8/C,IAAM9/C,KAAK+/C,IAAM//C,KAAKggD,IAAMhgD,KAAK8gD,IAC5D9gD,KAAKo7B,IAAMp7B,KAAKs7B,IAAMt7B,KAAKigD,IAAMjgD,KAAKkgD,IAAMlgD,KAAKmgD,IAAMngD,KAAK+gD,IAAM1zC,IAClErN,KAAKqsC,OAAS,GAEhBtE,QAAS,WACP,OAAQ/nC,KAAKqsC,QACX,KAAK,EACHrsC,KAAKisC,SAAS1Q,OAAOv7B,KAAK+/C,IAAK//C,KAAKkgD,KACpClgD,KAAKisC,SAASzQ,YACd,MAEF,KAAK,EACHx7B,KAAKisC,SAASxQ,OAAOz7B,KAAK+/C,IAAK//C,KAAKkgD,KACpClgD,KAAKisC,SAASzQ,YACd,MAEF,KAAK,EACHx7B,KAAK6nC,MAAM7nC,KAAK+/C,IAAK//C,KAAKkgD,KAC1BlgD,KAAK6nC,MAAM7nC,KAAKggD,IAAKhgD,KAAKmgD,KAC1BngD,KAAK6nC,MAAM7nC,KAAK8gD,IAAK9gD,KAAK+gD,KAC1B,QAINlZ,MAAO,SAASriC,EAAG4K,GAEjB,OADA5K,GAAKA,EAAG4K,GAAKA,EACLpQ,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAGrsC,KAAK+/C,IAAMv6C,EAAGxF,KAAKkgD,IAAM9vC,EAAG,MACrD,KAAK,EAAGpQ,KAAKqsC,OAAS,EAAGrsC,KAAKisC,SAAS1Q,OAAOv7B,KAAKggD,IAAMx6C,EAAGxF,KAAKmgD,IAAM/vC,GAAI,MAC3E,KAAK,EAAGpQ,KAAKqsC,OAAS,EAAGrsC,KAAK8gD,IAAMt7C,EAAGxF,KAAK+gD,IAAM3wC,EAAG,MACrD,QAAS,GAAMpQ,KAAMwF,EAAG4K,GAAI,MAE9BpQ,KAAKm7B,IAAMn7B,KAAKq7B,IAAKr7B,KAAKq7B,IAAMr7B,KAAK8/C,IAAK9/C,KAAK8/C,IAAMt6C,EACrDxF,KAAKo7B,IAAMp7B,KAAKs7B,IAAKt7B,KAAKs7B,IAAMt7B,KAAKigD,IAAKjgD,KAAKigD,IAAM7vC,KAI1C,cAEb,SAASwwC,EAAS/1C,GAChB,OAAO,IAAIg2C,GAAeh2C,EAAS81C,GAOrC,OAJAC,EAASD,QAAU,SAASA,GAC1B,OAAO7mB,GAAQ6mB,IAGVC,GAVM,CAWZ,GC1DI,SAASI,GAAan2C,EAAS81C,GACpC3gD,KAAKisC,SAAWphC,EAChB7K,KAAKygD,IAAM,EAAIE,GAAW,EAG5BK,GAAa/iD,UAAY,CACvBmhD,UAAW,WACTp/C,KAAKosC,MAAQ,GAEfiT,QAAS,WACPr/C,KAAKosC,MAAQ/+B,KAEfy6B,UAAW,WACT9nC,KAAKm7B,IAAMn7B,KAAKq7B,IAAMr7B,KAAK8/C,IAC3B9/C,KAAKo7B,IAAMp7B,KAAKs7B,IAAMt7B,KAAKigD,IAAM5yC,IACjCrN,KAAKqsC,OAAS,GAEhBtE,QAAS,YACH/nC,KAAKosC,OAAyB,IAAfpsC,KAAKosC,OAA+B,IAAhBpsC,KAAKqsC,SAAersC,KAAKisC,SAASzQ,YACzEx7B,KAAKosC,MAAQ,EAAIpsC,KAAKosC,OAExBvE,MAAO,SAASriC,EAAG4K,GAEjB,OADA5K,GAAKA,EAAG4K,GAAKA,EACLpQ,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAG,MACzB,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAG,MACzB,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAGrsC,KAAKosC,MAAQpsC,KAAKisC,SAASxQ,OAAOz7B,KAAK8/C,IAAK9/C,KAAKigD,KAAOjgD,KAAKisC,SAAS1Q,OAAOv7B,KAAK8/C,IAAK9/C,KAAKigD,KAAM,MAC3H,KAAK,EAAGjgD,KAAKqsC,OAAS,EACtB,QAAS,GAAMrsC,KAAMwF,EAAG4K,GAAI,MAE9BpQ,KAAKm7B,IAAMn7B,KAAKq7B,IAAKr7B,KAAKq7B,IAAMr7B,KAAK8/C,IAAK9/C,KAAK8/C,IAAMt6C,EACrDxF,KAAKo7B,IAAMp7B,KAAKs7B,IAAKt7B,KAAKs7B,IAAMt7B,KAAKigD,IAAKjgD,KAAKigD,IAAM7vC,KAI1C,cAEb,SAASwwC,EAAS/1C,GAChB,OAAO,IAAIm2C,GAAan2C,EAAS81C,GAOnC,OAJAC,EAASD,QAAU,SAASA,GAC1B,OAAO7mB,GAAQ6mB,IAGVC,GAVM,CAWZ,GC7CI,SAAS,GAAMn0C,EAAMjH,EAAG4K,GAC7B,IAAIurB,EAAKlvB,EAAK4uB,IACVO,EAAKnvB,EAAK6uB,IACVQ,EAAKrvB,EAAKqzC,IACV/jB,EAAKtvB,EAAKwzC,IAEd,GAAIxzC,EAAKw0C,OAAS,GAAS,CACzB,IAAIx8C,EAAI,EAAIgI,EAAKy0C,QAAU,EAAIz0C,EAAKw0C,OAASx0C,EAAK00C,OAAS10C,EAAK20C,QAC5D/yC,EAAI,EAAI5B,EAAKw0C,QAAUx0C,EAAKw0C,OAASx0C,EAAK00C,QAC9CxlB,GAAMA,EAAKl3B,EAAIgI,EAAK0uB,IAAM1uB,EAAK20C,QAAU30C,EAAKqzC,IAAMrzC,EAAKy0C,SAAW7yC,EACpEutB,GAAMA,EAAKn3B,EAAIgI,EAAK2uB,IAAM3uB,EAAK20C,QAAU30C,EAAKwzC,IAAMxzC,EAAKy0C,SAAW7yC,EAGtE,GAAI5B,EAAK40C,OAAS,GAAS,CACzB,IAAI38C,EAAI,EAAI+H,EAAK60C,QAAU,EAAI70C,EAAK40C,OAAS50C,EAAK00C,OAAS10C,EAAK20C,QAC5DxxC,EAAI,EAAInD,EAAK40C,QAAU50C,EAAK40C,OAAS50C,EAAK00C,QAC9CrlB,GAAMA,EAAKp3B,EAAI+H,EAAK4uB,IAAM5uB,EAAK60C,QAAU97C,EAAIiH,EAAK20C,SAAWxxC,EAC7DmsB,GAAMA,EAAKr3B,EAAI+H,EAAK6uB,IAAM7uB,EAAK60C,QAAUlxC,EAAI3D,EAAK20C,SAAWxxC,EAG/DnD,EAAKw/B,SAASpQ,cAAcF,EAAIC,EAAIE,EAAIC,EAAItvB,EAAKqzC,IAAKrzC,EAAKwzC,KAG7D,SAASsB,GAAW12C,EAAS0lC,GAC3BvwC,KAAKisC,SAAWphC,EAChB7K,KAAKwhD,OAASjR,EAGhBgR,GAAWtjD,UAAY,CACrBmhD,UAAW,WACTp/C,KAAKosC,MAAQ,GAEfiT,QAAS,WACPr/C,KAAKosC,MAAQ/+B,KAEfy6B,UAAW,WACT9nC,KAAKm7B,IAAMn7B,KAAKq7B,IAAMr7B,KAAK8/C,IAC3B9/C,KAAKo7B,IAAMp7B,KAAKs7B,IAAMt7B,KAAKigD,IAAM5yC,IACjCrN,KAAKihD,OAASjhD,KAAKmhD,OAASnhD,KAAKqhD,OACjCrhD,KAAKkhD,QAAUlhD,KAAKohD,QAAUphD,KAAKshD,QACnCthD,KAAKqsC,OAAS,GAEhBtE,QAAS,WACP,OAAQ/nC,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKisC,SAASxQ,OAAOz7B,KAAK8/C,IAAK9/C,KAAKigD,KAAM,MAClD,KAAK,EAAGjgD,KAAK6nC,MAAM7nC,KAAK8/C,IAAK9/C,KAAKigD,KAAM,OAEtCjgD,KAAKosC,OAAyB,IAAfpsC,KAAKosC,OAA+B,IAAhBpsC,KAAKqsC,SAAersC,KAAKisC,SAASzQ,YACzEx7B,KAAKosC,MAAQ,EAAIpsC,KAAKosC,OAExBvE,MAAO,SAASriC,EAAG4K,GAGjB,GAFA5K,GAAKA,EAAG4K,GAAKA,EAETpQ,KAAKqsC,OAAQ,CACf,IAAIoV,EAAMzhD,KAAK8/C,IAAMt6C,EACjBk8C,EAAM1hD,KAAKigD,IAAM7vC,EACrBpQ,KAAKqhD,OAAS1kD,KAAK+R,KAAK1O,KAAKshD,QAAU3kD,KAAK0S,IAAIoyC,EAAMA,EAAMC,EAAMA,EAAK1hD,KAAKwhD,SAG9E,OAAQxhD,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAGrsC,KAAKosC,MAAQpsC,KAAKisC,SAASxQ,OAAOj2B,EAAG4K,GAAKpQ,KAAKisC,SAAS1Q,OAAO/1B,EAAG4K,GAAI,MAC/F,KAAK,EAAGpQ,KAAKqsC,OAAS,EAAG,MACzB,KAAK,EAAGrsC,KAAKqsC,OAAS,EACtB,QAAS,GAAMrsC,KAAMwF,EAAG4K,GAAI,MAG9BpQ,KAAKihD,OAASjhD,KAAKmhD,OAAQnhD,KAAKmhD,OAASnhD,KAAKqhD,OAC9CrhD,KAAKkhD,QAAUlhD,KAAKohD,QAASphD,KAAKohD,QAAUphD,KAAKshD,QACjDthD,KAAKm7B,IAAMn7B,KAAKq7B,IAAKr7B,KAAKq7B,IAAMr7B,KAAK8/C,IAAK9/C,KAAK8/C,IAAMt6C,EACrDxF,KAAKo7B,IAAMp7B,KAAKs7B,IAAKt7B,KAAKs7B,IAAMt7B,KAAKigD,IAAKjgD,KAAKigD,IAAM7vC,KAI1C,cAEb,SAASuxC,EAAW92C,GAClB,OAAO0lC,EAAQ,IAAIgR,GAAW12C,EAAS0lC,GAAS,IAAImQ,GAAS71C,EAAS,GAOxE,OAJA82C,EAAWpR,MAAQ,SAASA,GAC1B,OAAOzW,GAAQyW,IAGVoR,GAVM,CAWZ,ICnFH,SAASC,GAAiB/2C,EAAS0lC,GACjCvwC,KAAKisC,SAAWphC,EAChB7K,KAAKwhD,OAASjR,EAGhBqR,GAAiB3jD,UAAY,CAC3BmhD,UAAW,GACXC,QAAS,GACTvX,UAAW,WACT9nC,KAAKm7B,IAAMn7B,KAAKq7B,IAAMr7B,KAAK8/C,IAAM9/C,KAAK+/C,IAAM//C,KAAKggD,IAAMhgD,KAAK8gD,IAC5D9gD,KAAKo7B,IAAMp7B,KAAKs7B,IAAMt7B,KAAKigD,IAAMjgD,KAAKkgD,IAAMlgD,KAAKmgD,IAAMngD,KAAK+gD,IAAM1zC,IAClErN,KAAKihD,OAASjhD,KAAKmhD,OAASnhD,KAAKqhD,OACjCrhD,KAAKkhD,QAAUlhD,KAAKohD,QAAUphD,KAAKshD,QACnCthD,KAAKqsC,OAAS,GAEhBtE,QAAS,WACP,OAAQ/nC,KAAKqsC,QACX,KAAK,EACHrsC,KAAKisC,SAAS1Q,OAAOv7B,KAAK+/C,IAAK//C,KAAKkgD,KACpClgD,KAAKisC,SAASzQ,YACd,MAEF,KAAK,EACHx7B,KAAKisC,SAASxQ,OAAOz7B,KAAK+/C,IAAK//C,KAAKkgD,KACpClgD,KAAKisC,SAASzQ,YACd,MAEF,KAAK,EACHx7B,KAAK6nC,MAAM7nC,KAAK+/C,IAAK//C,KAAKkgD,KAC1BlgD,KAAK6nC,MAAM7nC,KAAKggD,IAAKhgD,KAAKmgD,KAC1BngD,KAAK6nC,MAAM7nC,KAAK8gD,IAAK9gD,KAAK+gD,KAC1B,QAINlZ,MAAO,SAASriC,EAAG4K,GAGjB,GAFA5K,GAAKA,EAAG4K,GAAKA,EAETpQ,KAAKqsC,OAAQ,CACf,IAAIoV,EAAMzhD,KAAK8/C,IAAMt6C,EACjBk8C,EAAM1hD,KAAKigD,IAAM7vC,EACrBpQ,KAAKqhD,OAAS1kD,KAAK+R,KAAK1O,KAAKshD,QAAU3kD,KAAK0S,IAAIoyC,EAAMA,EAAMC,EAAMA,EAAK1hD,KAAKwhD,SAG9E,OAAQxhD,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAGrsC,KAAK+/C,IAAMv6C,EAAGxF,KAAKkgD,IAAM9vC,EAAG,MACrD,KAAK,EAAGpQ,KAAKqsC,OAAS,EAAGrsC,KAAKisC,SAAS1Q,OAAOv7B,KAAKggD,IAAMx6C,EAAGxF,KAAKmgD,IAAM/vC,GAAI,MAC3E,KAAK,EAAGpQ,KAAKqsC,OAAS,EAAGrsC,KAAK8gD,IAAMt7C,EAAGxF,KAAK+gD,IAAM3wC,EAAG,MACrD,QAAS,GAAMpQ,KAAMwF,EAAG4K,GAAI,MAG9BpQ,KAAKihD,OAASjhD,KAAKmhD,OAAQnhD,KAAKmhD,OAASnhD,KAAKqhD,OAC9CrhD,KAAKkhD,QAAUlhD,KAAKohD,QAASphD,KAAKohD,QAAUphD,KAAKshD,QACjDthD,KAAKm7B,IAAMn7B,KAAKq7B,IAAKr7B,KAAKq7B,IAAMr7B,KAAK8/C,IAAK9/C,KAAK8/C,IAAMt6C,EACrDxF,KAAKo7B,IAAMp7B,KAAKs7B,IAAKt7B,KAAKs7B,IAAMt7B,KAAKigD,IAAKjgD,KAAKigD,IAAM7vC,KAI1C,cAEb,SAASuxC,EAAW92C,GAClB,OAAO0lC,EAAQ,IAAIqR,GAAiB/2C,EAAS0lC,GAAS,IAAIsQ,GAAeh2C,EAAS,GAOpF,OAJA82C,EAAWpR,MAAQ,SAASA,GAC1B,OAAOzW,GAAQyW,IAGVoR,GAVM,CAWZ,ICtEH,SAASE,GAAeh3C,EAAS0lC,GAC/BvwC,KAAKisC,SAAWphC,EAChB7K,KAAKwhD,OAASjR,EAGhBsR,GAAe5jD,UAAY,CACzBmhD,UAAW,WACTp/C,KAAKosC,MAAQ,GAEfiT,QAAS,WACPr/C,KAAKosC,MAAQ/+B,KAEfy6B,UAAW,WACT9nC,KAAKm7B,IAAMn7B,KAAKq7B,IAAMr7B,KAAK8/C,IAC3B9/C,KAAKo7B,IAAMp7B,KAAKs7B,IAAMt7B,KAAKigD,IAAM5yC,IACjCrN,KAAKihD,OAASjhD,KAAKmhD,OAASnhD,KAAKqhD,OACjCrhD,KAAKkhD,QAAUlhD,KAAKohD,QAAUphD,KAAKshD,QACnCthD,KAAKqsC,OAAS,GAEhBtE,QAAS,YACH/nC,KAAKosC,OAAyB,IAAfpsC,KAAKosC,OAA+B,IAAhBpsC,KAAKqsC,SAAersC,KAAKisC,SAASzQ,YACzEx7B,KAAKosC,MAAQ,EAAIpsC,KAAKosC,OAExBvE,MAAO,SAASriC,EAAG4K,GAGjB,GAFA5K,GAAKA,EAAG4K,GAAKA,EAETpQ,KAAKqsC,OAAQ,CACf,IAAIoV,EAAMzhD,KAAK8/C,IAAMt6C,EACjBk8C,EAAM1hD,KAAKigD,IAAM7vC,EACrBpQ,KAAKqhD,OAAS1kD,KAAK+R,KAAK1O,KAAKshD,QAAU3kD,KAAK0S,IAAIoyC,EAAMA,EAAMC,EAAMA,EAAK1hD,KAAKwhD,SAG9E,OAAQxhD,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAG,MACzB,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAG,MACzB,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAGrsC,KAAKosC,MAAQpsC,KAAKisC,SAASxQ,OAAOz7B,KAAK8/C,IAAK9/C,KAAKigD,KAAOjgD,KAAKisC,SAAS1Q,OAAOv7B,KAAK8/C,IAAK9/C,KAAKigD,KAAM,MAC3H,KAAK,EAAGjgD,KAAKqsC,OAAS,EACtB,QAAS,GAAMrsC,KAAMwF,EAAG4K,GAAI,MAG9BpQ,KAAKihD,OAASjhD,KAAKmhD,OAAQnhD,KAAKmhD,OAASnhD,KAAKqhD,OAC9CrhD,KAAKkhD,QAAUlhD,KAAKohD,QAASphD,KAAKohD,QAAUphD,KAAKshD,QACjDthD,KAAKm7B,IAAMn7B,KAAKq7B,IAAKr7B,KAAKq7B,IAAMr7B,KAAK8/C,IAAK9/C,KAAK8/C,IAAMt6C,EACrDxF,KAAKo7B,IAAMp7B,KAAKs7B,IAAKt7B,KAAKs7B,IAAMt7B,KAAKigD,IAAKjgD,KAAKigD,IAAM7vC,KAI1C,cAEb,SAASuxC,EAAW92C,GAClB,OAAO0lC,EAAQ,IAAIsR,GAAeh3C,EAAS0lC,GAAS,IAAIyQ,GAAan2C,EAAS,GAOhF,OAJA82C,EAAWpR,MAAQ,SAASA,GAC1B,OAAOzW,GAAQyW,IAGVoR,GAVM,CAWZ,IC3DH,SAASG,GAAaj3C,GACpB7K,KAAKisC,SAAWphC,EAGlBi3C,GAAa7jD,UAAY,CACvBmhD,UAAW,GACXC,QAAS,GACTvX,UAAW,WACT9nC,KAAKqsC,OAAS,GAEhBtE,QAAS,WACH/nC,KAAKqsC,QAAQrsC,KAAKisC,SAASzQ,aAEjCqM,MAAO,SAASriC,EAAG4K,GACjB5K,GAAKA,EAAG4K,GAAKA,EACTpQ,KAAKqsC,OAAQrsC,KAAKisC,SAASxQ,OAAOj2B,EAAG4K,IACpCpQ,KAAKqsC,OAAS,EAAGrsC,KAAKisC,SAAS1Q,OAAO/1B,EAAG4K,MClBlD,SAAS,GAAK5K,GACZ,OAAOA,EAAI,GAAK,EAAI,EAOtB,SAASu8C,GAAOt1C,EAAMqvB,EAAIC,GACxB,IAAIimB,EAAKv1C,EAAK4uB,IAAM5uB,EAAK0uB,IACrB8mB,EAAKnmB,EAAKrvB,EAAK4uB,IACf6mB,GAAMz1C,EAAK6uB,IAAM7uB,EAAK2uB,MAAQ4mB,GAAMC,EAAK,IAAM,GAC/CE,GAAMpmB,EAAKtvB,EAAK6uB,MAAQ2mB,GAAMD,EAAK,IAAM,GACzCjvC,GAAKmvC,EAAKD,EAAKE,EAAKH,IAAOA,EAAKC,GACpC,OAAQ,GAAKC,GAAM,GAAKC,IAAOxlD,KAAKD,IAAIC,KAAK6S,IAAI0yC,GAAKvlD,KAAK6S,IAAI2yC,GAAK,GAAMxlD,KAAK6S,IAAIuD,KAAO,EAI5F,SAASqvC,GAAO31C,EAAMiH,GACpB,IAAIhI,EAAIe,EAAK4uB,IAAM5uB,EAAK0uB,IACxB,OAAOzvB,GAAK,GAAKe,EAAK6uB,IAAM7uB,EAAK2uB,KAAO1vB,EAAIgI,GAAK,EAAIA,EAMvD,SAAS,GAAMjH,EAAM6nB,EAAI/F,GACvB,IAAI0N,EAAKxvB,EAAK0uB,IACVe,EAAKzvB,EAAK2uB,IACVO,EAAKlvB,EAAK4uB,IACVO,EAAKnvB,EAAK6uB,IACV1a,GAAM+a,EAAKM,GAAM,EACrBxvB,EAAKw/B,SAASpQ,cAAcI,EAAKrb,EAAIsb,EAAKtb,EAAK0T,EAAIqH,EAAK/a,EAAIgb,EAAKhb,EAAK2N,EAAIoN,EAAIC,GAGhF,SAASymB,GAAUx3C,GACjB7K,KAAKisC,SAAWphC,EA0ClB,SAASy3C,GAAUz3C,GACjB7K,KAAKisC,SAAW,IAAIsW,GAAe13C,GAOrC,SAAS03C,GAAe13C,GACtB7K,KAAKisC,SAAWphC,ECvFlB,SAAS23C,GAAQ33C,GACf7K,KAAKisC,SAAWphC,EA2ClB,SAAS43C,GAAcj9C,GACrB,IAAI8I,EAEAsB,EADAvB,EAAI7I,EAAElD,OAAS,EAEfmC,EAAI,IAAIsE,MAAMsF,GACd3J,EAAI,IAAIqE,MAAMsF,GACdud,EAAI,IAAI7iB,MAAMsF,GAElB,IADA5J,EAAE,GAAK,EAAGC,EAAE,GAAK,EAAGknB,EAAE,GAAKpmB,EAAE,GAAK,EAAIA,EAAE,GACnC8I,EAAI,EAAGA,EAAID,EAAI,IAAKC,EAAG7J,EAAE6J,GAAK,EAAG5J,EAAE4J,GAAK,EAAGsd,EAAEtd,GAAK,EAAI9I,EAAE8I,GAAK,EAAI9I,EAAE8I,EAAI,GAE5E,IADA7J,EAAE4J,EAAI,GAAK,EAAG3J,EAAE2J,EAAI,GAAK,EAAGud,EAAEvd,EAAI,GAAK,EAAI7I,EAAE6I,EAAI,GAAK7I,EAAE6I,GACnDC,EAAI,EAAGA,EAAID,IAAKC,EAAGsB,EAAInL,EAAE6J,GAAK5J,EAAE4J,EAAI,GAAI5J,EAAE4J,IAAMsB,EAAGgc,EAAEtd,IAAMsB,EAAIgc,EAAEtd,EAAI,GAE1E,IADA7J,EAAE4J,EAAI,GAAKud,EAAEvd,EAAI,GAAK3J,EAAE2J,EAAI,GACvBC,EAAID,EAAI,EAAGC,GAAK,IAAKA,EAAG7J,EAAE6J,IAAMsd,EAAEtd,GAAK7J,EAAE6J,EAAI,IAAM5J,EAAE4J,GAE1D,IADA5J,EAAE2J,EAAI,IAAM7I,EAAE6I,GAAK5J,EAAE4J,EAAI,IAAM,EAC1BC,EAAI,EAAGA,EAAID,EAAI,IAAKC,EAAG5J,EAAE4J,GAAK,EAAI9I,EAAE8I,EAAI,GAAK7J,EAAE6J,EAAI,GACxD,MAAO,CAAC7J,EAAGC,GDpBb29C,GAAUpkD,UAAY,CACpBmhD,UAAW,WACTp/C,KAAKosC,MAAQ,GAEfiT,QAAS,WACPr/C,KAAKosC,MAAQ/+B,KAEfy6B,UAAW,WACT9nC,KAAKm7B,IAAMn7B,KAAKq7B,IAChBr7B,KAAKo7B,IAAMp7B,KAAKs7B,IAChBt7B,KAAK0iD,IAAMr1C,IACXrN,KAAKqsC,OAAS,GAEhBtE,QAAS,WACP,OAAQ/nC,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKisC,SAASxQ,OAAOz7B,KAAKq7B,IAAKr7B,KAAKs7B,KAAM,MAClD,KAAK,EAAG,GAAMt7B,KAAMA,KAAK0iD,IAAKN,GAAOpiD,KAAMA,KAAK0iD,MAAO,OAErD1iD,KAAKosC,OAAyB,IAAfpsC,KAAKosC,OAA+B,IAAhBpsC,KAAKqsC,SAAersC,KAAKisC,SAASzQ,YACzEx7B,KAAKosC,MAAQ,EAAIpsC,KAAKosC,OAExBvE,MAAO,SAASriC,EAAG4K,GACjB,IAAIme,EAAKlhB,IAGT,GADA7H,GAAKA,EAAG4K,GAAKA,EACT5K,IAAMxF,KAAKq7B,KAAOjrB,IAAMpQ,KAAKs7B,IAAjC,CACA,OAAQt7B,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAGrsC,KAAKosC,MAAQpsC,KAAKisC,SAASxQ,OAAOj2B,EAAG4K,GAAKpQ,KAAKisC,SAAS1Q,OAAO/1B,EAAG4K,GAAI,MAC/F,KAAK,EAAGpQ,KAAKqsC,OAAS,EAAG,MACzB,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAG,GAAMrsC,KAAMoiD,GAAOpiD,KAAMuuB,EAAKwzB,GAAO/hD,KAAMwF,EAAG4K,IAAKme,GAAK,MACjF,QAAS,GAAMvuB,KAAMA,KAAK0iD,IAAKn0B,EAAKwzB,GAAO/hD,KAAMwF,EAAG4K,IAAK,MAG3DpQ,KAAKm7B,IAAMn7B,KAAKq7B,IAAKr7B,KAAKq7B,IAAM71B,EAChCxF,KAAKo7B,IAAMp7B,KAAKs7B,IAAKt7B,KAAKs7B,IAAMlrB,EAChCpQ,KAAK0iD,IAAMn0B,MAQd+zB,GAAUrkD,UAAYyB,OAAOgG,OAAO28C,GAAUpkD,YAAY4pC,MAAQ,SAASriC,EAAG4K,GAC7EiyC,GAAUpkD,UAAU4pC,MAAM3oC,KAAKc,KAAMoQ,EAAG5K,IAO1C+8C,GAAetkD,UAAY,CACzBs9B,OAAQ,SAAS/1B,EAAG4K,GAAKpQ,KAAKisC,SAAS1Q,OAAOnrB,EAAG5K,IACjDg2B,UAAW,WAAax7B,KAAKisC,SAASzQ,aACtCC,OAAQ,SAASj2B,EAAG4K,GAAKpQ,KAAKisC,SAASxQ,OAAOrrB,EAAG5K,IACjDq2B,cAAe,SAASF,EAAIC,EAAIE,EAAIC,EAAIv2B,EAAG4K,GAAKpQ,KAAKisC,SAASpQ,cAAcD,EAAID,EAAII,EAAID,EAAI1rB,EAAG5K,KC1FjGg9C,GAAQvkD,UAAY,CAClBmhD,UAAW,WACTp/C,KAAKosC,MAAQ,GAEfiT,QAAS,WACPr/C,KAAKosC,MAAQ/+B,KAEfy6B,UAAW,WACT9nC,KAAKkiC,GAAK,GACVliC,KAAKmiC,GAAK,IAEZ4F,QAAS,WACP,IAAIviC,EAAIxF,KAAKkiC,GACT9xB,EAAIpQ,KAAKmiC,GACT9zB,EAAI7I,EAAElD,OAEV,GAAI+L,EAEF,GADArO,KAAKosC,MAAQpsC,KAAKisC,SAASxQ,OAAOj2B,EAAE,GAAI4K,EAAE,IAAMpQ,KAAKisC,SAAS1Q,OAAO/1B,EAAE,GAAI4K,EAAE,IACnE,IAAN/B,EACFrO,KAAKisC,SAASxQ,OAAOj2B,EAAE,GAAI4K,EAAE,SAI7B,IAFA,IAAIuyC,EAAKF,GAAcj9C,GACnBo9C,EAAKH,GAAcryC,GACdkI,EAAK,EAAGC,EAAK,EAAGA,EAAKlK,IAAKiK,IAAMC,EACvCvY,KAAKisC,SAASpQ,cAAc8mB,EAAG,GAAGrqC,GAAKsqC,EAAG,GAAGtqC,GAAKqqC,EAAG,GAAGrqC,GAAKsqC,EAAG,GAAGtqC,GAAK9S,EAAE+S,GAAKnI,EAAEmI,KAKnFvY,KAAKosC,OAAyB,IAAfpsC,KAAKosC,OAAqB,IAAN/9B,IAAUrO,KAAKisC,SAASzQ,YAC/Dx7B,KAAKosC,MAAQ,EAAIpsC,KAAKosC,MACtBpsC,KAAKkiC,GAAKliC,KAAKmiC,GAAK,MAEtB0F,MAAO,SAASriC,EAAG4K,GACjBpQ,KAAKkiC,GAAG9tB,MAAM5O,GACdxF,KAAKmiC,GAAG/tB,MAAMhE,KCvClB,SAASyyC,GAAKh4C,EAAS6I,GACrB1T,KAAKisC,SAAWphC,EAChB7K,KAAK8iD,GAAKpvC,EAGZmvC,GAAK5kD,UAAY,CACfmhD,UAAW,WACTp/C,KAAKosC,MAAQ,GAEfiT,QAAS,WACPr/C,KAAKosC,MAAQ/+B,KAEfy6B,UAAW,WACT9nC,KAAKkiC,GAAKliC,KAAKmiC,GAAK90B,IACpBrN,KAAKqsC,OAAS,GAEhBtE,QAAS,WACH,EAAI/nC,KAAK8iD,IAAM9iD,KAAK8iD,GAAK,GAAqB,IAAhB9iD,KAAKqsC,QAAcrsC,KAAKisC,SAASxQ,OAAOz7B,KAAKkiC,GAAIliC,KAAKmiC,KACpFniC,KAAKosC,OAAyB,IAAfpsC,KAAKosC,OAA+B,IAAhBpsC,KAAKqsC,SAAersC,KAAKisC,SAASzQ,YACrEx7B,KAAKosC,OAAS,IAAGpsC,KAAK8iD,GAAK,EAAI9iD,KAAK8iD,GAAI9iD,KAAKosC,MAAQ,EAAIpsC,KAAKosC,QAEpEvE,MAAO,SAASriC,EAAG4K,GAEjB,OADA5K,GAAKA,EAAG4K,GAAKA,EACLpQ,KAAKqsC,QACX,KAAK,EAAGrsC,KAAKqsC,OAAS,EAAGrsC,KAAKosC,MAAQpsC,KAAKisC,SAASxQ,OAAOj2B,EAAG4K,GAAKpQ,KAAKisC,SAAS1Q,OAAO/1B,EAAG4K,GAAI,MAC/F,KAAK,EAAGpQ,KAAKqsC,OAAS,EACtB,QACE,GAAIrsC,KAAK8iD,IAAM,EACb9iD,KAAKisC,SAASxQ,OAAOz7B,KAAKkiC,GAAI9xB,GAC9BpQ,KAAKisC,SAASxQ,OAAOj2B,EAAG4K,OACnB,CACL,IAAIurB,EAAK37B,KAAKkiC,IAAM,EAAIliC,KAAK8iD,IAAMt9C,EAAIxF,KAAK8iD,GAC5C9iD,KAAKisC,SAASxQ,OAAOE,EAAI37B,KAAKmiC,IAC9BniC,KAAKisC,SAASxQ,OAAOE,EAAIvrB,GAE3B,MAGJpQ,KAAKkiC,GAAK18B,EAAGxF,KAAKmiC,GAAK/xB,ICtC3B,SAAS2yC,KACP/iD,KAAKoT,EAAI,KAGJ,SAAS4vC,GAAa7sC,GAC3BA,EAAKgoC,EACLhoC,EAAK7Q,EACL6Q,EAAK4gC,EACL5gC,EAAKpX,EACLoX,EAAK8sC,EACL9sC,EAAKiqB,EAAI,KAuLX,SAAS8iB,GAAmB7gB,EAAMlsB,GAChC,IAAIpD,EAAIoD,EACJya,EAAIza,EAAKpX,EACTiM,EAAS+H,EAAEorC,EAEXnzC,EACEA,EAAO+rC,IAAMhkC,EAAG/H,EAAO+rC,EAAInmB,EAC1B5lB,EAAOjM,EAAI6xB,EAEhByR,EAAKjvB,EAAIwd,EAGXA,EAAEutB,EAAInzC,EACN+H,EAAEorC,EAAIvtB,EACN7d,EAAEhU,EAAI6xB,EAAEmmB,EACJhkC,EAAEhU,IAAGgU,EAAEhU,EAAEo/C,EAAIprC,GACjB6d,EAAEmmB,EAAIhkC,EAGR,SAASowC,GAAoB9gB,EAAMlsB,GACjC,IAAIpD,EAAIoD,EACJya,EAAIza,EAAK4gC,EACT/rC,EAAS+H,EAAEorC,EAEXnzC,EACEA,EAAO+rC,IAAMhkC,EAAG/H,EAAO+rC,EAAInmB,EAC1B5lB,EAAOjM,EAAI6xB,EAEhByR,EAAKjvB,EAAIwd,EAGXA,EAAEutB,EAAInzC,EACN+H,EAAEorC,EAAIvtB,EACN7d,EAAEgkC,EAAInmB,EAAE7xB,EACJgU,EAAEgkC,IAAGhkC,EAAEgkC,EAAEoH,EAAIprC,GACjB6d,EAAE7xB,EAAIgU,EAGR,SAASqwC,GAAcjtC,GACrB,MAAOA,EAAK4gC,EAAG5gC,EAAOA,EAAK4gC,EAC3B,OAAO5gC,EA5NT4sC,GAAa9kD,UAAY,CACvBoW,YAAa0uC,GAEbnwC,OAAQ,SAASywC,EAAOltC,GACtB,IAAInL,EAAQs4C,EAASC,EAErB,GAAIF,EAAO,CAKT,GAJAltC,EAAK8sC,EAAII,EACTltC,EAAKiqB,EAAIijB,EAAMjjB,EACXijB,EAAMjjB,IAAGijB,EAAMjjB,EAAE6iB,EAAI9sC,GACzBktC,EAAMjjB,EAAIjqB,EACNktC,EAAMtkD,EAAG,CACXskD,EAAQA,EAAMtkD,EACd,MAAOskD,EAAMtM,EAAGsM,EAAQA,EAAMtM,EAC9BsM,EAAMtM,EAAI5gC,OAEVktC,EAAMtkD,EAAIoX,EAEZnL,EAASq4C,OACArjD,KAAKoT,GACdiwC,EAAQD,GAAcpjD,KAAKoT,GAC3B+C,EAAK8sC,EAAI,KACT9sC,EAAKiqB,EAAIijB,EACTA,EAAMJ,EAAII,EAAMtM,EAAI5gC,EACpBnL,EAASq4C,IAETltC,EAAK8sC,EAAI9sC,EAAKiqB,EAAI,KAClBpgC,KAAKoT,EAAI+C,EACTnL,EAAS,MAEXmL,EAAK4gC,EAAI5gC,EAAKpX,EAAI,KAClBoX,EAAKgoC,EAAInzC,EACTmL,EAAK7Q,GAAI,EAET+9C,EAAQltC,EACR,MAAOnL,GAAUA,EAAO1F,EACtBg+C,EAAUt4C,EAAOmzC,EACbnzC,IAAWs4C,EAAQvM,GACrBwM,EAAQD,EAAQvkD,EACZwkD,GAASA,EAAMj+C,GACjB0F,EAAO1F,EAAIi+C,EAAMj+C,GAAI,EACrBg+C,EAAQh+C,GAAI,EACZ+9C,EAAQC,IAEJD,IAAUr4C,EAAOjM,IACnBmkD,GAAmBljD,KAAMgL,GACzBq4C,EAAQr4C,EACRA,EAASq4C,EAAMlF,GAEjBnzC,EAAO1F,GAAI,EACXg+C,EAAQh+C,GAAI,EACZ69C,GAAoBnjD,KAAMsjD,MAG5BC,EAAQD,EAAQvM,EACZwM,GAASA,EAAMj+C,GACjB0F,EAAO1F,EAAIi+C,EAAMj+C,GAAI,EACrBg+C,EAAQh+C,GAAI,EACZ+9C,EAAQC,IAEJD,IAAUr4C,EAAO+rC,IACnBoM,GAAoBnjD,KAAMgL,GAC1Bq4C,EAAQr4C,EACRA,EAASq4C,EAAMlF,GAEjBnzC,EAAO1F,GAAI,EACXg+C,EAAQh+C,GAAI,EACZ49C,GAAmBljD,KAAMsjD,KAG7Bt4C,EAASq4C,EAAMlF,EAEjBn+C,KAAKoT,EAAE9N,GAAI,GAGb2N,OAAQ,SAASkD,GACXA,EAAKiqB,IAAGjqB,EAAKiqB,EAAE6iB,EAAI9sC,EAAK8sC,GACxB9sC,EAAK8sC,IAAG9sC,EAAK8sC,EAAE7iB,EAAIjqB,EAAKiqB,GAC5BjqB,EAAKiqB,EAAIjqB,EAAK8sC,EAAI,KAElB,IACIO,EAGAx9C,EACA0jB,EALA1e,EAASmL,EAAKgoC,EAEd3wC,EAAO2I,EAAK4gC,EACZnpC,EAAQuI,EAAKpX,EAsCjB,GAhCKiH,EAFAwH,EACKI,EACEw1C,GAAcx1C,GADFJ,EADNI,EAId5C,EACEA,EAAO+rC,IAAM5gC,EAAMnL,EAAO+rC,EAAI/wC,EAC7BgF,EAAOjM,EAAIiH,EAEhBhG,KAAKoT,EAAIpN,EAGPwH,GAAQI,GACV8b,EAAM1jB,EAAKV,EACXU,EAAKV,EAAI6Q,EAAK7Q,EACdU,EAAK+wC,EAAIvpC,EACTA,EAAK2wC,EAAIn4C,EACLA,IAAS4H,GACX5C,EAAShF,EAAKm4C,EACdn4C,EAAKm4C,EAAIhoC,EAAKgoC,EACdhoC,EAAOnQ,EAAKjH,EACZiM,EAAO+rC,EAAI5gC,EACXnQ,EAAKjH,EAAI6O,EACTA,EAAMuwC,EAAIn4C,IAEVA,EAAKm4C,EAAInzC,EACTA,EAAShF,EACTmQ,EAAOnQ,EAAKjH,KAGd2qB,EAAMvT,EAAK7Q,EACX6Q,EAAOnQ,GAGLmQ,IAAMA,EAAKgoC,EAAInzC,IACf0e,EACJ,GAAIvT,GAAQA,EAAK7Q,EAAK6Q,EAAK7Q,GAAI,MAA/B,CAEA,EAAG,CACD,GAAI6Q,IAASnW,KAAKoT,EAAG,MACrB,GAAI+C,IAASnL,EAAO+rC,GAQlB,GAPAyM,EAAUx4C,EAAOjM,EACbykD,EAAQl+C,IACVk+C,EAAQl+C,GAAI,EACZ0F,EAAO1F,GAAI,EACX49C,GAAmBljD,KAAMgL,GACzBw4C,EAAUx4C,EAAOjM,GAEdykD,EAAQzM,GAAKyM,EAAQzM,EAAEzxC,GACpBk+C,EAAQzkD,GAAKykD,EAAQzkD,EAAEuG,EAAI,CAC5Bk+C,EAAQzkD,GAAMykD,EAAQzkD,EAAEuG,IAC3Bk+C,EAAQzM,EAAEzxC,GAAI,EACdk+C,EAAQl+C,GAAI,EACZ69C,GAAoBnjD,KAAMwjD,GAC1BA,EAAUx4C,EAAOjM,GAEnBykD,EAAQl+C,EAAI0F,EAAO1F,EACnB0F,EAAO1F,EAAIk+C,EAAQzkD,EAAEuG,GAAI,EACzB49C,GAAmBljD,KAAMgL,GACzBmL,EAAOnW,KAAKoT,EACZ,YAUF,GAPAowC,EAAUx4C,EAAO+rC,EACbyM,EAAQl+C,IACVk+C,EAAQl+C,GAAI,EACZ0F,EAAO1F,GAAI,EACX69C,GAAoBnjD,KAAMgL,GAC1Bw4C,EAAUx4C,EAAO+rC,GAEdyM,EAAQzM,GAAKyM,EAAQzM,EAAEzxC,GACtBk+C,EAAQzkD,GAAKykD,EAAQzkD,EAAEuG,EAAI,CAC1Bk+C,EAAQzM,GAAMyM,EAAQzM,EAAEzxC,IAC3Bk+C,EAAQzkD,EAAEuG,GAAI,EACdk+C,EAAQl+C,GAAI,EACZ49C,GAAmBljD,KAAMwjD,GACzBA,EAAUx4C,EAAO+rC,GAEnByM,EAAQl+C,EAAI0F,EAAO1F,EACnB0F,EAAO1F,EAAIk+C,EAAQzM,EAAEzxC,GAAI,EACzB69C,GAAoBnjD,KAAMgL,GAC1BmL,EAAOnW,KAAKoT,EACZ,MAGJowC,EAAQl+C,GAAI,EACZ6Q,EAAOnL,EACPA,EAASA,EAAOmzC,SACRhoC,EAAK7Q,GAEX6Q,IAAMA,EAAK7Q,GAAI,MA+CR,UC1OR,SAASm+C,GAAWj2C,EAAMI,EAAO4gB,EAAIC,GAC1C,IAAIi1B,EAAO,CAAC,KAAM,MACd7gD,EAAQ,GAAMuR,KAAKsvC,GAAQ,EAO/B,OANAA,EAAKl2C,KAAOA,EACZk2C,EAAK91C,MAAQA,EACT4gB,GAAIm1B,GAAWD,EAAMl2C,EAAMI,EAAO4gB,GAClCC,GAAIk1B,GAAWD,EAAM91C,EAAOJ,EAAMihB,GACtCm1B,GAAMp2C,EAAK3K,OAAOghD,UAAUzvC,KAAKvR,GACjC+gD,GAAMh2C,EAAM/K,OAAOghD,UAAUzvC,KAAKvR,GAC3B6gD,EAGF,SAASI,GAAiBt2C,EAAMghB,EAAIC,GACzC,IAAIi1B,EAAO,CAACl1B,EAAIC,GAEhB,OADAi1B,EAAKl2C,KAAOA,EACLk2C,EAGF,SAASC,GAAWD,EAAMl2C,EAAMI,EAAOm2C,GACvCL,EAAK,IAAOA,EAAK,GAIXA,EAAKl2C,OAASI,EACvB81C,EAAK,GAAKK,EAEVL,EAAK,GAAKK,GANVL,EAAK,GAAKK,EACVL,EAAKl2C,KAAOA,EACZk2C,EAAK91C,MAAQA,GASjB,SAASo2C,GAASN,EAAMznB,EAAIC,EAAIP,EAAIC,GAClC,IAUIhQ,EAVAnnB,EAAIi/C,EAAK,GACTh/C,EAAIg/C,EAAK,GACTO,EAAKx/C,EAAE,GACPy/C,EAAKz/C,EAAE,GACP0/C,EAAKz/C,EAAE,GACP0/C,EAAK1/C,EAAE,GACP4vB,EAAK,EACL/F,EAAK,EACL3N,EAAKujC,EAAKF,EACVpjC,EAAKujC,EAAKF,EAId,GADAt4B,EAAIqQ,EAAKgoB,EACJrjC,KAAMgL,EAAI,GAAf,CAEA,GADAA,GAAKhL,EACDA,EAAK,EAAG,CACV,GAAIgL,EAAI0I,EAAI,OACR1I,EAAI2C,IAAIA,EAAK3C,QACZ,GAAIhL,EAAK,EAAG,CACjB,GAAIgL,EAAI2C,EAAI,OACR3C,EAAI0I,IAAIA,EAAK1I,GAInB,GADAA,EAAI+P,EAAKsoB,EACJrjC,KAAMgL,EAAI,GAAf,CAEA,GADAA,GAAKhL,EACDA,EAAK,EAAG,CACV,GAAIgL,EAAI2C,EAAI,OACR3C,EAAI0I,IAAIA,EAAK1I,QACZ,GAAIhL,EAAK,EAAG,CACjB,GAAIgL,EAAI0I,EAAI,OACR1I,EAAI2C,IAAIA,EAAK3C,GAInB,GADAA,EAAIsQ,EAAKgoB,EACJrjC,KAAM+K,EAAI,GAAf,CAEA,GADAA,GAAK/K,EACDA,EAAK,EAAG,CACV,GAAI+K,EAAI0I,EAAI,OACR1I,EAAI2C,IAAIA,EAAK3C,QACZ,GAAI/K,EAAK,EAAG,CACjB,GAAI+K,EAAI2C,EAAI,OACR3C,EAAI0I,IAAIA,EAAK1I,GAInB,GADAA,EAAIgQ,EAAKsoB,EACJrjC,KAAM+K,EAAI,GAAf,CAEA,GADAA,GAAK/K,EACDA,EAAK,EAAG,CACV,GAAI+K,EAAI2C,EAAI,OACR3C,EAAI0I,IAAIA,EAAK1I,QACZ,GAAI/K,EAAK,EAAG,CACjB,GAAI+K,EAAI0I,EAAI,OACR1I,EAAI2C,IAAIA,EAAK3C,GAGnB,QAAM0I,EAAK,GAAQ/F,EAAK,KAEpB+F,EAAK,IAAGovB,EAAK,GAAK,CAACO,EAAK3vB,EAAK1T,EAAIsjC,EAAK5vB,EAAKzT,IAC3C0N,EAAK,IAAGm1B,EAAK,GAAK,CAACO,EAAK11B,EAAK3N,EAAIsjC,EAAK31B,EAAK1N,KACxC,OAGT,SAASwjC,GAAYX,EAAMznB,EAAIC,EAAIP,EAAIC,GACrC,IAAInN,EAAKi1B,EAAK,GACd,GAAIj1B,EAAI,OAAO,EAEf,IASI61B,EACAC,EAVA/1B,EAAKk1B,EAAK,GACVl2C,EAAOk2C,EAAKl2C,KACZI,EAAQ81C,EAAK91C,MACb42C,EAAKh3C,EAAK,GACVi3C,EAAKj3C,EAAK,GACVk3C,EAAK92C,EAAM,GACX+2C,EAAK/2C,EAAM,GACXg3C,GAAMJ,EAAKE,GAAM,EACjB3W,GAAM0W,EAAKE,GAAM,EAIrB,GAAIA,IAAOF,EAAI,CACb,GAAIG,EAAK3oB,GAAM2oB,GAAMjpB,EAAI,OACzB,GAAI6oB,EAAKE,EAAI,CACX,GAAKl2B,GACA,GAAIA,EAAG,IAAMoN,EAAI,YADbpN,EAAK,CAACo2B,EAAI1oB,GAEnBzN,EAAK,CAACm2B,EAAIhpB,OACL,CACL,GAAKpN,GACA,GAAIA,EAAG,GAAK0N,EAAI,YADZ1N,EAAK,CAACo2B,EAAIhpB,GAEnBnN,EAAK,CAACm2B,EAAI1oB,SAKZ,GAFAooB,GAAME,EAAKE,IAAOC,EAAKF,GACvBF,EAAKxW,EAAKuW,EAAKM,EACXN,GAAM,GAAKA,EAAK,EAClB,GAAIE,EAAKE,EAAI,CACX,GAAKl2B,GACA,GAAIA,EAAG,IAAMoN,EAAI,YADbpN,EAAK,EAAE0N,EAAKqoB,GAAMD,EAAIpoB,GAE/BzN,EAAK,EAAEmN,EAAK2oB,GAAMD,EAAI1oB,OACjB,CACL,GAAKpN,GACA,GAAIA,EAAG,GAAK0N,EAAI,YADZ1N,EAAK,EAAEoN,EAAK2oB,GAAMD,EAAI1oB,GAE/BnN,EAAK,EAAEyN,EAAKqoB,GAAMD,EAAIpoB,QAGxB,GAAIuoB,EAAKE,EAAI,CACX,GAAKn2B,GACA,GAAIA,EAAG,IAAMmN,EAAI,YADbnN,EAAK,CAACyN,EAAIqoB,EAAKroB,EAAKsoB,GAE7B91B,EAAK,CAACkN,EAAI2oB,EAAK3oB,EAAK4oB,OACf,CACL,GAAK/1B,GACA,GAAIA,EAAG,GAAKyN,EAAI,YADZzN,EAAK,CAACmN,EAAI2oB,EAAK3oB,EAAK4oB,GAE7B91B,EAAK,CAACwN,EAAIqoB,EAAKroB,EAAKsoB,GAO1B,OAFAb,EAAK,GAAKl1B,EACVk1B,EAAK,GAAKj1B,GACH,EAGF,SAASo2B,GAAU5oB,EAAIC,EAAIP,EAAIC,GACpC,IACI8nB,EADAp1C,EAAI,GAAMhM,OAGd,MAAOgM,IACA+1C,GAAYX,EAAO,GAAMp1C,GAAI2tB,EAAIC,EAAIP,EAAIC,IACtCooB,GAASN,EAAMznB,EAAIC,EAAIP,EAAIC,KAC1Bj/B,KAAK6S,IAAIk0C,EAAK,GAAG,GAAKA,EAAK,GAAG,IAAM,IAClC/mD,KAAK6S,IAAIk0C,EAAK,GAAG,GAAKA,EAAK,GAAG,IAAM,YACtC,GAAMp1C,GCjKZ,SAASw2C,GAAWC,GACzB,OAAOnB,GAAMmB,EAAKliD,OAAS,CACzBkiD,KAAMA,EACNlB,UAAW,IAIf,SAASmB,GAAkBC,EAAMvB,GAC/B,IAAIqB,EAAOE,EAAKF,KACZG,EAAKxB,EAAKl2C,KACV23C,EAAKzB,EAAK91C,MAEd,OADIm3C,IAASI,IAAIA,EAAKD,EAAIA,EAAKH,GAC3BI,EAAWxoD,KAAKmxB,MAAMq3B,EAAG,GAAKD,EAAG,GAAIC,EAAG,GAAKD,EAAG,KAChDH,IAASG,GAAIA,EAAKxB,EAAK,GAAIyB,EAAKzB,EAAK,KACpCwB,EAAKxB,EAAK,GAAIyB,EAAKzB,EAAK,IACtB/mD,KAAKmxB,MAAMo3B,EAAG,GAAKC,EAAG,GAAIA,EAAG,GAAKD,EAAG,KAGvC,SAASE,GAAkBH,EAAMvB,GACtC,OAAOA,IAAOA,EAAKl2C,OAASy3C,EAAKF,OAG5B,SAASM,GAAgBJ,EAAMvB,GACpC,OAAOA,IAAOA,EAAKl2C,OAASy3C,EAAKF,OAG5B,SAASO,KACd,IAAK,IAA6BL,EAAMpB,EAAW7zC,EAAGJ,EAA7CtB,EAAI,EAAGD,EAAIu1C,GAAMthD,OAA+BgM,EAAID,IAAKC,EAChE,IAAK22C,EAAOrB,GAAMt1C,MAAQsB,GAAKi0C,EAAYoB,EAAKpB,WAAWvhD,QAAS,CAClE,IAAIO,EAAQ,IAAIkG,MAAM6G,GAClBE,EAAQ,IAAI/G,MAAM6G,GACtB,IAAKI,EAAI,EAAGA,EAAIJ,IAAKI,EAAGnN,EAAMmN,GAAKA,EAAGF,EAAME,GAAKg1C,GAAkBC,EAAM,GAAMpB,EAAU7zC,KAEzF,IADAnN,EAAMuD,MAAK,SAASkI,EAAG0B,GAAK,OAAOF,EAAME,GAAKF,EAAMxB,MAC/C0B,EAAI,EAAGA,EAAIJ,IAAKI,EAAGF,EAAME,GAAK6zC,EAAUhhD,EAAMmN,IACnD,IAAKA,EAAI,EAAGA,EAAIJ,IAAKI,EAAG6zC,EAAU7zC,GAAKF,EAAME,IAK5C,SAASu1C,GAAUtpB,EAAIC,EAAIP,EAAIC,GACpC,IACI4pB,EACAP,EACAF,EACAU,EACA5B,EACA6B,EACAt3C,EACAu3C,EACAC,EACAx2B,EACAy2B,EACAC,EAZAC,EAASnC,GAAMthD,OAaf8/B,GAAQ,EAEZ,IAAKojB,EAAQ,EAAGA,EAAQO,IAAUP,EAChC,GAAIP,EAAOrB,GAAM4B,GAAQ,CACvBT,EAAOE,EAAKF,KACZlB,EAAYoB,EAAKpB,UACjB4B,EAAY5B,EAAUvhD,OAGtB,MAAOmjD,IACA,GAAM5B,EAAU4B,KACnB5B,EAAUhoC,OAAO4pC,EAAW,GAKhCA,EAAY,EAAGC,EAAa7B,EAAUvhD,OACtC,MAAOmjD,EAAYC,EACjBt2B,EAAMi2B,GAAgBJ,EAAM,GAAMpB,EAAU4B,KAAcI,EAAOz2B,EAAI,GAAI02B,EAAO12B,EAAI,GACpFhhB,EAAQg3C,GAAkBH,EAAM,GAAMpB,IAAY4B,EAAYC,KAAeC,EAASv3C,EAAM,GAAIw3C,EAASx3C,EAAM,IAC3GzR,KAAK6S,IAAIq2C,EAAOF,GAAU,IAAWhpD,KAAK6S,IAAIs2C,EAAOF,GAAU,MACjE/B,EAAUhoC,OAAO4pC,EAAW,EAAG,GAAMrxC,KAAK0vC,GAAiBiB,EAAM31B,EAC7DzyB,KAAK6S,IAAIq2C,EAAO5pB,GAAM,IAAWL,EAAKkqB,EAAO,GAAU,CAAC7pB,EAAIt/B,KAAK6S,IAAIm2C,EAAS1pB,GAAM,GAAU2pB,EAAShqB,GACrGj/B,KAAK6S,IAAIs2C,EAAOlqB,GAAM,IAAWD,EAAKkqB,EAAO,GAAU,CAAClpD,KAAK6S,IAAIo2C,EAAShqB,GAAM,GAAU+pB,EAAShqB,EAAIC,GACvGj/B,KAAK6S,IAAIq2C,EAAOlqB,GAAM,IAAWmqB,EAAO5pB,EAAK,GAAU,CAACP,EAAIh/B,KAAK6S,IAAIm2C,EAAShqB,GAAM,GAAUiqB,EAAS1pB,GACvGv/B,KAAK6S,IAAIs2C,EAAO5pB,GAAM,IAAW2pB,EAAO5pB,EAAK,GAAU,CAACt/B,KAAK6S,IAAIo2C,EAAS1pB,GAAM,GAAUypB,EAAS1pB,EAAIC,GACvG,OAAS,KACbwpB,GAIFA,IAAYtjB,GAAQ,GAM5B,GAAIA,EAAO,CACT,IAAIxhB,EAAIC,EAAIwiB,EAAI2iB,EAAK5hD,IAErB,IAAKohD,EAAQ,EAAGpjB,EAAQ,KAAMojB,EAAQO,IAAUP,GAC1CP,EAAOrB,GAAM4B,MACfT,EAAOE,EAAKF,KACZnkC,EAAKmkC,EAAK,GAAK9oB,EACfpb,EAAKkkC,EAAK,GAAK7oB,EACfmH,EAAKziB,EAAKA,EAAKC,EAAKA,EAChBwiB,EAAK2iB,IAAIA,EAAK3iB,EAAIjB,EAAQ6iB,IAIlC,GAAI7iB,EAAO,CACT,IAAI6jB,EAAM,CAAChqB,EAAIC,GAAKgqB,EAAM,CAACjqB,EAAIL,GAAKuqB,EAAM,CAACxqB,EAAIC,GAAKwqB,EAAM,CAACzqB,EAAIO,GAC/DkG,EAAMyhB,UAAUzvC,KACd,GAAMA,KAAK0vC,GAAiBiB,EAAO3iB,EAAM2iB,KAAMkB,EAAKC,IAAQ,EAC5D,GAAM9xC,KAAK0vC,GAAiBiB,EAAMmB,EAAKC,IAAQ,EAC/C,GAAM/xC,KAAK0vC,GAAiBiB,EAAMoB,EAAKC,IAAQ,EAC/C,GAAMhyC,KAAK0vC,GAAiBiB,EAAMqB,EAAKH,IAAQ,IAMrD,IAAKT,EAAQ,EAAGA,EAAQO,IAAUP,GAC5BP,EAAOrB,GAAM4B,MACVP,EAAKpB,UAAUvhD,eACXshD,GAAM4B,ICtHrB,IAEWa,GAFPC,GAAa,GAIjB,SAASC,KACPvD,GAAahjD,MACbA,KAAKwF,EACLxF,KAAKoQ,EACLpQ,KAAKi9B,IACLj9B,KAAK+kD,KACL/kD,KAAK8sC,GAAK,KAGL,SAAS0Z,GAAavpB,GAC3B,IAAIwpB,EAAOxpB,EAAIgmB,EACXyD,EAAOzpB,EAAImD,EAEf,GAAKqmB,GAASC,EAAd,CAEA,IAAIC,EAAQF,EAAK1B,KACb6B,EAAQ3pB,EAAI8nB,KACZ8B,EAAQH,EAAK3B,KAEjB,GAAI4B,IAAUE,EAAd,CAEA,IAAI1C,EAAKyC,EAAM,GACXxC,EAAKwC,EAAM,GACX3C,EAAK0C,EAAM,GAAKxC,EAChBD,EAAKyC,EAAM,GAAKvC,EAChBvX,EAAKga,EAAM,GAAK1C,EAChBrX,EAAK+Z,EAAM,GAAKzC,EAEhBv2C,EAAI,GAAKo2C,EAAKnX,EAAKoX,EAAKrX,GAC5B,KAAIh/B,IAAM,IAAV,CAEA,IAAIi5C,EAAK7C,EAAKA,EAAKC,EAAKA,EACpB6C,EAAKla,EAAKA,EAAKC,EAAKA,EACpBtnC,GAAKsnC,EAAKga,EAAK5C,EAAK6C,GAAMl5C,EAC1BuC,GAAK6zC,EAAK8C,EAAKla,EAAKia,GAAMj5C,EAE1Bm5C,EAASV,GAAWt0B,OAAS,IAAIu0B,GACrCS,EAAO/pB,IAAMA,EACb+pB,EAAOjC,KAAO6B,EACdI,EAAOxhD,EAAIA,EAAI2+C,EACf6C,EAAO52C,GAAK42C,EAAOla,GAAK18B,EAAIg0C,GAAMznD,KAAK+R,KAAKlJ,EAAIA,EAAI4K,EAAIA,GAExD6sB,EAAI+pB,OAASA,EAEb,IAAIlqC,EAAS,KACT3G,EAAO,GAAQ/C,EAEnB,MAAO+C,EACL,GAAI6wC,EAAO52C,EAAI+F,EAAK/F,GAAM42C,EAAO52C,IAAM+F,EAAK/F,GAAK42C,EAAOxhD,GAAK2Q,EAAK3Q,EAAI,CACpE,IAAI2Q,EAAK4gC,EACJ,CAAEj6B,EAAS3G,EAAK8sC,EAAG,MADZ9sC,EAAOA,EAAK4gC,MAEnB,CACL,IAAI5gC,EAAKpX,EACJ,CAAE+d,EAAS3G,EAAM,MADVA,EAAOA,EAAKpX,EAK5B,GAAQ6T,OAAOkK,EAAQkqC,GAClBlqC,IAAQupC,GAAcW,MAGtB,SAASC,GAAahqB,GAC3B,IAAI+pB,EAAS/pB,EAAI+pB,OACbA,IACGA,EAAO/D,IAAGoD,GAAcW,EAAO5mB,GACpC,GAAQntB,OAAO+zC,GACfV,GAAWlyC,KAAK4yC,GAChBhE,GAAagE,GACb/pB,EAAI+pB,OAAS,MCrEjB,IAAIE,GAAY,GAEhB,SAASC,KACPnE,GAAahjD,MACbA,KAAK0jD,KACL1jD,KAAK+kD,KACL/kD,KAAKgnD,OAAS,KAGhB,SAASI,GAAYrC,GACnB,IAAIsC,EAAQH,GAAUl1B,OAAS,IAAIm1B,GAEnC,OADAE,EAAMtC,KAAOA,EACNsC,EAGT,SAASC,GAAYD,GACnBJ,GAAaI,GACbE,GAAQt0C,OAAOo0C,GACfH,GAAU9yC,KAAKizC,GACfrE,GAAaqE,GAGR,SAASG,GAAYH,GAC1B,IAAIL,EAASK,EAAML,OACfxhD,EAAIwhD,EAAOxhD,EACX4K,EAAI42C,EAAOla,GACXiX,EAAS,CAACv+C,EAAG4K,GACbiI,EAAWgvC,EAAMpE,EACjBj9C,EAAOqhD,EAAMjnB,EACbqnB,EAAe,CAACJ,GAEpBC,GAAYD,GAEZ,IAAIZ,EAAOpuC,EACX,MAAOouC,EAAKO,QACLrqD,KAAK6S,IAAIhK,EAAIihD,EAAKO,OAAOxhD,GAAK,IAC9B7I,KAAK6S,IAAIY,EAAIq2C,EAAKO,OAAOla,IAAM,GACpCz0B,EAAWouC,EAAKxD,EAChBwE,EAAaC,QAAQjB,GACrBa,GAAYb,GACZA,EAAOpuC,EAGTovC,EAAaC,QAAQjB,GACrBQ,GAAaR,GAEb,IAAIC,EAAO1gD,EACX,MAAO0gD,EAAKM,QACLrqD,KAAK6S,IAAIhK,EAAIkhD,EAAKM,OAAOxhD,GAAK,IAC9B7I,KAAK6S,IAAIY,EAAIs2C,EAAKM,OAAOla,IAAM,GACpC9mC,EAAO0gD,EAAKtmB,EACZqnB,EAAarzC,KAAKsyC,GAClBY,GAAYZ,GACZA,EAAO1gD,EAGTyhD,EAAarzC,KAAKsyC,GAClBO,GAAaP,GAEb,IACIiB,EADAC,EAAQH,EAAanlD,OAEzB,IAAKqlD,EAAO,EAAGA,EAAOC,IAASD,EAC7BjB,EAAOe,EAAaE,GACpBlB,EAAOgB,EAAaE,EAAO,GAC3BhE,GAAW+C,EAAKhD,KAAM+C,EAAK1B,KAAM2B,EAAK3B,KAAMhB,GAG9C0C,EAAOgB,EAAa,GACpBf,EAAOe,EAAaG,EAAQ,GAC5BlB,EAAKhD,KAAOD,GAAWgD,EAAK1B,KAAM2B,EAAK3B,KAAM,KAAMhB,GAEnDyC,GAAaC,GACbD,GAAaE,GAGR,SAASmB,GAAS9C,GACvB,IAEI0B,EACAC,EACAoB,EACAC,EALAviD,EAAIu/C,EAAK,GACTiD,EAAYjD,EAAK,GAKjB5uC,EAAOoxC,GAAQn0C,EAEnB,MAAO+C,EAEL,GADA2xC,EAAMG,GAAe9xC,EAAM6xC,GAAaxiD,EACpCsiD,EAAM,GAAS3xC,EAAOA,EAAK4gC,MAAQ,CAErC,GADAgR,EAAMviD,EAAI0iD,GAAgB/xC,EAAM6xC,KAC5BD,EAAM,IAMH,CACDD,GAAO,IACTrB,EAAOtwC,EAAK8sC,EACZyD,EAAOvwC,GACE4xC,GAAO,IAChBtB,EAAOtwC,EACPuwC,EAAOvwC,EAAKiqB,GAEZqmB,EAAOC,EAAOvwC,EAEhB,MAfA,IAAKA,EAAKpX,EAAG,CACX0nD,EAAOtwC,EACP,MAEFA,EAAOA,EAAKpX,EAgBlB+lD,GAAWC,GACX,IAAIoD,EAASf,GAAYrC,GAGzB,GAFAwC,GAAQ30C,OAAO6zC,EAAM0B,GAEhB1B,GAASC,EAAd,CAEA,GAAID,IAASC,EAOX,OANAO,GAAaR,GACbC,EAAOU,GAAYX,EAAK1B,MACxBwC,GAAQ30C,OAAOu1C,EAAQzB,GACvByB,EAAOzE,KAAOgD,EAAKhD,KAAOD,GAAWgD,EAAK1B,KAAMoD,EAAOpD,MACvDyB,GAAaC,QACbD,GAAaE,GAIf,GAAKA,EAAL,CAMAO,GAAaR,GACbQ,GAAaP,GAEb,IAAIC,EAAQF,EAAK1B,KACbd,EAAK0C,EAAM,GACXzC,EAAKyC,EAAM,GACXxC,EAAKY,EAAK,GAAKd,EACfG,EAAKW,EAAK,GAAKb,EACf2C,EAAQH,EAAK3B,KACblY,EAAKga,EAAM,GAAK5C,EAChBnX,EAAK+Z,EAAM,GAAK3C,EAChBr2C,EAAI,GAAKs2C,EAAKrX,EAAKsX,EAAKvX,GACxBub,EAAKjE,EAAKA,EAAKC,EAAKA,EACpB2C,EAAKla,EAAKA,EAAKC,EAAKA,EACpBiX,EAAS,EAAEjX,EAAKsb,EAAKhE,EAAK2C,GAAMl5C,EAAIo2C,GAAKE,EAAK4C,EAAKla,EAAKub,GAAMv6C,EAAIq2C,GAEtEP,GAAW+C,EAAKhD,KAAMiD,EAAOE,EAAO9C,GACpCoE,EAAOzE,KAAOD,GAAWkD,EAAO5B,EAAM,KAAMhB,GAC5C2C,EAAKhD,KAAOD,GAAWsB,EAAM8B,EAAO,KAAM9C,GAC1CyC,GAAaC,GACbD,GAAaE,QAzBXyB,EAAOzE,KAAOD,GAAWgD,EAAK1B,KAAMoD,EAAOpD,OA4B/C,SAASkD,GAAehrB,EAAK+qB,GAC3B,IAAIjD,EAAO9nB,EAAI8nB,KACXsD,EAAQtD,EAAK,GACbuD,EAAQvD,EAAK,GACbwD,EAAOD,EAAQN,EAEnB,IAAKO,EAAM,OAAOF,EAElB,IAAI5B,EAAOxpB,EAAIgmB,EACf,IAAKwD,EAAM,OAAQriD,IAEnB2gD,EAAO0B,EAAK1B,KACZ,IAAIyD,EAAQzD,EAAK,GACb0D,EAAQ1D,EAAK,GACb2D,EAAQD,EAAQT,EAEpB,IAAKU,EAAO,OAAOF,EAEnB,IAAIG,EAAKH,EAAQH,EACbO,EAAO,EAAIL,EAAO,EAAIG,EACtBhkD,EAAIikD,EAAKD,EAEb,OAAIE,IAAelkD,EAAI/H,KAAK+R,KAAKhK,EAAIA,EAAI,EAAIkkD,GAAQD,EAAKA,IAAO,EAAID,GAASD,EAAQC,EAAQ,EAAIJ,EAAQC,EAAO,KAAOK,EAAOP,GAEvHA,EAAQG,GAAS,EAG3B,SAASN,GAAgBjrB,EAAK+qB,GAC5B,IAAItB,EAAOzpB,EAAImD,EACf,GAAIsmB,EAAM,OAAOuB,GAAevB,EAAMsB,GACtC,IAAIjD,EAAO9nB,EAAI8nB,KACf,OAAOA,EAAK,KAAOiD,EAAYjD,EAAK,GAAK3gD,ICzLpC,IAEImjD,GACA3D,GACA,GACA,GALA,GAAU,KACV,GAAW,MAMtB,SAASiF,GAAapkD,EAAGC,EAAGwP,GAC1B,OAAQzP,EAAE,GAAKyP,EAAE,KAAOxP,EAAE,GAAKD,EAAE,KAAOA,EAAE,GAAKC,EAAE,KAAOwP,EAAE,GAAKzP,EAAE,IAGnE,SAASqkD,GAAcrkD,EAAGC,GACxB,OAAOA,EAAE,GAAKD,EAAE,IACTC,EAAE,GAAKD,EAAE,GAGH,SAASskD,GAAQC,EAAOplB,GACrC,IACIp+B,EACA4K,EACA42C,EAHAjC,EAAOiE,EAAM5iD,KAAK0iD,IAAe92B,MAKrC,GAAQ,GACR4xB,GAAQ,IAAI76C,MAAMigD,EAAM1mD,QACxBilD,GAAU,IAAI,GACd,GAAU,IAAI,GAEd,MAAO,EAEL,GADAP,EAASX,GACLtB,KAAUiC,GAAUjC,EAAK,GAAKiC,EAAO52C,GAAM20C,EAAK,KAAOiC,EAAO52C,GAAK20C,EAAK,GAAKiC,EAAOxhD,GAClFu/C,EAAK,KAAOv/C,GAAKu/C,EAAK,KAAO30C,IAC/By3C,GAAS9C,GACTv/C,EAAIu/C,EAAK,GAAI30C,EAAI20C,EAAK,IAExBA,EAAOiE,EAAMh3B,UACR,KAAIg1B,EAGT,MAFAQ,GAAYR,EAAO/pB,KAQvB,GAFAqoB,KAEI1hB,EAAQ,CACV,IAAI3H,GAAM2H,EAAO,GAAG,GAChB1H,GAAM0H,EAAO,GAAG,GAChBjI,GAAMiI,EAAO,GAAG,GAChBhI,GAAMgI,EAAO,GAAG,GACpBihB,GAAU5oB,EAAIC,EAAIP,EAAIC,GACtB2pB,GAAUtpB,EAAIC,EAAIP,EAAIC,GAGxB57B,KAAKipD,MAAQ,GACbjpD,KAAK4jD,MAAQA,GAEb2D,GACA,GACA,GACA3D,GAAQ,KAGVmF,GAAQ9qD,UAAY,CAClBoW,YAAa00C,GAEbG,SAAU,WACR,IAAID,EAAQjpD,KAAKipD,MAEjB,OAAOjpD,KAAK4jD,MAAM7hD,KAAI,SAASkjD,GAC7B,IAAI5b,EAAU4b,EAAKpB,UAAU9hD,KAAI,SAASuM,GAAK,OAAO82C,GAAkBH,EAAMgE,EAAM36C,OAEpF,OADA+6B,EAAQt3B,KAAOkzC,EAAKF,KAAKhzC,KAClBs3B,MAIX8f,UAAW,WACT,IAAIA,EAAY,GACZF,EAAQjpD,KAAKipD,MAsBjB,OApBAjpD,KAAK4jD,MAAMhlB,SAAQ,SAASqmB,EAAM32C,GAChC,GAAMsB,GAAKi0C,EAAYoB,EAAKpB,WAAWvhD,OAAvC,CACA,IACIuhD,EAEAj0C,EACAsyC,EAJA6C,EAAOE,EAAKF,KAEZ/0C,GAAK,EAGLo5C,EAAKH,EAAMpF,EAAUj0C,EAAI,IACzBuyC,EAAKiH,EAAG57C,OAASu3C,EAAOqE,EAAGx7C,MAAQw7C,EAAG57C,KAE1C,QAASwC,EAAIJ,EACXsyC,EAAKC,EACLiH,EAAKH,EAAMpF,EAAU7zC,IACrBmyC,EAAKiH,EAAG57C,OAASu3C,EAAOqE,EAAGx7C,MAAQw7C,EAAG57C,KAClC00C,GAAMC,GAAM7zC,EAAI4zC,EAAGr/C,OAASyL,EAAI6zC,EAAGt/C,OAASgmD,GAAa9D,EAAM7C,EAAIC,GAAM,GAC3EgH,EAAU/0C,KAAK,CAAC2wC,EAAKhzC,KAAMmwC,EAAGnwC,KAAMowC,EAAGpwC,WAKtCo3C,GAGTla,MAAO,WACL,OAAOjvC,KAAKipD,MAAM/1C,QAAO,SAASwwC,GAChC,OAAOA,EAAK91C,SACX7L,KAAI,SAAS2hD,GACd,MAAO,CACLzzB,OAAQyzB,EAAKl2C,KAAKuE,KAClBnS,OAAQ8jD,EAAK91C,MAAMmE,UAKzB8xB,KAAM,SAASr+B,EAAG4K,EAAGgzB,GACnB,IAAiB9qB,EAAkD2sC,EAA/Dx4C,EAAOzM,KAAUuY,EAAK9L,EAAK48C,QAAU,EAAGh7C,EAAI5B,EAAKm3C,MAAMthD,OAG3D,QAAS2iD,EAAOx4C,EAAKm3C,MAAMrrC,IAAM,KAAMA,GAAMlK,EAAG,OAAO,KACvD,IAAIuS,EAAKpb,EAAIy/C,EAAKF,KAAK,GAAIlkC,EAAKzQ,EAAI60C,EAAKF,KAAK,GAAI1hB,EAAKziB,EAAKA,EAAKC,EAAKA,EAGtE,GACEokC,EAAOx4C,EAAKm3C,MAAMtrC,EAAKC,GAAKA,EAAK,KACjC0sC,EAAKpB,UAAUjlB,SAAQ,SAAS57B,GAC9B,IAAI0gD,EAAOj3C,EAAKw8C,MAAMjmD,GAAIiX,EAAIypC,EAAKl2C,KACnC,GAAKyM,IAAMgrC,EAAKF,MAAS9qC,IAAQA,EAAIypC,EAAK91C,OAA1C,CACA,IAAI07C,EAAK9jD,EAAIyU,EAAE,GAAIsvC,EAAKn5C,EAAI6J,EAAE,GAAIyU,EAAK46B,EAAKA,EAAKC,EAAKA,EAClD76B,EAAK2U,IAAIA,EAAK3U,EAAInW,EAAK0B,EAAEpX,iBAEjB,OAAP0V,GAIT,OAFA9L,EAAK48C,OAAS/wC,EAEG,MAAV8qB,GAAkBC,GAAMD,EAASA,EAAS6hB,EAAKF,KAAO,OC3I1D,SAASyE,GAAUt4C,EAAG1L,EAAG4K,GAC9BpQ,KAAKkR,EAAIA,EACTlR,KAAKwF,EAAIA,EACTxF,KAAKoQ,EAAIA,EAGXo5C,GAAUvrD,UAAY,CACpBoW,YAAam1C,GACbn5C,MAAO,SAASa,GACd,OAAa,IAANA,EAAUlR,KAAO,IAAIwpD,GAAUxpD,KAAKkR,EAAIA,EAAGlR,KAAKwF,EAAGxF,KAAKoQ,IAEjE6hB,UAAW,SAASzsB,EAAG4K,GACrB,OAAa,IAAN5K,EAAgB,IAAN4K,EAAUpQ,KAAO,IAAIwpD,GAAUxpD,KAAKkR,EAAGlR,KAAKwF,EAAIxF,KAAKkR,EAAI1L,EAAGxF,KAAKoQ,EAAIpQ,KAAKkR,EAAId,IAEjGiB,MAAO,SAASw2B,GACd,MAAO,CAACA,EAAM,GAAK7nC,KAAKkR,EAAIlR,KAAKwF,EAAGqiC,EAAM,GAAK7nC,KAAKkR,EAAIlR,KAAKoQ,IAE/Dq5C,OAAQ,SAASjkD,GACf,OAAOA,EAAIxF,KAAKkR,EAAIlR,KAAKwF,GAE3BkkD,OAAQ,SAASt5C,GACf,OAAOA,EAAIpQ,KAAKkR,EAAIlR,KAAKoQ,GAE3Bu3B,OAAQ,SAASgiB,GACf,MAAO,EAAEA,EAAS,GAAK3pD,KAAKwF,GAAKxF,KAAKkR,GAAIy4C,EAAS,GAAK3pD,KAAKoQ,GAAKpQ,KAAKkR,IAEzE04C,QAAS,SAASpkD,GAChB,OAAQA,EAAIxF,KAAKwF,GAAKxF,KAAKkR,GAE7B24C,QAAS,SAASz5C,GAChB,OAAQA,EAAIpQ,KAAKoQ,GAAKpQ,KAAKkR,GAE7B44C,SAAU,SAAStkD,GACjB,OAAOA,EAAEmM,OAAOnJ,OAAOhD,EAAEgJ,QAAQzM,IAAI/B,KAAK4pD,QAAS5pD,MAAM+B,IAAIyD,EAAEmiC,OAAQniC,KAEzEukD,SAAU,SAAS35C,GACjB,OAAOA,EAAEuB,OAAOnJ,OAAO4H,EAAE5B,QAAQzM,IAAI/B,KAAK6pD,QAAS7pD,MAAM+B,IAAIqO,EAAEu3B,OAAQv3B,KAEzE/P,SAAU,WACR,MAAO,aAAeL,KAAKwF,EAAI,IAAMxF,KAAKoQ,EAAI,WAAapQ,KAAKkR,EAAI,MAIjE,IAAI,GAAW,IAAIs4C,GAAU,EAAG,EAAG,GAI3B,SAAS,GAAUrzC,GAChC,OAAOA,EAAK6zC,QAAU,GAHxB,GAAU/rD,UAAYurD,GAAUvrD,W,sBC7ChC,8BACE,OAAOX,GAAMA,EAAGX,MAAQA,MAAQW,GAIlCV,EAAOC,QAELotD,EAA2B,iBAAdC,YAA0BA,aACvCD,EAAuB,iBAAVhnD,QAAsBA,SACnCgnD,EAAqB,iBAARr0B,MAAoBA,OACjCq0B,EAAuB,iBAAVltD,GAAsBA,IAEnCgG,SAAS,cAATA,K,6CCZF,IAAIonD,EAAyB,EAAQ,QAIrCvtD,EAAOC,QAAU,SAAUC,GACzB,OAAO4C,OAAOyqD,EAAuBrtD,M,qBCLvC,IAAIc,EAAM,EAAQ,QACdsI,EAAW,EAAQ,QACnBlF,EAAY,EAAQ,QACpBopD,EAA2B,EAAQ,QAEnCjjD,EAAWnG,EAAU,YACrBqpD,EAAkB3qD,OAAOzB,UAI7BrB,EAAOC,QAAUutD,EAA2B1qD,OAAO4qD,eAAiB,SAAU3nD,GAE5E,OADAA,EAAIuD,EAASvD,GACT/E,EAAI+E,EAAGwE,GAAkBxE,EAAEwE,GACH,mBAAjBxE,EAAE0R,aAA6B1R,aAAaA,EAAE0R,YAChD1R,EAAE0R,YAAYpW,UACd0E,aAAajD,OAAS2qD,EAAkB,O,uBCfnD,IAAIjnD,EAAQ,EAAQ,QAChBvF,EAAkB,EAAQ,QAC1B0sD,EAAa,EAAQ,QAErB/jD,EAAU3I,EAAgB,WAE9BjB,EAAOC,QAAU,SAAU0G,GAIzB,OAAOgnD,GAAc,KAAOnnD,GAAM,WAChC,IAAI0M,EAAQ,GACRuE,EAAcvE,EAAMuE,YAAc,GAItC,OAHAA,EAAY7N,GAAW,WACrB,MAAO,CAAEgkD,IAAK,IAE2B,IAApC16C,EAAMvM,GAAaknD,SAASD,S,uBChBvC,IAMI1zC,EAAO4zC,EANP3tD,EAAS,EAAQ,QACjBkD,EAAY,EAAQ,QAEpB0qD,EAAU5tD,EAAO4tD,QACjBC,EAAWD,GAAWA,EAAQC,SAC9BC,EAAKD,GAAYA,EAASC,GAG1BA,GACF/zC,EAAQ+zC,EAAG39C,MAAM,KACjBw9C,EAAU5zC,EAAM,GAAKA,EAAM,IAClB7W,IACT6W,EAAQ7W,EAAU6W,MAAM,iBACnBA,GAASA,EAAM,IAAM,MACxBA,EAAQ7W,EAAU6W,MAAM,iBACpBA,IAAO4zC,EAAU5zC,EAAM,MAI/Bla,EAAOC,QAAU6tD,IAAYA,G,kCCjB7B,EAAQ,QACR,IAAItqD,EAAW,EAAQ,QACnBgD,EAAQ,EAAQ,QAChBvF,EAAkB,EAAQ,QAC1BiB,EAAa,EAAQ,QACrBgC,EAA8B,EAAQ,QAEtC0F,EAAU3I,EAAgB,WAE1BitD,GAAiC1nD,GAAM,WAIzC,IAAImhC,EAAK,IAMT,OALAA,EAAGvnC,KAAO,WACR,IAAIiC,EAAS,GAEb,OADAA,EAAO+W,OAAS,CAAEvR,EAAG,KACdxF,GAEyB,MAA3B,GAAGwhC,QAAQ8D,EAAI,WAKpBwmB,EAAmB,WACrB,MAAkC,OAA3B,IAAItqB,QAAQ,IAAK,MADH,GAInBuqB,EAAUntD,EAAgB,WAE1BotD,EAA+C,WACjD,QAAI,IAAID,IAC6B,KAA5B,IAAIA,GAAS,IAAK,MAFsB,GAS/CE,GAAqC9nD,GAAM,WAC7C,IAAImhC,EAAK,OACL4mB,EAAe5mB,EAAGvnC,KACtBunC,EAAGvnC,KAAO,WAAc,OAAOmuD,EAAa95C,MAAMrR,KAAMqC,YACxD,IAAIpD,EAAS,KAAKiO,MAAMq3B,GACxB,OAAyB,IAAlBtlC,EAAOqD,QAA8B,MAAdrD,EAAO,IAA4B,MAAdA,EAAO,MAG5DrC,EAAOC,QAAU,SAAUuuD,EAAK9oD,EAAQtF,EAAMquD,GAC5C,IAAIC,EAASztD,EAAgButD,GAEzBG,GAAuBnoD,GAAM,WAE/B,IAAIT,EAAI,GAER,OADAA,EAAE2oD,GAAU,WAAc,OAAO,GACZ,GAAd,GAAGF,GAAKzoD,MAGb6oD,EAAoBD,IAAwBnoD,GAAM,WAEpD,IAAIqoD,GAAa,EACblnB,EAAK,IAkBT,MAhBY,UAAR6mB,IAIF7mB,EAAK,GAGLA,EAAGlwB,YAAc,GACjBkwB,EAAGlwB,YAAY7N,GAAW,WAAc,OAAO+9B,GAC/CA,EAAGmnB,MAAQ,GACXnnB,EAAG+mB,GAAU,IAAIA,IAGnB/mB,EAAGvnC,KAAO,WAAiC,OAAnByuD,GAAa,EAAa,MAElDlnB,EAAG+mB,GAAQ,KACHG,KAGV,IACGF,IACAC,GACQ,YAARJ,KACCN,IACAC,GACCE,IAEM,UAARG,IAAoBF,EACrB,CACA,IAAIS,EAAqB,IAAIL,GACzB5e,EAAU1vC,EAAKsuD,EAAQ,GAAGF,IAAM,SAAUQ,EAAcC,EAAQC,EAAKC,EAAMC,GAC7E,OAAIH,EAAO7uD,OAAS8B,EACdysD,IAAwBS,EAInB,CAAEh/C,MAAM,EAAM7O,MAAOwtD,EAAmBzsD,KAAK2sD,EAAQC,EAAKC,IAE5D,CAAE/+C,MAAM,EAAM7O,MAAOytD,EAAa1sD,KAAK4sD,EAAKD,EAAQE,IAEtD,CAAE/+C,MAAM,KACd,CACD+9C,iBAAkBA,EAClBE,6CAA8CA,IAE5CgB,EAAevf,EAAQ,GACvBwf,EAAcxf,EAAQ,GAE1BtsC,EAAS1B,OAAOT,UAAWmtD,EAAKa,GAChC7rD,EAASuhB,OAAO1jB,UAAWqtD,EAAkB,GAAVhpD,EAG/B,SAAU+B,EAAQ8nD,GAAO,OAAOD,EAAYhtD,KAAKmF,EAAQrE,KAAMmsD,IAG/D,SAAU9nD,GAAU,OAAO6nD,EAAYhtD,KAAKmF,EAAQrE,QAItDqrD,GAAMvqD,EAA4B6gB,OAAO1jB,UAAUqtD,GAAS,QAAQ,K,qBC3H1E,IAAI1tD,EAAM,EAAQ,QACdyB,EAAkB,EAAQ,QAC1B2U,EAAU,EAAQ,QAA+BA,QACjD/S,EAAa,EAAQ,QAEzBrE,EAAOC,QAAU,SAAU6gC,EAAQniB,GACjC,IAGI7a,EAHAiC,EAAItD,EAAgBq+B,GACpBpvB,EAAI,EACJrP,EAAS,GAEb,IAAKyB,KAAOiC,GAAI/E,EAAIqD,EAAYP,IAAQ9C,EAAI+E,EAAGjC,IAAQzB,EAAOmV,KAAK1T,GAEnE,MAAO6a,EAAMjZ,OAASgM,EAAO1Q,EAAI+E,EAAGjC,EAAM6a,EAAMjN,SAC7C0F,EAAQ/U,EAAQyB,IAAQzB,EAAOmV,KAAK1T,IAEvC,OAAOzB,I,uBCfT,IAAIb,EAAW,EAAQ,QAMvBxB,EAAOC,QAAU,SAAU6kC,EAAO0qB,GAChC,IAAKhuD,EAASsjC,GAAQ,OAAOA,EAC7B,IAAIl1B,EAAI6/C,EACR,GAAID,GAAoD,mBAAxB5/C,EAAKk1B,EAAMrhC,YAA4BjC,EAASiuD,EAAM7/C,EAAGtN,KAAKwiC,IAAS,OAAO2qB,EAC9G,GAAmC,mBAAvB7/C,EAAKk1B,EAAM5Q,WAA2B1yB,EAASiuD,EAAM7/C,EAAGtN,KAAKwiC,IAAS,OAAO2qB,EACzF,IAAKD,GAAoD,mBAAxB5/C,EAAKk1B,EAAMrhC,YAA4BjC,EAASiuD,EAAM7/C,EAAGtN,KAAKwiC,IAAS,OAAO2qB,EAC/G,MAAM5tD,UAAU,6C,oCCXlB,IAAIU,EAAI,EAAQ,QACZ0xB,EAAU,EAAQ,QAElBy7B,EAAgB,GAAGz9C,QACnB3O,EAAO,CAAC,EAAG,GAMff,EAAE,CAAES,OAAQ,QAASC,OAAO,EAAMC,OAAQpB,OAAOwB,KAAUxB,OAAOwB,EAAK2O,YAAc,CACnFA,QAAS,WAGP,OADIgiB,EAAQ7wB,QAAOA,KAAKsC,OAAStC,KAAKsC,QAC/BgqD,EAAcptD,KAAKc,U,qBCb9BpD,EAAOC,QAAU,SAAUS,GACzB,QAAUkB,GAANlB,EAAiB,MAAMmB,UAAU,wBAA0BnB,GAC/D,OAAOA,I,qBCJT,IAAIP,EAAS,EAAQ,QACjB+D,EAA8B,EAAQ,QACtClD,EAAM,EAAQ,QACd2uD,EAAY,EAAQ,QACpBC,EAAgB,EAAQ,QACxBC,EAAsB,EAAQ,QAE9BC,EAAmBD,EAAoB7rD,IACvC+rD,EAAuBF,EAAoBtrD,QAC3CyrD,EAAWluD,OAAOA,QAAQwO,MAAM,WAEnCtQ,EAAOC,QAAU,SAAU8F,EAAGjC,EAAKvC,EAAOqF,GACzC,IAAIlD,IAASkD,KAAYA,EAAQlD,OAC7BusD,IAASrpD,KAAYA,EAAQK,WAC7BipD,IAActpD,KAAYA,EAAQspD,YAClB,mBAAT3uD,IACS,iBAAPuC,GAAoB9C,EAAIO,EAAO,SAAS2C,EAA4B3C,EAAO,OAAQuC,GAC9FisD,EAAqBxuD,GAAO8xB,OAAS28B,EAASptD,KAAmB,iBAAPkB,EAAkBA,EAAM,KAEhFiC,IAAM5F,GAIEuD,GAEAwsD,GAAenqD,EAAEjC,KAC3BmsD,GAAS,UAFFlqD,EAAEjC,GAIPmsD,EAAQlqD,EAAEjC,GAAOvC,EAChB2C,EAA4B6B,EAAGjC,EAAKvC,IATnC0uD,EAAQlqD,EAAEjC,GAAOvC,EAChBouD,EAAU7rD,EAAKvC,KAUrB4E,SAAS9E,UAAW,YAAY,WACjC,MAAsB,mBAAR+B,MAAsB0sD,EAAiB1sD,MAAMiwB,QAAUu8B,EAAcxsD,U,uBChCrF,IAAImqD,EAAyB,EAAQ,QACjCnmD,EAAc,EAAQ,QAEtB+oD,EAAa,IAAM/oD,EAAc,IACjCgpD,EAAQrrC,OAAO,IAAMorC,EAAaA,EAAa,KAC/CE,EAAQtrC,OAAOorC,EAAaA,EAAa,MAGzCG,EAAe,SAAU7rD,GAC3B,OAAO,SAAU8rD,GACf,IAAI9oD,EAAS3F,OAAOyrD,EAAuBgD,IAG3C,OAFW,EAAP9rD,IAAUgD,EAASA,EAAOo8B,QAAQusB,EAAO,KAClC,EAAP3rD,IAAUgD,EAASA,EAAOo8B,QAAQwsB,EAAO,KACtC5oD,IAIXzH,EAAOC,QAAU,CAGfuR,MAAO8+C,EAAa,GAGpB99B,IAAK89B,EAAa,GAGlBnpD,KAAMmpD,EAAa,K,uBC1BrB,IAiBIE,EAAOC,EAASC,EAjBhBvwD,EAAS,EAAQ,QACjBqG,EAAQ,EAAQ,QAChB/E,EAAU,EAAQ,QAClB4N,EAAO,EAAQ,QACfpF,EAAO,EAAQ,QACf2O,EAAgB,EAAQ,QACxB+3C,EAAS,EAAQ,QAEjB5D,EAAW5sD,EAAO4sD,SAClBhpD,EAAM5D,EAAOywD,aACb7vB,EAAQ5gC,EAAO0wD,eACf9C,EAAU5tD,EAAO4tD,QACjB+C,EAAiB3wD,EAAO2wD,eACxB95C,EAAW7W,EAAO6W,SAClB+5C,EAAU,EACVC,EAAQ,GACRC,EAAqB,qBAGrBC,EAAM,SAAUvtD,GAElB,GAAIqtD,EAAM35C,eAAe1T,GAAK,CAC5B,IAAIiM,EAAKohD,EAAMrtD,UACRqtD,EAAMrtD,GACbiM,MAIAuhD,EAAS,SAAUxtD,GACrB,OAAO,WACLutD,EAAIvtD,KAIJkd,EAAW,SAAUE,GACvBmwC,EAAInwC,EAAM5L,OAGRi8C,EAAO,SAAUztD,GAEnBxD,EAAOkxD,YAAY1tD,EAAK,GAAIopD,EAASuE,SAAW,KAAOvE,EAASwE,OAI7DxtD,GAAQg9B,IACXh9B,EAAM,SAAsB6L,GAC1B,IAAIiI,EAAO,GACPnG,EAAI,EACR,MAAOjM,UAAUC,OAASgM,EAAGmG,EAAKL,KAAK/R,UAAUiM,MAMjD,OALAs/C,IAAQD,GAAW,YAEH,mBAANnhD,EAAmBA,EAAKzJ,SAASyJ,IAAK6E,WAAM7S,EAAWiW,IAEjE24C,EAAMO,GACCA,GAEThwB,EAAQ,SAAwBp9B,UACvBqtD,EAAMrtD,IAGS,WAApBlC,EAAQssD,GACVyC,EAAQ,SAAU7sD,GAChBoqD,EAAQyD,SAASL,EAAOxtD,KAGjBqT,GAAYA,EAAS0f,IAC9B85B,EAAQ,SAAU7sD,GAChBqT,EAAS0f,IAAIy6B,EAAOxtD,KAIbmtD,IAAmBH,GAC5BF,EAAU,IAAIK,EACdJ,EAAOD,EAAQgB,MACfhB,EAAQiB,MAAMC,UAAY9wC,EAC1B2vC,EAAQnhD,EAAKqhD,EAAKW,YAAaX,EAAM,KAIrCvwD,EAAOwhB,kBACe,mBAAf0vC,aACNlxD,EAAOyxD,eACPprD,EAAM4qD,IACe,UAAtBrE,EAASuE,SAMTd,EADSS,KAAsBr4C,EAAc,UACrC,SAAUjV,GAChBsG,EAAKqB,YAAYsN,EAAc,WAAWq4C,GAAsB,WAC9DhnD,EAAKkW,YAAY/c,MACjB8tD,EAAIvtD,KAKA,SAAUA,GAChBkzB,WAAWs6B,EAAOxtD,GAAK,KAbzB6sD,EAAQY,EACRjxD,EAAOwhB,iBAAiB,UAAWd,GAAU,KAiBjD7gB,EAAOC,QAAU,CACf8D,IAAKA,EACLg9B,MAAOA,I,oCCxGT,IAAI8wB,EAAc,EAAQ,QACtBC,EAAgB,EAAQ,QAExBC,EAAahtC,OAAO1jB,UAAUjB,KAI9B4xD,EAAgBlwD,OAAOT,UAAUwiC,QAEjCouB,EAAcF,EAEdG,EAA2B,WAC7B,IAAIC,EAAM,IACNC,EAAM,MAGV,OAFAL,EAAWzvD,KAAK6vD,EAAK,KACrBJ,EAAWzvD,KAAK8vD,EAAK,KACI,IAAlBD,EAAIp+B,WAAqC,IAAlBq+B,EAAIr+B,UALL,GAQ3Bs+B,EAAgBP,EAAcO,eAAiBP,EAAcQ,aAG7DC,OAAuC3wD,IAAvB,OAAOxB,KAAK,IAAI,GAEhCoyD,EAAQN,GAA4BK,GAAiBF,EAErDG,IACFP,EAAc,SAAc/C,GAC1B,IACIn7B,EAAW0+B,EAAQv4C,EAAOxI,EAD1Bi2B,EAAKvkC,KAELsvD,EAASL,GAAiB1qB,EAAG+qB,OAC7B5D,EAAQ+C,EAAYvvD,KAAKqlC,GACzBtU,EAASsU,EAAGtU,OACZs/B,EAAa,EACbC,EAAU1D,EA+Cd,OA7CIwD,IACF5D,EAAQA,EAAMjrB,QAAQ,IAAK,KACC,IAAxBirB,EAAM13C,QAAQ,OAChB03C,GAAS,KAGX8D,EAAU9wD,OAAOotD,GAAK39C,MAAMo2B,EAAG5T,WAE3B4T,EAAG5T,UAAY,KAAO4T,EAAGkrB,WAAalrB,EAAGkrB,WAAuC,OAA1B3D,EAAIvnB,EAAG5T,UAAY,MAC3EV,EAAS,OAASA,EAAS,IAC3Bu/B,EAAU,IAAMA,EAChBD,KAIFF,EAAS,IAAI1tC,OAAO,OAASsO,EAAS,IAAKy7B,IAGzCyD,IACFE,EAAS,IAAI1tC,OAAO,IAAMsO,EAAS,WAAYy7B,IAE7CoD,IAA0Bn+B,EAAY4T,EAAG5T,WAE7C7Z,EAAQ63C,EAAWzvD,KAAKowD,EAASD,EAAS9qB,EAAIirB,GAE1CF,EACEx4C,GACFA,EAAM4qB,MAAQ5qB,EAAM4qB,MAAMvzB,MAAMohD,GAChCz4C,EAAM,GAAKA,EAAM,GAAG3I,MAAMohD,GAC1Bz4C,EAAMjU,MAAQ0hC,EAAG5T,UACjB4T,EAAG5T,WAAa7Z,EAAM,GAAGxU,QACpBiiC,EAAG5T,UAAY,EACbm+B,GAA4Bh4C,IACrCytB,EAAG5T,UAAY4T,EAAGxnC,OAAS+Z,EAAMjU,MAAQiU,EAAM,GAAGxU,OAASquB,GAEzDw+B,GAAiBr4C,GAASA,EAAMxU,OAAS,GAG3CssD,EAAc1vD,KAAK4X,EAAM,GAAIu4C,GAAQ,WACnC,IAAK/gD,EAAI,EAAGA,EAAIjM,UAAUC,OAAS,EAAGgM,SACf9P,IAAjB6D,UAAUiM,KAAkBwI,EAAMxI,QAAK9P,MAK1CsY,IAIXla,EAAOC,QAAUgyD,G,qBCtFjBjyD,EAAOC,QAAU,SAAUS,GACzB,MAAqB,kBAAPA,EAAyB,OAAPA,EAA4B,oBAAPA,I,uBCDvD,IAAIO,EAAkB,EAAQ,QAE1BgH,EAAWhH,EAAgB,YAC3B6xD,GAAe,EAEnB,IACE,IAAIC,EAAS,EACTC,EAAqB,CACvB5pD,KAAM,WACJ,MAAO,CAAEgH,OAAQ2iD,MAEnB,OAAU,WACRD,GAAe,IAGnBE,EAAmB/qD,GAAY,WAC7B,OAAO7E,MAGT+I,MAAM8iC,KAAK+jB,GAAoB,WAAc,MAAM,KACnD,MAAO3yD,IAETL,EAAOC,QAAU,SAAUG,EAAM6yD,GAC/B,IAAKA,IAAiBH,EAAc,OAAO,EAC3C,IAAII,GAAoB,EACxB,IACE,IAAIpyB,EAAS,GACbA,EAAO74B,GAAY,WACjB,MAAO,CACLmB,KAAM,WACJ,MAAO,CAAEgH,KAAM8iD,GAAoB,MAIzC9yD,EAAK0gC,GACL,MAAOzgC,IACT,OAAO6yD,I,mBClCTlzD,EAAOC,QAAU,iD,qCCFjB;;;;;;AAOA,IAAIkzD,EAAcrwD,OAAOswD,OAAO,IAIhC,SAASC,EAASh2C,GAChB,YAAazb,IAANyb,GAAyB,OAANA,EAG5B,SAASi2C,EAAOj2C,GACd,YAAazb,IAANyb,GAAyB,OAANA,EAG5B,SAASk2C,EAAQl2C,GACf,OAAa,IAANA,EAGT,SAASm2C,EAASn2C,GAChB,OAAa,IAANA,EAMT,SAASo2C,EAAalyD,GACpB,MACmB,kBAAVA,GACU,kBAAVA,GAEU,kBAAVA,GACU,mBAAVA,EASX,SAASC,EAAUkyD,GACjB,OAAe,OAARA,GAA+B,kBAARA,EAMhC,IAAIC,EAAY7wD,OAAOzB,UAAUoC,SAUjC,SAASmwD,EAAeF,GACtB,MAA+B,oBAAxBC,EAAUrxD,KAAKoxD,GAGxB,SAAS/xD,EAAU0b,GACjB,MAA6B,oBAAtBs2C,EAAUrxD,KAAK+a,GAMxB,SAASw2C,EAAmBpE,GAC1B,IAAIh+C,EAAInK,WAAWxF,OAAO2tD,IAC1B,OAAOh+C,GAAK,GAAK1R,KAAKiC,MAAMyP,KAAOA,GAAKY,SAASo9C,GAGnD,SAASqE,EAAWrE,GAClB,OACE6D,EAAM7D,IACc,oBAAbA,EAAIlnD,MACU,oBAAdknD,EAAIsE,MAOf,SAAStwD,EAAUgsD,GACjB,OAAc,MAAPA,EACH,GACAtjD,MAAM8nB,QAAQw7B,IAASmE,EAAcnE,IAAQA,EAAIhsD,WAAakwD,EAC5DlyB,KAAKC,UAAU+tB,EAAK,KAAM,GAC1B3tD,OAAO2tD,GAOf,SAASuE,EAAUvE,GACjB,IAAIh+C,EAAInK,WAAWmoD,GACnB,OAAOxtD,MAAMwP,GAAKg+C,EAAMh+C,EAO1B,SAASwiD,EACP/E,EACAgF,GAIA,IAFA,IAAI/uD,EAAMrC,OAAOgG,OAAO,MACpB8V,EAAOswC,EAAI5+C,MAAM,KACZoB,EAAI,EAAGA,EAAIkN,EAAKlZ,OAAQgM,IAC/BvM,EAAIyZ,EAAKlN,KAAM,EAEjB,OAAOwiD,EACH,SAAUzE,GAAO,OAAOtqD,EAAIsqD,EAAI/gC,gBAChC,SAAU+gC,GAAO,OAAOtqD,EAAIsqD,IAMfwE,EAAQ,kBAAkB,GAA7C,IAKIE,EAAsBF,EAAQ,8BAKlC,SAAS59C,EAAQ+9C,EAAKC,GACpB,GAAID,EAAI1uD,OAAQ,CACd,IAAIO,EAAQmuD,EAAIh9C,QAAQi9C,GACxB,GAAIpuD,GAAS,EACX,OAAOmuD,EAAIn1C,OAAOhZ,EAAO,IAQ/B,IAAIoR,EAAiBvU,OAAOzB,UAAUgW,eACtC,SAASi9C,EAAQZ,EAAK5vD,GACpB,OAAOuT,EAAe/U,KAAKoxD,EAAK5vD,GAMlC,SAASywD,EAAQ3kD,GACf,IAAInJ,EAAQ3D,OAAOgG,OAAO,MAC1B,OAAO,SAAoBomD,GACzB,IAAIsF,EAAM/tD,EAAMyoD,GAChB,OAAOsF,IAAQ/tD,EAAMyoD,GAAOt/C,EAAGs/C,KAOnC,IAAIuF,EAAa,SACbC,EAAWH,GAAO,SAAUrF,GAC9B,OAAOA,EAAIrrB,QAAQ4wB,GAAY,SAAUj+C,EAAGc,GAAK,OAAOA,EAAIA,EAAEsxB,cAAgB,SAM5E+rB,EAAaJ,GAAO,SAAUrF,GAChC,OAAOA,EAAI5oD,OAAO,GAAGsiC,cAAgBsmB,EAAI39C,MAAM,MAM7CqjD,EAAc,aACdC,EAAYN,GAAO,SAAUrF,GAC/B,OAAOA,EAAIrrB,QAAQ+wB,EAAa,OAAOlmC,iBAYzC,SAASomC,EAAcllD,EAAImlD,GACzB,SAASC,EAASntD,GAChB,IAAIynB,EAAI7pB,UAAUC,OAClB,OAAO4pB,EACHA,EAAI,EACF1f,EAAG6E,MAAMsgD,EAAKtvD,WACdmK,EAAGtN,KAAKyyD,EAAKltD,GACf+H,EAAGtN,KAAKyyD,GAId,OADAC,EAAQC,QAAUrlD,EAAGlK,OACdsvD,EAGT,SAASE,EAAYtlD,EAAImlD,GACvB,OAAOnlD,EAAGP,KAAK0lD,GAGjB,IAAI1lD,EAAOlJ,SAAS9E,UAAUgO,KAC1B6lD,EACAJ,EAKJ,SAASK,EAASv2C,EAAMpN,GACtBA,EAAQA,GAAS,EACjB,IAAIE,EAAIkN,EAAKlZ,OAAS8L,EAClB4jD,EAAM,IAAIjpD,MAAMuF,GACpB,MAAOA,IACL0jD,EAAI1jD,GAAKkN,EAAKlN,EAAIF,GAEpB,OAAO4jD,EAMT,SAAShxC,EAAQ8qB,EAAImmB,GACnB,IAAK,IAAIvxD,KAAOuxD,EACdnmB,EAAGprC,GAAOuxD,EAAMvxD,GAElB,OAAOorC,EAMT,SAAS5lC,EAAU8qD,GAEjB,IADA,IAAIkB,EAAM,GACD5jD,EAAI,EAAGA,EAAI0iD,EAAI1uD,OAAQgM,IAC1B0iD,EAAI1iD,IACN0S,EAAOkxC,EAAKlB,EAAI1iD,IAGpB,OAAO4jD,EAUT,SAAS1+C,EAAM/O,EAAGC,EAAGwP,IAKrB,IAAIi+C,EAAK,SAAU1tD,EAAGC,EAAGwP,GAAK,OAAO,GAOjCk+C,EAAW,SAAUh/C,GAAK,OAAOA,GAMrC,SAASi/C,EAAY5tD,EAAGC,GACtB,GAAID,IAAMC,EAAK,OAAO,EACtB,IAAI4tD,EAAYl0D,EAASqG,GACrB8tD,EAAYn0D,EAASsG,GACzB,IAAI4tD,IAAaC,EAwBV,OAAKD,IAAcC,GACjB7zD,OAAO+F,KAAO/F,OAAOgG,GAxB5B,IACE,IAAI8tD,EAAWzpD,MAAM8nB,QAAQpsB,GACzBguD,EAAW1pD,MAAM8nB,QAAQnsB,GAC7B,GAAI8tD,GAAYC,EACd,OAAOhuD,EAAEnC,SAAWoC,EAAEpC,QAAUmC,EAAE8yB,OAAM,SAAUv0B,EAAGsL,GACnD,OAAO+jD,EAAWrvD,EAAG0B,EAAE4J,OAEpB,GAAI7J,aAAaorB,MAAQnrB,aAAamrB,KAC3C,OAAOprB,EAAEiuD,YAAchuD,EAAEguD,UACpB,GAAKF,GAAaC,EAQvB,OAAO,EAPP,IAAIE,EAAQjzD,OAAOnC,KAAKkH,GACpBmuD,EAAQlzD,OAAOnC,KAAKmH,GACxB,OAAOiuD,EAAMrwD,SAAWswD,EAAMtwD,QAAUqwD,EAAMp7B,OAAM,SAAU72B,GAC5D,OAAO2xD,EAAW5tD,EAAE/D,GAAMgE,EAAEhE,OAMhC,MAAOsC,GAEP,OAAO,GAcb,SAAS6vD,EAAc7B,EAAK3E,GAC1B,IAAK,IAAI/9C,EAAI,EAAGA,EAAI0iD,EAAI1uD,OAAQgM,IAC9B,GAAI+jD,EAAWrB,EAAI1iD,GAAI+9C,GAAQ,OAAO/9C,EAExC,OAAQ,EAMV,SAASwkD,EAAMtmD,GACb,IAAImjD,GAAS,EACb,OAAO,WACAA,IACHA,GAAS,EACTnjD,EAAG6E,MAAMrR,KAAMqC,aAKrB,IAAI0wD,EAAW,uBAEXC,EAAc,CAChB,YACA,YACA,UAGEC,EAAkB,CACpB,eACA,UACA,cACA,UACA,eACA,UACA,gBACA,YACA,YACA,cACA,gBACA,kBAOEC,EAAS,CAKXC,sBAAuBzzD,OAAOgG,OAAO,MAKrC0tD,QAAQ,EAKRC,eAAe,EAKfC,UAAU,EAKVjgC,aAAa,EAKbkgC,aAAc,KAKdC,YAAa,KAKbC,gBAAiB,GAMjBC,SAAUh0D,OAAOgG,OAAO,MAMxBiuD,cAAexB,EAMfyB,eAAgBzB,EAMhB0B,iBAAkB1B,EAKlB2B,gBAAiBtgD,EAKjBugD,qBAAsB3B,EAMtB4B,YAAa7B,EAMb8B,OAAO,EAKPC,gBAAiBjB,GAUfkB,EAAgB,8JAKpB,SAASC,EAAYtI,GACnB,IAAI53C,GAAK43C,EAAM,IAAI7rB,WAAW,GAC9B,OAAa,KAAN/rB,GAAoB,KAANA,EAMvB,SAASmgD,EAAK/D,EAAK5vD,EAAK2rD,EAAKxoD,GAC3BnE,OAAO/B,eAAe2yD,EAAK5vD,EAAK,CAC9BvC,MAAOkuD,EACPxoD,aAAcA,EACdiI,UAAU,EACV5N,cAAc,IAOlB,IAAIo2D,EAAS,IAAI3yC,OAAQ,KAAQwyC,EAAoB,OAAI,WACzD,SAASI,EAAW1iD,GAClB,IAAIyiD,EAAOp0D,KAAK2R,GAAhB,CAGA,IAAI02B,EAAW12B,EAAK3E,MAAM,KAC1B,OAAO,SAAUojD,GACf,IAAK,IAAIhiD,EAAI,EAAGA,EAAIi6B,EAASjmC,OAAQgM,IAAK,CACxC,IAAKgiD,EAAO,OACZA,EAAMA,EAAI/nB,EAASj6B,IAErB,OAAOgiD,IAOX,IAmCIkE,EAnCAC,EAAW,aAAe,GAG1BC,EAA8B,qBAAXzxD,OACnB0xD,EAAkC,qBAAlBC,iBAAmCA,cAAcC,SACjEC,EAAeH,GAAUC,cAAcC,SAASvpC,cAChDypC,EAAKL,GAAazxD,OAAO+xD,UAAU/0D,UAAUqrB,cAC7C2pC,GAAOF,GAAM,eAAe70D,KAAK60D,GACjCG,GAAQH,GAAMA,EAAG/gD,QAAQ,YAAc,EACvCmhD,GAASJ,GAAMA,EAAG/gD,QAAQ,SAAW,EAErCohD,IADaL,GAAMA,EAAG/gD,QAAQ,WACrB+gD,GAAM,uBAAuB70D,KAAK60D,IAA0B,QAAjBD,GAGpDO,IAFWN,GAAM,cAAc70D,KAAK60D,GACtBA,GAAM,YAAY70D,KAAK60D,GAC9BA,GAAMA,EAAGj+C,MAAM,mBAGtBw+C,GAAc,GAAKC,MAEnBC,IAAkB,EACtB,GAAId,EACF,IACE,IAAIe,GAAO,GACX/1D,OAAO/B,eAAe83D,GAAM,UAAW,CACrC70D,IAAK,WAEH40D,IAAkB,KAGtBvyD,OAAOsb,iBAAiB,eAAgB,KAAMk3C,IAC9C,MAAOzyD,KAMX,IAAI0yD,GAAoB,WAWtB,YAVkBl3D,IAAdg2D,IAOAA,GALGE,IAAcC,GAA4B,qBAAX53D,IAGtBA,EAAO,YAAgD,WAAlCA,EAAO,WAAW44D,IAAIC,UAKpDpB,GAILlB,GAAWoB,GAAazxD,OAAO4yD,6BAGnC,SAASC,GAAUC,GACjB,MAAuB,oBAATA,GAAuB,cAAc71D,KAAK61D,EAAK11D,YAG/D,IAII21D,GAJAC,GACgB,qBAAX1sD,QAA0BusD,GAASvsD,SACvB,qBAAZ2sD,SAA2BJ,GAASI,QAAQC,SAMnDH,GAFiB,qBAARn4B,KAAuBi4B,GAASj4B,KAElCA,IAGc,WACnB,SAASA,IACP79B,KAAKW,IAAMjB,OAAOgG,OAAO,MAY3B,OAVAm4B,EAAI5/B,UAAUL,IAAM,SAAc8C,GAChC,OAAyB,IAAlBV,KAAKW,IAAID,IAElBm9B,EAAI5/B,UAAUkN,IAAM,SAAczK,GAChCV,KAAKW,IAAID,IAAO,GAElBm9B,EAAI5/B,UAAU0/B,MAAQ,WACpB39B,KAAKW,IAAMjB,OAAOgG,OAAO,OAGpBm4B,EAdW,GAoBtB,IAAIu4B,GAAO5iD,EA8FPrK,GAAM,EAMNktD,GAAM,WACRr2D,KAAKO,GAAK4I,KACVnJ,KAAKs2D,KAAO,IAGdD,GAAIp4D,UAAUs4D,OAAS,SAAiBC,GACtCx2D,KAAKs2D,KAAKliD,KAAKoiD,IAGjBH,GAAIp4D,UAAUw4D,UAAY,SAAoBD,GAC5CvjD,EAAOjT,KAAKs2D,KAAME,IAGpBH,GAAIp4D,UAAUy4D,OAAS,WACjBL,GAAIz2D,QACNy2D,GAAIz2D,OAAO+2D,OAAO32D,OAItBq2D,GAAIp4D,UAAU24D,OAAS,WAErB,IAAIN,EAAOt2D,KAAKs2D,KAAKnoD,QAOrB,IAAK,IAAIG,EAAI,EAAG4d,EAAIoqC,EAAKh0D,OAAQgM,EAAI4d,EAAG5d,IACtCgoD,EAAKhoD,GAAG0I,UAOZq/C,GAAIz2D,OAAS,KACb,IAAIi3D,GAAc,GAElB,SAASC,GAAYl3D,GACnBi3D,GAAYziD,KAAKxU,GACjBy2D,GAAIz2D,OAASA,EAGf,SAASm3D,KACPF,GAAY7kC,MACZqkC,GAAIz2D,OAASi3D,GAAYA,GAAYv0D,OAAS,GAKhD,IAAI00D,GAAQ,SACVltD,EACAiI,EACA8lB,EACAnlB,EACAukD,EACApsD,EACAqsD,EACAC,GAEAn3D,KAAK8J,IAAMA,EACX9J,KAAK+R,KAAOA,EACZ/R,KAAK63B,SAAWA,EAChB73B,KAAK0S,KAAOA,EACZ1S,KAAKi3D,IAAMA,EACXj3D,KAAKo3D,QAAK54D,EACVwB,KAAK6K,QAAUA,EACf7K,KAAKq3D,eAAY74D,EACjBwB,KAAKs3D,eAAY94D,EACjBwB,KAAKu3D,eAAY/4D,EACjBwB,KAAKU,IAAMqR,GAAQA,EAAKrR,IACxBV,KAAKk3D,iBAAmBA,EACxBl3D,KAAKw3D,uBAAoBh5D,EACzBwB,KAAKgL,YAASxM,EACdwB,KAAKy3D,KAAM,EACXz3D,KAAK03D,UAAW,EAChB13D,KAAK23D,cAAe,EACpB33D,KAAK43D,WAAY,EACjB53D,KAAK63D,UAAW,EAChB73D,KAAK83D,QAAS,EACd93D,KAAKm3D,aAAeA,EACpBn3D,KAAK+3D,eAAYv5D,EACjBwB,KAAKg4D,oBAAqB,GAGxBC,GAAqB,CAAE1gD,MAAO,CAAErZ,cAAc,IAIlD+5D,GAAmB1gD,MAAM3W,IAAM,WAC7B,OAAOZ,KAAKw3D,mBAGd93D,OAAOgD,iBAAkBs0D,GAAM/4D,UAAWg6D,IAE1C,IAAIC,GAAmB,SAAUxlD,QACjB,IAATA,IAAkBA,EAAO,IAE9B,IAAIyD,EAAO,IAAI6gD,GAGf,OAFA7gD,EAAKzD,KAAOA,EACZyD,EAAKyhD,WAAY,EACVzhD,GAGT,SAASgiD,GAAiB9L,GACxB,OAAO,IAAI2K,QAAMx4D,OAAWA,OAAWA,EAAWE,OAAO2tD,IAO3D,SAAS+L,GAAYC,GACnB,IAAIC,EAAS,IAAItB,GACfqB,EAAMvuD,IACNuuD,EAAMtmD,KAINsmD,EAAMxgC,UAAYwgC,EAAMxgC,SAAS1pB,QACjCkqD,EAAM3lD,KACN2lD,EAAMpB,IACNoB,EAAMxtD,QACNwtD,EAAMnB,iBACNmB,EAAMlB,cAWR,OATAmB,EAAOlB,GAAKiB,EAAMjB,GAClBkB,EAAOZ,SAAWW,EAAMX,SACxBY,EAAO53D,IAAM23D,EAAM33D,IACnB43D,EAAOV,UAAYS,EAAMT,UACzBU,EAAOjB,UAAYgB,EAAMhB,UACzBiB,EAAOhB,UAAYe,EAAMf,UACzBgB,EAAOf,UAAYc,EAAMd,UACzBe,EAAOP,UAAYM,EAAMN,UACzBO,EAAOT,UAAW,EACXS,EAQT,IAAIC,GAAaxvD,MAAM9K,UACnBu6D,GAAe94D,OAAOgG,OAAO6yD,IAE7BE,GAAiB,CACnB,OACA,MACA,QACA,UACA,SACA,OACA,WAMFA,GAAe75B,SAAQ,SAAUn7B,GAE/B,IAAIi1D,EAAWH,GAAW90D,GAC1B4wD,EAAImE,GAAc/0D,GAAQ,WACxB,IAAIgR,EAAO,GAAIkkD,EAAMt2D,UAAUC,OAC/B,MAAQq2D,IAAQlkD,EAAMkkD,GAAQt2D,UAAWs2D,GAEzC,IAEIC,EAFA35D,EAASy5D,EAASrnD,MAAMrR,KAAMyU,GAC9BokD,EAAK74D,KAAK84D,OAEd,OAAQr1D,GACN,IAAK,OACL,IAAK,UACHm1D,EAAWnkD,EACX,MACF,IAAK,SACHmkD,EAAWnkD,EAAKtG,MAAM,GACtB,MAKJ,OAHIyqD,GAAYC,EAAGE,aAAaH,GAEhCC,EAAGG,IAAIpC,SACA33D,QAMX,IAAIg6D,GAAYv5D,OAAOw5D,oBAAoBV,IAMvCW,IAAgB,EAEpB,SAASC,GAAiBj7D,GACxBg7D,GAAgBh7D,EASlB,IAAIk7D,GAAW,SAAmBl7D,GAChC6B,KAAK7B,MAAQA,EACb6B,KAAKg5D,IAAM,IAAI3C,GACfr2D,KAAKs5D,QAAU,EACfjF,EAAIl2D,EAAO,SAAU6B,MACjB+I,MAAM8nB,QAAQ1yB,IACZs2D,EACF8E,GAAap7D,EAAOq6D,IAEpBgB,GAAYr7D,EAAOq6D,GAAcS,IAEnCj5D,KAAK+4D,aAAa56D,IAElB6B,KAAKy5D,KAAKt7D,IA+Bd,SAASo7D,GAAc35D,EAAQkE,GAE7BlE,EAAOoJ,UAAYlF,EASrB,SAAS01D,GAAa55D,EAAQkE,EAAKvG,GACjC,IAAK,IAAI+Q,EAAI,EAAG4d,EAAI3uB,EAAK+E,OAAQgM,EAAI4d,EAAG5d,IAAK,CAC3C,IAAI5N,EAAMnD,EAAK+Q,GACf+lD,EAAIz0D,EAAQc,EAAKoD,EAAIpD,KASzB,SAASg5D,GAASv7D,EAAOw7D,GAIvB,IAAId,EAHJ,GAAKz6D,EAASD,MAAUA,aAAiB64D,IAkBzC,OAdI9F,EAAO/yD,EAAO,WAAaA,EAAM26D,kBAAkBO,GACrDR,EAAK16D,EAAM26D,OAEXK,KACCzD,OACA3sD,MAAM8nB,QAAQ1yB,IAAUqyD,EAAcryD,KACvCuB,OAAOk6D,aAAaz7D,KACnBA,EAAM07D,SAEPhB,EAAK,IAAIQ,GAASl7D,IAEhBw7D,GAAcd,GAChBA,EAAGS,UAEET,EAMT,SAASiB,GACPxJ,EACA5vD,EACA2rD,EACA0N,EACAC,GAEA,IAAIhB,EAAM,IAAI3C,GAEVj5C,EAAW1d,OAAOoJ,yBAAyBwnD,EAAK5vD,GACpD,IAAI0c,IAAsC,IAA1BA,EAASlf,aAAzB,CAKA,IAAI+7D,EAAS78C,GAAYA,EAASxc,IAC9BgI,EAASwU,GAAYA,EAASzc,IAC5Bs5D,IAAUrxD,GAAgC,IAArBvG,UAAUC,SACnC+pD,EAAMiE,EAAI5vD,IAGZ,IAAIw5D,GAAWF,GAAWN,GAAQrN,GAClC3sD,OAAO/B,eAAe2yD,EAAK5vD,EAAK,CAC9BmD,YAAY,EACZ3F,cAAc,EACd0C,IAAK,WACH,IAAIzC,EAAQ87D,EAASA,EAAO/6D,KAAKoxD,GAAOjE,EAUxC,OATIgK,GAAIz2D,SACNo5D,EAAItC,SACAwD,IACFA,EAAQlB,IAAItC,SACR3tD,MAAM8nB,QAAQ1yB,IAChBg8D,GAAYh8D,KAIXA,GAETwC,IAAK,SAAyBy5D,GAC5B,IAAIj8D,EAAQ87D,EAASA,EAAO/6D,KAAKoxD,GAAOjE,EAEpC+N,IAAWj8D,GAAUi8D,IAAWA,GAAUj8D,IAAUA,GAQpD87D,IAAWrxD,IACXA,EACFA,EAAO1J,KAAKoxD,EAAK8J,GAEjB/N,EAAM+N,EAERF,GAAWF,GAAWN,GAAQU,GAC9BpB,EAAIpC,cAUV,SAASj2D,GAAKf,EAAQc,EAAK2rD,GAMzB,GAAItjD,MAAM8nB,QAAQjxB,IAAW6wD,EAAkB/vD,GAG7C,OAFAd,EAAO0C,OAAS3F,KAAK4R,IAAI3O,EAAO0C,OAAQ5B,GACxCd,EAAOic,OAAOnb,EAAK,EAAG2rD,GACfA,EAET,GAAI3rD,KAAOd,KAAYc,KAAOhB,OAAOzB,WAEnC,OADA2B,EAAOc,GAAO2rD,EACPA,EAET,IAAIwM,EAAK,EAASC,OAClB,OAAIl5D,EAAOi6D,QAAWhB,GAAMA,EAAGS,QAKtBjN,EAEJwM,GAILiB,GAAkBjB,EAAG16D,MAAOuC,EAAK2rD,GACjCwM,EAAGG,IAAIpC,SACAvK,IALLzsD,EAAOc,GAAO2rD,EACPA,GAUX,SAASgO,GAAKz6D,EAAQc,GAMpB,GAAIqI,MAAM8nB,QAAQjxB,IAAW6wD,EAAkB/vD,GAC7Cd,EAAOic,OAAOnb,EAAK,OADrB,CAIA,IAAIm4D,EAAK,EAASC,OACdl5D,EAAOi6D,QAAWhB,GAAMA,EAAGS,SAO1BpI,EAAOtxD,EAAQc,YAGbd,EAAOc,GACTm4D,GAGLA,EAAGG,IAAIpC,WAOT,SAASuD,GAAah8D,GACpB,IAAK,IAAI6E,OAAI,EAAUsL,EAAI,EAAG4d,EAAI/tB,EAAMmE,OAAQgM,EAAI4d,EAAG5d,IACrDtL,EAAI7E,EAAMmQ,GACVtL,GAAKA,EAAE81D,QAAU91D,EAAE81D,OAAOE,IAAItC,SAC1B3tD,MAAM8nB,QAAQ7tB,IAChBm3D,GAAYn3D,GAhNlBq2D,GAASp7D,UAAUw7D,KAAO,SAAenJ,GAEvC,IADA,IAAI/yD,EAAOmC,OAAOnC,KAAK+yD,GACdhiD,EAAI,EAAGA,EAAI/Q,EAAK+E,OAAQgM,IAC/BwrD,GAAkBxJ,EAAK/yD,EAAK+Q,KAOhC+qD,GAASp7D,UAAU86D,aAAe,SAAuBuB,GACvD,IAAK,IAAIhsD,EAAI,EAAG4d,EAAIouC,EAAMh4D,OAAQgM,EAAI4d,EAAG5d,IACvCorD,GAAQY,EAAMhsD,KAgNlB,IAAIisD,GAASrH,EAAOC,sBAoBpB,SAASqH,GAAW1uB,EAAID,GACtB,IAAKA,EAAQ,OAAOC,EAOpB,IANA,IAAIprC,EAAK+5D,EAAOC,EAEZn9D,EAAO04D,GACPC,QAAQC,QAAQtqB,GAChBnsC,OAAOnC,KAAKsuC,GAEPv9B,EAAI,EAAGA,EAAI/Q,EAAK+E,OAAQgM,IAC/B5N,EAAMnD,EAAK+Q,GAEC,WAAR5N,IACJ+5D,EAAQ3uB,EAAGprC,GACXg6D,EAAU7uB,EAAKnrC,GACVwwD,EAAOplB,EAAIprC,GAGd+5D,IAAUC,GACVlK,EAAciK,IACdjK,EAAckK,IAEdF,GAAUC,EAAOC,GANjB/5D,GAAImrC,EAAIprC,EAAKg6D,IASjB,OAAO5uB,EAMT,SAAS6uB,GACPC,EACAC,EACAC,GAEA,OAAKA,EAoBI,WAEL,IAAIC,EAAmC,oBAAbF,EACtBA,EAAS37D,KAAK47D,EAAIA,GAClBD,EACAG,EAAmC,oBAAdJ,EACrBA,EAAU17D,KAAK47D,EAAIA,GACnBF,EACJ,OAAIG,EACKP,GAAUO,EAAcC,GAExBA,GA7BNH,EAGAD,EAQE,WACL,OAAOJ,GACe,oBAAbK,EAA0BA,EAAS37D,KAAKc,KAAMA,MAAQ66D,EACxC,oBAAdD,EAA2BA,EAAU17D,KAAKc,KAAMA,MAAQ46D,IAV1DC,EAHAD,EA2Db,SAASK,GACPL,EACAC,GAEA,IAAI3I,EAAM2I,EACND,EACEA,EAAUl9D,OAAOm9D,GACjB9xD,MAAM8nB,QAAQgqC,GACZA,EACA,CAACA,GACLD,EACJ,OAAO1I,EACHgJ,GAAYhJ,GACZA,EAGN,SAASgJ,GAAaC,GAEpB,IADA,IAAIjJ,EAAM,GACD5jD,EAAI,EAAGA,EAAI6sD,EAAM74D,OAAQgM,KACD,IAA3B4jD,EAAIl+C,QAAQmnD,EAAM7sD,KACpB4jD,EAAI99C,KAAK+mD,EAAM7sD,IAGnB,OAAO4jD,EAcT,SAASkJ,GACPR,EACAC,EACAC,EACAp6D,GAEA,IAAIwxD,EAAMxyD,OAAOgG,OAAOk1D,GAAa,MACrC,OAAIC,EAEK75C,EAAOkxC,EAAK2I,GAEZ3I,EAzEXqI,GAAOxoD,KAAO,SACZ6oD,EACAC,EACAC,GAEA,OAAKA,EAcEH,GAAcC,EAAWC,EAAUC,GAbpCD,GAAgC,oBAAbA,EAQdD,EAEFD,GAAcC,EAAWC,IAmCpC5H,EAAgBr0B,SAAQ,SAAUn0B,GAChC8vD,GAAO9vD,GAAQwwD,MAyBjBjI,EAAYp0B,SAAQ,SAAUr9B,GAC5Bg5D,GAAOh5D,EAAO,KAAO65D,MASvBb,GAAOhF,MAAQ,SACbqF,EACAC,EACAC,EACAp6D,GAMA,GAHIk6D,IAActF,KAAesF,OAAYp8D,GACzCq8D,IAAavF,KAAeuF,OAAWr8D,IAEtCq8D,EAAY,OAAOn7D,OAAOgG,OAAOk1D,GAAa,MAInD,IAAKA,EAAa,OAAOC,EACzB,IAAI7I,EAAM,GAEV,IAAK,IAAIqJ,KADTr6C,EAAOgxC,EAAK4I,GACMC,EAAU,CAC1B,IAAI7vD,EAASgnD,EAAIqJ,GACb9jD,EAAQsjD,EAASQ,GACjBrwD,IAAWjC,MAAM8nB,QAAQ7lB,KAC3BA,EAAS,CAACA,IAEZgnD,EAAIqJ,GAASrwD,EACTA,EAAOtN,OAAO6Z,GACdxO,MAAM8nB,QAAQtZ,GAASA,EAAQ,CAACA,GAEtC,OAAOy6C,GAMTuI,GAAOe,MACPf,GAAO7tB,QACP6tB,GAAOgB,OACPhB,GAAOiB,SAAW,SAChBZ,EACAC,EACAC,EACAp6D,GAKA,IAAKk6D,EAAa,OAAOC,EACzB,IAAI7I,EAAMtyD,OAAOgG,OAAO,MAGxB,OAFAsb,EAAOgxC,EAAK4I,GACRC,GAAY75C,EAAOgxC,EAAK6I,GACrB7I,GAETuI,GAAOkB,QAAUd,GAKjB,IAAIe,GAAe,SAAUd,EAAWC,GACtC,YAAoBr8D,IAAbq8D,EACHD,EACAC,GA+BN,SAASc,GAAgBn4D,EAASs3D,GAChC,IAAIQ,EAAQ93D,EAAQ83D,MACpB,GAAKA,EAAL,CACA,IACIhtD,EAAG+9C,EAAK3iD,EADRwoD,EAAM,GAEV,GAAInpD,MAAM8nB,QAAQyqC,GAAQ,CACxBhtD,EAAIgtD,EAAMh5D,OACV,MAAOgM,IACL+9C,EAAMiP,EAAMhtD,GACO,kBAAR+9C,IACT3iD,EAAO4nD,EAASjF,GAChB6F,EAAIxoD,GAAQ,CAAEnI,KAAM,YAKnB,GAAIivD,EAAc8K,GACvB,IAAK,IAAI56D,KAAO46D,EACdjP,EAAMiP,EAAM56D,GACZgJ,EAAO4nD,EAAS5wD,GAChBwxD,EAAIxoD,GAAQ8mD,EAAcnE,GACtBA,EACA,CAAE9qD,KAAM8qD,QAEL,EAOX7oD,EAAQ83D,MAAQpJ,GAMlB,SAAS0J,GAAiBp4D,EAASs3D,GACjC,IAAIS,EAAS/3D,EAAQ+3D,OACrB,GAAKA,EAAL,CACA,IAAIM,EAAar4D,EAAQ+3D,OAAS,GAClC,GAAIxyD,MAAM8nB,QAAQ0qC,GAChB,IAAK,IAAIjtD,EAAI,EAAGA,EAAIitD,EAAOj5D,OAAQgM,IACjCutD,EAAWN,EAAOjtD,IAAM,CAAEu9B,KAAM0vB,EAAOjtD,SAEpC,GAAIkiD,EAAc+K,GACvB,IAAK,IAAI76D,KAAO66D,EAAQ,CACtB,IAAIlP,EAAMkP,EAAO76D,GACjBm7D,EAAWn7D,GAAO8vD,EAAcnE,GAC5BrrC,EAAO,CAAE6qB,KAAMnrC,GAAO2rD,GACtB,CAAExgB,KAAMwgB,QAEL,GAYb,SAASyP,GAAqBt4D,GAC5B,IAAIu4D,EAAOv4D,EAAQw4D,WACnB,GAAID,EACF,IAAK,IAAIr7D,KAAOq7D,EAAM,CACpB,IAAIE,EAASF,EAAKr7D,GACI,oBAAXu7D,IACTF,EAAKr7D,GAAO,CAAEuL,KAAMgwD,EAAQjlD,OAAQilD,KAoB5C,SAASC,GACPlxD,EACAuM,EACAujD,GAkBA,GAZqB,oBAAVvjD,IACTA,EAAQA,EAAM/T,SAGhBm4D,GAAepkD,EAAOujD,GACtBc,GAAgBrkD,EAAOujD,GACvBgB,GAAoBvkD,IAMfA,EAAM4kD,QACL5kD,EAAM6kD,UACRpxD,EAASkxD,GAAalxD,EAAQuM,EAAM6kD,QAAStB,IAE3CvjD,EAAM8kD,QACR,IAAK,IAAI/tD,EAAI,EAAG4d,EAAI3U,EAAM8kD,OAAO/5D,OAAQgM,EAAI4d,EAAG5d,IAC9CtD,EAASkxD,GAAalxD,EAAQuM,EAAM8kD,OAAO/tD,GAAIwsD,GAKrD,IACIp6D,EADA8C,EAAU,GAEd,IAAK9C,KAAOsK,EACVsxD,EAAW57D,GAEb,IAAKA,KAAO6W,EACL25C,EAAOlmD,EAAQtK,IAClB47D,EAAW57D,GAGf,SAAS47D,EAAY57D,GACnB,IAAI67D,EAAQhC,GAAO75D,IAAQg7D,GAC3Bl4D,EAAQ9C,GAAO67D,EAAMvxD,EAAOtK,GAAM6W,EAAM7W,GAAMo6D,EAAIp6D,GAEpD,OAAO8C,EAQT,SAASg5D,GACPh5D,EACAjC,EACAhB,EACAk8D,GAGA,GAAkB,kBAAPl8D,EAAX,CAGA,IAAIm8D,EAASl5D,EAAQjC,GAErB,GAAI2vD,EAAOwL,EAAQn8D,GAAO,OAAOm8D,EAAOn8D,GACxC,IAAIo8D,EAAcrL,EAAS/wD,GAC3B,GAAI2wD,EAAOwL,EAAQC,GAAgB,OAAOD,EAAOC,GACjD,IAAIC,EAAerL,EAAWoL,GAC9B,GAAIzL,EAAOwL,EAAQE,GAAiB,OAAOF,EAAOE,GAElD,IAAI1K,EAAMwK,EAAOn8D,IAAOm8D,EAAOC,IAAgBD,EAAOE,GAOtD,OAAO1K,GAOT,SAAS2K,GACPn8D,EACAo8D,EACAC,EACAjC,GAEA,IAAIkC,EAAOF,EAAYp8D,GACnBu8D,GAAU/L,EAAO6L,EAAWr8D,GAC5BvC,EAAQ4+D,EAAUr8D,GAElBw8D,EAAeC,GAAa1S,QAASuS,EAAKz7D,MAC9C,GAAI27D,GAAgB,EAClB,GAAID,IAAW/L,EAAO8L,EAAM,WAC1B7+D,GAAQ,OACH,GAAc,KAAVA,GAAgBA,IAAUszD,EAAU/wD,GAAM,CAGnD,IAAI08D,EAAcD,GAAaz+D,OAAQs+D,EAAKz7D,OACxC67D,EAAc,GAAKF,EAAeE,KACpCj/D,GAAQ,GAKd,QAAcK,IAAVL,EAAqB,CACvBA,EAAQk/D,GAAoBvC,EAAIkC,EAAMt8D,GAGtC,IAAI48D,EAAoBnE,GACxBC,IAAgB,GAChBM,GAAQv7D,GACRi7D,GAAgBkE,GASlB,OAAOn/D,EAMT,SAASk/D,GAAqBvC,EAAIkC,EAAMt8D,GAEtC,GAAKwwD,EAAO8L,EAAM,WAAlB,CAGA,IAAI3I,EAAM2I,EAAKO,QAYf,OAAIzC,GAAMA,EAAGxvD,SAASyxD,gBACWv+D,IAA/Bs8D,EAAGxvD,SAASyxD,UAAUr8D,SACHlC,IAAnBs8D,EAAG0C,OAAO98D,GAEHo6D,EAAG0C,OAAO98D,GAIG,oBAAR2zD,GAA6C,aAAvBoJ,GAAQT,EAAKz7D,MAC7C8yD,EAAIn1D,KAAK47D,GACTzG,GAqFN,SAASoJ,GAASjxD,GAChB,IAAIsK,EAAQtK,GAAMA,EAAGnM,WAAWyW,MAAM,sBACtC,OAAOA,EAAQA,EAAM,GAAK,GAG5B,SAAS4mD,GAAYj5D,EAAGC,GACtB,OAAO+4D,GAAQh5D,KAAOg5D,GAAQ/4D,GAGhC,SAASy4D,GAAc57D,EAAMo8D,GAC3B,IAAK50D,MAAM8nB,QAAQ8sC,GACjB,OAAOD,GAAWC,EAAep8D,GAAQ,GAAK,EAEhD,IAAK,IAAI+M,EAAI,EAAGqqD,EAAMgF,EAAcr7D,OAAQgM,EAAIqqD,EAAKrqD,IACnD,GAAIovD,GAAWC,EAAcrvD,GAAI/M,GAC/B,OAAO+M,EAGX,OAAQ,EAgDV,SAASsvD,GAAaC,EAAK/C,EAAIgD,GAG7BhH,KACA,IACE,GAAIgE,EAAI,CACN,IAAIiD,EAAMjD,EACV,MAAQiD,EAAMA,EAAIC,QAAU,CAC1B,IAAI7C,EAAQ4C,EAAIzyD,SAAS2yD,cACzB,GAAI9C,EACF,IAAK,IAAI7sD,EAAI,EAAGA,EAAI6sD,EAAM74D,OAAQgM,IAChC,IACE,IAAI8P,GAAgD,IAAtC+8C,EAAM7sD,GAAGpP,KAAK6+D,EAAKF,EAAK/C,EAAIgD,GAC1C,GAAI1/C,EAAW,OACf,MAAOpb,IACPk7D,GAAkBl7D,GAAG+6D,EAAK,wBAMpCG,GAAkBL,EAAK/C,EAAIgD,GAC3B,QACA/G,MAIJ,SAASoH,GACPC,EACAvzD,EACA4J,EACAqmD,EACAgD,GAEA,IAAI5L,EACJ,IACEA,EAAMz9C,EAAO2pD,EAAQ/sD,MAAMxG,EAAS4J,GAAQ2pD,EAAQl/D,KAAK2L,GACrDqnD,IAAQA,EAAI2H,QAAUnJ,EAAUwB,KAASA,EAAImM,WAC/CnM,EAAIvB,OAAM,SAAU3tD,GAAK,OAAO46D,GAAY56D,EAAG83D,EAAIgD,EAAO,uBAG1D5L,EAAImM,UAAW,GAEjB,MAAOr7D,IACP46D,GAAY56D,GAAG83D,EAAIgD,GAErB,OAAO5L,EAGT,SAASgM,GAAmBL,EAAK/C,EAAIgD,GACnC,GAAI5K,EAAOK,aACT,IACE,OAAOL,EAAOK,aAAar0D,KAAK,KAAM2+D,EAAK/C,EAAIgD,GAC/C,MAAO96D,IAGHA,KAAM66D,GACRS,GAASt7D,GAAG,KAAM,uBAIxBs7D,GAAST,EAAK/C,EAAIgD,GAGpB,SAASQ,GAAUT,EAAK/C,EAAIgD,GAK1B,IAAKpJ,IAAaC,GAA8B,qBAAZhwD,QAGlC,MAAMk5D,EAFNl5D,QAAQ1H,MAAM4gE,GAQlB,IAyBIU,GAzBAC,IAAmB,EAEnBC,GAAY,GACZC,IAAU,EAEd,SAASC,KACPD,IAAU,EACV,IAAIE,EAASH,GAAUtwD,MAAM,GAC7BswD,GAAUn8D,OAAS,EACnB,IAAK,IAAIgM,EAAI,EAAGA,EAAIswD,EAAOt8D,OAAQgM,IACjCswD,EAAOtwD,KAwBX,GAAuB,qBAAZiqB,SAA2Bu9B,GAASv9B,SAAU,CACvD,IAAIxlB,GAAIwlB,QAAQC,UAChB+lC,GAAY,WACVxrD,GAAE5N,KAAKw5D,IAMHvJ,IAAS3hC,WAAWjgB,IAE1BgrD,IAAmB,OACd,GAAKvJ,IAAoC,qBAArB4J,mBACzB/I,GAAS+I,mBAEuB,yCAAhCA,iBAAiBx+D,WAoBjBk+D,GAJiC,qBAAjB/Q,cAAgCsI,GAAStI,cAI7C,WACVA,aAAamR,KAIH,WACVlrC,WAAWkrC,GAAgB,QAzB5B,CAID,IAAIhR,GAAU,EACVmR,GAAW,IAAID,iBAAiBF,IAChCI,GAAW32D,SAAS42D,eAAetgE,OAAOivD,KAC9CmR,GAASpF,QAAQqF,GAAU,CACzBE,eAAe,IAEjBV,GAAY,WACV5Q,IAAWA,GAAU,GAAK,EAC1BoR,GAAShtD,KAAOrT,OAAOivD,KAEzB6Q,IAAmB,EAerB,SAASpQ,GAAU8Q,EAAIvN,GACrB,IAAIwN,EAiBJ,GAhBAV,GAAUrqD,MAAK,WACb,GAAI8qD,EACF,IACEA,EAAGhgE,KAAKyyD,GACR,MAAO3uD,IACP46D,GAAY56D,GAAG2uD,EAAK,iBAEbwN,GACTA,EAASxN,MAGR+M,KACHA,IAAU,EACVH,OAGGW,GAAyB,qBAAZ3mC,QAChB,OAAO,IAAIA,SAAQ,SAAUC,GAC3B2mC,EAAW3mC,KAiGjB,IAAI4mC,GAAc,IAAIpJ,GAOtB,SAASqJ,GAAUhT,GACjBiT,GAAUjT,EAAK+S,IACfA,GAAYzhC,QAGd,SAAS2hC,GAAWjT,EAAKkT,GACvB,IAAIjxD,EAAG/Q,EACHiiE,EAAMz2D,MAAM8nB,QAAQw7B,GACxB,MAAMmT,IAAQphE,EAASiuD,IAAS3sD,OAAO+/D,SAASpT,IAAQA,aAAe2K,IAAvE,CAGA,GAAI3K,EAAIyM,OAAQ,CACd,IAAI4G,EAAQrT,EAAIyM,OAAOE,IAAIz4D,GAC3B,GAAIg/D,EAAK3hE,IAAI8hE,GACX,OAEFH,EAAKp0D,IAAIu0D,GAEX,GAAIF,EAAK,CACPlxD,EAAI+9C,EAAI/pD,OACR,MAAOgM,IAAOgxD,GAAUjT,EAAI/9C,GAAIixD,OAC3B,CACLhiE,EAAOmC,OAAOnC,KAAK8uD,GACnB/9C,EAAI/Q,EAAK+E,OACT,MAAOgM,IAAOgxD,GAAUjT,EAAI9uD,EAAK+Q,IAAKixD,KA6B1C,IAAII,GAAiBxO,GAAO,SAAUznD,GACpC,IAAIk2D,EAA6B,MAAnBl2D,EAAKxG,OAAO,GAC1BwG,EAAOk2D,EAAUl2D,EAAKyE,MAAM,GAAKzE,EACjC,IAAIm2D,EAA6B,MAAnBn2D,EAAKxG,OAAO,GAC1BwG,EAAOm2D,EAAUn2D,EAAKyE,MAAM,GAAKzE,EACjC,IAAI0U,EAA6B,MAAnB1U,EAAKxG,OAAO,GAE1B,OADAwG,EAAO0U,EAAU1U,EAAKyE,MAAM,GAAKzE,EAC1B,CACLA,KAAMA,EACNopD,KAAM+M,EACNzhD,QAASA,EACTwhD,QAASA,MAIb,SAASE,GAAiBC,EAAKjF,GAC7B,SAASkF,IACP,IAAIC,EAAc59D,UAEd09D,EAAMC,EAAQD,IAClB,IAAIh3D,MAAM8nB,QAAQkvC,GAOhB,OAAO5B,GAAwB4B,EAAK,KAAM19D,UAAWy4D,EAAI,gBALzD,IADA,IAAIxC,EAASyH,EAAI5xD,QACRG,EAAI,EAAGA,EAAIgqD,EAAOh2D,OAAQgM,IACjC6vD,GAAwB7F,EAAOhqD,GAAI,KAAM2xD,EAAanF,EAAI,gBAQhE,OADAkF,EAAQD,IAAMA,EACPC,EAGT,SAASE,GACP5rD,EACA6rD,EACAh1D,EACAi1D,EACAC,EACAvF,GAEA,IAAIpxD,EAAcq0D,EAAKuC,EAAK3iD,EAC5B,IAAKjU,KAAQ4K,EACFypD,EAAMzpD,EAAG5K,GAClB42D,EAAMH,EAAMz2D,GACZiU,EAAQgiD,GAAej2D,GACnBumD,EAAQ8N,KAKD9N,EAAQqQ,IACbrQ,EAAQ8N,EAAIgC,OACdhC,EAAMzpD,EAAG5K,GAAQo2D,GAAgB/B,EAAKjD,IAEpC3K,EAAOxyC,EAAMm1C,QACfiL,EAAMzpD,EAAG5K,GAAQ22D,EAAkB1iD,EAAMjU,KAAMq0D,EAAKpgD,EAAMS,UAE5DjT,EAAIwS,EAAMjU,KAAMq0D,EAAKpgD,EAAMS,QAAST,EAAMiiD,QAASjiD,EAAMc,SAChDs/C,IAAQuC,IACjBA,EAAIP,IAAMhC,EACVzpD,EAAG5K,GAAQ42D,IAGf,IAAK52D,KAAQy2D,EACPlQ,EAAQ37C,EAAG5K,MACbiU,EAAQgiD,GAAej2D,GACvB02D,EAAUziD,EAAMjU,KAAMy2D,EAAMz2D,GAAOiU,EAAMS,UAO/C,SAASmiD,GAAgBlM,EAAKmM,EAAS/1D,GAIrC,IAAIu1D,EAHA3L,aAAe2C,KACjB3C,EAAMA,EAAItiD,KAAKtH,OAAS4pD,EAAItiD,KAAKtH,KAAO,KAG1C,IAAIg2D,EAAUpM,EAAImM,GAElB,SAASE,IACPj2D,EAAK4G,MAAMrR,KAAMqC,WAGjB4Q,EAAO+sD,EAAQD,IAAKW,GAGlBzQ,EAAQwQ,GAEVT,EAAUF,GAAgB,CAACY,IAGvBxQ,EAAMuQ,EAAQV,MAAQ5P,EAAOsQ,EAAQ5wD,SAEvCmwD,EAAUS,EACVT,EAAQD,IAAI3rD,KAAKssD,IAGjBV,EAAUF,GAAgB,CAACW,EAASC,IAIxCV,EAAQnwD,QAAS,EACjBwkD,EAAImM,GAAWR,EAKjB,SAASW,GACP5uD,EACAgkD,EACAjsD,GAKA,IAAIgzD,EAAc/G,EAAKvyD,QAAQ83D,MAC/B,IAAIrL,EAAQ6M,GAAZ,CAGA,IAAI5K,EAAM,GACN0O,EAAQ7uD,EAAK6uD,MACbtF,EAAQvpD,EAAKupD,MACjB,GAAIpL,EAAM0Q,IAAU1Q,EAAMoL,GACxB,IAAK,IAAI56D,KAAOo8D,EAAa,CAC3B,IAAI+D,EAASpP,EAAU/wD,GAiBvBogE,GAAU5O,EAAKoJ,EAAO56D,EAAKmgE,GAAQ,IACnCC,GAAU5O,EAAK0O,EAAOlgE,EAAKmgE,GAAQ,GAGvC,OAAO3O,GAGT,SAAS4O,GACP5O,EACA6O,EACArgE,EACAmgE,EACAG,GAEA,GAAI9Q,EAAM6Q,GAAO,CACf,GAAI7P,EAAO6P,EAAMrgE,GAKf,OAJAwxD,EAAIxxD,GAAOqgE,EAAKrgE,GACXsgE,UACID,EAAKrgE,IAEP,EACF,GAAIwwD,EAAO6P,EAAMF,GAKtB,OAJA3O,EAAIxxD,GAAOqgE,EAAKF,GACXG,UACID,EAAKF,IAEP,EAGX,OAAO,EAiBT,SAASI,GAAyBppC,GAChC,IAAK,IAAIvpB,EAAI,EAAGA,EAAIupB,EAASv1B,OAAQgM,IACnC,GAAIvF,MAAM8nB,QAAQgH,EAASvpB,IACzB,OAAOvF,MAAM9K,UAAUP,OAAO2T,MAAM,GAAIwmB,GAG5C,OAAOA,EAOT,SAASqpC,GAAmBrpC,GAC1B,OAAOw4B,EAAYx4B,GACf,CAACsgC,GAAgBtgC,IACjB9uB,MAAM8nB,QAAQgH,GACZspC,GAAuBtpC,QACvBr5B,EAGR,SAAS4iE,GAAYjrD,GACnB,OAAO+5C,EAAM/5C,IAAS+5C,EAAM/5C,EAAKzD,OAAS09C,EAAQj6C,EAAKyhD,WAGzD,SAASuJ,GAAwBtpC,EAAUwpC,GACzC,IACI/yD,EAAG4F,EAAGyc,EAAW2wC,EADjBpP,EAAM,GAEV,IAAK5jD,EAAI,EAAGA,EAAIupB,EAASv1B,OAAQgM,IAC/B4F,EAAI2jB,EAASvpB,GACT2hD,EAAQ/7C,IAAmB,mBAANA,IACzByc,EAAYuhC,EAAI5vD,OAAS,EACzBg/D,EAAOpP,EAAIvhC,GAEP5nB,MAAM8nB,QAAQ3c,GACZA,EAAE5R,OAAS,IACb4R,EAAIitD,GAAuBjtD,GAAKmtD,GAAe,IAAM,IAAM/yD,GAEvD8yD,GAAWltD,EAAE,KAAOktD,GAAWE,KACjCpP,EAAIvhC,GAAawnC,GAAgBmJ,EAAK5uD,KAAQwB,EAAE,GAAIxB,MACpDwB,EAAE+zB,SAEJiqB,EAAI99C,KAAK/C,MAAM6gD,EAAKh+C,IAEbm8C,EAAYn8C,GACjBktD,GAAWE,GAIbpP,EAAIvhC,GAAawnC,GAAgBmJ,EAAK5uD,KAAOwB,GAC9B,KAANA,GAETg+C,EAAI99C,KAAK+jD,GAAgBjkD,IAGvBktD,GAAWltD,IAAMktD,GAAWE,GAE9BpP,EAAIvhC,GAAawnC,GAAgBmJ,EAAK5uD,KAAOwB,EAAExB,OAG3Cy9C,EAAOt4B,EAAS0pC,WAClBrR,EAAMh8C,EAAEpK,MACRmmD,EAAQ/7C,EAAExT,MACVwvD,EAAMmR,KACNntD,EAAExT,IAAM,UAAY2gE,EAAc,IAAM/yD,EAAI,MAE9C4jD,EAAI99C,KAAKF,KAIf,OAAOg+C,EAKT,SAASsP,GAAa1G,GACpB,IAAIW,EAAUX,EAAGxvD,SAASmwD,QACtBA,IACFX,EAAG2G,UAA+B,oBAAZhG,EAClBA,EAAQv8D,KAAK47D,GACbW,GAIR,SAASiG,GAAgB5G,GACvB,IAAI77D,EAAS0iE,GAAc7G,EAAGxvD,SAASiwD,OAAQT,GAC3C77D,IACFm6D,IAAgB,GAChB15D,OAAOnC,KAAK0B,GAAQ2/B,SAAQ,SAAUl+B,GAYlCo5D,GAAkBgB,EAAIp6D,EAAKzB,EAAOyB,OAGtC04D,IAAgB,IAIpB,SAASuI,GAAepG,EAAQT,GAC9B,GAAIS,EAAQ,CAOV,IALA,IAAIt8D,EAASS,OAAOgG,OAAO,MACvBnI,EAAO04D,GACPC,QAAQC,QAAQoF,GAChB77D,OAAOnC,KAAKg+D,GAEPjtD,EAAI,EAAGA,EAAI/Q,EAAK+E,OAAQgM,IAAK,CACpC,IAAI5N,EAAMnD,EAAK+Q,GAEf,GAAY,WAAR5N,EAAJ,CACA,IAAIkhE,EAAarG,EAAO76D,GAAKmrC,KACzB5b,EAAS6qC,EACb,MAAO7qC,EAAQ,CACb,GAAIA,EAAOwxC,WAAavQ,EAAOjhC,EAAOwxC,UAAWG,GAAa,CAC5D3iE,EAAOyB,GAAOuvB,EAAOwxC,UAAUG,GAC/B,MAEF3xC,EAASA,EAAO+tC,QAElB,IAAK/tC,EACH,GAAI,YAAasrC,EAAO76D,GAAM,CAC5B,IAAImhE,EAAiBtG,EAAO76D,GAAK68D,QACjCt+D,EAAOyB,GAAiC,oBAAnBmhE,EACjBA,EAAe3iE,KAAK47D,GACpB+G,OACK,GAKf,OAAO5iE,GAWX,SAAS6iE,GACPjqC,EACAhtB,GAEA,IAAKgtB,IAAaA,EAASv1B,OACzB,MAAO,GAGT,IADA,IAAIy/D,EAAQ,GACHzzD,EAAI,EAAG4d,EAAI2L,EAASv1B,OAAQgM,EAAI4d,EAAG5d,IAAK,CAC/C,IAAIiJ,EAAQsgB,EAASvpB,GACjByD,EAAOwF,EAAMxF,KAOjB,GALIA,GAAQA,EAAK6uD,OAAS7uD,EAAK6uD,MAAMoB,aAC5BjwD,EAAK6uD,MAAMoB,KAIfzqD,EAAM1M,UAAYA,GAAW0M,EAAM8/C,YAAcxsD,IACpDkH,GAAqB,MAAbA,EAAKiwD,MAUZD,EAAMxE,UAAYwE,EAAMxE,QAAU,KAAKnpD,KAAKmD,OAT7C,CACA,IAAI7N,EAAOqI,EAAKiwD,KACZA,EAAQD,EAAMr4D,KAAUq4D,EAAMr4D,GAAQ,IACxB,aAAd6N,EAAMzN,IACRk4D,EAAK5tD,KAAK/C,MAAM2wD,EAAMzqD,EAAMsgB,UAAY,IAExCmqC,EAAK5tD,KAAKmD,IAOhB,IAAK,IAAI0qD,KAAUF,EACbA,EAAME,GAAQ1qC,MAAM2qC,YACfH,EAAME,GAGjB,OAAOF,EAGT,SAASG,GAAc/rD,GACrB,OAAQA,EAAKyhD,YAAczhD,EAAKghD,cAA+B,MAAdhhD,EAAKzD,KAKxD,SAASyvD,GACPJ,EACAK,EACAC,GAEA,IAAInQ,EACAoQ,EAAiB5iE,OAAOnC,KAAK6kE,GAAa9/D,OAAS,EACnDigE,EAAWR,IAAUA,EAAMS,SAAWF,EACtC5hE,EAAMqhE,GAASA,EAAMU,KACzB,GAAKV,EAEE,IAAIA,EAAMW,YAEf,OAAOX,EAAMW,YACR,GACLH,GACAF,GACAA,IAActS,GACdrvD,IAAQ2hE,EAAUI,OACjBH,IACAD,EAAUM,WAIX,OAAON,EAGP,IAAK,IAAIhH,KADTnJ,EAAM,GACY6P,EACZA,EAAM1G,IAAuB,MAAbA,EAAM,KACxBnJ,EAAImJ,GAASuH,GAAoBR,EAAa/G,EAAO0G,EAAM1G,UAnB/DnJ,EAAM,GAwBR,IAAK,IAAI2Q,KAAST,EACVS,KAAS3Q,IACbA,EAAI2Q,GAASC,GAAgBV,EAAaS,IAW9C,OANId,GAASriE,OAAOk6D,aAAamI,KAC/B,EAAQW,YAAcxQ,GAExBmC,EAAInC,EAAK,UAAWqQ,GACpBlO,EAAInC,EAAK,OAAQxxD,GACjB2zD,EAAInC,EAAK,aAAcoQ,GAChBpQ,EAGT,SAAS0Q,GAAoBR,EAAa1hE,EAAK8L,GAC7C,IAAIqvD,EAAa,WACf,IAAI3J,EAAM7vD,UAAUC,OAASkK,EAAG6E,MAAM,KAAMhP,WAAamK,EAAG,IAI5D,OAHA0lD,EAAMA,GAAsB,kBAARA,IAAqBnpD,MAAM8nB,QAAQqhC,GACnD,CAACA,GACDgP,GAAkBhP,GACfA,IACU,IAAfA,EAAI5vD,QACY,IAAf4vD,EAAI5vD,QAAgB4vD,EAAI,GAAG0F,gBAC1Bp5D,EACA0zD,GAYN,OAPI1lD,EAAGu2D,OACLrjE,OAAO/B,eAAeykE,EAAa1hE,EAAK,CACtCE,IAAKi7D,EACLh4D,YAAY,EACZ3F,cAAc,IAGX29D,EAGT,SAASiH,GAAgBf,EAAOrhE,GAC9B,OAAO,WAAc,OAAOqhE,EAAMrhE,IAQpC,SAASsiE,GACP3W,EACAniD,GAEA,IAAI8nD,EAAK1jD,EAAG4d,EAAG3uB,EAAMmD,EACrB,GAAIqI,MAAM8nB,QAAQw7B,IAAuB,kBAARA,EAE/B,IADA2F,EAAM,IAAIjpD,MAAMsjD,EAAI/pD,QACfgM,EAAI,EAAG4d,EAAImgC,EAAI/pD,OAAQgM,EAAI4d,EAAG5d,IACjC0jD,EAAI1jD,GAAKpE,EAAOmiD,EAAI/9C,GAAIA,QAErB,GAAmB,kBAAR+9C,EAEhB,IADA2F,EAAM,IAAIjpD,MAAMsjD,GACX/9C,EAAI,EAAGA,EAAI+9C,EAAK/9C,IACnB0jD,EAAI1jD,GAAKpE,EAAOoE,EAAI,EAAGA,QAEpB,GAAIlQ,EAASiuD,GAClB,GAAI4J,IAAa5J,EAAI9iD,OAAOqD,UAAW,CACrColD,EAAM,GACN,IAAIplD,EAAWy/C,EAAI9iD,OAAOqD,YACtB3N,EAAS2N,EAAS5G,OACtB,OAAQ/G,EAAO+N,KACbglD,EAAI59C,KAAKlK,EAAOjL,EAAOd,MAAO6zD,EAAI1vD,SAClCrD,EAAS2N,EAAS5G,YAKpB,IAFAzI,EAAOmC,OAAOnC,KAAK8uD,GACnB2F,EAAM,IAAIjpD,MAAMxL,EAAK+E,QAChBgM,EAAI,EAAG4d,EAAI3uB,EAAK+E,OAAQgM,EAAI4d,EAAG5d,IAClC5N,EAAMnD,EAAK+Q,GACX0jD,EAAI1jD,GAAKpE,EAAOmiD,EAAI3rD,GAAMA,EAAK4N,GAQrC,OAJK4hD,EAAM8B,KACTA,EAAM,IAER,EAAMuP,UAAW,EACVvP,EAQT,SAASiR,GACPv5D,EACAw5D,EACA5H,EACA6H,GAEA,IACI5pD,EADA6pD,EAAepjE,KAAKqjE,aAAa35D,GAEjC05D,GACF9H,EAAQA,GAAS,GACb6H,IAOF7H,EAAQt6C,EAAOA,EAAO,GAAImiD,GAAa7H,IAEzC/hD,EAAQ6pD,EAAa9H,IAAU4H,GAE/B3pD,EAAQvZ,KAAKsjE,OAAO55D,IAASw5D,EAG/B,IAAItjE,EAAS07D,GAASA,EAAM0G,KAC5B,OAAIpiE,EACKI,KAAKujE,eAAe,WAAY,CAAEvB,KAAMpiE,GAAU2Z,GAElDA,EASX,SAASiqD,GAAejjE,GACtB,OAAOi8D,GAAax8D,KAAKsL,SAAU,UAAW/K,GAAI,IAAS6xD,EAK7D,SAASqR,GAAeC,EAAQC,GAC9B,OAAI56D,MAAM8nB,QAAQ6yC,IACmB,IAA5BA,EAAO1vD,QAAQ2vD,GAEfD,IAAWC,EAStB,SAASC,GACPC,EACAnjE,EACAojE,EACAC,EACAC,GAEA,IAAIC,EAAgB/Q,EAAOQ,SAAShzD,IAAQojE,EAC5C,OAAIE,GAAkBD,IAAiB7Q,EAAOQ,SAAShzD,GAC9C+iE,GAAcO,EAAgBD,GAC5BE,EACFR,GAAcQ,EAAeJ,GAC3BE,EACFtS,EAAUsS,KAAkBrjE,OAD9B,EAUT,SAASwjE,GACPnyD,EACAjI,EACA3L,EACAgmE,EACAC,GAEA,GAAIjmE,EACF,GAAKC,EAASD,GAKP,CAIL,IAAI4iE,EAHAh4D,MAAM8nB,QAAQ1yB,KAChBA,EAAQ+H,EAAS/H,IAGnB,IAAIkmE,EAAO,SAAW3jE,GACpB,GACU,UAARA,GACQ,UAARA,GACAqwD,EAAoBrwD,GAEpBqgE,EAAOhvD,MACF,CACL,IAAIxQ,EAAOwQ,EAAK6uD,OAAS7uD,EAAK6uD,MAAMr/D,KACpCw/D,EAAOoD,GAAUjR,EAAOc,YAAYlqD,EAAKvI,EAAMb,GAC3CqR,EAAKuyD,WAAavyD,EAAKuyD,SAAW,IAClCvyD,EAAK6uD,QAAU7uD,EAAK6uD,MAAQ,IAElC,IAAI2D,EAAejT,EAAS5wD,GACxB8jE,EAAgB/S,EAAU/wD,GAC9B,KAAM6jE,KAAgBxD,MAAWyD,KAAiBzD,KAChDA,EAAKrgE,GAAOvC,EAAMuC,GAEd0jE,GAAQ,CACV,IAAI9vD,EAAKvC,EAAKuC,KAAOvC,EAAKuC,GAAK,IAC/BA,EAAI,UAAY5T,GAAQ,SAAU+jE,GAChCtmE,EAAMuC,GAAO+jE,KAMrB,IAAK,IAAI/jE,KAAOvC,EAAOkmE,EAAM3jE,QAGjC,OAAOqR,EAQT,SAAS2yD,GACP7hE,EACA8hE,GAEA,IAAIxT,EAASnxD,KAAK4kE,eAAiB5kE,KAAK4kE,aAAe,IACnDviC,EAAO8uB,EAAOtuD,GAGlB,OAAIw/B,IAASsiC,IAIbtiC,EAAO8uB,EAAOtuD,GAAS7C,KAAKsL,SAASnB,gBAAgBtH,GAAO3D,KAC1Dc,KAAK6kE,aACL,KACA7kE,MAEF8kE,GAAWziC,EAAO,aAAex/B,GAAQ,IARhCw/B,EAgBX,SAAS0iC,GACP1iC,EACAx/B,EACAnC,GAGA,OADAokE,GAAWziC,EAAO,WAAax/B,GAASnC,EAAO,IAAMA,EAAO,KAAM,GAC3D2hC,EAGT,SAASyiC,GACPziC,EACA3hC,EACAo3D,GAEA,GAAI/uD,MAAM8nB,QAAQwR,GAChB,IAAK,IAAI/zB,EAAI,EAAGA,EAAI+zB,EAAK//B,OAAQgM,IAC3B+zB,EAAK/zB,IAAyB,kBAAZ+zB,EAAK/zB,IACzB02D,GAAe3iC,EAAK/zB,GAAK5N,EAAM,IAAM4N,EAAIwpD,QAI7CkN,GAAe3iC,EAAM3hC,EAAKo3D,GAI9B,SAASkN,GAAgB7uD,EAAMzV,EAAKo3D,GAClC3hD,EAAKuhD,UAAW,EAChBvhD,EAAKzV,IAAMA,EACXyV,EAAK2hD,OAASA,EAKhB,SAASmN,GAAqBlzD,EAAM5T,GAClC,GAAIA,EACF,GAAKqyD,EAAcryD,GAKZ,CACL,IAAImW,EAAKvC,EAAKuC,GAAKvC,EAAKuC,GAAK0M,EAAO,GAAIjP,EAAKuC,IAAM,GACnD,IAAK,IAAI5T,KAAOvC,EAAO,CACrB,IAAIwN,EAAW2I,EAAG5T,GACdwkE,EAAO/mE,EAAMuC,GACjB4T,EAAG5T,GAAOiL,EAAW,GAAGjO,OAAOiO,EAAUu5D,GAAQA,QAIvD,OAAOnzD,EAKT,SAASozD,GACPpF,EACA7N,EAEAkT,EACAC,GAEAnT,EAAMA,GAAO,CAAEsQ,SAAU4C,GACzB,IAAK,IAAI92D,EAAI,EAAGA,EAAIyxD,EAAIz9D,OAAQgM,IAAK,CACnC,IAAI0zD,EAAOjC,EAAIzxD,GACXvF,MAAM8nB,QAAQmxC,GAChBmD,GAAmBnD,EAAM9P,EAAKkT,GACrBpD,IAELA,EAAKe,QACPf,EAAKx1D,GAAGu2D,OAAQ,GAElB7Q,EAAI8P,EAAKthE,KAAOshE,EAAKx1D,IAMzB,OAHI64D,IACF,EAAM5C,KAAO4C,GAERnT,EAKT,SAASoT,GAAiBC,EAAS71D,GACjC,IAAK,IAAIpB,EAAI,EAAGA,EAAIoB,EAAOpN,OAAQgM,GAAK,EAAG,CACzC,IAAI5N,EAAMgP,EAAOpB,GACE,kBAAR5N,GAAoBA,IAC7B6kE,EAAQ71D,EAAOpB,IAAMoB,EAAOpB,EAAI,IASpC,OAAOi3D,EAMT,SAASC,GAAiBrnE,EAAO2mC,GAC/B,MAAwB,kBAAV3mC,EAAqB2mC,EAAS3mC,EAAQA,EAKtD,SAASsnE,GAAsB7lE,GAC7BA,EAAO8lE,GAAKX,GACZnlE,EAAO+lE,GAAK/U,EACZhxD,EAAOgmE,GAAKvlE,EACZT,EAAOimE,GAAK7C,GACZpjE,EAAOkjD,GAAKmgB,GACZrjE,EAAOkmE,GAAKzT,EACZzyD,EAAOmmE,GAAKlT,EACZjzD,EAAOomE,GAAKtB,GACZ9kE,EAAOqmE,GAAKzC,GACZ5jE,EAAO6gD,GAAKmjB,GACZhkE,EAAOsmE,GAAKhC,GACZtkE,EAAOumE,GAAKhO,GACZv4D,EAAOwmE,GAAKlO,GACZt4D,EAAOymE,GAAKlB,GACZvlE,EAAO0mE,GAAKrB,GACZrlE,EAAO2mE,GAAKjB,GACZ1lE,EAAO4mE,GAAKhB,GAKd,SAASiB,GACP10D,EACAupD,EACAzjC,EACA7sB,EACA+qD,GAEA,IAKI2Q,EALAC,EAAS3mE,KAETwD,EAAUuyD,EAAKvyD,QAIf0tD,EAAOlmD,EAAQ,SACjB07D,EAAYhnE,OAAOgG,OAAOsF,GAE1B07D,EAAUE,UAAY57D,IAKtB07D,EAAY17D,EAEZA,EAASA,EAAO47D,WAElB,IAAIC,EAAa1W,EAAO3sD,EAAQkH,WAC5Bo8D,GAAqBD,EAEzB7mE,KAAK+R,KAAOA,EACZ/R,KAAKs7D,MAAQA,EACbt7D,KAAK63B,SAAWA,EAChB73B,KAAKgL,OAASA,EACdhL,KAAK+mE,UAAYh1D,EAAKuC,IAAMy7C,EAC5B/vD,KAAKgnE,WAAarF,GAAcn+D,EAAQ+3D,OAAQvwD,GAChDhL,KAAK+hE,MAAQ,WAOX,OANK4E,EAAOrD,QACVnB,GACEpwD,EAAKk1D,YACLN,EAAOrD,OAASxB,GAAajqC,EAAU7sB,IAGpC27D,EAAOrD,QAGhB5jE,OAAO/B,eAAeqC,KAAM,cAAe,CACzC6D,YAAY,EACZjD,IAAK,WACH,OAAOuhE,GAAqBpwD,EAAKk1D,YAAajnE,KAAK+hE,YAKnD8E,IAEF7mE,KAAKsL,SAAW9H,EAEhBxD,KAAKsjE,OAAStjE,KAAK+hE,QACnB/hE,KAAKqjE,aAAelB,GAAqBpwD,EAAKk1D,YAAajnE,KAAKsjE,SAG9D9/D,EAAQoH,SACV5K,KAAKknE,GAAK,SAAUziE,EAAGC,EAAGwP,EAAGrG,GAC3B,IAAIwqD,EAAQ7iD,GAAckxD,EAAWjiE,EAAGC,EAAGwP,EAAGrG,EAAGi5D,GAKjD,OAJIzO,IAAUtvD,MAAM8nB,QAAQwnC,KAC1BA,EAAMd,UAAY/zD,EAAQoH,SAC1BytD,EAAMhB,UAAYrsD,GAEbqtD,GAGTr4D,KAAKknE,GAAK,SAAUziE,EAAGC,EAAGwP,EAAGrG,GAAK,OAAO2H,GAAckxD,EAAWjiE,EAAGC,EAAGwP,EAAGrG,EAAGi5D,IAMlF,SAASK,GACPpR,EACAgH,EACAhrD,EACA20D,EACA7uC,GAEA,IAAIr0B,EAAUuyD,EAAKvyD,QACf83D,EAAQ,GACRwB,EAAct5D,EAAQ83D,MAC1B,GAAIpL,EAAM4M,GACR,IAAK,IAAIp8D,KAAOo8D,EACdxB,EAAM56D,GAAOm8D,GAAan8D,EAAKo8D,EAAaC,GAAahN,QAGvDG,EAAMn+C,EAAK6uD,QAAUwG,GAAW9L,EAAOvpD,EAAK6uD,OAC5C1Q,EAAMn+C,EAAKupD,QAAU8L,GAAW9L,EAAOvpD,EAAKupD,OAGlD,IAAI+L,EAAgB,IAAIZ,GACtB10D,EACAupD,EACAzjC,EACA6uC,EACA3Q,GAGEsC,EAAQ70D,EAAQ0G,OAAOhL,KAAK,KAAMmoE,EAAcH,GAAIG,GAExD,GAAIhP,aAAiBrB,GACnB,OAAOsQ,GAA6BjP,EAAOtmD,EAAMs1D,EAAcr8D,OAAQxH,EAAS6jE,GAC3E,GAAIt+D,MAAM8nB,QAAQwnC,GAAQ,CAG/B,IAFA,IAAIkP,EAASrG,GAAkB7I,IAAU,GACrCnG,EAAM,IAAInpD,MAAMw+D,EAAOjlE,QAClBgM,EAAI,EAAGA,EAAIi5D,EAAOjlE,OAAQgM,IACjC4jD,EAAI5jD,GAAKg5D,GAA6BC,EAAOj5D,GAAIyD,EAAMs1D,EAAcr8D,OAAQxH,EAAS6jE,GAExF,OAAOnV,GAIX,SAASoV,GAA8BjP,EAAOtmD,EAAM20D,EAAWljE,EAAS6jE,GAItE,IAAIjnD,EAAQg4C,GAAWC,GASvB,OARAj4C,EAAMi3C,UAAYqP,EAClBtmD,EAAMk3C,UAAY9zD,EAIduO,EAAKiwD,QACN5hD,EAAMrO,OAASqO,EAAMrO,KAAO,KAAKiwD,KAAOjwD,EAAKiwD,MAEzC5hD,EAGT,SAASgnD,GAAYt7B,EAAID,GACvB,IAAK,IAAInrC,KAAOmrC,EACdC,EAAGwlB,EAAS5wD,IAAQmrC,EAAKnrC,GA7D7B+kE,GAAqBgB,GAAwBxoE,WA0E7C,IAAIupE,GAAsB,CACxB7lC,KAAM,SAAe02B,EAAOoP,GAC1B,GACEpP,EAAMb,oBACLa,EAAMb,kBAAkBkQ,cACzBrP,EAAMtmD,KAAK41D,UACX,CAEA,IAAIC,EAAcvP,EAClBmP,GAAoBK,SAASD,EAAaA,OACrC,CACL,IAAIrwD,EAAQ8gD,EAAMb,kBAAoBsQ,GACpCzP,EACA0P,IAEFxwD,EAAMywD,OAAOP,EAAYpP,EAAMpB,SAAMz4D,EAAWipE,KAIpDI,SAAU,SAAmBI,EAAU5P,GACrC,IAAI70D,EAAU60D,EAAMnB,iBAChB3/C,EAAQ8gD,EAAMb,kBAAoByQ,EAASzQ,kBAC/C0Q,GACE3wD,EACA/T,EAAQu5D,UACRv5D,EAAQujE,UACR1O,EACA70D,EAAQq0B,WAIZjlB,OAAQ,SAAiBylD,GACvB,IAAIxtD,EAAUwtD,EAAMxtD,QAChB2sD,EAAoBa,EAAMb,kBACzBA,EAAkB2Q,aACrB3Q,EAAkB2Q,YAAa,EAC/BC,GAAS5Q,EAAmB,YAE1Ba,EAAMtmD,KAAK41D,YACT98D,EAAQs9D,WAMVE,GAAwB7Q,GAExB8Q,GAAuB9Q,GAAmB,KAKhD+Q,QAAS,SAAkBlQ,GACzB,IAAIb,EAAoBa,EAAMb,kBACzBA,EAAkBkQ,eAChBrP,EAAMtmD,KAAK41D,UAGda,GAAyBhR,GAAmB,GAF5CA,EAAkBiR,cAQtBC,GAAehpE,OAAOnC,KAAKiqE,IAE/B,SAASmB,GACP5S,EACAhkD,EACAlH,EACAgtB,EACA/tB,GAEA,IAAImmD,EAAQ8F,GAAZ,CAIA,IAAI6S,EAAW/9D,EAAQS,SAAS6wD,MAShC,GANI/9D,EAAS23D,KACXA,EAAO6S,EAAS5nD,OAAO+0C,IAKL,oBAATA,EAAX,CAQA,IAAIoB,EACJ,GAAIlH,EAAQ8F,EAAK8S,OACf1R,EAAepB,EACfA,EAAO+S,GAAsB3R,EAAcyR,QAC9BpqE,IAATu3D,GAIF,OAAOgT,GACL5R,EACAplD,EACAlH,EACAgtB,EACA/tB,GAKNiI,EAAOA,GAAQ,GAIfi3D,GAA0BjT,GAGtB7F,EAAMn+C,EAAKk3D,QACbC,GAAenT,EAAKvyD,QAASuO,GAI/B,IAAIgrD,EAAY4D,GAA0B5uD,EAAMgkD,EAAMjsD,GAGtD,GAAIqmD,EAAO4F,EAAKvyD,QAAQmH,YACtB,OAAOw8D,GAA0BpR,EAAMgH,EAAWhrD,EAAMlH,EAASgtB,GAKnE,IAAIkvC,EAAYh1D,EAAKuC,GAKrB,GAFAvC,EAAKuC,GAAKvC,EAAKo3D,SAEXhZ,EAAO4F,EAAKvyD,QAAQ4lE,UAAW,CAKjC,IAAIpH,EAAOjwD,EAAKiwD,KAChBjwD,EAAO,GACHiwD,IACFjwD,EAAKiwD,KAAOA,GAKhBqH,GAAsBt3D,GAGtB,IAAIrI,EAAOqsD,EAAKvyD,QAAQkG,MAAQI,EAC5BuuD,EAAQ,IAAIrB,GACb,iBAAoBjB,EAAQ,KAAKrsD,EAAQ,IAAMA,EAAQ,IACxDqI,OAAMvT,OAAWA,OAAWA,EAAWqM,EACvC,CAAEkrD,KAAMA,EAAMgH,UAAWA,EAAWgK,UAAWA,EAAWj9D,IAAKA,EAAK+tB,SAAUA,GAC9Es/B,GAGF,OAAOkB,IAGT,SAASyP,GACPzP,EACArtD,GAEA,IAAIxH,EAAU,CACZ8lE,cAAc,EACdC,aAAclR,EACdrtD,OAAQA,GAGNw+D,EAAiBnR,EAAMtmD,KAAKy3D,eAKhC,OAJItZ,EAAMsZ,KACRhmE,EAAQ0G,OAASs/D,EAAet/D,OAChC1G,EAAQ2G,gBAAkBq/D,EAAer/D,iBAEpC,IAAIkuD,EAAMnB,iBAAiBnB,KAAKvyD,GAGzC,SAAS6lE,GAAuBt3D,GAE9B,IADA,IAAIopD,EAAQppD,EAAKtH,OAASsH,EAAKtH,KAAO,IAC7B6D,EAAI,EAAGA,EAAIo6D,GAAapmE,OAAQgM,IAAK,CAC5C,IAAI5N,EAAMgoE,GAAap6D,GACnB3C,EAAWwvD,EAAMz6D,GACjB+oE,EAAUjC,GAAoB9mE,GAC9BiL,IAAa89D,GAAa99D,GAAYA,EAAS+9D,UACjDvO,EAAMz6D,GAAOiL,EAAWg+D,GAAYF,EAAS99D,GAAY89D,IAK/D,SAASE,GAAaC,EAAIC,GACxB,IAAIh6D,EAAS,SAAUpL,EAAGC,GAExBklE,EAAGnlE,EAAGC,GACNmlE,EAAGplE,EAAGC,IAGR,OADAmL,EAAO65D,SAAU,EACV75D,EAKT,SAASq5D,GAAgB1lE,EAASuO,GAChC,IAAIirD,EAAQx5D,EAAQylE,OAASzlE,EAAQylE,MAAMjM,MAAS,QAChDr/C,EAASna,EAAQylE,OAASzlE,EAAQylE,MAAMtrD,OAAU,SACpD5L,EAAK6uD,QAAU7uD,EAAK6uD,MAAQ,KAAK5D,GAAQjrD,EAAKk3D,MAAM9qE,MACtD,IAAImW,EAAKvC,EAAKuC,KAAOvC,EAAKuC,GAAK,IAC3B3I,EAAW2I,EAAGqJ,GACdxJ,EAAWpC,EAAKk3D,MAAM90D,SACtB+7C,EAAMvkD,IAEN5C,MAAM8nB,QAAQllB,IACsB,IAAhCA,EAASqI,QAAQG,GACjBxI,IAAawI,KAEjBG,EAAGqJ,GAAS,CAACxJ,GAAUzW,OAAOiO,IAGhC2I,EAAGqJ,GAASxJ,EAMhB,IAAI21D,GAAmB,EACnBC,GAAmB,EAIvB,SAASv0D,GACP3K,EACAf,EACAiI,EACA8lB,EACAmyC,EACAC,GAUA,OARIlhE,MAAM8nB,QAAQ9e,IAASs+C,EAAYt+C,MACrCi4D,EAAoBnyC,EACpBA,EAAW9lB,EACXA,OAAOvT,GAEL2xD,EAAO8Z,KACTD,EAAoBD,IAEfG,GAAer/D,EAASf,EAAKiI,EAAM8lB,EAAUmyC,GAGtD,SAASE,GACPr/D,EACAf,EACAiI,EACA8lB,EACAmyC,GAEA,GAAI9Z,EAAMn+C,IAASm+C,EAAM,EAAO4I,QAM9B,OAAOZ,KAMT,GAHIhI,EAAMn+C,IAASm+C,EAAMn+C,EAAKo4D,MAC5BrgE,EAAMiI,EAAKo4D,KAERrgE,EAEH,OAAOouD,KA2BT,IAAIG,EAAOjB,EAELrB,GAdFhtD,MAAM8nB,QAAQgH,IACO,oBAAhBA,EAAS,KAEhB9lB,EAAOA,GAAQ,GACfA,EAAKk1D,YAAc,CAAE1J,QAAS1lC,EAAS,IACvCA,EAASv1B,OAAS,GAEhB0nE,IAAsBD,GACxBlyC,EAAWqpC,GAAkBrpC,GACpBmyC,IAAsBF,KAC/BjyC,EAAWopC,GAAwBppC,IAGlB,kBAAR/tB,IAETstD,EAAMvsD,EAAQC,QAAUD,EAAQC,OAAOssD,IAAOlE,EAAOY,gBAAgBhqD,GASnEuuD,EAREnF,EAAOS,cAAc7pD,GAQf,IAAIktD,GACV9D,EAAOa,qBAAqBjqD,GAAMiI,EAAM8lB,OACxCr5B,OAAWA,EAAWqM,GAEbkH,GAASA,EAAKq4D,MAAQla,EAAM6F,EAAOyG,GAAa3xD,EAAQS,SAAU,aAAcxB,IAOnF,IAAIktD,GACVltD,EAAKiI,EAAM8lB,OACXr5B,OAAWA,EAAWqM,GAPhB89D,GAAgB5S,EAAMhkD,EAAMlH,EAASgtB,EAAU/tB,IAYzDuuD,EAAQsQ,GAAgB7+D,EAAKiI,EAAMlH,EAASgtB,GAE9C,OAAI9uB,MAAM8nB,QAAQwnC,GACTA,EACEnI,EAAMmI,IACXnI,EAAMkH,IAAOiT,GAAQhS,EAAOjB,GAC5BlH,EAAMn+C,IAASu4D,GAAqBv4D,GACjCsmD,GAEAH,KAIX,SAASmS,GAAShS,EAAOjB,EAAImT,GAO3B,GANAlS,EAAMjB,GAAKA,EACO,kBAAdiB,EAAMvuD,MAERstD,OAAK54D,EACL+rE,GAAQ,GAENra,EAAMmI,EAAMxgC,UACd,IAAK,IAAIvpB,EAAI,EAAG4d,EAAImsC,EAAMxgC,SAASv1B,OAAQgM,EAAI4d,EAAG5d,IAAK,CACrD,IAAIiJ,EAAQ8gD,EAAMxgC,SAASvpB,GACvB4hD,EAAM34C,EAAMzN,OACdmmD,EAAQ14C,EAAM6/C,KAAQjH,EAAOoa,IAAwB,QAAdhzD,EAAMzN,MAC7CugE,GAAQ9yD,EAAO6/C,EAAImT,IAS3B,SAASD,GAAsBv4D,GACzB3T,EAAS2T,EAAK/J,QAChBq3D,GAASttD,EAAK/J,OAEZ5J,EAAS2T,EAAKy4D,QAChBnL,GAASttD,EAAKy4D,OAMlB,SAASC,GAAY3P,GACnBA,EAAG4P,OAAS,KACZ5P,EAAG8J,aAAe,KAClB,IAAIphE,EAAUs3D,EAAGxvD,SACbq/D,EAAc7P,EAAGhwD,OAAStH,EAAQ+lE,aAClClC,EAAgBsD,GAAeA,EAAY9/D,QAC/CiwD,EAAGwI,OAASxB,GAAat+D,EAAQonE,gBAAiBvD,GAClDvM,EAAGuI,aAAetT,EAKlB+K,EAAGoM,GAAK,SAAUziE,EAAGC,EAAGwP,EAAGrG,GAAK,OAAO2H,GAAcslD,EAAIr2D,EAAGC,EAAGwP,EAAGrG,GAAG,IAGrEitD,EAAGyI,eAAiB,SAAU9+D,EAAGC,EAAGwP,EAAGrG,GAAK,OAAO2H,GAAcslD,EAAIr2D,EAAGC,EAAGwP,EAAGrG,GAAG,IAIjF,IAAIg9D,EAAaF,GAAeA,EAAY54D,KAW1C+nD,GAAkBgB,EAAI,SAAU+P,GAAcA,EAAWjK,OAAS7Q,EAAa,MAAM,GACrF+J,GAAkBgB,EAAI,aAAct3D,EAAQsnE,kBAAoB/a,EAAa,MAAM,GAIvF,IAkQInwD,GAlQAmrE,GAA2B,KAE/B,SAASC,GAAaC,GAEpBxF,GAAqBwF,EAAIhtE,WAEzBgtE,EAAIhtE,UAAUitE,UAAY,SAAU1+D,GAClC,OAAO4hD,GAAS5hD,EAAIxM,OAGtBirE,EAAIhtE,UAAUktE,QAAU,WACtB,IAiBI9S,EAjBAyC,EAAK96D,KACLorE,EAAMtQ,EAAGxvD,SACTpB,EAASkhE,EAAIlhE,OACbq/D,EAAe6B,EAAI7B,aAEnBA,IACFzO,EAAGuI,aAAelB,GAChBoH,EAAax3D,KAAKk1D,YAClBnM,EAAGwI,OACHxI,EAAGuI,eAMPvI,EAAGhwD,OAASy+D,EAGZ,IAIEwB,GAA2BjQ,EAC3BzC,EAAQnuD,EAAOhL,KAAK47D,EAAG+J,aAAc/J,EAAGyI,gBACxC,MAAOvgE,IACP46D,GAAY56D,GAAG83D,EAAI,UAYjBzC,EAAQyC,EAAG4P,OAEb,QACAK,GAA2B,KAmB7B,OAhBIhiE,MAAM8nB,QAAQwnC,IAA2B,IAAjBA,EAAM/1D,SAChC+1D,EAAQA,EAAM,IAGVA,aAAiBrB,KAQrBqB,EAAQH,MAGVG,EAAMrtD,OAASu+D,EACRlR,GAMX,SAASgT,GAAYC,EAAMC,GAOzB,OALED,EAAKE,YACJvV,IAA0C,WAA7BqV,EAAK/hE,OAAOkiE,gBAE1BH,EAAOA,EAAK/N,SAEPn/D,EAASktE,GACZC,EAAKvqD,OAAOsqD,GACZA,EAGN,SAASvC,GACPhoD,EACAhP,EACAlH,EACAgtB,EACA/tB,GAEA,IAAIqM,EAAO+hD,KAGX,OAFA/hD,EAAKghD,aAAep2C,EACpB5K,EAAK4hD,UAAY,CAAEhmD,KAAMA,EAAMlH,QAASA,EAASgtB,SAAUA,EAAU/tB,IAAKA,GACnEqM,EAGT,SAAS2yD,GACP/nD,EACA6nD,GAEA,GAAIzY,EAAOpvC,EAAQ9jB,QAAUizD,EAAMnvC,EAAQ2qD,WACzC,OAAO3qD,EAAQ2qD,UAGjB,GAAIxb,EAAMnvC,EAAQ4qD,UAChB,OAAO5qD,EAAQ4qD,SAGjB,IAAIC,EAAQb,GAMZ,GALIa,GAAS1b,EAAMnvC,EAAQ8qD,UAA8C,IAAnC9qD,EAAQ8qD,OAAO73D,QAAQ43D,IAE3D7qD,EAAQ8qD,OAAOz3D,KAAKw3D,GAGlBzb,EAAOpvC,EAAQ+qD,UAAY5b,EAAMnvC,EAAQgrD,aAC3C,OAAOhrD,EAAQgrD,YAGjB,GAAIH,IAAU1b,EAAMnvC,EAAQ8qD,QAAS,CACnC,IAAIA,EAAS9qD,EAAQ8qD,OAAS,CAACD,GAC3BI,GAAO,EACPC,EAAe,KACfC,EAAe,KAElB,EAAQC,IAAI,kBAAkB,WAAc,OAAOl5D,EAAO44D,EAAQD,MAEnE,IAAIQ,EAAc,SAAUC,GAC1B,IAAK,IAAI/9D,EAAI,EAAG4d,EAAI2/C,EAAOvpE,OAAQgM,EAAI4d,EAAG5d,IACvCu9D,EAAOv9D,GAAIg+D,eAGVD,IACFR,EAAOvpE,OAAS,EACK,OAAjB2pE,IACFz3C,aAAay3C,GACbA,EAAe,MAEI,OAAjBC,IACF13C,aAAa03C,GACbA,EAAe,QAKjB1zC,EAAUs6B,GAAK,SAAUZ,GAE3BnxC,EAAQ4qD,SAAWN,GAAWnZ,EAAK0W,GAG9BoD,EAGHH,EAAOvpE,OAAS,EAFhB8pE,GAAY,MAMZ3zC,EAASq6B,GAAK,SAAUyZ,GAKtBrc,EAAMnvC,EAAQ2qD,aAChB3qD,EAAQ9jB,OAAQ,EAChBmvE,GAAY,OAIZla,EAAMnxC,EAAQyX,EAASC,GA+C3B,OA7CIr6B,EAAS8zD,KACPxB,EAAUwB,GAERjC,EAAQlvC,EAAQ4qD,WAClBzZ,EAAI/sD,KAAKqzB,EAASC,GAEXi4B,EAAUwB,EAAIsa,aACvBta,EAAIsa,UAAUrnE,KAAKqzB,EAASC,GAExBy3B,EAAMgC,EAAIj1D,SACZ8jB,EAAQ2qD,UAAYL,GAAWnZ,EAAIj1D,MAAO2rE,IAGxC1Y,EAAMgC,EAAI4Z,WACZ/qD,EAAQgrD,YAAcV,GAAWnZ,EAAI4Z,QAASlD,GAC5B,IAAd1W,EAAIn+B,MACNhT,EAAQ+qD,SAAU,EAElBG,EAAex4C,YAAW,WACxBw4C,EAAe,KACXhc,EAAQlvC,EAAQ4qD,WAAa1b,EAAQlvC,EAAQ9jB,SAC/C8jB,EAAQ+qD,SAAU,EAClBM,GAAY,MAEbla,EAAIn+B,OAAS,MAIhBm8B,EAAMgC,EAAIn/B,WACZm5C,EAAez4C,YAAW,WACxBy4C,EAAe,KACXjc,EAAQlvC,EAAQ4qD,WAClBlzC,EAGM,QAGPy5B,EAAIn/B,YAKbi5C,GAAO,EAEAjrD,EAAQ+qD,QACX/qD,EAAQgrD,YACRhrD,EAAQ4qD,UAMhB,SAAS3T,GAAoB7hD,GAC3B,OAAOA,EAAKyhD,WAAazhD,EAAKghD,aAKhC,SAASsV,GAAwB50C,GAC/B,GAAI9uB,MAAM8nB,QAAQgH,GAChB,IAAK,IAAIvpB,EAAI,EAAGA,EAAIupB,EAASv1B,OAAQgM,IAAK,CACxC,IAAI4F,EAAI2jB,EAASvpB,GACjB,GAAI4hD,EAAMh8C,KAAOg8C,EAAMh8C,EAAEgjD,mBAAqBc,GAAmB9jD,IAC/D,OAAOA,GAUf,SAASw4D,GAAY5R,GACnBA,EAAG6R,QAAUjtE,OAAOgG,OAAO,MAC3Bo1D,EAAG8R,eAAgB,EAEnB,IAAI7F,EAAYjM,EAAGxvD,SAASw/D,iBACxB/D,GACF8F,GAAyB/R,EAAIiM,GAMjC,SAAS57D,GAAKwS,EAAOnR,GACnB5M,GAAOusE,IAAIxuD,EAAOnR,GAGpB,SAASsgE,GAAUnvD,EAAOnR,GACxB5M,GAAOmtE,KAAKpvD,EAAOnR,GAGrB,SAAS6zD,GAAmB1iD,EAAOnR,GACjC,IAAIwgE,EAAUptE,GACd,OAAO,SAASqtE,IACd,IAAI/a,EAAM1lD,EAAG6E,MAAM,KAAMhP,WACb,OAAR6vD,GACF8a,EAAQD,KAAKpvD,EAAOsvD,IAK1B,SAASJ,GACP/R,EACAiM,EACAmG,GAEAttE,GAASk7D,EACToF,GAAgB6G,EAAWmG,GAAgB,GAAI/hE,GAAK2hE,GAAUzM,GAAmBvF,GACjFl7D,QAASpB,EAGX,SAAS2uE,GAAalC,GACpB,IAAImC,EAAS,SACbnC,EAAIhtE,UAAUkuE,IAAM,SAAUxuD,EAAOnR,GACnC,IAAIsuD,EAAK96D,KACT,GAAI+I,MAAM8nB,QAAQlT,GAChB,IAAK,IAAIrP,EAAI,EAAG4d,EAAIvO,EAAMrb,OAAQgM,EAAI4d,EAAG5d,IACvCwsD,EAAGqR,IAAIxuD,EAAMrP,GAAI9B,QAGlBsuD,EAAG6R,QAAQhvD,KAAWm9C,EAAG6R,QAAQhvD,GAAS,KAAKvJ,KAAK5H,GAGjD4gE,EAAOltE,KAAKyd,KACdm9C,EAAG8R,eAAgB,GAGvB,OAAO9R,GAGTmQ,EAAIhtE,UAAUovE,MAAQ,SAAU1vD,EAAOnR,GACrC,IAAIsuD,EAAK96D,KACT,SAASsU,IACPwmD,EAAGiS,KAAKpvD,EAAOrJ,GACf9H,EAAG6E,MAAMypD,EAAIz4D,WAIf,OAFAiS,EAAG9H,GAAKA,EACRsuD,EAAGqR,IAAIxuD,EAAOrJ,GACPwmD,GAGTmQ,EAAIhtE,UAAU8uE,KAAO,SAAUpvD,EAAOnR,GACpC,IAAIsuD,EAAK96D,KAET,IAAKqC,UAAUC,OAEb,OADAw4D,EAAG6R,QAAUjtE,OAAOgG,OAAO,MACpBo1D,EAGT,GAAI/xD,MAAM8nB,QAAQlT,GAAQ,CACxB,IAAK,IAAI2vD,EAAM,EAAGphD,EAAIvO,EAAMrb,OAAQgrE,EAAMphD,EAAGohD,IAC3CxS,EAAGiS,KAAKpvD,EAAM2vD,GAAM9gE,GAEtB,OAAOsuD,EAGT,IASIoE,EATAqO,EAAMzS,EAAG6R,QAAQhvD,GACrB,IAAK4vD,EACH,OAAOzS,EAET,IAAKtuD,EAEH,OADAsuD,EAAG6R,QAAQhvD,GAAS,KACbm9C,EAIT,IAAIxsD,EAAIi/D,EAAIjrE,OACZ,MAAOgM,IAEL,GADA4wD,EAAKqO,EAAIj/D,GACL4wD,IAAO1yD,GAAM0yD,EAAG1yD,KAAOA,EAAI,CAC7B+gE,EAAI1xD,OAAOvN,EAAG,GACd,MAGJ,OAAOwsD,GAGTmQ,EAAIhtE,UAAUuvE,MAAQ,SAAU7vD,GAC9B,IAAIm9C,EAAK96D,KAaLutE,EAAMzS,EAAG6R,QAAQhvD,GACrB,GAAI4vD,EAAK,CACPA,EAAMA,EAAIjrE,OAAS,EAAIyvD,EAAQwb,GAAOA,EAGtC,IAFA,IAAI94D,EAAOs9C,EAAQ1vD,UAAW,GAC1By7D,EAAO,sBAAyBngD,EAAQ,IACnCrP,EAAI,EAAG4d,EAAIqhD,EAAIjrE,OAAQgM,EAAI4d,EAAG5d,IACrC6vD,GAAwBoP,EAAIj/D,GAAIwsD,EAAIrmD,EAAMqmD,EAAIgD,GAGlD,OAAOhD,GAMX,IAAIiN,GAAiB,KAGrB,SAAS0F,GAAkB3S,GACzB,IAAI4S,EAAqB3F,GAEzB,OADAA,GAAiBjN,EACV,WACLiN,GAAiB2F,GAIrB,SAASC,GAAe7S,GACtB,IAAIt3D,EAAUs3D,EAAGxvD,SAGbN,EAASxH,EAAQwH,OACrB,GAAIA,IAAWxH,EAAQ4lE,SAAU,CAC/B,MAAOp+D,EAAOM,SAAS89D,UAAYp+D,EAAOgzD,QACxChzD,EAASA,EAAOgzD,QAElBhzD,EAAO4iE,UAAUx5D,KAAK0mD,GAGxBA,EAAGkD,QAAUhzD,EACb8vD,EAAGzvD,MAAQL,EAASA,EAAOK,MAAQyvD,EAEnCA,EAAG8S,UAAY,GACf9S,EAAG+S,MAAQ,GAEX/S,EAAGgT,SAAW,KACdhT,EAAGiT,UAAY,KACfjT,EAAGkT,iBAAkB,EACrBlT,EAAGqN,YAAa,EAChBrN,EAAG4M,cAAe,EAClB5M,EAAGmT,mBAAoB,EAGzB,SAASC,GAAgBjD,GACvBA,EAAIhtE,UAAUkwE,QAAU,SAAU9V,EAAOoP,GACvC,IAAI3M,EAAK96D,KACLouE,EAAStT,EAAGuT,IACZC,EAAYxT,EAAG4P,OACf6D,EAAwBd,GAAkB3S,GAC9CA,EAAG4P,OAASrS,EAQVyC,EAAGuT,IALAC,EAKMxT,EAAG0T,UAAUF,EAAWjW,GAHxByC,EAAG0T,UAAU1T,EAAGuT,IAAKhW,EAAOoP,GAAW,GAKlD8G,IAEIH,IACFA,EAAOK,QAAU,MAEf3T,EAAGuT,MACLvT,EAAGuT,IAAII,QAAU3T,GAGfA,EAAGhwD,QAAUgwD,EAAGkD,SAAWlD,EAAGhwD,SAAWgwD,EAAGkD,QAAQ0M,SACtD5P,EAAGkD,QAAQqQ,IAAMvT,EAAGuT,MAMxBpD,EAAIhtE,UAAUquE,aAAe,WAC3B,IAAIxR,EAAK96D,KACL86D,EAAGgT,UACLhT,EAAGgT,SAAS92D,UAIhBi0D,EAAIhtE,UAAUwqE,SAAW,WACvB,IAAI3N,EAAK96D,KACT,IAAI86D,EAAGmT,kBAAP,CAGA7F,GAAStN,EAAI,iBACbA,EAAGmT,mBAAoB,EAEvB,IAAIjjE,EAAS8vD,EAAGkD,SACZhzD,GAAWA,EAAOijE,mBAAsBnT,EAAGxvD,SAAS89D,UACtDn2D,EAAOjI,EAAO4iE,UAAW9S,GAGvBA,EAAGgT,UACLhT,EAAGgT,SAASY,WAEd,IAAIpgE,EAAIwsD,EAAG6T,UAAUrsE,OACrB,MAAOgM,IACLwsD,EAAG6T,UAAUrgE,GAAGogE,WAId5T,EAAG8T,MAAM9V,QACXgC,EAAG8T,MAAM9V,OAAOQ,UAGlBwB,EAAG4M,cAAe,EAElB5M,EAAG0T,UAAU1T,EAAG4P,OAAQ,MAExBtC,GAAStN,EAAI,aAEbA,EAAGiS,OAECjS,EAAGuT,MACLvT,EAAGuT,IAAII,QAAU,MAGf3T,EAAGhwD,SACLgwD,EAAGhwD,OAAOE,OAAS,QAKzB,SAAS6jE,GACP/T,EACAgU,EACArH,GAyBA,IAAIsH,EA2CJ,OAlEAjU,EAAGuT,IAAMS,EACJhU,EAAGxvD,SAASpB,SACf4wD,EAAGxvD,SAASpB,OAASguD,IAmBvBkQ,GAAStN,EAAI,eAsBXiU,EAAkB,WAChBjU,EAAGqT,QAAQrT,EAAGqQ,UAAW1D,IAO7B,IAAIuH,GAAQlU,EAAIiU,EAAiBv7D,EAAM,CACrCsJ,OAAQ,WACFg+C,EAAGqN,aAAerN,EAAG4M,cACvBU,GAAStN,EAAI,mBAGhB,GACH2M,GAAY,EAIK,MAAb3M,EAAGhwD,SACLgwD,EAAGqN,YAAa,EAChBC,GAAStN,EAAI,YAERA,EAGT,SAASoN,GACPpN,EACAiC,EACAgK,EACA4D,EACAsE,GAYA,IAAIC,EAAiBvE,EAAY54D,KAAKk1D,YAClCkI,EAAiBrU,EAAGuI,aACpB+L,KACDF,IAAmBA,EAAe1M,SAClC2M,IAAmBpf,IAAgBof,EAAe3M,SAClD0M,GAAkBpU,EAAGuI,aAAaZ,OAASyM,EAAezM,MAMzD4M,KACFJ,GACAnU,EAAGxvD,SAASs/D,iBACZwE,GAkBF,GAfAtU,EAAGxvD,SAASi+D,aAAeoB,EAC3B7P,EAAGhwD,OAAS6/D,EAER7P,EAAG4P,SACL5P,EAAG4P,OAAO1/D,OAAS2/D,GAErB7P,EAAGxvD,SAASs/D,gBAAkBqE,EAK9BnU,EAAGwU,OAAS3E,EAAY54D,KAAK6uD,OAAS7Q,EACtC+K,EAAGyU,WAAaxI,GAAahX,EAGzBgN,GAAajC,EAAGxvD,SAASgwD,MAAO,CAClClC,IAAgB,GAGhB,IAFA,IAAIkC,EAAQR,EAAG0C,OACXgS,EAAW1U,EAAGxvD,SAASmkE,WAAa,GAC/BnhE,EAAI,EAAGA,EAAIkhE,EAASltE,OAAQgM,IAAK,CACxC,IAAI5N,EAAM8uE,EAASlhE,GACfwuD,EAAchC,EAAGxvD,SAASgwD,MAC9BA,EAAM56D,GAAOm8D,GAAan8D,EAAKo8D,EAAaC,EAAWjC,GAEzD1B,IAAgB,GAEhB0B,EAAGxvD,SAASyxD,UAAYA,EAI1BgK,EAAYA,GAAahX,EACzB,IAAImd,EAAepS,EAAGxvD,SAASw/D,iBAC/BhQ,EAAGxvD,SAASw/D,iBAAmB/D,EAC/B8F,GAAyB/R,EAAIiM,EAAWmG,GAGpCmC,IACFvU,EAAGwI,OAASxB,GAAamN,EAAgBtE,EAAY9/D,SACrDiwD,EAAGwR,gBAQP,SAASoD,GAAkB5U,GACzB,MAAOA,IAAOA,EAAKA,EAAGkD,SACpB,GAAIlD,EAAGiT,UAAa,OAAO,EAE7B,OAAO,EAGT,SAASzF,GAAwBxN,EAAI6U,GACnC,GAAIA,GAEF,GADA7U,EAAGkT,iBAAkB,EACjB0B,GAAiB5U,GACnB,YAEG,GAAIA,EAAGkT,gBACZ,OAEF,GAAIlT,EAAGiT,WAA8B,OAAjBjT,EAAGiT,UAAoB,CACzCjT,EAAGiT,WAAY,EACf,IAAK,IAAIz/D,EAAI,EAAGA,EAAIwsD,EAAG8S,UAAUtrE,OAAQgM,IACvCg6D,GAAuBxN,EAAG8S,UAAUt/D,IAEtC85D,GAAStN,EAAI,cAIjB,SAAS0N,GAA0B1N,EAAI6U,GACrC,KAAIA,IACF7U,EAAGkT,iBAAkB,GACjB0B,GAAiB5U,OAIlBA,EAAGiT,UAAW,CACjBjT,EAAGiT,WAAY,EACf,IAAK,IAAIz/D,EAAI,EAAGA,EAAIwsD,EAAG8S,UAAUtrE,OAAQgM,IACvCk6D,GAAyB1N,EAAG8S,UAAUt/D,IAExC85D,GAAStN,EAAI,gBAIjB,SAASsN,GAAUtN,EAAIrwD,GAErBqsD,KACA,IAAI8Y,EAAW9U,EAAGxvD,SAASb,GACvBqzD,EAAOrzD,EAAO,QAClB,GAAImlE,EACF,IAAK,IAAIthE,EAAI,EAAG0B,EAAI4/D,EAASttE,OAAQgM,EAAI0B,EAAG1B,IAC1C6vD,GAAwByR,EAASthE,GAAIwsD,EAAI,KAAMA,EAAIgD,GAGnDhD,EAAG8R,eACL9R,EAAG0S,MAAM,QAAU/iE,GAErBssD,KAKF,IAEInJ,GAAQ,GACRiiB,GAAoB,GACpBjyE,GAAM,GAENkyE,IAAU,EACVC,IAAW,EACXltE,GAAQ,EAKZ,SAASmtE,KACPntE,GAAQ+qD,GAAMtrD,OAASutE,GAAkBvtE,OAAS,EAClD1E,GAAM,GAINkyE,GAAUC,IAAW,EAQvB,IAAIE,GAAwB,EAGxBC,GAASrgD,KAAKyD,IAQlB,GAAIohC,IAAcO,GAAM,CACtB,IAAI5hC,GAAcpwB,OAAOowB,YAEvBA,IAC2B,oBAApBA,GAAYC,KACnB48C,KAAW9nE,SAASuW,YAAY,SAASwxD,YAMzCD,GAAS,WAAc,OAAO78C,GAAYC,QAO9C,SAAS88C,KAGP,IAAIC,EAAS9vE,EAcb,IAhBA0vE,GAAwBC,KACxBH,IAAW,EAWXniB,GAAMxnD,MAAK,SAAU3B,EAAGC,GAAK,OAAOD,EAAElE,GAAKmE,EAAEnE,MAIxCsC,GAAQ,EAAGA,GAAQ+qD,GAAMtrD,OAAQO,KACpCwtE,EAAUziB,GAAM/qD,IACZwtE,EAAQvzD,QACVuzD,EAAQvzD,SAEVvc,EAAK8vE,EAAQ9vE,GACb3C,GAAI2C,GAAM,KACV8vE,EAAQviB,MAmBV,IAAIwiB,EAAiBT,GAAkB1hE,QACnCoiE,EAAe3iB,GAAMz/C,QAEzB6hE,KAGAQ,GAAmBF,GACnBG,GAAiBF,GAIbjd,IAAYJ,EAAOI,UACrBA,GAASod,KAAK,SAIlB,SAASD,GAAkB7iB,GACzB,IAAIt/C,EAAIs/C,EAAMtrD,OACd,MAAOgM,IAAK,CACV,IAAI+hE,EAAUziB,EAAMt/C,GAChBwsD,EAAKuV,EAAQvV,GACbA,EAAGgT,WAAauC,GAAWvV,EAAGqN,aAAerN,EAAG4M,cAClDU,GAAStN,EAAI,YASnB,SAASuN,GAAyBvN,GAGhCA,EAAGiT,WAAY,EACf8B,GAAkBz7D,KAAK0mD,GAGzB,SAAS0V,GAAoB5iB,GAC3B,IAAK,IAAIt/C,EAAI,EAAGA,EAAIs/C,EAAMtrD,OAAQgM,IAChCs/C,EAAMt/C,GAAGy/D,WAAY,EACrBzF,GAAuB1a,EAAMt/C,IAAI,GASrC,SAASqiE,GAAcN,GACrB,IAAI9vE,EAAK8vE,EAAQ9vE,GACjB,GAAe,MAAX3C,GAAI2C,GAAa,CAEnB,GADA3C,GAAI2C,IAAM,EACLwvE,GAEE,CAGL,IAAIzhE,EAAIs/C,GAAMtrD,OAAS,EACvB,MAAOgM,EAAIzL,IAAS+qD,GAAMt/C,GAAG/N,GAAK8vE,EAAQ9vE,GACxC+N,IAEFs/C,GAAM/xC,OAAOvN,EAAI,EAAG,EAAG+hE,QARvBziB,GAAMx5C,KAAKi8D,GAWRP,KACHA,IAAU,EAMV1hB,GAASgiB,MASf,IAAIQ,GAAQ,EAOR5B,GAAU,SACZlU,EACA+V,EACA3R,EACA17D,EACAstE,GAEA9wE,KAAK86D,GAAKA,EACNgW,IACFhW,EAAGgT,SAAW9tE,MAEhB86D,EAAG6T,UAAUv6D,KAAKpU,MAEdwD,GACFxD,KAAKmd,OAAS3Z,EAAQ2Z,KACtBnd,KAAK+wE,OAASvtE,EAAQutE,KACtB/wE,KAAKgxE,OAASxtE,EAAQwtE,KACtBhxE,KAAKgsE,OAASxoE,EAAQwoE,KACtBhsE,KAAK8c,OAAStZ,EAAQsZ,QAEtB9c,KAAKmd,KAAOnd,KAAK+wE,KAAO/wE,KAAKgxE,KAAOhxE,KAAKgsE,MAAO,EAElDhsE,KAAKk/D,GAAKA,EACVl/D,KAAKO,KAAOqwE,GACZ5wE,KAAK2gB,QAAS,EACd3gB,KAAKixE,MAAQjxE,KAAKgxE,KAClBhxE,KAAKkxE,KAAO,GACZlxE,KAAKmxE,QAAU,GACfnxE,KAAKoxE,OAAS,IAAIpb,GAClBh2D,KAAKqxE,UAAY,IAAIrb,GACrBh2D,KAAKsxE,WAED,GAEmB,oBAAZT,EACT7wE,KAAKi6D,OAAS4W,GAEd7wE,KAAKi6D,OAAS1F,EAAUsc,GACnB7wE,KAAKi6D,SACRj6D,KAAKi6D,OAASzmD,IASlBxT,KAAK7B,MAAQ6B,KAAKgxE,UACdxyE,EACAwB,KAAKY,OAMXouE,GAAQ/wE,UAAU2C,IAAM,WAEtB,IAAIzC,EADJ24D,GAAW92D,MAEX,IAAI86D,EAAK96D,KAAK86D,GACd,IACE38D,EAAQ6B,KAAKi6D,OAAO/6D,KAAK47D,EAAIA,GAC7B,MAAO93D,IACP,IAAIhD,KAAK+wE,KAGP,MAAM/tE,GAFN46D,GAAY56D,GAAG83D,EAAK,uBAA2B96D,KAAe,WAAI,KAIpE,QAGIA,KAAKmd,MACPkiD,GAASlhE,GAEX44D,KACA/2D,KAAKuxE,cAEP,OAAOpzE,GAMT6wE,GAAQ/wE,UAAU04D,OAAS,SAAiBqC,GAC1C,IAAIz4D,EAAKy4D,EAAIz4D,GACRP,KAAKqxE,UAAUzzE,IAAI2C,KACtBP,KAAKqxE,UAAUlmE,IAAI5K,GACnBP,KAAKmxE,QAAQ/8D,KAAK4kD,GACbh5D,KAAKoxE,OAAOxzE,IAAI2C,IACnBy4D,EAAIzC,OAAOv2D,QAQjBgvE,GAAQ/wE,UAAUszE,YAAc,WAC9B,IAAIjjE,EAAItO,KAAKkxE,KAAK5uE,OAClB,MAAOgM,IAAK,CACV,IAAI0qD,EAAMh5D,KAAKkxE,KAAK5iE,GACftO,KAAKqxE,UAAUzzE,IAAIo7D,EAAIz4D,KAC1By4D,EAAIvC,UAAUz2D,MAGlB,IAAIwxE,EAAMxxE,KAAKoxE,OACfpxE,KAAKoxE,OAASpxE,KAAKqxE,UACnBrxE,KAAKqxE,UAAYG,EACjBxxE,KAAKqxE,UAAU1zC,QACf6zC,EAAMxxE,KAAKkxE,KACXlxE,KAAKkxE,KAAOlxE,KAAKmxE,QACjBnxE,KAAKmxE,QAAUK,EACfxxE,KAAKmxE,QAAQ7uE,OAAS,GAOxB0sE,GAAQ/wE,UAAU+Y,OAAS,WAErBhX,KAAKgxE,KACPhxE,KAAKixE,OAAQ,EACJjxE,KAAKgsE,KACdhsE,KAAK8tD,MAEL6iB,GAAa3wE,OAQjBgvE,GAAQ/wE,UAAU6vD,IAAM,WACtB,GAAI9tD,KAAK2gB,OAAQ,CACf,IAAIxiB,EAAQ6B,KAAKY,MACjB,GACEzC,IAAU6B,KAAK7B,OAIfC,EAASD,IACT6B,KAAKmd,KACL,CAEA,IAAIs0D,EAAWzxE,KAAK7B,MAEpB,GADA6B,KAAK7B,MAAQA,EACT6B,KAAK+wE,KACP,IACE/wE,KAAKk/D,GAAGhgE,KAAKc,KAAK86D,GAAI38D,EAAOszE,GAC7B,MAAOzuE,IACP46D,GAAY56D,GAAGhD,KAAK86D,GAAK,yBAA6B96D,KAAe,WAAI,UAG3EA,KAAKk/D,GAAGhgE,KAAKc,KAAK86D,GAAI38D,EAAOszE,MAUrCzC,GAAQ/wE,UAAUyzE,SAAW,WAC3B1xE,KAAK7B,MAAQ6B,KAAKY,MAClBZ,KAAKixE,OAAQ,GAMfjC,GAAQ/wE,UAAUy4D,OAAS,WACzB,IAAIpoD,EAAItO,KAAKkxE,KAAK5uE,OAClB,MAAOgM,IACLtO,KAAKkxE,KAAK5iE,GAAGooD,UAOjBsY,GAAQ/wE,UAAUywE,SAAW,WAC3B,GAAI1uE,KAAK2gB,OAAQ,CAIV3gB,KAAK86D,GAAGmT,mBACXh7D,EAAOjT,KAAK86D,GAAG6T,UAAW3uE,MAE5B,IAAIsO,EAAItO,KAAKkxE,KAAK5uE,OAClB,MAAOgM,IACLtO,KAAKkxE,KAAK5iE,GAAGmoD,UAAUz2D,MAEzBA,KAAK2gB,QAAS,IAMlB,IAAIgxD,GAA2B,CAC7B9tE,YAAY,EACZ3F,cAAc,EACd0C,IAAK4S,EACL7S,IAAK6S,GAGP,SAASuvD,GAAOnjE,EAAQgyE,EAAWlxE,GACjCixE,GAAyB/wE,IAAM,WAC7B,OAAOZ,KAAK4xE,GAAWlxE,IAEzBixE,GAAyBhxE,IAAM,SAAsB0rD,GACnDrsD,KAAK4xE,GAAWlxE,GAAO2rD,GAEzB3sD,OAAO/B,eAAeiC,EAAQc,EAAKixE,IAGrC,SAASE,GAAW/W,GAClBA,EAAG6T,UAAY,GACf,IAAIlZ,EAAOqF,EAAGxvD,SACVmqD,EAAK6F,OAASwW,GAAUhX,EAAIrF,EAAK6F,OACjC7F,EAAK/oB,SAAWqlC,GAAYjX,EAAIrF,EAAK/oB,SACrC+oB,EAAK1jD,KACPigE,GAASlX,GAETpB,GAAQoB,EAAG8T,MAAQ,IAAI,GAErBnZ,EAAK+F,UAAYyW,GAAanX,EAAIrF,EAAK+F,UACvC/F,EAAKF,OAASE,EAAKF,QAAUD,IAC/B4c,GAAUpX,EAAIrF,EAAKF,OAIvB,SAASuc,GAAWhX,EAAIqX,GACtB,IAAIpV,EAAYjC,EAAGxvD,SAASyxD,WAAa,GACrCzB,EAAQR,EAAG0C,OAAS,GAGpBjgE,EAAOu9D,EAAGxvD,SAASmkE,UAAY,GAC/B2C,GAAUtX,EAAGkD,QAEZoU,GACHhZ,IAAgB,GAElB,IAAIiL,EAAO,SAAW3jE,GACpBnD,EAAK6W,KAAK1T,GACV,IAAIvC,EAAQ0+D,GAAan8D,EAAKyxE,EAAcpV,EAAWjC,GAuBrDhB,GAAkBwB,EAAO56D,EAAKvC,GAK1BuC,KAAOo6D,GACXiI,GAAMjI,EAAI,SAAUp6D,IAIxB,IAAK,IAAIA,KAAOyxE,EAAc9N,EAAM3jE,GACpC04D,IAAgB,GAGlB,SAAS4Y,GAAUlX,GACjB,IAAI/oD,EAAO+oD,EAAGxvD,SAASyG,KACvBA,EAAO+oD,EAAG8T,MAAwB,oBAAT78D,EACrBsgE,GAAQtgE,EAAM+oD,GACd/oD,GAAQ,GACPy+C,EAAcz+C,KACjBA,EAAO,IAQT,IAAIxU,EAAOmC,OAAOnC,KAAKwU,GACnBupD,EAAQR,EAAGxvD,SAASgwD,MAEpBhtD,GADUwsD,EAAGxvD,SAASohC,QAClBnvC,EAAK+E,QACb,MAAOgM,IAAK,CACV,IAAI5N,EAAMnD,EAAK+Q,GACX,EAQAgtD,GAASpK,EAAOoK,EAAO56D,IAMf0zD,EAAW1zD,IACrBqiE,GAAMjI,EAAI,QAASp6D,GAIvBg5D,GAAQ3nD,GAAM,GAGhB,SAASsgE,GAAStgE,EAAM+oD,GAEtBhE,KACA,IACE,OAAO/kD,EAAK7S,KAAK47D,EAAIA,GACrB,MAAO93D,IAEP,OADA46D,GAAY56D,GAAG83D,EAAI,UACZ,GACP,QACA/D,MAIJ,IAAIub,GAAyB,CAAEtB,MAAM,GAErC,SAASiB,GAAcnX,EAAIU,GAEzB,IAAI+W,EAAWzX,EAAG0X,kBAAoB9yE,OAAOgG,OAAO,MAEhD+sE,EAAQ/c,KAEZ,IAAK,IAAIh1D,KAAO86D,EAAU,CACxB,IAAIkX,EAAUlX,EAAS96D,GACnBu5D,EAA4B,oBAAZyY,EAAyBA,EAAUA,EAAQ9xE,IAC3D,EAOC6xE,IAEHF,EAAS7xE,GAAO,IAAIsuE,GAClBlU,EACAb,GAAUzmD,EACVA,EACA8+D,KAOE5xE,KAAOo6D,GACX6X,GAAe7X,EAAIp6D,EAAKgyE,IAW9B,SAASC,GACP/yE,EACAc,EACAgyE,GAEA,IAAIE,GAAeld,KACI,oBAAZgd,GACTf,GAAyB/wE,IAAMgyE,EAC3BC,GAAqBnyE,GACrBoyE,GAAoBJ,GACxBf,GAAyBhxE,IAAM6S,IAE/Bm+D,GAAyB/wE,IAAM8xE,EAAQ9xE,IACnCgyE,IAAiC,IAAlBF,EAAQrvE,MACrBwvE,GAAqBnyE,GACrBoyE,GAAoBJ,EAAQ9xE,KAC9B4S,EACJm+D,GAAyBhxE,IAAM+xE,EAAQ/xE,KAAO6S,GAWhD9T,OAAO/B,eAAeiC,EAAQc,EAAKixE,IAGrC,SAASkB,GAAsBnyE,GAC7B,OAAO,WACL,IAAI2vE,EAAUrwE,KAAKwyE,mBAAqBxyE,KAAKwyE,kBAAkB9xE,GAC/D,GAAI2vE,EAOF,OANIA,EAAQY,OACVZ,EAAQqB,WAENrb,GAAIz2D,QACNywE,EAAQ3Z,SAEH2Z,EAAQlyE,OAKrB,SAAS20E,GAAoBtmE,GAC3B,OAAO,WACL,OAAOA,EAAGtN,KAAKc,KAAMA,OAIzB,SAAS+xE,GAAajX,EAAIpuB,GACZouB,EAAGxvD,SAASgwD,MACxB,IAAK,IAAI56D,KAAOgsC,EAsBdouB,EAAGp6D,GAA+B,oBAAjBgsC,EAAQhsC,GAAsB8S,EAAOvH,EAAKygC,EAAQhsC,GAAMo6D,GAI7E,SAASoX,GAAWpX,EAAIvF,GACtB,IAAK,IAAI70D,KAAO60D,EAAO,CACrB,IAAI6I,EAAU7I,EAAM70D,GACpB,GAAIqI,MAAM8nB,QAAQutC,GAChB,IAAK,IAAI9vD,EAAI,EAAGA,EAAI8vD,EAAQ97D,OAAQgM,IAClCykE,GAAcjY,EAAIp6D,EAAK09D,EAAQ9vD,SAGjCykE,GAAcjY,EAAIp6D,EAAK09D,IAK7B,SAAS2U,GACPjY,EACA+V,EACAzS,EACA56D,GASA,OAPIgtD,EAAc4N,KAChB56D,EAAU46D,EACVA,EAAUA,EAAQA,SAEG,kBAAZA,IACTA,EAAUtD,EAAGsD,IAERtD,EAAGkY,OAAOnC,EAASzS,EAAS56D,GAGrC,SAASyvE,GAAYhI,GAInB,IAAIiI,EAAU,CACd,IAAc,WAAc,OAAOlzE,KAAK4uE,QACpCuE,EAAW,CACf,IAAe,WAAc,OAAOnzE,KAAKw9D,SAazC99D,OAAO/B,eAAestE,EAAIhtE,UAAW,QAASi1E,GAC9CxzE,OAAO/B,eAAestE,EAAIhtE,UAAW,SAAUk1E,GAE/ClI,EAAIhtE,UAAUm1E,KAAOzyE,GACrBsqE,EAAIhtE,UAAUo1E,QAAUhZ,GAExB4Q,EAAIhtE,UAAU+0E,OAAS,SACrBnC,EACA3R,EACA17D,GAEA,IAAIs3D,EAAK96D,KACT,GAAIwwD,EAAc0O,GAChB,OAAO6T,GAAcjY,EAAI+V,EAAS3R,EAAI17D,GAExCA,EAAUA,GAAW,GACrBA,EAAQutE,MAAO,EACf,IAAIV,EAAU,IAAIrB,GAAQlU,EAAI+V,EAAS3R,EAAI17D,GAC3C,GAAIA,EAAQ8vE,UACV,IACEpU,EAAGhgE,KAAK47D,EAAIuV,EAAQlyE,OACpB,MAAOlB,GACP2gE,GAAY3gE,EAAO69D,EAAK,mCAAuCuV,EAAkB,WAAI,KAGzF,OAAO,WACLA,EAAQ3B,aAOd,IAAI6E,GAAQ,EAEZ,SAASC,GAAWvI,GAClBA,EAAIhtE,UAAUw1E,MAAQ,SAAUjwE,GAC9B,IAAIs3D,EAAK96D,KAET86D,EAAG4Y,KAAOH,KAWVzY,EAAGjB,QAAS,EAERr2D,GAAWA,EAAQ8lE,aAIrBqK,GAAsB7Y,EAAIt3D,GAE1Bs3D,EAAGxvD,SAAW4wD,GACZ8M,GAA0BlO,EAAGzmD,aAC7B7Q,GAAW,GACXs3D,GAOFA,EAAG+J,aAAe/J,EAGpBA,EAAG8Y,MAAQ9Y,EACX6S,GAAc7S,GACd4R,GAAW5R,GACX2P,GAAW3P,GACXsN,GAAStN,EAAI,gBACb4G,GAAe5G,GACf+W,GAAU/W,GACV0G,GAAY1G,GACZsN,GAAStN,EAAI,WASTA,EAAGxvD,SAASwjE,IACdhU,EAAGkN,OAAOlN,EAAGxvD,SAASwjE,KAK5B,SAAS6E,GAAuB7Y,EAAIt3D,GAClC,IAAIiyD,EAAOqF,EAAGxvD,SAAW5L,OAAOgG,OAAOo1D,EAAGzmD,YAAY7Q,SAElDmnE,EAAcnnE,EAAQ+lE,aAC1B9T,EAAKzqD,OAASxH,EAAQwH,OACtByqD,EAAK8T,aAAeoB,EAEpB,IAAIkJ,EAAwBlJ,EAAYzT,iBACxCzB,EAAKsH,UAAY8W,EAAsB9W,UACvCtH,EAAKqV,iBAAmB+I,EAAsB9M,UAC9CtR,EAAKmV,gBAAkBiJ,EAAsBh8C,SAC7C49B,EAAKqe,cAAgBD,EAAsB/pE,IAEvCtG,EAAQ0G,SACVurD,EAAKvrD,OAAS1G,EAAQ0G,OACtBurD,EAAKtrD,gBAAkB3G,EAAQ2G,iBAInC,SAAS6+D,GAA2BjT,GAClC,IAAIvyD,EAAUuyD,EAAKvyD,QACnB,GAAIuyD,EAAKge,MAAO,CACd,IAAIC,EAAehL,GAA0BjT,EAAKge,OAC9CE,EAAqBle,EAAKie,aAC9B,GAAIA,IAAiBC,EAAoB,CAGvCle,EAAKie,aAAeA,EAEpB,IAAIE,EAAkBC,GAAuBpe,GAEzCme,GACFlzD,EAAO+0C,EAAKqe,cAAeF,GAE7B1wE,EAAUuyD,EAAKvyD,QAAU04D,GAAa8X,EAAcje,EAAKqe,eACrD5wE,EAAQkG,OACVlG,EAAQ6wE,WAAW7wE,EAAQkG,MAAQqsD,IAIzC,OAAOvyD,EAGT,SAAS2wE,GAAwBpe,GAC/B,IAAIue,EACAC,EAASxe,EAAKvyD,QACdgxE,EAASze,EAAK0e,cAClB,IAAK,IAAI/zE,KAAO6zE,EACVA,EAAO7zE,KAAS8zE,EAAO9zE,KACpB4zE,IAAYA,EAAW,IAC5BA,EAAS5zE,GAAO6zE,EAAO7zE,IAG3B,OAAO4zE,EAGT,SAASrJ,GAAKznE,GAMZxD,KAAKyzE,MAAMjwE,GAWb,SAASkxE,GAASzJ,GAChBA,EAAI0J,IAAM,SAAUC,GAClB,IAAIC,EAAoB70E,KAAK80E,oBAAsB90E,KAAK80E,kBAAoB,IAC5E,GAAID,EAAiB7gE,QAAQ4gE,IAAW,EACtC,OAAO50E,KAIT,IAAIyU,EAAOs9C,EAAQ1vD,UAAW,GAQ9B,OAPAoS,EAAKizC,QAAQ1nD,MACiB,oBAAnB40E,EAAOG,QAChBH,EAAOG,QAAQ1jE,MAAMujE,EAAQngE,GACF,oBAAXmgE,GAChBA,EAAOvjE,MAAM,KAAMoD,GAErBogE,EAAiBzgE,KAAKwgE,GACf50E,MAMX,SAASg1E,GAAa/J,GACpBA,EAAIgK,MAAQ,SAAUA,GAEpB,OADAj1E,KAAKwD,QAAU04D,GAAal8D,KAAKwD,QAASyxE,GACnCj1E,MAMX,SAASk1E,GAAYjK,GAMnBA,EAAIpC,IAAM,EACV,IAAIA,EAAM,EAKVoC,EAAIjqD,OAAS,SAAUozD,GACrBA,EAAgBA,GAAiB,GACjC,IAAIe,EAAQn1E,KACRo1E,EAAUD,EAAMtM,IAChBwM,EAAcjB,EAAckB,QAAUlB,EAAckB,MAAQ,IAChE,GAAID,EAAYD,GACd,OAAOC,EAAYD,GAGrB,IAAI1rE,EAAO0qE,EAAc1qE,MAAQyrE,EAAM3xE,QAAQkG,KAK/C,IAAI6rE,EAAM,SAAuB/xE,GAC/BxD,KAAKyzE,MAAMjwE,IA6Cb,OA3CA+xE,EAAIt3E,UAAYyB,OAAOgG,OAAOyvE,EAAMl3E,WACpCs3E,EAAIt3E,UAAUoW,YAAckhE,EAC5BA,EAAI1M,IAAMA,IACV0M,EAAI/xE,QAAU04D,GACZiZ,EAAM3xE,QACN4wE,GAEFmB,EAAI,SAAWJ,EAKXI,EAAI/xE,QAAQ83D,OACdka,GAAYD,GAEVA,EAAI/xE,QAAQg4D,UACdia,GAAeF,GAIjBA,EAAIv0D,OAASm0D,EAAMn0D,OACnBu0D,EAAIN,MAAQE,EAAMF,MAClBM,EAAIZ,IAAMQ,EAAMR,IAIhB3hB,EAAYp0B,SAAQ,SAAUr9B,GAC5Bg0E,EAAIh0E,GAAQ4zE,EAAM5zE,MAGhBmI,IACF6rE,EAAI/xE,QAAQ6wE,WAAW3qE,GAAQ6rE,GAMjCA,EAAIvB,aAAemB,EAAM3xE,QACzB+xE,EAAInB,cAAgBA,EACpBmB,EAAId,cAAgBzzD,EAAO,GAAIu0D,EAAI/xE,SAGnC6xE,EAAYD,GAAWG,EAChBA,GAIX,SAASC,GAAaE,GACpB,IAAIpa,EAAQoa,EAAKlyE,QAAQ83D,MACzB,IAAK,IAAI56D,KAAO46D,EACdyH,GAAM2S,EAAKz3E,UAAW,SAAUyC,GAIpC,SAAS+0E,GAAgBC,GACvB,IAAIla,EAAWka,EAAKlyE,QAAQg4D,SAC5B,IAAK,IAAI96D,KAAO86D,EACdmX,GAAe+C,EAAKz3E,UAAWyC,EAAK86D,EAAS96D,IAMjD,SAASi1E,GAAoB1K,GAI3BjY,EAAYp0B,SAAQ,SAAUr9B,GAC5B0pE,EAAI1pE,GAAQ,SACVhB,EACA0gB,GAEA,OAAKA,GAOU,cAAT1f,GAAwBivD,EAAcvvC,KACxCA,EAAWvX,KAAOuX,EAAWvX,MAAQnJ,EACrC0gB,EAAajhB,KAAKwD,QAAQ24D,MAAMn7C,OAAOC,IAE5B,cAAT1f,GAA8C,oBAAf0f,IACjCA,EAAa,CAAEhV,KAAMgV,EAAYjK,OAAQiK,IAE3CjhB,KAAKwD,QAAQjC,EAAO,KAAKhB,GAAM0gB,EACxBA,GAdAjhB,KAAKwD,QAAQjC,EAAO,KAAKhB,OAwBxC,SAASq1E,GAAkBngB,GACzB,OAAOA,IAASA,EAAKM,KAAKvyD,QAAQkG,MAAQ+rD,EAAK3rD,KAGjD,SAAS+M,GAASg/D,EAASnsE,GACzB,OAAIX,MAAM8nB,QAAQglD,GACTA,EAAQ7hE,QAAQtK,IAAS,EACJ,kBAAZmsE,EACTA,EAAQ3oE,MAAM,KAAK8G,QAAQtK,IAAS,IAClCnL,EAASs3E,IACXA,EAAQ31E,KAAKwJ,GAMxB,SAASosE,GAAYC,EAAmB7iE,GACtC,IAAI7P,EAAQ0yE,EAAkB1yE,MAC1B9F,EAAOw4E,EAAkBx4E,KACzBmtE,EAASqL,EAAkBrL,OAC/B,IAAK,IAAIhqE,KAAO2C,EAAO,CACrB,IAAI2yE,EAAa3yE,EAAM3C,GACvB,GAAIs1E,EAAY,CACd,IAAItsE,EAAOksE,GAAiBI,EAAW9e,kBACnCxtD,IAASwJ,EAAOxJ,IAClBusE,GAAgB5yE,EAAO3C,EAAKnD,EAAMmtE,KAM1C,SAASuL,GACP5yE,EACA3C,EACAnD,EACAwrC,GAEA,IAAImtC,EAAY7yE,EAAM3C,IAClBw1E,GAAentC,GAAWmtC,EAAUpsE,MAAQi/B,EAAQj/B,KACtDosE,EAAU1e,kBAAkBiR,WAE9BplE,EAAM3C,GAAO,KACbuS,EAAO1V,EAAMmD,GA/Mf8yE,GAAUvI,IACVgI,GAAWhI,IACXkC,GAAYlC,IACZiD,GAAejD,IACfD,GAAYC,IA8MZ,IAAIkL,GAAe,CAACz3E,OAAQijB,OAAQ5Y,OAEhCqtE,GAAY,CACd1sE,KAAM,aACN0/D,UAAU,EAEV9N,MAAO,CACL+a,QAASF,GACTG,QAASH,GACT5nE,IAAK,CAAC7P,OAAQ63E,SAGhBC,QAAS,WACPx2E,KAAKqD,MAAQ3D,OAAOgG,OAAO,MAC3B1F,KAAKzC,KAAO,IAGdk5E,UAAW,WACT,IAAK,IAAI/1E,KAAOV,KAAKqD,MACnB4yE,GAAgBj2E,KAAKqD,MAAO3C,EAAKV,KAAKzC,OAI1Cm5E,QAAS,WACP,IAAI/P,EAAS3mE,KAEbA,KAAKgzE,OAAO,WAAW,SAAU3mB,GAC/BypB,GAAWnP,GAAQ,SAAUj9D,GAAQ,OAAOmN,GAAQw1C,EAAK3iD,SAE3D1J,KAAKgzE,OAAO,WAAW,SAAU3mB,GAC/BypB,GAAWnP,GAAQ,SAAUj9D,GAAQ,OAAQmN,GAAQw1C,EAAK3iD,UAI9DQ,OAAQ,WACN,IAAI83D,EAAOhiE,KAAKsjE,OAAO/F,QACnBlF,EAAQoU,GAAuBzK,GAC/B9K,EAAmBmB,GAASA,EAAMnB,iBACtC,GAAIA,EAAkB,CAEpB,IAAIxtD,EAAOksE,GAAiB1e,GACxBkU,EAAMprE,KACNq2E,EAAUjL,EAAIiL,QACdC,EAAUlL,EAAIkL,QAClB,GAEGD,KAAa3sE,IAASmN,GAAQw/D,EAAS3sE,KAEvC4sE,GAAW5sE,GAAQmN,GAAQy/D,EAAS5sE,GAErC,OAAO2uD,EAGT,IAAIse,EAAQ32E,KACRqD,EAAQszE,EAAMtzE,MACd9F,EAAOo5E,EAAMp5E,KACbmD,EAAmB,MAAb23D,EAAM33D,IAGZw2D,EAAiBnB,KAAK8S,KAAO3R,EAAiBptD,IAAO,KAAQotD,EAAoB,IAAK,IACtFmB,EAAM33D,IACN2C,EAAM3C,IACR23D,EAAMb,kBAAoBn0D,EAAM3C,GAAK82D,kBAErCvkD,EAAO1V,EAAMmD,GACbnD,EAAK6W,KAAK1T,KAEV2C,EAAM3C,GAAO23D,EACb96D,EAAK6W,KAAK1T,GAENV,KAAKuO,KAAOhR,EAAK+E,OAASipB,SAASvrB,KAAKuO,MAC1C0nE,GAAgB5yE,EAAO9F,EAAK,GAAIA,EAAMyC,KAAK0qE,SAI/CrS,EAAMtmD,KAAK41D,WAAY,EAEzB,OAAOtP,GAAU2J,GAAQA,EAAK,KAI9B4U,GAAoB,CACtBR,UAAWA,IAKb,SAASS,GAAe5L,GAEtB,IAAI6L,EAAY,CAChB,IAAgB,WAAc,OAAO5jB,IAQrCxzD,OAAO/B,eAAestE,EAAK,SAAU6L,GAKrC7L,EAAI8L,KAAO,CACT3gB,KAAMA,GACNp1C,OAAQA,EACRk7C,aAAcA,GACd8a,eAAgBld,IAGlBmR,EAAItqE,IAAMA,GACVsqE,EAAIgM,OAAS5c,GACb4Q,EAAI7c,SAAWA,GAGf6c,EAAIiM,WAAa,SAAU5mB,GAEzB,OADAoJ,GAAQpJ,GACDA,GAGT2a,EAAIznE,QAAU9D,OAAOgG,OAAO,MAC5BstD,EAAYp0B,SAAQ,SAAUr9B,GAC5B0pE,EAAIznE,QAAQjC,EAAO,KAAO7B,OAAOgG,OAAO,SAK1CulE,EAAIznE,QAAQ24D,MAAQ8O,EAEpBjqD,EAAOiqD,EAAIznE,QAAQ6wE,WAAYuC,IAE/BlC,GAAQzJ,GACR+J,GAAY/J,GACZiK,GAAWjK,GACX0K,GAAmB1K,GAGrB4L,GAAc5L,IAEdvrE,OAAO/B,eAAestE,GAAIhtE,UAAW,YAAa,CAChD2C,IAAK80D,KAGPh2D,OAAO/B,eAAestE,GAAIhtE,UAAW,cAAe,CAClD2C,IAAK,WAEH,OAAOZ,KAAK8K,QAAU9K,KAAK8K,OAAOC,cAKtCrL,OAAO/B,eAAestE,GAAK,0BAA2B,CACpD9sE,MAAOsoE,KAGTwE,GAAIvgB,QAAU,SAMd,IAAIkJ,GAAiB/C,EAAQ,eAGzBsmB,GAActmB,EAAQ,yCACtBmD,GAAc,SAAUlqD,EAAKvI,EAAMgR,GACrC,MACY,UAATA,GAAoB4kE,GAAYrtE,IAAkB,WAATvI,GAChC,aAATgR,GAA+B,WAARzI,GACd,YAATyI,GAA8B,UAARzI,GACb,UAATyI,GAA4B,UAARzI,GAIrBstE,GAAmBvmB,EAAQ,wCAE3BwmB,GAA8BxmB,EAAQ,sCAEtCymB,GAAyB,SAAU52E,EAAKvC,GAC1C,OAAOo5E,GAAiBp5E,IAAoB,UAAVA,EAC9B,QAEQ,oBAARuC,GAA6B22E,GAA4Bl5E,GACvDA,EACA,QAGJq5E,GAAgB3mB,EAClB,wYAQE4mB,GAAU,+BAEVC,GAAU,SAAUhuE,GACtB,MAA0B,MAAnBA,EAAKxG,OAAO,IAAmC,UAArBwG,EAAKyE,MAAM,EAAG,IAG7CwpE,GAAe,SAAUjuE,GAC3B,OAAOguE,GAAQhuE,GAAQA,EAAKyE,MAAM,EAAGzE,EAAKpH,QAAU,IAGlDi1E,GAAmB,SAAUlrB,GAC/B,OAAc,MAAPA,IAAuB,IAARA,GAKxB,SAASurB,GAAkBvf,GACzB,IAAItmD,EAAOsmD,EAAMtmD,KACbiB,EAAaqlD,EACbwf,EAAYxf,EAChB,MAAOnI,EAAM2nB,EAAUrgB,mBACrBqgB,EAAYA,EAAUrgB,kBAAkBkT,OACpCmN,GAAaA,EAAU9lE,OACzBA,EAAO+lE,GAAeD,EAAU9lE,KAAMA,IAG1C,MAAOm+C,EAAMl9C,EAAaA,EAAWhI,QAC/BgI,GAAcA,EAAWjB,OAC3BA,EAAO+lE,GAAe/lE,EAAMiB,EAAWjB,OAG3C,OAAOgmE,GAAYhmE,EAAKimE,YAAajmE,EAAKy4D,OAG5C,SAASsN,GAAgBvgE,EAAOvM,GAC9B,MAAO,CACLgtE,YAAat6E,GAAO6Z,EAAMygE,YAAahtE,EAAOgtE,aAC9CxN,MAAOta,EAAM34C,EAAMizD,OACf,CAACjzD,EAAMizD,MAAOx/D,EAAOw/D,OACrBx/D,EAAOw/D,OAIf,SAASuN,GACPC,EACAC,GAEA,OAAI/nB,EAAM8nB,IAAgB9nB,EAAM+nB,GACvBv6E,GAAOs6E,EAAaE,GAAeD,IAGrC,GAGT,SAASv6E,GAAQ+G,EAAGC,GAClB,OAAOD,EAAIC,EAAKD,EAAI,IAAMC,EAAKD,EAAKC,GAAK,GAG3C,SAASwzE,GAAgB/5E,GACvB,OAAI4K,MAAM8nB,QAAQ1yB,GACTg6E,GAAeh6E,GAEpBC,EAASD,GACJi6E,GAAgBj6E,GAEJ,kBAAVA,EACFA,EAGF,GAGT,SAASg6E,GAAgBh6E,GAGvB,IAFA,IACIk6E,EADAnmB,EAAM,GAED5jD,EAAI,EAAG4d,EAAI/tB,EAAMmE,OAAQgM,EAAI4d,EAAG5d,IACnC4hD,EAAMmoB,EAAcH,GAAe/5E,EAAMmQ,MAAwB,KAAhB+pE,IAC/CnmB,IAAOA,GAAO,KAClBA,GAAOmmB,GAGX,OAAOnmB,EAGT,SAASkmB,GAAiBj6E,GACxB,IAAI+zD,EAAM,GACV,IAAK,IAAIxxD,KAAOvC,EACVA,EAAMuC,KACJwxD,IAAOA,GAAO,KAClBA,GAAOxxD,GAGX,OAAOwxD,EAKT,IAAIomB,GAAe,CACjB3jE,IAAK,6BACL4jE,KAAM,sCAGJC,GAAY3nB,EACd,snBAeE4nB,GAAQ5nB,EACV,kNAGA,GAGE8C,GAAgB,SAAU7pD,GAC5B,OAAO0uE,GAAU1uE,IAAQ2uE,GAAM3uE,IAGjC,SAASgqD,GAAiBhqD,GACxB,OAAI2uE,GAAM3uE,GACD,MAIG,SAARA,EACK,YADT,EAKF,IAAI4uE,GAAsBh5E,OAAOgG,OAAO,MACxC,SAASmuD,GAAkB/pD,GAEzB,IAAK4qD,EACH,OAAO,EAET,GAAIf,GAAc7pD,GAChB,OAAO,EAIT,GAFAA,EAAMA,EAAIwhB,cAEsB,MAA5BotD,GAAoB5uE,GACtB,OAAO4uE,GAAoB5uE,GAE7B,IAAIglE,EAAK1mE,SAASoN,cAAc1L,GAChC,OAAIA,EAAIkK,QAAQ,MAAQ,EAEd0kE,GAAoB5uE,GAC1BglE,EAAGz6D,cAAgBpR,OAAO01E,oBAC1B7J,EAAGz6D,cAAgBpR,OAAO21E,YAGpBF,GAAoB5uE,GAAO,qBAAqB5J,KAAK4uE,EAAGzuE,YAIpE,IAAIw4E,GAAkBhoB,EAAQ,6CAO9B,SAASioB,GAAOhK,GACd,GAAkB,kBAAPA,EAAiB,CAC1B,IAAIiK,EAAW3wE,SAAS2N,cAAc+4D,GACtC,OAAKiK,GAII3wE,SAASoN,cAAc,OAIhC,OAAOs5D,EAMX,SAASkK,GAAiBC,EAAS5gB,GACjC,IAAIpB,EAAM7uD,SAASoN,cAAcyjE,GACjC,MAAgB,WAAZA,GAIA5gB,EAAMtmD,MAAQsmD,EAAMtmD,KAAK6uD,YAAuCpiE,IAA9B65D,EAAMtmD,KAAK6uD,MAAMsY,UACrDjiB,EAAIp9C,aAAa,WAAY,YAJtBo9C,EASX,SAASxhD,GAAiBG,EAAWqjE,GACnC,OAAO7wE,SAASqN,gBAAgB6iE,GAAa1iE,GAAYqjE,GAG3D,SAASja,GAAgBtsD,GACvB,OAAOtK,SAAS42D,eAAetsD,GAGjC,SAASymE,GAAezmE,GACtB,OAAOtK,SAAS+wE,cAAczmE,GAGhC,SAAS8E,GAAcxE,EAAYomE,EAASC,GAC1CrmE,EAAWwE,aAAa4hE,EAASC,GAGnC,SAASt8D,GAAa5G,EAAMoB,GAC1BpB,EAAK4G,YAAYxF,GAGnB,SAASrP,GAAaiO,EAAMoB,GAC1BpB,EAAKjO,YAAYqP,GAGnB,SAASvE,GAAYmD,GACnB,OAAOA,EAAKnD,WAGd,SAASwJ,GAAarG,GACpB,OAAOA,EAAKqG,YAGd,SAASy8D,GAAS9iE,GAChB,OAAOA,EAAK8iE,QAGd,SAASK,GAAgBnjE,EAAMzD,GAC7ByD,EAAK6F,YAActJ,EAGrB,SAAS6mE,GAAepjE,EAAM7L,GAC5B6L,EAAK0D,aAAavP,EAAS,IAG7B,IAAIkvE,GAAuB95E,OAAOswD,OAAO,CACvCx6C,cAAewjE,GACfvjE,gBAAiBA,GACjBupD,eAAgBA,GAChBma,cAAeA,GACf3hE,aAAcA,GACduF,YAAaA,GACb7U,YAAaA,GACb8K,WAAYA,GACZwJ,YAAaA,GACby8D,QAASA,GACTK,eAAgBA,GAChBC,cAAeA,KAKbnO,GAAM,CACR1lE,OAAQ,SAAiB0N,EAAGilD,GAC1BohB,GAAYphB,IAEdrhD,OAAQ,SAAiBixD,EAAU5P,GAC7B4P,EAASl2D,KAAKq5D,MAAQ/S,EAAMtmD,KAAKq5D,MACnCqO,GAAYxR,GAAU,GACtBwR,GAAYphB,KAGhBkQ,QAAS,SAAkBlQ,GACzBohB,GAAYphB,GAAO,KAIvB,SAASohB,GAAaphB,EAAOqhB,GAC3B,IAAIh5E,EAAM23D,EAAMtmD,KAAKq5D,IACrB,GAAKlb,EAAMxvD,GAAX,CAEA,IAAIo6D,EAAKzC,EAAMxtD,QACXugE,EAAM/S,EAAMb,mBAAqBa,EAAMpB,IACvC0iB,EAAO7e,EAAG+S,MACV6L,EACE3wE,MAAM8nB,QAAQ8oD,EAAKj5E,IACrBuS,EAAO0mE,EAAKj5E,GAAM0qE,GACTuO,EAAKj5E,KAAS0qE,IACvBuO,EAAKj5E,QAAOlC,GAGV65D,EAAMtmD,KAAK6nE,SACR7wE,MAAM8nB,QAAQ8oD,EAAKj5E,IAEbi5E,EAAKj5E,GAAKsT,QAAQo3D,GAAO,GAElCuO,EAAKj5E,GAAK0T,KAAKg3D,GAHfuO,EAAKj5E,GAAO,CAAC0qE,GAMfuO,EAAKj5E,GAAO0qE,GAiBlB,IAAIyO,GAAY,IAAI7iB,GAAM,GAAI,GAAI,IAE9BmE,GAAQ,CAAC,SAAU,WAAY,SAAU,SAAU,WAEvD,SAAS2e,GAAWr1E,EAAGC,GACrB,OACED,EAAE/D,MAAQgE,EAAEhE,MAER+D,EAAEqF,MAAQpF,EAAEoF,KACZrF,EAAEmzD,YAAclzD,EAAEkzD,WAClB1H,EAAMzrD,EAAEsN,QAAUm+C,EAAMxrD,EAAEqN,OAC1BgoE,GAAct1E,EAAGC,IAEjByrD,EAAO1rD,EAAEuzD,qBACTvzD,EAAE0yD,eAAiBzyD,EAAEyyD,cACrBlH,EAAQvrD,EAAEyyD,aAAal6D,QAM/B,SAAS88E,GAAet1E,EAAGC,GACzB,GAAc,UAAVD,EAAEqF,IAAmB,OAAO,EAChC,IAAIwE,EACA0rE,EAAQ9pB,EAAM5hD,EAAI7J,EAAEsN,OAASm+C,EAAM5hD,EAAIA,EAAEsyD,QAAUtyD,EAAE/M,KACrD04E,EAAQ/pB,EAAM5hD,EAAI5J,EAAEqN,OAASm+C,EAAM5hD,EAAIA,EAAEsyD,QAAUtyD,EAAE/M,KACzD,OAAOy4E,IAAUC,GAASpB,GAAgBmB,IAAUnB,GAAgBoB,GAGtE,SAASC,GAAmBriD,EAAUsiD,EAAUC,GAC9C,IAAI9rE,EAAG5N,EACHqB,EAAM,GACV,IAAKuM,EAAI6rE,EAAU7rE,GAAK8rE,IAAU9rE,EAChC5N,EAAMm3B,EAASvpB,GAAG5N,IACdwvD,EAAMxvD,KAAQqB,EAAIrB,GAAO4N,GAE/B,OAAOvM,EAGT,SAASs4E,GAAqBC,GAC5B,IAAIhsE,EAAG0B,EACHu9D,EAAM,GAENgN,EAAUD,EAAQC,QAClBf,EAAUc,EAAQd,QAEtB,IAAKlrE,EAAI,EAAGA,EAAI6sD,GAAM74D,SAAUgM,EAE9B,IADAi/D,EAAIpS,GAAM7sD,IAAM,GACX0B,EAAI,EAAGA,EAAIuqE,EAAQj4E,SAAU0N,EAC5BkgD,EAAMqqB,EAAQvqE,GAAGmrD,GAAM7sD,MACzBi/D,EAAIpS,GAAM7sD,IAAI8F,KAAKmmE,EAAQvqE,GAAGmrD,GAAM7sD,KAK1C,SAASksE,EAAavjB,GACpB,OAAO,IAAID,GAAMwiB,EAAQP,QAAQhiB,GAAK3rC,cAAe,GAAI,QAAI9sB,EAAWy4D,GAG1E,SAASwjB,EAAYC,EAAU3T,GAC7B,SAAS3G,IACuB,MAAxBA,EAAU2G,WACd4T,EAAWD,GAIf,OADAta,EAAU2G,UAAYA,EACf3G,EAGT,SAASua,EAAY7L,GACnB,IAAI9jE,EAASwuE,EAAQxmE,WAAW87D,GAE5B5e,EAAMllD,IACRwuE,EAAQz8D,YAAY/R,EAAQ8jE,GAsBhC,SAAS8L,EACPviB,EACAwiB,EACAC,EACAC,EACAC,EACAC,EACAp4E,GAYA,GAVIqtD,EAAMmI,EAAMpB,MAAQ/G,EAAM+qB,KAM5B5iB,EAAQ4iB,EAAWp4E,GAASu1D,GAAWC,IAGzCA,EAAMV,cAAgBqjB,GAClBrS,EAAgBtQ,EAAOwiB,EAAoBC,EAAWC,GAA1D,CAIA,IAAIhpE,EAAOsmD,EAAMtmD,KACb8lB,EAAWwgC,EAAMxgC,SACjB/tB,EAAMuuD,EAAMvuD,IACZomD,EAAMpmD,IAeRuuD,EAAMpB,IAAMoB,EAAMjB,GACdoiB,EAAQ/jE,gBAAgB4iD,EAAMjB,GAAIttD,GAClC0vE,EAAQhkE,cAAc1L,EAAKuuD,GAC/B6iB,EAAS7iB,GAIP8iB,EAAe9iB,EAAOxgC,EAAUgjD,GAC5B3qB,EAAMn+C,IACRqpE,EAAkB/iB,EAAOwiB,GAE3BjoE,EAAOkoE,EAAWziB,EAAMpB,IAAK8jB,IAMtB5qB,EAAOkI,EAAMT,YACtBS,EAAMpB,IAAMuiB,EAAQL,cAAc9gB,EAAM3lD,MACxCE,EAAOkoE,EAAWziB,EAAMpB,IAAK8jB,KAE7B1iB,EAAMpB,IAAMuiB,EAAQxa,eAAe3G,EAAM3lD,MACzCE,EAAOkoE,EAAWziB,EAAMpB,IAAK8jB,KAIjC,SAASpS,EAAiBtQ,EAAOwiB,EAAoBC,EAAWC,GAC9D,IAAIzsE,EAAI+pD,EAAMtmD,KACd,GAAIm+C,EAAM5hD,GAAI,CACZ,IAAI+sE,EAAgBnrB,EAAMmI,EAAMb,oBAAsBlpD,EAAEq5D,UAQxD,GAPIzX,EAAM5hD,EAAIA,EAAE7D,OAASylD,EAAM5hD,EAAIA,EAAEqzB,OACnCrzB,EAAE+pD,GAAO,GAMPnI,EAAMmI,EAAMb,mBAMd,OALA8jB,EAAcjjB,EAAOwiB,GACrBjoE,EAAOkoE,EAAWziB,EAAMpB,IAAK8jB,GACzB5qB,EAAOkrB,IACTE,EAAoBljB,EAAOwiB,EAAoBC,EAAWC,IAErD,GAKb,SAASO,EAAejjB,EAAOwiB,GACzB3qB,EAAMmI,EAAMtmD,KAAKypE,iBACnBX,EAAmBzmE,KAAK/C,MAAMwpE,EAAoBxiB,EAAMtmD,KAAKypE,eAC7DnjB,EAAMtmD,KAAKypE,cAAgB,MAE7BnjB,EAAMpB,IAAMoB,EAAMb,kBAAkB6W,IAChCoN,EAAYpjB,IACd+iB,EAAkB/iB,EAAOwiB,GACzBK,EAAS7iB,KAITohB,GAAYphB,GAEZwiB,EAAmBzmE,KAAKikD,IAI5B,SAASkjB,EAAqBljB,EAAOwiB,EAAoBC,EAAWC,GAClE,IAAIzsE,EAKAotE,EAAYrjB,EAChB,MAAOqjB,EAAUlkB,kBAEf,GADAkkB,EAAYA,EAAUlkB,kBAAkBkT,OACpCxa,EAAM5hD,EAAIotE,EAAU3pE,OAASm+C,EAAM5hD,EAAIA,EAAEuE,YAAa,CACxD,IAAKvE,EAAI,EAAGA,EAAIi/D,EAAIoO,SAASr5E,SAAUgM,EACrCi/D,EAAIoO,SAASrtE,GAAGurE,GAAW6B,GAE7Bb,EAAmBzmE,KAAKsnE,GACxB,MAKJ9oE,EAAOkoE,EAAWziB,EAAMpB,IAAK8jB,GAG/B,SAASnoE,EAAQ5H,EAAQisD,EAAK2kB,GACxB1rB,EAAMllD,KACJklD,EAAM0rB,GACJpC,EAAQxmE,WAAW4oE,KAAY5wE,GACjCwuE,EAAQhiE,aAAaxM,EAAQisD,EAAK2kB,GAGpCpC,EAAQtxE,YAAY8C,EAAQisD,IAKlC,SAASkkB,EAAgB9iB,EAAOxgC,EAAUgjD,GACxC,GAAI9xE,MAAM8nB,QAAQgH,GAAW,CACvB,EAGJ,IAAK,IAAIvpB,EAAI,EAAGA,EAAIupB,EAASv1B,SAAUgM,EACrCssE,EAAU/iD,EAASvpB,GAAIusE,EAAoBxiB,EAAMpB,IAAK,MAAM,EAAMp/B,EAAUvpB,QAErE+hD,EAAYgI,EAAM3lD,OAC3B8mE,EAAQtxE,YAAYmwD,EAAMpB,IAAKuiB,EAAQxa,eAAetgE,OAAO25D,EAAM3lD,QAIvE,SAAS+oE,EAAapjB,GACpB,MAAOA,EAAMb,kBACXa,EAAQA,EAAMb,kBAAkBkT,OAElC,OAAOxa,EAAMmI,EAAMvuD,KAGrB,SAASsxE,EAAmB/iB,EAAOwiB,GACjC,IAAK,IAAIvN,EAAM,EAAGA,EAAMC,EAAI7nE,OAAOpD,SAAUgrE,EAC3CC,EAAI7nE,OAAO4nE,GAAKuM,GAAWxhB,GAE7B/pD,EAAI+pD,EAAMtmD,KAAKtH,KACXylD,EAAM5hD,KACJ4hD,EAAM5hD,EAAE5I,SAAW4I,EAAE5I,OAAOm0E,GAAWxhB,GACvCnI,EAAM5hD,EAAEsE,SAAWioE,EAAmBzmE,KAAKikD,IAOnD,SAAS6iB,EAAU7iB,GACjB,IAAI/pD,EACJ,GAAI4hD,EAAM5hD,EAAI+pD,EAAMd,WAClBiiB,EAAQD,cAAclhB,EAAMpB,IAAK3oD,OAC5B,CACL,IAAIqgC,EAAW0pB,EACf,MAAO1pB,EACDuhB,EAAM5hD,EAAIqgC,EAAS9jC,UAAYqlD,EAAM5hD,EAAIA,EAAEhD,SAASV,WACtD4uE,EAAQD,cAAclhB,EAAMpB,IAAK3oD,GAEnCqgC,EAAWA,EAAS3jC,OAIpBklD,EAAM5hD,EAAIy5D,KACZz5D,IAAM+pD,EAAMxtD,SACZyD,IAAM+pD,EAAMhB,WACZnH,EAAM5hD,EAAIA,EAAEhD,SAASV,WAErB4uE,EAAQD,cAAclhB,EAAMpB,IAAK3oD,GAIrC,SAASutE,EAAWf,EAAWC,EAAQxT,EAAQuU,EAAU1B,EAAQS,GAC/D,KAAOiB,GAAY1B,IAAU0B,EAC3BlB,EAAUrT,EAAOuU,GAAWjB,EAAoBC,EAAWC,GAAQ,EAAOxT,EAAQuU,GAItF,SAASC,EAAmB1jB,GAC1B,IAAI/pD,EAAG0B,EACH+B,EAAOsmD,EAAMtmD,KACjB,GAAIm+C,EAAMn+C,GAER,IADIm+C,EAAM5hD,EAAIyD,EAAKtH,OAASylD,EAAM5hD,EAAIA,EAAEi6D,UAAYj6D,EAAE+pD,GACjD/pD,EAAI,EAAGA,EAAIi/D,EAAIhF,QAAQjmE,SAAUgM,EAAKi/D,EAAIhF,QAAQj6D,GAAG+pD,GAE5D,GAAInI,EAAM5hD,EAAI+pD,EAAMxgC,UAClB,IAAK7nB,EAAI,EAAGA,EAAIqoD,EAAMxgC,SAASv1B,SAAU0N,EACvC+rE,EAAkB1jB,EAAMxgC,SAAS7nB,IAKvC,SAASgsE,EAAczU,EAAQuU,EAAU1B,GACvC,KAAO0B,GAAY1B,IAAU0B,EAAU,CACrC,IAAIG,EAAK1U,EAAOuU,GACZ5rB,EAAM+rB,KACJ/rB,EAAM+rB,EAAGnyE,MACXoyE,EAA0BD,GAC1BF,EAAkBE,IAElBtB,EAAWsB,EAAGhlB,OAMtB,SAASilB,EAA2B7jB,EAAO8jB,GACzC,GAAIjsB,EAAMisB,IAAOjsB,EAAMmI,EAAMtmD,MAAO,CAClC,IAAIzD,EACAy4D,EAAYwG,EAAIt6D,OAAO3Q,OAAS,EAapC,IAZI4tD,EAAMisB,GAGRA,EAAGpV,WAAaA,EAGhBoV,EAAK1B,EAAWpiB,EAAMpB,IAAK8P,GAGzB7W,EAAM5hD,EAAI+pD,EAAMb,oBAAsBtH,EAAM5hD,EAAIA,EAAEo8D,SAAWxa,EAAM5hD,EAAEyD,OACvEmqE,EAA0B5tE,EAAG6tE,GAE1B7tE,EAAI,EAAGA,EAAIi/D,EAAIt6D,OAAO3Q,SAAUgM,EACnCi/D,EAAIt6D,OAAO3E,GAAG+pD,EAAO8jB,GAEnBjsB,EAAM5hD,EAAI+pD,EAAMtmD,KAAKtH,OAASylD,EAAM5hD,EAAIA,EAAE2E,QAC5C3E,EAAE+pD,EAAO8jB,GAETA,SAGFxB,EAAWtiB,EAAMpB,KAIrB,SAASmlB,EAAgBtB,EAAWuB,EAAOC,EAAOzB,EAAoB0B,GACpE,IAQIC,EAAaC,EAAUC,EAAa3B,EARpC4B,EAAc,EACdC,EAAc,EACdC,EAAYR,EAAM/5E,OAAS,EAC3Bw6E,EAAgBT,EAAM,GACtBU,EAAcV,EAAMQ,GACpBG,EAAYV,EAAMh6E,OAAS,EAC3B26E,EAAgBX,EAAM,GACtBY,EAAcZ,EAAMU,GAMpBG,GAAWZ,EAMf,MAAOI,GAAeE,GAAaD,GAAeI,EAC5C/sB,EAAQ6sB,GACVA,EAAgBT,IAAQM,GACf1sB,EAAQ8sB,GACjBA,EAAcV,IAAQQ,GACb/C,GAAUgD,EAAeG,IAClCG,EAAWN,EAAeG,EAAepC,EAAoByB,EAAOM,GACpEE,EAAgBT,IAAQM,GACxBM,EAAgBX,IAAQM,IACf9C,GAAUiD,EAAaG,IAChCE,EAAWL,EAAaG,EAAarC,EAAoByB,EAAOU,GAChED,EAAcV,IAAQQ,GACtBK,EAAcZ,IAAQU,IACblD,GAAUgD,EAAeI,IAClCE,EAAWN,EAAeI,EAAarC,EAAoByB,EAAOU,GAClEG,GAAW3D,EAAQhiE,aAAasjE,EAAWgC,EAAc7lB,IAAKuiB,EAAQh9D,YAAYugE,EAAY9lB,MAC9F6lB,EAAgBT,IAAQM,GACxBO,EAAcZ,IAAQU,IACblD,GAAUiD,EAAaE,IAChCG,EAAWL,EAAaE,EAAepC,EAAoByB,EAAOM,GAClEO,GAAW3D,EAAQhiE,aAAasjE,EAAWiC,EAAY9lB,IAAK6lB,EAAc7lB,KAC1E8lB,EAAcV,IAAQQ,GACtBI,EAAgBX,IAAQM,KAEpB3sB,EAAQusB,KAAgBA,EAActC,GAAkBmC,EAAOM,EAAaE,IAChFJ,EAAWvsB,EAAM+sB,EAAcv8E,KAC3B87E,EAAYS,EAAcv8E,KAC1B28E,EAAaJ,EAAeZ,EAAOM,EAAaE,GAChD5sB,EAAQwsB,GACV7B,EAAUqC,EAAepC,EAAoBC,EAAWgC,EAAc7lB,KAAK,EAAOqlB,EAAOM,IAEzFF,EAAcL,EAAMI,GAChB3C,GAAU4C,EAAaO,IACzBG,EAAWV,EAAaO,EAAepC,EAAoByB,EAAOM,GAClEP,EAAMI,QAAYj+E,EAClB2+E,GAAW3D,EAAQhiE,aAAasjE,EAAW4B,EAAYzlB,IAAK6lB,EAAc7lB,MAG1E2jB,EAAUqC,EAAepC,EAAoBC,EAAWgC,EAAc7lB,KAAK,EAAOqlB,EAAOM,IAG7FK,EAAgBX,IAAQM,IAGxBD,EAAcE,GAChB9B,EAAS9qB,EAAQqsB,EAAMU,EAAY,IAAM,KAAOV,EAAMU,EAAY,GAAG/lB,IACrE4kB,EAAUf,EAAWC,EAAQuB,EAAOM,EAAaI,EAAWnC,IACnD+B,EAAcI,GACvBhB,EAAaK,EAAOM,EAAaE,GAsBrC,SAASQ,EAAclnE,EAAMkmE,EAAOjuE,EAAOghB,GACzC,IAAK,IAAI9gB,EAAIF,EAAOE,EAAI8gB,EAAK9gB,IAAK,CAChC,IAAI4F,EAAImoE,EAAM/tE,GACd,GAAI4hD,EAAMh8C,IAAM4lE,GAAU3jE,EAAMjC,GAAM,OAAO5F,GAIjD,SAAS8uE,EACPnV,EACA5P,EACAwiB,EACAI,EACAp4E,EACA05E,GAEA,GAAItU,IAAa5P,EAAjB,CAIInI,EAAMmI,EAAMpB,MAAQ/G,EAAM+qB,KAE5B5iB,EAAQ4iB,EAAWp4E,GAASu1D,GAAWC,IAGzC,IAAIpB,EAAMoB,EAAMpB,IAAMgR,EAAShR,IAE/B,GAAI9G,EAAO8X,EAASjQ,oBACd9H,EAAMmI,EAAMlB,aAAawU,UAC3B2R,EAAQrV,EAAShR,IAAKoB,EAAOwiB,GAE7BxiB,EAAML,oBAAqB,OAS/B,GAAI7H,EAAOkI,EAAMX,WACfvH,EAAO8X,EAASvQ,WAChBW,EAAM33D,MAAQunE,EAASvnE,MACtByvD,EAAOkI,EAAMR,WAAa1H,EAAOkI,EAAMP,SAExCO,EAAMb,kBAAoByQ,EAASzQ,sBALrC,CASA,IAAIlpD,EACAyD,EAAOsmD,EAAMtmD,KACbm+C,EAAMn+C,IAASm+C,EAAM5hD,EAAIyD,EAAKtH,OAASylD,EAAM5hD,EAAIA,EAAEu5D,WACrDv5D,EAAE25D,EAAU5P,GAGd,IAAIgkB,EAAQpU,EAASpwC,SACjBokD,EAAK5jB,EAAMxgC,SACf,GAAIq4B,EAAMn+C,IAAS0pE,EAAYpjB,GAAQ,CACrC,IAAK/pD,EAAI,EAAGA,EAAIi/D,EAAIv2D,OAAO1U,SAAUgM,EAAKi/D,EAAIv2D,OAAO1I,GAAG25D,EAAU5P,GAC9DnI,EAAM5hD,EAAIyD,EAAKtH,OAASylD,EAAM5hD,EAAIA,EAAE0I,SAAW1I,EAAE25D,EAAU5P,GAE7DpI,EAAQoI,EAAM3lD,MACZw9C,EAAMmsB,IAAUnsB,EAAM+rB,GACpBI,IAAUJ,GAAMG,EAAenlB,EAAKolB,EAAOJ,EAAIpB,EAAoB0B,GAC9DrsB,EAAM+rB,IAIX/rB,EAAM+X,EAASv1D,OAAS8mE,EAAQF,eAAeriB,EAAK,IACxD4kB,EAAU5kB,EAAK,KAAMglB,EAAI,EAAGA,EAAG35E,OAAS,EAAGu4E,IAClC3qB,EAAMmsB,GACfL,EAAaK,EAAO,EAAGA,EAAM/5E,OAAS,GAC7B4tD,EAAM+X,EAASv1D,OACxB8mE,EAAQF,eAAeriB,EAAK,IAErBgR,EAASv1D,OAAS2lD,EAAM3lD,MACjC8mE,EAAQF,eAAeriB,EAAKoB,EAAM3lD,MAEhCw9C,EAAMn+C,IACJm+C,EAAM5hD,EAAIyD,EAAKtH,OAASylD,EAAM5hD,EAAIA,EAAEivE,YAAcjvE,EAAE25D,EAAU5P,KAItE,SAASmlB,EAAkBnlB,EAAOzK,EAAO6vB,GAGvC,GAAIttB,EAAOstB,IAAYvtB,EAAMmI,EAAMrtD,QACjCqtD,EAAMrtD,OAAO+G,KAAKypE,cAAgB5tB,OAElC,IAAK,IAAIt/C,EAAI,EAAGA,EAAIs/C,EAAMtrD,SAAUgM,EAClCs/C,EAAMt/C,GAAGyD,KAAKtH,KAAKmI,OAAOg7C,EAAMt/C,IAKtC,IAKIovE,EAAmB7sB,EAAQ,2CAG/B,SAASysB,EAASrmB,EAAKoB,EAAOwiB,EAAoB8C,GAChD,IAAIrvE,EACAxE,EAAMuuD,EAAMvuD,IACZiI,EAAOsmD,EAAMtmD,KACb8lB,EAAWwgC,EAAMxgC,SAIrB,GAHA8lD,EAASA,GAAW5rE,GAAQA,EAAKq4D,IACjC/R,EAAMpB,IAAMA,EAER9G,EAAOkI,EAAMT,YAAc1H,EAAMmI,EAAMlB,cAEzC,OADAkB,EAAML,oBAAqB,GACpB,EAQT,GAAI9H,EAAMn+C,KACJm+C,EAAM5hD,EAAIyD,EAAKtH,OAASylD,EAAM5hD,EAAIA,EAAEqzB,OAASrzB,EAAE+pD,GAAO,GACtDnI,EAAM5hD,EAAI+pD,EAAMb,oBAGlB,OADA8jB,EAAcjjB,EAAOwiB,IACd,EAGX,GAAI3qB,EAAMpmD,GAAM,CACd,GAAIomD,EAAMr4B,GAER,GAAKo/B,EAAI2mB,gBAIP,GAAI1tB,EAAM5hD,EAAIyD,IAASm+C,EAAM5hD,EAAIA,EAAEg2D,WAAapU,EAAM5hD,EAAIA,EAAE8N,YAC1D,GAAI9N,IAAM2oD,EAAI76C,UAWZ,OAAO,MAEJ,CAIL,IAFA,IAAIyhE,GAAgB,EAChBhG,EAAY5gB,EAAIt6C,WACX2wD,EAAM,EAAGA,EAAMz1C,EAASv1B,OAAQgrE,IAAO,CAC9C,IAAKuK,IAAcyF,EAAQzF,EAAWhgD,EAASy1C,GAAMuN,EAAoB8C,GAAS,CAChFE,GAAgB,EAChB,MAEFhG,EAAYA,EAAUr7D,YAIxB,IAAKqhE,GAAiBhG,EAUpB,OAAO,OAxCXsD,EAAe9iB,EAAOxgC,EAAUgjD,GA6CpC,GAAI3qB,EAAMn+C,GAAO,CACf,IAAI+rE,GAAa,EACjB,IAAK,IAAIp9E,KAAOqR,EACd,IAAK2rE,EAAiBh9E,GAAM,CAC1Bo9E,GAAa,EACb1C,EAAkB/iB,EAAOwiB,GACzB,OAGCiD,GAAc/rE,EAAK,UAEtBstD,GAASttD,EAAK,gBAGTklD,EAAIllD,OAASsmD,EAAM3lD,OAC5BukD,EAAIllD,KAAOsmD,EAAM3lD,MAEnB,OAAO,EAcT,OAAO,SAAgBu1D,EAAU5P,EAAOoP,EAAW8U,GACjD,IAAItsB,EAAQoI,GAAZ,CAKA,IAAI0lB,GAAiB,EACjBlD,EAAqB,GAEzB,GAAI5qB,EAAQgY,GAEV8V,GAAiB,EACjBnD,EAAUviB,EAAOwiB,OACZ,CACL,IAAImD,EAAgB9tB,EAAM+X,EAASgW,UACnC,IAAKD,GAAiBlE,GAAU7R,EAAU5P,GAExC+kB,EAAWnV,EAAU5P,EAAOwiB,EAAoB,KAAM,KAAM0B,OACvD,CACL,GAAIyB,EAAe,CAQjB,GAJ0B,IAAtB/V,EAASgW,UAAkBhW,EAASiW,aAAanrB,KACnDkV,EAASxuD,gBAAgBs5C,GACzB0U,GAAY,GAEVtX,EAAOsX,IACL6V,EAAQrV,EAAU5P,EAAOwiB,GAE3B,OADA2C,EAAiBnlB,EAAOwiB,GAAoB,GACrC5S,EAaXA,EAAWuS,EAAYvS,GAIzB,IAAIkW,EAASlW,EAAShR,IAClB6jB,EAAYtB,EAAQxmE,WAAWmrE,GAcnC,GAXAvD,EACEviB,EACAwiB,EAIAsD,EAAOC,SAAW,KAAOtD,EACzBtB,EAAQh9D,YAAY2hE,IAIlBjuB,EAAMmI,EAAMrtD,QAAS,CACvB,IAAI2jC,EAAW0pB,EAAMrtD,OACjBqzE,EAAY5C,EAAYpjB,GAC5B,MAAO1pB,EAAU,CACf,IAAK,IAAIrgC,EAAI,EAAGA,EAAIi/D,EAAIhF,QAAQjmE,SAAUgM,EACxCi/D,EAAIhF,QAAQj6D,GAAGqgC,GAGjB,GADAA,EAASsoB,IAAMoB,EAAMpB,IACjBonB,EAAW,CACb,IAAK,IAAI/Q,EAAM,EAAGA,EAAMC,EAAI7nE,OAAOpD,SAAUgrE,EAC3CC,EAAI7nE,OAAO4nE,GAAKuM,GAAWlrC,GAK7B,IAAI/7B,EAAS+7B,EAAS58B,KAAKtH,KAAKmI,OAChC,GAAIA,EAAO/C,OAET,IAAK,IAAIyuE,EAAM,EAAGA,EAAM1rE,EAAOmtD,IAAIz9D,OAAQg8E,IACzC1rE,EAAOmtD,IAAIue,UAIf7E,GAAY9qC,GAEdA,EAAWA,EAAS3jC,QAKpBklD,EAAM4qB,GACRkB,EAAa,CAAC/T,GAAW,EAAG,GACnB/X,EAAM+X,EAASn+D,MACxBiyE,EAAkB9T,IAMxB,OADAuV,EAAiBnlB,EAAOwiB,EAAoBkD,GACrC1lB,EAAMpB,IAnGP/G,EAAM+X,IAAa8T,EAAkB9T,IAyG/C,IAAIjM,GAAa,CACft2D,OAAQ64E,GACRvnE,OAAQunE,GACRhW,QAAS,SAA2BlQ,GAClCkmB,GAAiBlmB,EAAOwhB,MAI5B,SAAS0E,GAAkBtW,EAAU5P,IAC/B4P,EAASl2D,KAAKiqD,YAAc3D,EAAMtmD,KAAKiqD,aACzCmS,GAAQlG,EAAU5P,GAItB,SAAS8V,GAASlG,EAAU5P,GAC1B,IAQI33D,EAAK89E,EAAQC,EARbC,EAAWzW,IAAa4R,GACxB8E,EAAYtmB,IAAUwhB,GACtB+E,EAAUC,GAAsB5W,EAASl2D,KAAKiqD,WAAYiM,EAASp9D,SACnEi0E,EAAUD,GAAsBxmB,EAAMtmD,KAAKiqD,WAAY3D,EAAMxtD,SAE7Dk0E,EAAiB,GACjBC,EAAoB,GAGxB,IAAKt+E,KAAOo+E,EACVN,EAASI,EAAQl+E,GACjB+9E,EAAMK,EAAQp+E,GACT89E,GAQHC,EAAIhN,SAAW+M,EAAOrgF,MACtBsgF,EAAIQ,OAAST,EAAOryB,IACpB+yB,GAAWT,EAAK,SAAUpmB,EAAO4P,GAC7BwW,EAAIpqB,KAAOoqB,EAAIpqB,IAAI8qB,kBACrBH,EAAkB5qE,KAAKqqE,KAVzBS,GAAWT,EAAK,OAAQpmB,EAAO4P,GAC3BwW,EAAIpqB,KAAOoqB,EAAIpqB,IAAIuE,UACrBmmB,EAAe3qE,KAAKqqE,IAa1B,GAAIM,EAAez8E,OAAQ,CACzB,IAAI88E,EAAa,WACf,IAAK,IAAI9wE,EAAI,EAAGA,EAAIywE,EAAez8E,OAAQgM,IACzC4wE,GAAWH,EAAezwE,GAAI,WAAY+pD,EAAO4P,IAGjDyW,EACFne,GAAelI,EAAO,SAAU+mB,GAEhCA,IAYJ,GARIJ,EAAkB18E,QACpBi+D,GAAelI,EAAO,aAAa,WACjC,IAAK,IAAI/pD,EAAI,EAAGA,EAAI0wE,EAAkB18E,OAAQgM,IAC5C4wE,GAAWF,EAAkB1wE,GAAI,mBAAoB+pD,EAAO4P,OAK7DyW,EACH,IAAKh+E,KAAOk+E,EACLE,EAAQp+E,IAEXw+E,GAAWN,EAAQl+E,GAAM,SAAUunE,EAAUA,EAAU0W,GAM/D,IAAIU,GAAiB3/E,OAAOgG,OAAO,MAEnC,SAASm5E,GACP9iB,EACAjB,GAEA,IAKIxsD,EAAGmwE,EALHvsB,EAAMxyD,OAAOgG,OAAO,MACxB,IAAKq2D,EAEH,OAAO7J,EAGT,IAAK5jD,EAAI,EAAGA,EAAIytD,EAAKz5D,OAAQgM,IAC3BmwE,EAAM1iB,EAAKztD,GACNmwE,EAAIa,YAEPb,EAAIa,UAAYD,IAElBntB,EAAIqtB,GAAcd,IAAQA,EAC1BA,EAAIpqB,IAAMmI,GAAa1B,EAAGxvD,SAAU,aAAcmzE,EAAI/0E,MAAM,GAG9D,OAAOwoD,EAGT,SAASqtB,GAAed,GACtB,OAAOA,EAAIe,SAAaf,EAAQ,KAAI,IAAO/+E,OAAOnC,KAAKkhF,EAAIa,WAAa,IAAI9/E,KAAK,KAGnF,SAAS0/E,GAAYT,EAAKh0E,EAAM4tD,EAAO4P,EAAU0W,GAC/C,IAAInyE,EAAKiyE,EAAIpqB,KAAOoqB,EAAIpqB,IAAI5pD,GAC5B,GAAI+B,EACF,IACEA,EAAG6rD,EAAMpB,IAAKwnB,EAAKpmB,EAAO4P,EAAU0W,GACpC,MAAO37E,IACP46D,GAAY56D,GAAGq1D,EAAMxtD,QAAU,aAAgB4zE,EAAQ,KAAI,IAAMh0E,EAAO,UAK9E,IAAIg1E,GAAc,CAChBrU,GACApP,IAKF,SAAS0jB,GAAazX,EAAU5P,GAC9B,IAAI5C,EAAO4C,EAAMnB,iBACjB,KAAIhH,EAAMuF,KAA4C,IAAnCA,EAAKM,KAAKvyD,QAAQm8E,iBAGjC1vB,EAAQgY,EAASl2D,KAAK6uD,SAAU3Q,EAAQoI,EAAMtmD,KAAK6uD,QAAvD,CAGA,IAAIlgE,EAAKq9D,EAAKuC,EACVrJ,EAAMoB,EAAMpB,IACZ2oB,EAAW3X,EAASl2D,KAAK6uD,OAAS,GAClCA,EAAQvI,EAAMtmD,KAAK6uD,OAAS,GAMhC,IAAKlgE,KAJDwvD,EAAM0Q,EAAM9H,UACd8H,EAAQvI,EAAMtmD,KAAK6uD,MAAQ5/C,EAAO,GAAI4/C,IAG5BA,EACV7C,EAAM6C,EAAMlgE,GACZ4/D,EAAMsf,EAASl/E,GACX4/D,IAAQvC,GACV8hB,GAAQ5oB,EAAKv2D,EAAKq9D,GAStB,IAAKr9D,KAHAu0D,IAAQE,KAAWyL,EAAMziE,QAAUyhF,EAASzhF,OAC/C0hF,GAAQ5oB,EAAK,QAAS2J,EAAMziE,OAElByhF,EACN3vB,EAAQ2Q,EAAMlgE,MACZg3E,GAAQh3E,GACVu2D,EAAIt9C,kBAAkB89D,GAASE,GAAaj3E,IAClC02E,GAAiB12E,IAC3Bu2D,EAAIx9C,gBAAgB/Y,KAM5B,SAASm/E,GAAS/Q,EAAIpuE,EAAKvC,GACrB2wE,EAAGmK,QAAQjlE,QAAQ,MAAQ,EAC7B8rE,GAAYhR,EAAIpuE,EAAKvC,GACZq5E,GAAc92E,GAGnB62E,GAAiBp5E,GACnB2wE,EAAGr1D,gBAAgB/Y,IAInBvC,EAAgB,oBAARuC,GAA4C,UAAfouE,EAAGmK,QACpC,OACAv4E,EACJouE,EAAGj1D,aAAanZ,EAAKvC,IAEdi5E,GAAiB12E,GAC1BouE,EAAGj1D,aAAanZ,EAAK42E,GAAuB52E,EAAKvC,IACxCu5E,GAAQh3E,GACb62E,GAAiBp5E,GACnB2wE,EAAGn1D,kBAAkB89D,GAASE,GAAaj3E,IAE3CouE,EAAG/0D,eAAe09D,GAAS/2E,EAAKvC,GAGlC2hF,GAAYhR,EAAIpuE,EAAKvC,GAIzB,SAAS2hF,GAAahR,EAAIpuE,EAAKvC,GAC7B,GAAIo5E,GAAiBp5E,GACnB2wE,EAAGr1D,gBAAgB/Y,OACd,CAKL,GACEu0D,KAASC,IACM,aAAf4Z,EAAGmK,SACK,gBAARv4E,GAAmC,KAAVvC,IAAiB2wE,EAAGiR,OAC7C,CACA,IAAIC,EAAU,SAAUh9E,GACtBA,EAAEi9E,2BACFnR,EAAG3wD,oBAAoB,QAAS6hE,IAElClR,EAAGvwD,iBAAiB,QAASyhE,GAE7BlR,EAAGiR,QAAS,EAEdjR,EAAGj1D,aAAanZ,EAAKvC,IAIzB,IAAIyiE,GAAQ,CACVl7D,OAAQg6E,GACR1oE,OAAQ0oE,IAKV,SAASQ,GAAajY,EAAU5P,GAC9B,IAAIyW,EAAKzW,EAAMpB,IACXllD,EAAOsmD,EAAMtmD,KACbouE,EAAUlY,EAASl2D,KACvB,KACEk+C,EAAQl+C,EAAKimE,cACb/nB,EAAQl+C,EAAKy4D,SACXva,EAAQkwB,IACNlwB,EAAQkwB,EAAQnI,cAChB/nB,EAAQkwB,EAAQ3V,SALtB,CAYA,IAAI4V,EAAMxI,GAAiBvf,GAGvBgoB,EAAkBvR,EAAGwR,mBACrBpwB,EAAMmwB,KACRD,EAAM1iF,GAAO0iF,EAAKlI,GAAemI,KAI/BD,IAAQtR,EAAGyR,aACbzR,EAAGj1D,aAAa,QAASumE,GACzBtR,EAAGyR,WAAaH,IAIpB,IAyCII,GAzCAC,GAAQ,CACV/6E,OAAQw6E,GACRlpE,OAAQkpE,IAaNQ,GAAc,MACdC,GAAuB,MAQ3B,SAASC,GAAiBtsE,GAExB,GAAI47C,EAAM57C,EAAGosE,KAAe,CAE1B,IAAI/iE,EAAQs3C,GAAO,SAAW,QAC9B3gD,EAAGqJ,GAAS,GAAGjgB,OAAO4W,EAAGosE,IAAcpsE,EAAGqJ,IAAU,WAC7CrJ,EAAGosE,IAKRxwB,EAAM57C,EAAGqsE,OACXrsE,EAAGusE,OAAS,GAAGnjF,OAAO4W,EAAGqsE,IAAuBrsE,EAAGusE,QAAU,WACtDvsE,EAAGqsE,KAMd,SAASG,GAAqBnjE,EAAOygD,EAAShgD,GAC5C,IAAI4uD,EAAUwT,GACd,OAAO,SAASvT,IACd,IAAI/a,EAAMkM,EAAQ/sD,MAAM,KAAMhP,WAClB,OAAR6vD,GACF6uB,GAASpjE,EAAOsvD,EAAa7uD,EAAS4uD,IAQ5C,IAAIgU,GAAkBxiB,MAAsBnJ,IAAQkhB,OAAOlhB,GAAK,KAAO,IAEvE,SAAS4rB,GACPv3E,EACA00D,EACAhgD,EACAwhD,GAQA,GAAIohB,GAAiB,CACnB,IAAIE,EAAoBjR,GACpBvX,EAAW0F,EACfA,EAAU1F,EAASyoB,SAAW,SAAUn+E,GACtC,GAIEA,EAAEpD,SAAWoD,EAAEo+E,eAEfp+E,EAAEmtE,WAAa+Q,GAIfl+E,EAAEmtE,WAAa,GAIfntE,EAAEpD,OAAOwV,gBAAkBhN,SAE3B,OAAOswD,EAASrnD,MAAMrR,KAAMqC,YAIlCm+E,GAASjiE,iBACP7U,EACA00D,EACA5I,GACI,CAAEp3C,QAASA,EAASwhD,QAASA,GAC7BxhD,GAIR,SAAS2iE,GACPr3E,EACA00D,EACAhgD,EACA4uD,IAECA,GAAWwT,IAAUriE,oBACpBzU,EACA00D,EAAQ+iB,UAAY/iB,EACpBhgD,GAIJ,SAASijE,GAAoBpZ,EAAU5P,GACrC,IAAIpI,EAAQgY,EAASl2D,KAAKuC,MAAO27C,EAAQoI,EAAMtmD,KAAKuC,IAApD,CAGA,IAAIA,EAAK+jD,EAAMtmD,KAAKuC,IAAM,GACtB6rD,EAAQ8H,EAASl2D,KAAKuC,IAAM,GAChCksE,GAAWnoB,EAAMpB,IACjB2pB,GAAgBtsE,GAChB4rD,GAAgB5rD,EAAI6rD,EAAO8gB,GAAOF,GAAUD,GAAqBzoB,EAAMxtD,SACvE21E,QAAWhiF,GAGb,IAOI8iF,GAPAC,GAAS,CACX77E,OAAQ27E,GACRrqE,OAAQqqE,IAOV,SAASG,GAAgBvZ,EAAU5P,GACjC,IAAIpI,EAAQgY,EAASl2D,KAAKuyD,YAAarU,EAAQoI,EAAMtmD,KAAKuyD,UAA1D,CAGA,IAAI5jE,EAAKq9D,EACL9G,EAAMoB,EAAMpB,IACZwqB,EAAWxZ,EAASl2D,KAAKuyD,UAAY,GACrChJ,EAAQjD,EAAMtmD,KAAKuyD,UAAY,GAMnC,IAAK5jE,KAJDwvD,EAAMoL,EAAMxC,UACdwC,EAAQjD,EAAMtmD,KAAKuyD,SAAWtjD,EAAO,GAAIs6C,IAG/BmmB,EACJ/gF,KAAO46D,IACXrE,EAAIv2D,GAAO,IAIf,IAAKA,KAAO46D,EAAO,CAKjB,GAJAyC,EAAMzC,EAAM56D,GAIA,gBAARA,GAAiC,cAARA,EAAqB,CAEhD,GADI23D,EAAMxgC,WAAYwgC,EAAMxgC,SAASv1B,OAAS,GAC1Cy7D,IAAQ0jB,EAAS/gF,GAAQ,SAGC,IAA1Bu2D,EAAIyqB,WAAWp/E,QACjB20D,EAAIl6C,YAAYk6C,EAAIyqB,WAAW,IAInC,GAAY,UAARhhF,GAAmC,aAAhBu2D,EAAIgiB,QAAwB,CAGjDhiB,EAAIlgC,OAASgnC,EAEb,IAAI4jB,EAAS1xB,EAAQ8N,GAAO,GAAKr/D,OAAOq/D,GACpC6jB,GAAkB3qB,EAAK0qB,KACzB1qB,EAAI94D,MAAQwjF,QAET,GAAY,cAARjhF,GAAuB+3E,GAAMxhB,EAAIgiB,UAAYhpB,EAAQgH,EAAI76C,WAAY,CAE9EklE,GAAeA,IAAgBl5E,SAASoN,cAAc,OACtD8rE,GAAallE,UAAY,QAAU2hD,EAAM,SACzC,IAAIppD,EAAM2sE,GAAa3kE,WACvB,MAAOs6C,EAAIt6C,WACTs6C,EAAIl6C,YAAYk6C,EAAIt6C,YAEtB,MAAOhI,EAAIgI,WACTs6C,EAAI/uD,YAAYyM,EAAIgI,iBAEjB,GAKLohD,IAAQ0jB,EAAS/gF,GAIjB,IACEu2D,EAAIv2D,GAAOq9D,EACX,MAAO/6D,QAQf,SAAS4+E,GAAmB3qB,EAAK4qB,GAC/B,OAAS5qB,EAAI6qB,YACK,WAAhB7qB,EAAIgiB,SACJ8I,GAAqB9qB,EAAK4qB,IAC1BG,GAAqB/qB,EAAK4qB,IAI9B,SAASE,GAAsB9qB,EAAK4qB,GAGlC,IAAII,GAAa,EAGjB,IAAMA,EAAa75E,SAAS85E,gBAAkBjrB,EAAO,MAAOj0D,KAC5D,OAAOi/E,GAAchrB,EAAI94D,QAAU0jF,EAGrC,SAASG,GAAsB/qB,EAAKmD,GAClC,IAAIj8D,EAAQ84D,EAAI94D,MACZmhF,EAAYroB,EAAIkrB,YACpB,GAAIjyB,EAAMovB,GAAY,CACpB,GAAIA,EAAU8C,OACZ,OAAOxxB,EAASzyD,KAAWyyD,EAASwJ,GAEtC,GAAIklB,EAAUv7E,KACZ,OAAO5F,EAAM4F,SAAWq2D,EAAOr2D,OAGnC,OAAO5F,IAAUi8D,EAGnB,IAAIkK,GAAW,CACb5+D,OAAQ87E,GACRxqE,OAAQwqE,IAKNa,GAAiBlxB,GAAO,SAAUmxB,GACpC,IAAIpwB,EAAM,GACNqwB,EAAgB,gBAChBC,EAAoB,QAOxB,OANAF,EAAQp1E,MAAMq1E,GAAe3jD,SAAQ,SAAUqyB,GAC7C,GAAIA,EAAM,CACR,IAAIugB,EAAMvgB,EAAK/jD,MAAMs1E,GACrBhR,EAAIlvE,OAAS,IAAM4vD,EAAIsf,EAAI,GAAGztE,QAAUytE,EAAI,GAAGztE,YAG5CmuD,KAIT,SAASuwB,GAAoB1wE,GAC3B,IAAI/J,EAAQ06E,GAAsB3wE,EAAK/J,OAGvC,OAAO+J,EAAK4wE,YACR3hE,EAAOjP,EAAK4wE,YAAa36E,GACzBA,EAIN,SAAS06E,GAAuBE,GAC9B,OAAI75E,MAAM8nB,QAAQ+xD,GACT18E,EAAS08E,GAEU,kBAAjBA,EACFP,GAAeO,GAEjBA,EAOT,SAASC,GAAUxqB,EAAOyqB,GACxB,IACIC,EADA7wB,EAAM,GAGV,GAAI4wB,EAAY,CACd,IAAIjL,EAAYxf,EAChB,MAAOwf,EAAUrgB,kBACfqgB,EAAYA,EAAUrgB,kBAAkBkT,OAEtCmN,GAAaA,EAAU9lE,OACtBgxE,EAAYN,GAAmB5K,EAAU9lE,QAE1CiP,EAAOkxC,EAAK6wB,IAKbA,EAAYN,GAAmBpqB,EAAMtmD,QACxCiP,EAAOkxC,EAAK6wB,GAGd,IAAI/vE,EAAaqlD,EACjB,MAAQrlD,EAAaA,EAAWhI,OAC1BgI,EAAWjB,OAASgxE,EAAYN,GAAmBzvE,EAAWjB,QAChEiP,EAAOkxC,EAAK6wB,GAGhB,OAAO7wB,EAKT,IAyBI8wB,GAzBAC,GAAW,MACXC,GAAc,iBACdC,GAAU,SAAUrU,EAAIplE,EAAM2iD,GAEhC,GAAI42B,GAAS/iF,KAAKwJ,GAChBolE,EAAG9mE,MAAMyS,YAAY/Q,EAAM2iD,QACtB,GAAI62B,GAAYhjF,KAAKmsD,GAC1ByiB,EAAG9mE,MAAMyS,YAAYg3C,EAAU/nD,GAAO2iD,EAAI5rB,QAAQyiD,GAAa,IAAK,iBAC/D,CACL,IAAIE,EAAiB7wC,GAAU7oC,GAC/B,GAAIX,MAAM8nB,QAAQw7B,GAIhB,IAAK,IAAI/9C,EAAI,EAAGqqD,EAAMtM,EAAI/pD,OAAQgM,EAAIqqD,EAAKrqD,IACzCwgE,EAAG9mE,MAAMo7E,GAAkB/2B,EAAI/9C,QAGjCwgE,EAAG9mE,MAAMo7E,GAAkB/2B,IAK7Bg3B,GAAc,CAAC,SAAU,MAAO,MAGhC9wC,GAAY4e,GAAO,SAAU6L,GAG/B,GAFAgmB,GAAaA,IAAc56E,SAASoN,cAAc,OAAOxN,MACzDg1D,EAAO1L,EAAS0L,GACH,WAATA,GAAsBA,KAAQgmB,GAChC,OAAOhmB,EAGT,IADA,IAAIsmB,EAAUtmB,EAAK95D,OAAO,GAAGsiC,cAAgBw3B,EAAK7uD,MAAM,GAC/CG,EAAI,EAAGA,EAAI+0E,GAAY/gF,OAAQgM,IAAK,CAC3C,IAAI5E,EAAO25E,GAAY/0E,GAAKg1E,EAC5B,GAAI55E,KAAQs5E,GACV,OAAOt5E,MAKb,SAAS65E,GAAatb,EAAU5P,GAC9B,IAAItmD,EAAOsmD,EAAMtmD,KACbouE,EAAUlY,EAASl2D,KAEvB,KAAIk+C,EAAQl+C,EAAK4wE,cAAgB1yB,EAAQl+C,EAAK/J,QAC5CioD,EAAQkwB,EAAQwC,cAAgB1yB,EAAQkwB,EAAQn4E,QADlD,CAMA,IAAI+1D,EAAKr0D,EACLolE,EAAKzW,EAAMpB,IACXusB,EAAiBrD,EAAQwC,YACzBc,EAAkBtD,EAAQuD,iBAAmBvD,EAAQn4E,OAAS,GAG9D27E,EAAWH,GAAkBC,EAE7Bz7E,EAAQ06E,GAAsBrqB,EAAMtmD,KAAK/J,QAAU,GAKvDqwD,EAAMtmD,KAAK2xE,gBAAkBxzB,EAAMloD,EAAM8wD,QACrC93C,EAAO,GAAIhZ,GACXA,EAEJ,IAAI47E,EAAWf,GAASxqB,GAAO,GAE/B,IAAK3uD,KAAQi6E,EACP1zB,EAAQ2zB,EAASl6E,KACnBy5E,GAAQrU,EAAIplE,EAAM,IAGtB,IAAKA,KAAQk6E,EACX7lB,EAAM6lB,EAASl6E,GACXq0D,IAAQ4lB,EAASj6E,IAEnBy5E,GAAQrU,EAAIplE,EAAa,MAAPq0D,EAAc,GAAKA,IAK3C,IAAI/1D,GAAQ,CACVtC,OAAQ69E,GACRvsE,OAAQusE,IAKNM,GAAe,MAMnB,SAASC,GAAUhV,EAAIsR,GAErB,GAAKA,IAASA,EAAMA,EAAIr8E,QAKxB,GAAI+qE,EAAG5zD,UACDklE,EAAIpsE,QAAQ,MAAQ,EACtBosE,EAAIlzE,MAAM22E,IAAcjlD,SAAQ,SAAU1qB,GAAK,OAAO46D,EAAG5zD,UAAU/P,IAAI+I,MAEvE46D,EAAG5zD,UAAU/P,IAAIi1E,OAEd,CACL,IAAIriB,EAAM,KAAO+Q,EAAGh8D,aAAa,UAAY,IAAM,IAC/CirD,EAAI/pD,QAAQ,IAAMosE,EAAM,KAAO,GACjCtR,EAAGj1D,aAAa,SAAUkkD,EAAMqiB,GAAKr8E,SAS3C,SAASggF,GAAajV,EAAIsR,GAExB,GAAKA,IAASA,EAAMA,EAAIr8E,QAKxB,GAAI+qE,EAAG5zD,UACDklE,EAAIpsE,QAAQ,MAAQ,EACtBosE,EAAIlzE,MAAM22E,IAAcjlD,SAAQ,SAAU1qB,GAAK,OAAO46D,EAAG5zD,UAAUjI,OAAOiB,MAE1E46D,EAAG5zD,UAAUjI,OAAOmtE,GAEjBtR,EAAG5zD,UAAU5Y,QAChBwsE,EAAGr1D,gBAAgB,aAEhB,CACL,IAAIskD,EAAM,KAAO+Q,EAAGh8D,aAAa,UAAY,IAAM,IAC/CkxE,EAAM,IAAM5D,EAAM,IACtB,MAAOriB,EAAI/pD,QAAQgwE,IAAQ,EACzBjmB,EAAMA,EAAIt9B,QAAQujD,EAAK,KAEzBjmB,EAAMA,EAAIh6D,OACNg6D,EACF+Q,EAAGj1D,aAAa,QAASkkD,GAEzB+Q,EAAGr1D,gBAAgB,UAOzB,SAASwqE,GAAmBhoB,GAC1B,GAAKA,EAAL,CAIA,GAAsB,kBAAXA,EAAqB,CAC9B,IAAI/J,EAAM,GAKV,OAJmB,IAAf+J,EAAOioB,KACTljE,EAAOkxC,EAAKiyB,GAAkBloB,EAAOvyD,MAAQ,MAE/CsX,EAAOkxC,EAAK+J,GACL/J,EACF,MAAsB,kBAAX+J,EACTkoB,GAAkBloB,QADpB,GAKT,IAAIkoB,GAAoBhzB,GAAO,SAAUznD,GACvC,MAAO,CACL06E,WAAa16E,EAAO,SACpB26E,aAAe36E,EAAO,YACtB46E,iBAAmB56E,EAAO,gBAC1B66E,WAAa76E,EAAO,SACpB86E,aAAe96E,EAAO,YACtB+6E,iBAAmB/6E,EAAO,oBAI1Bg7E,GAAgBhwB,IAAcQ,GAC9ByvB,GAAa,aACbC,GAAY,YAGZC,GAAiB,aACjBC,GAAqB,gBACrBC,GAAgB,YAChBC,GAAoB,eACpBN,UAE6BlmF,IAA3ByE,OAAOgiF,sBACwBzmF,IAAjCyE,OAAOiiF,wBAEPL,GAAiB,mBACjBC,GAAqB,4BAEOtmF,IAA1ByE,OAAOkiF,qBACuB3mF,IAAhCyE,OAAOmiF,uBAEPL,GAAgB,kBAChBC,GAAoB,uBAKxB,IAAIK,GAAM3wB,EACNzxD,OAAOuwB,sBACLvwB,OAAOuwB,sBAAsBvnB,KAAKhJ,QAClCwwB,WACyB,SAAUjnB,GAAM,OAAOA,KAEtD,SAAS84E,GAAW94E,GAClB64E,IAAI,WACFA,GAAI74E,MAIR,SAAS+4E,GAAoBzW,EAAIsR,GAC/B,IAAIoF,EAAoB1W,EAAGwR,qBAAuBxR,EAAGwR,mBAAqB,IACtEkF,EAAkBxxE,QAAQosE,GAAO,IACnCoF,EAAkBpxE,KAAKgsE,GACvB0D,GAAShV,EAAIsR,IAIjB,SAASqF,GAAuB3W,EAAIsR,GAC9BtR,EAAGwR,oBACLrtE,EAAO67D,EAAGwR,mBAAoBF,GAEhC2D,GAAYjV,EAAIsR,GAGlB,SAASsF,GACP5W,EACA6W,EACAzmB,GAEA,IAAIkM,EAAMwa,GAAkB9W,EAAI6W,GAC5BpkF,EAAO6pE,EAAI7pE,KACXwxB,EAAUq4C,EAAIr4C,QACd8yD,EAAYza,EAAIya,UACpB,IAAKtkF,EAAQ,OAAO29D,IACpB,IAAIvhD,EAAQpc,IAASojF,GAAaG,GAAqBE,GACnDc,EAAQ,EACR12D,EAAM,WACR0/C,EAAG3wD,oBAAoBR,EAAOooE,GAC9B7mB,KAEE6mB,EAAQ,SAAU/iF,GAChBA,EAAEpD,SAAWkvE,KACTgX,GAASD,GACbz2D,KAINqE,YAAW,WACLqyD,EAAQD,GACVz2D,MAED2D,EAAU,GACb+7C,EAAGvwD,iBAAiBZ,EAAOooE,GAG7B,IAAIC,GAAc,yBAElB,SAASJ,GAAmB9W,EAAI6W,GAC9B,IASIpkF,EATA0kF,EAAShjF,OAAO4X,iBAAiBi0D,GAEjCoX,GAAoBD,EAAOpB,GAAiB,UAAY,IAAI33E,MAAM,MAClEi5E,GAAuBF,EAAOpB,GAAiB,aAAe,IAAI33E,MAAM,MACxEk5E,EAAoBC,GAAWH,EAAkBC,GACjDG,GAAmBL,EAAOlB,GAAgB,UAAY,IAAI73E,MAAM,MAChEq5E,GAAsBN,EAAOlB,GAAgB,aAAe,IAAI73E,MAAM,MACtEs5E,EAAmBH,GAAWC,EAAiBC,GAG/CxzD,EAAU,EACV8yD,EAAY,EAEZF,IAAiBhB,GACfyB,EAAoB,IACtB7kF,EAAOojF,GACP5xD,EAAUqzD,EACVP,EAAYM,EAAoB7jF,QAEzBqjF,IAAiBf,GACtB4B,EAAmB,IACrBjlF,EAAOqjF,GACP7xD,EAAUyzD,EACVX,EAAYU,EAAmBjkF,SAGjCywB,EAAUp2B,KAAK4R,IAAI63E,EAAmBI,GACtCjlF,EAAOwxB,EAAU,EACbqzD,EAAoBI,EAClB7B,GACAC,GACF,KACJiB,EAAYtkF,EACRA,IAASojF,GACPwB,EAAoB7jF,OACpBikF,EAAmBjkF,OACrB,GAEN,IAAImkF,EACFllF,IAASojF,IACTqB,GAAY9lF,KAAK+lF,EAAOpB,GAAiB,aAC3C,MAAO,CACLtjF,KAAMA,EACNwxB,QAASA,EACT8yD,UAAWA,EACXY,aAAcA,GAIlB,SAASJ,GAAYK,EAAQC,GAE3B,MAAOD,EAAOpkF,OAASqkF,EAAUrkF,OAC/BokF,EAASA,EAAOhpF,OAAOgpF,GAGzB,OAAO/pF,KAAK4R,IAAI8C,MAAM,KAAMs1E,EAAU5kF,KAAI,SAAU8L,EAAGS,GACrD,OAAOs4E,GAAK/4E,GAAK+4E,GAAKF,EAAOp4E,QAQjC,SAASs4E,GAAM36D,GACb,OAAkD,IAA3CsqD,OAAOtqD,EAAE9d,MAAM,GAAI,GAAGsyB,QAAQ,IAAK,MAK5C,SAASpuB,GAAOgmD,EAAOwuB,GACrB,IAAI/X,EAAKzW,EAAMpB,IAGX/G,EAAM4e,EAAGsP,YACXtP,EAAGsP,SAAS0I,WAAY,EACxBhY,EAAGsP,YAGL,IAAIrsE,EAAOkyE,GAAkB5rB,EAAMtmD,KAAKc,YACxC,IAAIo9C,EAAQl+C,KAKRm+C,EAAM4e,EAAGiY,WAA6B,IAAhBjY,EAAGmP,SAA7B,CAIA,IAAIiG,EAAMnyE,EAAKmyE,IACX3iF,EAAOwQ,EAAKxQ,KACZ6iF,EAAaryE,EAAKqyE,WAClBC,EAAetyE,EAAKsyE,aACpBC,EAAmBvyE,EAAKuyE,iBACxB0C,EAAcj1E,EAAKi1E,YACnBC,EAAgBl1E,EAAKk1E,cACrBC,EAAoBn1E,EAAKm1E,kBACzBC,EAAcp1E,EAAKo1E,YACnB90E,EAAQN,EAAKM,MACb+0E,EAAar1E,EAAKq1E,WAClBC,EAAiBt1E,EAAKs1E,eACtBC,EAAev1E,EAAKu1E,aACpBC,EAASx1E,EAAKw1E,OACdC,EAAcz1E,EAAKy1E,YACnBC,EAAkB11E,EAAK01E,gBACvBhyD,EAAW1jB,EAAK0jB,SAMhB5qB,EAAUk9D,GACV2f,EAAiB3f,GAAej9D,OACpC,MAAO48E,GAAkBA,EAAe18E,OACtCH,EAAU68E,EAAe78E,QACzB68E,EAAiBA,EAAe18E,OAGlC,IAAI28E,GAAY98E,EAAQs9D,aAAe9P,EAAMV,aAE7C,IAAIgwB,GAAaJ,GAAqB,KAAXA,EAA3B,CAIA,IAAIK,EAAaD,GAAYX,EACzBA,EACA5C,EACAyD,EAAcF,GAAYT,EAC1BA,EACA5C,EACAwD,EAAUH,GAAYV,EACtBA,EACA5C,EAEA0D,EAAkBJ,GACjBL,GACDH,EACAa,EAAYL,GACO,oBAAXJ,EAAwBA,EAChCl1E,EACA41E,EAAiBN,GAChBH,GACDJ,EACAc,EAAqBP,GACpBF,GACDJ,EAEAc,EAAwBv3B,EAC1BxyD,EAASq3B,GACLA,EAASpjB,MACTojB,GAGF,EAIJ,IAAI2yD,GAAqB,IAARlE,IAAkBhvB,GAC/BmzB,EAAmBC,GAAuBN,GAE1C9oB,EAAK4P,EAAGiY,SAAWj0B,GAAK,WACtBs1B,IACF3C,GAAsB3W,EAAIgZ,GAC1BrC,GAAsB3W,EAAI+Y,IAExB3oB,EAAG4nB,WACDsB,GACF3C,GAAsB3W,EAAI8Y,GAE5BM,GAAsBA,EAAmBpZ,IAEzCmZ,GAAkBA,EAAenZ,GAEnCA,EAAGiY,SAAW,QAGX1uB,EAAMtmD,KAAKw2E,MAEdhoB,GAAelI,EAAO,UAAU,WAC9B,IAAIrtD,EAAS8jE,EAAG97D,WACZw1E,EAAcx9E,GAAUA,EAAOy9E,UAAYz9E,EAAOy9E,SAASpwB,EAAM33D,KACjE8nF,GACFA,EAAY1+E,MAAQuuD,EAAMvuD,KAC1B0+E,EAAYvxB,IAAImnB,UAEhBoK,EAAYvxB,IAAImnB,WAElB4J,GAAaA,EAAUlZ,EAAI5P,MAK/B6oB,GAAmBA,EAAgBjZ,GAC/BsZ,IACF7C,GAAmBzW,EAAI8Y,GACvBrC,GAAmBzW,EAAI+Y,GACvBvC,IAAU,WACRG,GAAsB3W,EAAI8Y,GACrB1oB,EAAG4nB,YACNvB,GAAmBzW,EAAIgZ,GAClBO,IACCK,GAAgBP,GAClB10D,WAAWyrC,EAAIipB,GAEfzC,GAAmB5W,EAAIvtE,EAAM29D,SAOnC7G,EAAMtmD,KAAKw2E,OACb1B,GAAiBA,IACjBmB,GAAaA,EAAUlZ,EAAI5P,IAGxBkpB,GAAeC,GAClBnpB,MAIJ,SAASypB,GAAOtwB,EAAO8jB,GACrB,IAAIrN,EAAKzW,EAAMpB,IAGX/G,EAAM4e,EAAGiY,YACXjY,EAAGiY,SAASD,WAAY,EACxBhY,EAAGiY,YAGL,IAAIh1E,EAAOkyE,GAAkB5rB,EAAMtmD,KAAKc,YACxC,GAAIo9C,EAAQl+C,IAAyB,IAAhB+8D,EAAGmP,SACtB,OAAO9B,IAIT,IAAIjsB,EAAM4e,EAAGsP,UAAb,CAIA,IAAI8F,EAAMnyE,EAAKmyE,IACX3iF,EAAOwQ,EAAKxQ,KACZgjF,EAAaxyE,EAAKwyE,WAClBC,EAAezyE,EAAKyyE,aACpBC,EAAmB1yE,EAAK0yE,iBACxBmE,EAAc72E,EAAK62E,YACnBD,EAAQ52E,EAAK42E,MACbE,EAAa92E,EAAK82E,WAClBC,EAAiB/2E,EAAK+2E,eACtBC,EAAah3E,EAAKg3E,WAClBtzD,EAAW1jB,EAAK0jB,SAEhB2yD,GAAqB,IAARlE,IAAkBhvB,GAC/BmzB,EAAmBC,GAAuBK,GAE1CK,EAAwBp4B,EAC1BxyD,EAASq3B,GACLA,EAASkzD,MACTlzD,GAGF,EAIJ,IAAIypC,EAAK4P,EAAGsP,SAAWtrB,GAAK,WACtBgc,EAAG97D,YAAc87D,EAAG97D,WAAWy1E,WACjC3Z,EAAG97D,WAAWy1E,SAASpwB,EAAM33D,KAAO,MAElC0nF,IACF3C,GAAsB3W,EAAI0V,GAC1BiB,GAAsB3W,EAAI2V,IAExBvlB,EAAG4nB,WACDsB,GACF3C,GAAsB3W,EAAIyV,GAE5BuE,GAAkBA,EAAeha,KAEjCqN,IACA0M,GAAcA,EAAW/Z,IAE3BA,EAAGsP,SAAW,QAGZ2K,EACFA,EAAWE,GAEXA,IAGF,SAASA,IAEH/pB,EAAG4nB,aAIFzuB,EAAMtmD,KAAKw2E,MAAQzZ,EAAG97D,cACxB87D,EAAG97D,WAAWy1E,WAAa3Z,EAAG97D,WAAWy1E,SAAW,KAAMpwB,EAAS,KAAKA,GAE3EuwB,GAAeA,EAAY9Z,GACvBsZ,IACF7C,GAAmBzW,EAAIyV,GACvBgB,GAAmBzW,EAAI2V,GACvBa,IAAU,WACRG,GAAsB3W,EAAIyV,GACrBrlB,EAAG4nB,YACNvB,GAAmBzW,EAAI0V,GAClB6D,IACCK,GAAgBM,GAClBv1D,WAAWyrC,EAAI8pB,GAEftD,GAAmB5W,EAAIvtE,EAAM29D,SAMvCypB,GAASA,EAAM7Z,EAAI5P,GACdkpB,GAAeC,GAClBnpB,MAsBN,SAASwpB,GAAiBr8B,GACxB,MAAsB,kBAARA,IAAqBxtD,MAAMwtD,GAS3C,SAASi8B,GAAwB97E,GAC/B,GAAIyjD,EAAQzjD,GACV,OAAO,EAET,IAAI08E,EAAa18E,EAAGuzD,IACpB,OAAI7P,EAAMg5B,GAEDZ,GACLv/E,MAAM8nB,QAAQq4D,GACVA,EAAW,GACXA,IAGE18E,EAAGqlD,SAAWrlD,EAAGlK,QAAU,EAIvC,SAAS2U,GAAQ7D,EAAGilD,IACM,IAApBA,EAAMtmD,KAAKw2E,MACbl2E,GAAMgmD,GAIV,IAAIxlD,GAAa6hD,EAAY,CAC3BhvD,OAAQuR,GACR0kE,SAAU1kE,GACVhE,OAAQ,SAAoBolD,EAAO8jB,IAET,IAApB9jB,EAAMtmD,KAAKw2E,KACbI,GAAMtwB,EAAO8jB,GAEbA,MAGF,GAEAgN,GAAkB,CACpBvoB,GACA6f,GACAc,GACAjd,GACAt8D,GACA6K,IAOE0nE,GAAU4O,GAAgBzrF,OAAO+hF,IAEjC2J,GAAQ/O,GAAoB,CAAEb,QAASA,GAASe,QAASA,KAQzDrlB,IAEF9sD,SAASmW,iBAAiB,mBAAmB,WAC3C,IAAIuwD,EAAK1mE,SAAS85E,cACdpT,GAAMA,EAAGua,QACXC,GAAQxa,EAAI,YAKlB,IAAIya,GAAY,CACd3wB,SAAU,SAAmBkW,EAAI0a,EAASnxB,EAAO4P,GAC7B,WAAd5P,EAAMvuD,KAEJm+D,EAAShR,MAAQgR,EAAShR,IAAIwyB,UAChClpB,GAAelI,EAAO,aAAa,WACjCkxB,GAAUpK,iBAAiBrQ,EAAI0a,EAASnxB,MAG1CqxB,GAAY5a,EAAI0a,EAASnxB,EAAMxtD,SAEjCikE,EAAG2a,UAAY,GAAG1nF,IAAI7C,KAAK4vE,EAAGtrE,QAASmmF,MAChB,aAAdtxB,EAAMvuD,KAAsB+uE,GAAgB/J,EAAGvtE,SACxDutE,EAAGqT,YAAcqH,EAAQlK,UACpBkK,EAAQlK,UAAUtO,OACrBlC,EAAGvwD,iBAAiB,mBAAoBqrE,IACxC9a,EAAGvwD,iBAAiB,iBAAkBsrE,IAKtC/a,EAAGvwD,iBAAiB,SAAUsrE,IAE1B30B,KACF4Z,EAAGua,QAAS,MAMpBlK,iBAAkB,SAA2BrQ,EAAI0a,EAASnxB,GACxD,GAAkB,WAAdA,EAAMvuD,IAAkB,CAC1B4/E,GAAY5a,EAAI0a,EAASnxB,EAAMxtD,SAK/B,IAAIi/E,EAAchb,EAAG2a,UACjBM,EAAajb,EAAG2a,UAAY,GAAG1nF,IAAI7C,KAAK4vE,EAAGtrE,QAASmmF,IACxD,GAAII,EAAWC,MAAK,SAAU9rE,EAAG5P,GAAK,OAAQ+jD,EAAWn0C,EAAG4rE,EAAYx7E,OAAS,CAG/E,IAAI27E,EAAYnb,EAAGoK,SACfsQ,EAAQrrF,MAAM6rF,MAAK,SAAU/vE,GAAK,OAAOiwE,GAAoBjwE,EAAG8vE,MAChEP,EAAQrrF,QAAUqrF,EAAQ/X,UAAYyY,GAAoBV,EAAQrrF,MAAO4rF,GACzEE,GACFX,GAAQxa,EAAI,cAOtB,SAAS4a,GAAa5a,EAAI0a,EAAS1uB,GACjCqvB,GAAoBrb,EAAI0a,EAAS1uB,IAE7B7F,IAAQE,KACV1hC,YAAW,WACT02D,GAAoBrb,EAAI0a,EAAS1uB,KAChC,GAIP,SAASqvB,GAAqBrb,EAAI0a,EAAS1uB,GACzC,IAAI38D,EAAQqrF,EAAQrrF,MAChBisF,EAAatb,EAAGoK,SACpB,IAAIkR,GAAerhF,MAAM8nB,QAAQ1yB,GAAjC,CASA,IADA,IAAI46E,EAAUsR,EACL/7E,EAAI,EAAG4d,EAAI4iD,EAAGtrE,QAAQlB,OAAQgM,EAAI4d,EAAG5d,IAE5C,GADA+7E,EAASvb,EAAGtrE,QAAQ8K,GAChB87E,EACFrR,EAAWlmB,EAAa10D,EAAOwrF,GAASU,KAAY,EAChDA,EAAOtR,WAAaA,IACtBsR,EAAOtR,SAAWA,QAGpB,GAAI1mB,EAAWs3B,GAASU,GAASlsF,GAI/B,YAHI2wE,EAAGwb,gBAAkBh8E,IACvBwgE,EAAGwb,cAAgBh8E,IAMtB87E,IACHtb,EAAGwb,eAAiB,IAIxB,SAASJ,GAAqB/rF,EAAOqF,GACnC,OAAOA,EAAQ+zB,OAAM,SAAUrZ,GAAK,OAAQm0C,EAAWn0C,EAAG/f,MAG5D,SAASwrF,GAAUU,GACjB,MAAO,WAAYA,EACfA,EAAOtzD,OACPszD,EAAOlsF,MAGb,SAASyrF,GAAoB5mF,GAC3BA,EAAEpD,OAAOkiF,WAAY,EAGvB,SAAS+H,GAAkB7mF,GAEpBA,EAAEpD,OAAOkiF,YACd9+E,EAAEpD,OAAOkiF,WAAY,EACrBwH,GAAQtmF,EAAEpD,OAAQ,UAGpB,SAAS0pF,GAASxa,EAAIvtE,GACpB,IAAIyB,EAAIoF,SAASuW,YAAY,cAC7B3b,EAAE4b,UAAUrd,GAAM,GAAM,GACxButE,EAAGtwD,cAAcxb,GAMnB,SAASunF,GAAYlyB,GACnB,OAAOA,EAAMb,mBAAuBa,EAAMtmD,MAASsmD,EAAMtmD,KAAKc,WAE1DwlD,EADAkyB,GAAWlyB,EAAMb,kBAAkBkT,QAIzC,IAAI6d,GAAO,CACTt8E,KAAM,SAAe6iE,EAAI1D,EAAK/S,GAC5B,IAAIl6D,EAAQitE,EAAIjtE,MAEhBk6D,EAAQkyB,GAAWlyB,GACnB,IAAImyB,EAAgBnyB,EAAMtmD,MAAQsmD,EAAMtmD,KAAKc,WACzC43E,EAAkB3b,EAAG4b,mBACF,SAArB5b,EAAG9mE,MAAMC,QAAqB,GAAK6mE,EAAG9mE,MAAMC,QAC1C9J,GAASqsF,GACXnyB,EAAMtmD,KAAKw2E,MAAO,EAClBl2E,GAAMgmD,GAAO,WACXyW,EAAG9mE,MAAMC,QAAUwiF,MAGrB3b,EAAG9mE,MAAMC,QAAU9J,EAAQssF,EAAkB,QAIjDzzE,OAAQ,SAAiB83D,EAAI1D,EAAK/S,GAChC,IAAIl6D,EAAQitE,EAAIjtE,MACZszE,EAAWrG,EAAIqG,SAGnB,IAAKtzE,KAAWszE,EAAhB,CACApZ,EAAQkyB,GAAWlyB,GACnB,IAAImyB,EAAgBnyB,EAAMtmD,MAAQsmD,EAAMtmD,KAAKc,WACzC23E,GACFnyB,EAAMtmD,KAAKw2E,MAAO,EACdpqF,EACFkU,GAAMgmD,GAAO,WACXyW,EAAG9mE,MAAMC,QAAU6mE,EAAG4b,sBAGxB/B,GAAMtwB,GAAO,WACXyW,EAAG9mE,MAAMC,QAAU,WAIvB6mE,EAAG9mE,MAAMC,QAAU9J,EAAQ2wE,EAAG4b,mBAAqB,SAIvDC,OAAQ,SACN7b,EACA0a,EACAnxB,EACA4P,EACA0W,GAEKA,IACH7P,EAAG9mE,MAAMC,QAAU6mE,EAAG4b,sBAKxBE,GAAqB,CACvB3hB,MAAOsgB,GACPhB,KAAMA,IAKJsC,GAAkB,CACpBnhF,KAAMhL,OACN6oF,OAAQ98B,QACRy5B,IAAKz5B,QACLqgC,KAAMpsF,OACN6C,KAAM7C,OACN0lF,WAAY1lF,OACZ6lF,WAAY7lF,OACZ2lF,aAAc3lF,OACd8lF,aAAc9lF,OACd4lF,iBAAkB5lF,OAClB+lF,iBAAkB/lF,OAClBsoF,YAAatoF,OACbwoF,kBAAmBxoF,OACnBuoF,cAAevoF,OACf+2B,SAAU,CAAC8gD,OAAQ73E,OAAQgB,SAK7B,SAASqrF,GAAc1yB,GACrB,IAAI2yB,EAAc3yB,GAASA,EAAMnB,iBACjC,OAAI8zB,GAAeA,EAAYj1B,KAAKvyD,QAAQ4lE,SACnC2hB,GAAate,GAAuBue,EAAYnzD,WAEhDwgC,EAIX,SAAS4yB,GAAuB3f,GAC9B,IAAIv5D,EAAO,GACPvO,EAAU8nE,EAAKhgE,SAEnB,IAAK,IAAI5K,KAAO8C,EAAQu5D,UACtBhrD,EAAKrR,GAAO4qE,EAAK5qE,GAInB,IAAIqmE,EAAYvjE,EAAQsnE,iBACxB,IAAK,IAAIzP,KAAS0L,EAChBh1D,EAAKu/C,EAAS+J,IAAU0L,EAAU1L,GAEpC,OAAOtpD,EAGT,SAASm5E,GAAax/E,EAAGy/E,GACvB,GAAI,iBAAiBjrF,KAAKirF,EAASrhF,KACjC,OAAO4B,EAAE,aAAc,CACrB4vD,MAAO6vB,EAASj0B,iBAAiB6F,YAKvC,SAASquB,GAAqB/yB,GAC5B,MAAQA,EAAQA,EAAMrtD,OACpB,GAAIqtD,EAAMtmD,KAAKc,WACb,OAAO,EAKb,SAASw4E,GAAa9zE,EAAO+zE,GAC3B,OAAOA,EAAS5qF,MAAQ6W,EAAM7W,KAAO4qF,EAASxhF,MAAQyN,EAAMzN,IAG9D,IAAIyhF,GAAgB,SAAUr3E,GAAK,OAAOA,EAAEpK,KAAOkuD,GAAmB9jD,IAElEs3E,GAAmB,SAAU39E,GAAK,MAAkB,SAAXA,EAAEnE,MAE3C2tB,GAAa,CACf3tB,KAAM,aACN4xD,MAAOuvB,GACPzhB,UAAU,EAEVl/D,OAAQ,SAAiBwB,GACvB,IAAIi7D,EAAS3mE,KAET63B,EAAW73B,KAAKsjE,OAAO/F,QAC3B,GAAK1lC,IAKLA,EAAWA,EAAS3kB,OAAOq4E,IAEtB1zD,EAASv1B,QAAd,CAKI,EAQJ,IAAIwoF,EAAO9qF,KAAK8qF,KAGZ,EASJ,IAAIK,EAAWtzD,EAAS,GAIxB,GAAIuzD,GAAoBprF,KAAK8K,QAC3B,OAAOqgF,EAKT,IAAI5zE,EAAQwzE,GAAaI,GAEzB,IAAK5zE,EACH,OAAO4zE,EAGT,GAAInrF,KAAKyrF,SACP,OAAOP,GAAYx/E,EAAGy/E,GAMxB,IAAI5qF,EAAK,gBAAmBP,KAAS,KAAI,IACzCuX,EAAM7W,IAAmB,MAAb6W,EAAM7W,IACd6W,EAAMqgD,UACJr3D,EAAK,UACLA,EAAKgX,EAAMzN,IACbumD,EAAY94C,EAAM7W,KACmB,IAAlChC,OAAO6Y,EAAM7W,KAAKsT,QAAQzT,GAAYgX,EAAM7W,IAAMH,EAAKgX,EAAM7W,IAC9D6W,EAAM7W,IAEZ,IAAIqR,GAAQwF,EAAMxF,OAASwF,EAAMxF,KAAO,KAAKc,WAAao4E,GAAsBjrF,MAC5E0rF,EAAc1rF,KAAK0qE,OACnB4gB,EAAWP,GAAaW,GAQ5B,GAJIn0E,EAAMxF,KAAKiqD,YAAczkD,EAAMxF,KAAKiqD,WAAWguB,KAAKwB,MACtDj0E,EAAMxF,KAAKw2E,MAAO,GAIlB+C,GACAA,EAASv5E,OACRs5E,GAAY9zE,EAAO+zE,KACnBtzB,GAAmBszB,MAElBA,EAAS9zB,oBAAqB8zB,EAAS9zB,kBAAkBkT,OAAO9S,WAClE,CAGA,IAAIuoB,EAAUmL,EAASv5E,KAAKc,WAAamO,EAAO,GAAIjP,GAEpD,GAAa,WAAT+4E,EAOF,OALA9qF,KAAKyrF,UAAW,EAChBlrB,GAAe4f,EAAS,cAAc,WACpCxZ,EAAO8kB,UAAW,EAClB9kB,EAAO2F,kBAEF4e,GAAYx/E,EAAGy/E,GACjB,GAAa,WAATL,EAAmB,CAC5B,GAAI9yB,GAAmBzgD,GACrB,OAAOm0E,EAET,IAAIC,EACA1C,EAAe,WAAc0C,KACjCprB,GAAexuD,EAAM,aAAck3E,GACnC1oB,GAAexuD,EAAM,iBAAkBk3E,GACvC1oB,GAAe4f,EAAS,cAAc,SAAUwI,GAASgD,EAAehD,MAI5E,OAAOwC,KAMP7vB,GAAQt6C,EAAO,CACjBlX,IAAKpL,OACLktF,UAAWltF,QACVmsF,WAEIvvB,GAAMwvB,KAEb,IAAIe,GAAkB,CACpBvwB,MAAOA,GAEPwwB,YAAa,WACX,IAAInlB,EAAS3mE,KAETgX,EAAShX,KAAKmuE,QAClBnuE,KAAKmuE,QAAU,SAAU9V,EAAOoP,GAC9B,IAAI8G,EAAwBd,GAAkB9G,GAE9CA,EAAO6H,UACL7H,EAAO+D,OACP/D,EAAOolB,MACP,GACA,GAEFplB,EAAO+D,OAAS/D,EAAOolB,KACvBxd,IACAv3D,EAAO9X,KAAKynE,EAAQtO,EAAOoP,KAI/Bv9D,OAAQ,SAAiBwB,GAQvB,IAPA,IAAI5B,EAAM9J,KAAK8J,KAAO9J,KAAK8K,OAAOiH,KAAKjI,KAAO,OAC1C/H,EAAMrC,OAAOgG,OAAO,MACpBsmF,EAAehsF,KAAKgsF,aAAehsF,KAAK63B,SACxCo0D,EAAcjsF,KAAKsjE,OAAO/F,SAAW,GACrC1lC,EAAW73B,KAAK63B,SAAW,GAC3Bq0D,EAAiBjB,GAAsBjrF,MAElCsO,EAAI,EAAGA,EAAI29E,EAAY3pF,OAAQgM,IAAK,CAC3C,IAAI4F,EAAI+3E,EAAY39E,GACpB,GAAI4F,EAAEpK,IACJ,GAAa,MAAToK,EAAExT,KAAoD,IAArChC,OAAOwV,EAAExT,KAAKsT,QAAQ,WACzC6jB,EAASzjB,KAAKF,GACdnS,EAAImS,EAAExT,KAAOwT,GACXA,EAAEnC,OAASmC,EAAEnC,KAAO,KAAKc,WAAaq5E,QAS9C,GAAIF,EAAc,CAGhB,IAFA,IAAID,EAAO,GACPI,EAAU,GACL7e,EAAM,EAAGA,EAAM0e,EAAa1pF,OAAQgrE,IAAO,CAClD,IAAI8e,EAAMJ,EAAa1e,GACvB8e,EAAIr6E,KAAKc,WAAaq5E,EACtBE,EAAIr6E,KAAKs6E,IAAMD,EAAIn1B,IAAIq1B,wBACnBvqF,EAAIqqF,EAAI1rF,KACVqrF,EAAK33E,KAAKg4E,GAEVD,EAAQ/3E,KAAKg4E,GAGjBpsF,KAAK+rF,KAAOrgF,EAAE5B,EAAK,KAAMiiF,GACzB/rF,KAAKmsF,QAAUA,EAGjB,OAAOzgF,EAAE5B,EAAK,KAAM+tB,IAGtB00D,QAAS,WACP,IAAI10D,EAAW73B,KAAKgsF,aAChBJ,EAAY5rF,KAAK4rF,YAAe5rF,KAAK0J,MAAQ,KAAO,QACnDmuB,EAASv1B,QAAWtC,KAAKwsF,QAAQ30D,EAAS,GAAGo/B,IAAK20B,KAMvD/zD,EAAS+G,QAAQ6tD,IACjB50D,EAAS+G,QAAQ8tD,IACjB70D,EAAS+G,QAAQ+tD,IAKjB3sF,KAAK4sF,QAAUxkF,SAASykF,KAAKC,aAE7Bj1D,EAAS+G,SAAQ,SAAU1qB,GACzB,GAAIA,EAAEnC,KAAKg7E,MAAO,CAChB,IAAIje,EAAK56D,EAAE+iD,IACPhrC,EAAI6iD,EAAG9mE,MACXu9E,GAAmBzW,EAAI8c,GACvB3/D,EAAE9a,UAAY8a,EAAE+gE,gBAAkB/gE,EAAEghE,mBAAqB,GACzDne,EAAGvwD,iBAAiBumE,GAAoBhW,EAAGoe,QAAU,SAAShuB,EAAIl8D,GAC5DA,GAAKA,EAAEpD,SAAWkvE,GAGjB9rE,IAAK,aAAa9C,KAAK8C,EAAEmqF,gBAC5Bre,EAAG3wD,oBAAoB2mE,GAAoB5lB,GAC3C4P,EAAGoe,QAAU,KACbzH,GAAsB3W,EAAI8c,YAOpCl/C,QAAS,CACP8/C,QAAS,SAAkB1d,EAAI8c,GAE7B,IAAKlH,GACH,OAAO,EAGT,GAAI1kF,KAAKotF,SACP,OAAOptF,KAAKotF,SAOd,IAAIhtE,EAAQ0uD,EAAG7xD,YACX6xD,EAAGwR,oBACLxR,EAAGwR,mBAAmB1hD,SAAQ,SAAUwhD,GAAO2D,GAAY3jE,EAAOggE,MAEpE0D,GAAS1jE,EAAOwrE,GAChBxrE,EAAMpY,MAAMC,QAAU,OACtBjI,KAAKquE,IAAInmE,YAAYkY,GACrB,IAAI09C,EAAO8nB,GAAkBxlE,GAE7B,OADApgB,KAAKquE,IAAItxD,YAAYqD,GACbpgB,KAAKotF,SAAWtvB,EAAK2oB,gBAKnC,SAASgG,GAAgBv4E,GAEnBA,EAAE+iD,IAAIi2B,SACRh5E,EAAE+iD,IAAIi2B,UAGJh5E,EAAE+iD,IAAI8vB,UACR7yE,EAAE+iD,IAAI8vB,WAIV,SAAS2F,GAAgBx4E,GACvBA,EAAEnC,KAAKs7E,OAASn5E,EAAE+iD,IAAIq1B,wBAGxB,SAASK,GAAkBz4E,GACzB,IAAIo5E,EAASp5E,EAAEnC,KAAKs6E,IAChBgB,EAASn5E,EAAEnC,KAAKs7E,OAChBzsE,EAAK0sE,EAAO9/E,KAAO6/E,EAAO7/E,KAC1BqT,EAAKysE,EAAOC,IAAMF,EAAOE,IAC7B,GAAI3sE,GAAMC,EAAI,CACZ3M,EAAEnC,KAAKg7E,OAAQ,EACf,IAAI9gE,EAAI/X,EAAE+iD,IAAIjvD,MACdikB,EAAE9a,UAAY8a,EAAE+gE,gBAAkB,aAAepsE,EAAK,MAAQC,EAAK,MACnEoL,EAAEghE,mBAAqB,MAI3B,IAAIO,GAAqB,CACvBn2D,WAAYA,GACZw0D,gBAAiBA,IAMnB5gB,GAAI/X,OAAOc,YAAcA,GACzBiX,GAAI/X,OAAOS,cAAgBA,GAC3BsX,GAAI/X,OAAOU,eAAiBA,GAC5BqX,GAAI/X,OAAOY,gBAAkBA,GAC7BmX,GAAI/X,OAAOW,iBAAmBA,GAG9B7yC,EAAOiqD,GAAIznE,QAAQw4D,WAAY4uB,IAC/B5pE,EAAOiqD,GAAIznE,QAAQ6wE,WAAYmZ,IAG/BviB,GAAIhtE,UAAUuwE,UAAY9Z,EAAY00B,GAAQ51E,EAG9Cy3D,GAAIhtE,UAAU+pE,OAAS,SACrB8G,EACArH,GAGA,OADAqH,EAAKA,GAAMpa,EAAYokB,GAAMhK,QAAMtwE,EAC5BqwE,GAAe7uE,KAAM8uE,EAAIrH,IAK9B/S,GACFjhC,YAAW,WACLy/B,EAAOI,UACLA,IACFA,GAASod,KAAK,OAAQzF,MAsBzB,GAKU,Y,6CClwQf,IAAIptE,EAAkB,EAAQ,QAC1B6H,EAAS,EAAQ,QACjBlD,EAAuB,EAAQ,QAE/BirF,EAAc5vF,EAAgB,eAC9BuP,EAAiBrE,MAAM9K,eAIQO,GAA/B4O,EAAeqgF,IACjBjrF,EAAqBhF,EAAE4P,EAAgBqgF,EAAa,CAClDvvF,cAAc,EACdC,MAAOuH,EAAO,QAKlB9I,EAAOC,QAAU,SAAU6D,GACzB0M,EAAeqgF,GAAa/sF,IAAO,I,qBClBrC,IAAIuF,EAAY,EAAQ,QAGxBrJ,EAAOC,QAAU,SAAU2P,EAAIC,EAAMnK,GAEnC,GADA2D,EAAUuG,QACGhO,IAATiO,EAAoB,OAAOD,EAC/B,OAAQlK,GACN,KAAK,EAAG,OAAO,WACb,OAAOkK,EAAGtN,KAAKuN,IAEjB,KAAK,EAAG,OAAO,SAAUhI,GACvB,OAAO+H,EAAGtN,KAAKuN,EAAMhI,IAEvB,KAAK,EAAG,OAAO,SAAUA,EAAGC,GAC1B,OAAO8H,EAAGtN,KAAKuN,EAAMhI,EAAGC,IAE1B,KAAK,EAAG,OAAO,SAAUD,EAAGC,EAAGwP,GAC7B,OAAO1H,EAAGtN,KAAKuN,EAAMhI,EAAGC,EAAGwP,IAG/B,OAAO,WACL,OAAO1H,EAAG6E,MAAM5E,EAAMpK,c,uBCrB1B,IAAIE,EAAc,EAAQ,QACtBa,EAAQ,EAAQ,QAChBoS,EAAgB,EAAQ,QAG5B5Y,EAAOC,SAAW0F,IAAgBa,GAAM,WACtC,OAEQ,GAFD1D,OAAO/B,eAAe6X,EAAc,OAAQ,IAAK,CACtD5U,IAAK,WAAc,OAAO,KACzB6D,M;;;;;ICKL,SAAS2xD,EAAMs3B,EAAWC,GACpB,EAKN,SAASC,EAAS/vB,GAChB,OAAOn+D,OAAOzB,UAAUoC,SAASnB,KAAK2+D,GAAK7pD,QAAQ,UAAY,EAGjE,SAASgN,EAAQvc,EAAGC,GAClB,IAAK,IAAIhE,KAAOgE,EACdD,EAAE/D,GAAOgE,EAAEhE,GAEb,OAAO+D,EAGT,IAAIopF,EAAO,CACTnkF,KAAM,aACNiB,YAAY,EACZ2wD,MAAO,CACL5xD,KAAM,CACJnI,KAAM7C,OACN6+D,QAAS,YAGbrzD,OAAQ,SAAiBkJ,EAAGg4D,GAC1B,IAAI9P,EAAQ8P,EAAI9P,MACZzjC,EAAWuzC,EAAIvzC,SACf7sB,EAASogE,EAAIpgE,OACb+G,EAAOq5D,EAAIr5D,KAGfA,EAAK+7E,YAAa,EAIlB,IAAIpiF,EAAIV,EAAOu4D,eACX75D,EAAO4xD,EAAM5xD,KACbqkF,EAAQ/iF,EAAOgjF,OACf3qF,EAAQ2H,EAAOijF,mBAAqBjjF,EAAOijF,iBAAmB,IAI9D1+C,EAAQ,EACR2+C,GAAW,EACf,MAAOljF,GAAUA,EAAOmjF,cAAgBnjF,EAClCA,EAAOF,QAAUE,EAAOF,OAAOiH,KAAK+7E,YACtCv+C,IAEEvkC,EAAO+iE,YACTmgB,GAAW,GAEbljF,EAASA,EAAOgzD,QAKlB,GAHAjsD,EAAKq8E,gBAAkB7+C,EAGnB2+C,EACF,OAAOxiF,EAAErI,EAAMqG,GAAOqI,EAAM8lB,GAG9B,IAAIw2D,EAAUN,EAAMM,QAAQ9+C,GAE5B,IAAK8+C,EAEH,OADAhrF,EAAMqG,GAAQ,KACPgC,IAGT,IAAI8gE,EAAYnpE,EAAMqG,GAAQ2kF,EAAQha,WAAW3qE,GAIjDqI,EAAKu8E,sBAAwB,SAAUxzB,EAAIzO,GAEzC,IAAItjB,EAAUslD,EAAQE,UAAU7kF,IAE7B2iD,GAAOtjB,IAAY+xB,IAClBzO,GAAOtjB,IAAY+xB,KAErBuzB,EAAQE,UAAU7kF,GAAQ2iD,KAM5Bt6C,EAAKtH,OAASsH,EAAKtH,KAAO,KAAKo9D,SAAW,SAAUz0D,EAAGilD,GACvDg2B,EAAQE,UAAU7kF,GAAQ2uD,EAAMb,mBAIlC,IAAIg3B,EAAcz8E,EAAKupD,MAAQmzB,EAAaV,EAAOM,EAAQ/yB,OAAS+yB,EAAQ/yB,MAAM5xD,IAClF,GAAI8kF,EAAa,CAEfA,EAAcz8E,EAAKupD,MAAQt6C,EAAO,GAAIwtE,GAEtC,IAAI5tB,EAAQ7uD,EAAK6uD,MAAQ7uD,EAAK6uD,OAAS,GACvC,IAAK,IAAIlgE,KAAO8tF,EACThiB,EAAUlR,OAAW56D,KAAO8rE,EAAUlR,QACzCsF,EAAMlgE,GAAO8tF,EAAY9tF,UAClB8tF,EAAY9tF,IAKzB,OAAOgL,EAAE8gE,EAAWz6D,EAAM8lB,KAI9B,SAAS42D,EAAcV,EAAO76B,GAC5B,cAAeA,GACb,IAAK,YACH,OACF,IAAK,SACH,OAAOA,EACT,IAAK,WACH,OAAOA,EAAO66B,GAChB,IAAK,UACH,OAAO76B,EAAS66B,EAAMtvE,YAASjgB,EACjC,QACM,GAYV,IAAIkwF,EAAkB,WAClBC,EAAwB,SAAUz6E,GAAK,MAAO,IAAMA,EAAE+rB,WAAW,GAAG5/B,SAAS,KAC7EuuF,EAAU,OAKVC,EAAS,SAAU/iC,GAAO,OAAOgjC,mBAAmBhjC,GACrDrrB,QAAQiuD,EAAiBC,GACzBluD,QAAQmuD,EAAS,MAEhBG,EAASC,mBAEb,SAASC,EACPnW,EACAoW,EACAC,QAEoB,IAAfD,IAAwBA,EAAa,IAE1C,IACIE,EADAx9D,EAAQu9D,GAAeE,EAE3B,IACED,EAAcx9D,EAAMknD,GAAS,IAC7B,MAAO91E,GAEPosF,EAAc,GAEhB,IAAK,IAAI1uF,KAAOwuF,EACdE,EAAY1uF,GAAOwuF,EAAWxuF,GAEhC,OAAO0uF,EAGT,SAASC,EAAYvW,GACnB,IAAI5mB,EAAM,GAIV,OAFA4mB,EAAQA,EAAM/0E,OAAO08B,QAAQ,YAAa,IAErCq4C,GAILA,EAAM5rE,MAAM,KAAK0xB,SAAQ,SAAU0wD,GACjC,IAAIC,EAAQD,EAAM7uD,QAAQ,MAAO,KAAKvzB,MAAM,KACxCxM,EAAMquF,EAAOQ,EAAMtnD,SACnBokB,EAAMkjC,EAAMjtF,OAAS,EACrBysF,EAAOQ,EAAM/vF,KAAK,MAClB,UAEahB,IAAb0zD,EAAIxxD,GACNwxD,EAAIxxD,GAAO2rD,EACFtjD,MAAM8nB,QAAQqhC,EAAIxxD,IAC3BwxD,EAAIxxD,GAAK0T,KAAKi4C,GAEd6F,EAAIxxD,GAAO,CAACwxD,EAAIxxD,GAAM2rD,MAInB6F,GAnBEA,EAsBX,SAASs9B,EAAgBl/B,GACvB,IAAI4B,EAAM5B,EAAM5wD,OAAOnC,KAAK+yD,GAAKvuD,KAAI,SAAUrB,GAC7C,IAAI2rD,EAAMiE,EAAI5vD,GAEd,QAAYlC,IAAR6tD,EACF,MAAO,GAGT,GAAY,OAARA,EACF,OAAOwiC,EAAOnuF,GAGhB,GAAIqI,MAAM8nB,QAAQw7B,GAAM,CACtB,IAAIptD,EAAS,GAWb,OAVAotD,EAAIztB,SAAQ,SAAU6wD,QACPjxF,IAATixF,IAGS,OAATA,EACFxwF,EAAOmV,KAAKy6E,EAAOnuF,IAEnBzB,EAAOmV,KAAKy6E,EAAOnuF,GAAO,IAAMmuF,EAAOY,QAGpCxwF,EAAOO,KAAK,KAGrB,OAAOqvF,EAAOnuF,GAAO,IAAMmuF,EAAOxiC,MACjCn5C,QAAO,SAAU1N,GAAK,OAAOA,EAAElD,OAAS,KAAM9C,KAAK,KAAO,KAC7D,OAAO0yD,EAAO,IAAMA,EAAO,GAK7B,IAAIw9B,EAAkB,OAEtB,SAASC,EACPC,EACAjmC,EACAkmC,EACAC,GAEA,IAAIC,EAAoBD,GAAUA,EAAOtsF,QAAQgsF,eAE7C1W,EAAQnvB,EAASmvB,OAAS,GAC9B,IACEA,EAAQ14D,EAAM04D,GACd,MAAO91E,IAET,IAAI+qF,EAAQ,CACVrkF,KAAMigD,EAASjgD,MAASkmF,GAAUA,EAAOlmF,KACzCsmF,KAAOJ,GAAUA,EAAOI,MAAS,GACjCn+E,KAAM83C,EAAS93C,MAAQ,IACvBkvD,KAAMpX,EAASoX,MAAQ,GACvB+X,MAAOA,EACPr6D,OAAQkrC,EAASlrC,QAAU,GAC3BwxE,SAAUC,EAAYvmC,EAAUomC,GAChC1B,QAASuB,EAASO,EAAYP,GAAU,IAK1C,OAHIC,IACF9B,EAAM8B,eAAiBK,EAAYL,EAAgBE,IAE9CrwF,OAAOswD,OAAO+9B,GAGvB,SAAS3tE,EAAOjiB,GACd,GAAI4K,MAAM8nB,QAAQ1yB,GAChB,OAAOA,EAAM4D,IAAIqe,GACZ,GAAIjiB,GAA0B,kBAAVA,EAAoB,CAC7C,IAAI+zD,EAAM,GACV,IAAK,IAAIxxD,KAAOvC,EACd+zD,EAAIxxD,GAAO0f,EAAMjiB,EAAMuC,IAEzB,OAAOwxD,EAEP,OAAO/zD,EAKX,IAAIiyF,EAAQT,EAAY,KAAM,CAC5B99E,KAAM,MAGR,SAASs+E,EAAaP,GACpB,IAAI19B,EAAM,GACV,MAAO09B,EACL19B,EAAIxK,QAAQkoC,GACZA,EAASA,EAAO5kF,OAElB,OAAOknD,EAGT,SAASg+B,EACP9kB,EACAilB,GAEA,IAAIx+E,EAAOu5D,EAAIv5D,KACXinE,EAAQ1N,EAAI0N,WAAsB,IAAVA,IAAmBA,EAAQ,IACvD,IAAI/X,EAAOqK,EAAIrK,UAAoB,IAATA,IAAkBA,EAAO,IAEnD,IAAIziC,EAAY+xD,GAAmBb,EACnC,OAAQ39E,GAAQ,KAAOysB,EAAUw6C,GAAS/X,EAG5C,SAASuvB,EAAa7rF,EAAGC,GACvB,OAAIA,IAAM0rF,EACD3rF,IAAMC,IACHA,IAEDD,EAAEoN,MAAQnN,EAAEmN,KAEnBpN,EAAEoN,KAAK4uB,QAAQivD,EAAiB,MAAQhrF,EAAEmN,KAAK4uB,QAAQivD,EAAiB,KACxEjrF,EAAEs8D,OAASr8D,EAAEq8D,MACbwvB,EAAc9rF,EAAEq0E,MAAOp0E,EAAEo0E,UAElBr0E,EAAEiF,OAAQhF,EAAEgF,QAEnBjF,EAAEiF,OAAShF,EAAEgF,MACbjF,EAAEs8D,OAASr8D,EAAEq8D,MACbwvB,EAAc9rF,EAAEq0E,MAAOp0E,EAAEo0E,QACzByX,EAAc9rF,EAAEga,OAAQ/Z,EAAE+Z,UAOhC,SAAS8xE,EAAe9rF,EAAGC,GAKzB,QAJW,IAAND,IAAeA,EAAI,SACb,IAANC,IAAeA,EAAI,KAGnBD,IAAMC,EAAK,OAAOD,IAAMC,EAC7B,IAAI8rF,EAAQ9wF,OAAOnC,KAAKkH,GACpBgsF,EAAQ/wF,OAAOnC,KAAKmH,GACxB,OAAI8rF,EAAMluF,SAAWmuF,EAAMnuF,QAGpBkuF,EAAMj5D,OAAM,SAAU72B,GAC3B,IAAIgwF,EAAOjsF,EAAE/D,GACTiwF,EAAOjsF,EAAEhE,GAEb,MAAoB,kBAATgwF,GAAqC,kBAATC,EAC9BJ,EAAcG,EAAMC,GAEtBjyF,OAAOgyF,KAAUhyF,OAAOiyF,MAInC,SAASC,EAAiB7nD,EAASnpC,GACjC,OAGQ,IAFNmpC,EAAQl3B,KAAK4uB,QAAQivD,EAAiB,KAAK17E,QACzCpU,EAAOiS,KAAK4uB,QAAQivD,EAAiB,SAErC9vF,EAAOmhE,MAAQh4B,EAAQg4B,OAASnhE,EAAOmhE,OACzC8vB,EAAc9nD,EAAQ+vC,MAAOl5E,EAAOk5E,OAIxC,SAAS+X,EAAe9nD,EAASnpC,GAC/B,IAAK,IAAIc,KAAOd,EACd,KAAMc,KAAOqoC,GACX,OAAO,EAGX,OAAO,EAMT,IAyII+nD,EAzIAC,EAAU,CAACryF,OAAQgB,QACnBsxF,EAAa,CAACtyF,OAAQqK,OAEtBkoF,EAAO,CACTvnF,KAAM,aACN4xD,MAAO,CACLxvB,GAAI,CACFvqC,KAAMwvF,EACNG,UAAU,GAEZpnF,IAAK,CACHvI,KAAM7C,OACN6+D,QAAS,KAEX4zB,MAAO1mC,QACPn4C,OAAQm4C,QACRhqB,QAASgqB,QACTo9B,YAAanpF,OACb0yF,iBAAkB1yF,OAClBif,MAAO,CACLpc,KAAMyvF,EACNzzB,QAAS,UAGbrzD,OAAQ,SAAiBwB,GACvB,IAAIi7D,EAAS3mE,KAET8vF,EAAS9vF,KAAKqxF,QACdtoD,EAAU/oC,KAAKguF,OACf5iB,EAAM0kB,EAAOt3D,QAAQx4B,KAAK8rC,GAAI/C,EAAS/oC,KAAKsS,QAC5Cq3C,EAAWyhB,EAAIzhB,SACfokC,EAAQ3iB,EAAI2iB,MACZuD,EAAOlmB,EAAIkmB,KAEXC,EAAU,GACVC,EAAoB1B,EAAOtsF,QAAQiuF,gBACnCC,EAAyB5B,EAAOtsF,QAAQmuF,qBAExCC,EAA2C,MAArBJ,EACtB,qBACAA,EACAK,EAAqD,MAA1BH,EAC3B,2BACAA,EACA7J,EAAkC,MAApB7nF,KAAK6nF,YACnB+J,EACA5xF,KAAK6nF,YACLuJ,EAA4C,MAAzBpxF,KAAKoxF,iBACxBS,EACA7xF,KAAKoxF,iBACLU,EAAgBnoC,EAAS93C,KACzB89E,EAAY,KAAMhmC,EAAU,KAAMmmC,GAClC/B,EAEJwD,EAAQH,GAAoBd,EAAYvnD,EAAS+oD,GACjDP,EAAQ1J,GAAe7nF,KAAKmxF,MACxBI,EAAQH,GACRR,EAAgB7nD,EAAS+oD,GAE7B,IAAI1zB,EAAU,SAAUp7D,GAClB+uF,EAAW/uF,KACT2jE,EAAOlmC,QACTqvD,EAAOrvD,QAAQkpB,GAEfmmC,EAAO17E,KAAKu1C,KAKdr1C,EAAK,CAAE09E,MAAOD,GACdhpF,MAAM8nB,QAAQ7wB,KAAK2d,OACrB3d,KAAK2d,MAAMihB,SAAQ,SAAU57B,GAAKsR,EAAGtR,GAAKo7D,KAE1C9pD,EAAGtU,KAAK2d,OAASygD,EAGnB,IAAIrsD,EAAO,CACTy4D,MAAO+mB,GAGT,GAAiB,MAAbvxF,KAAK8J,IACPiI,EAAKuC,GAAKA,EACVvC,EAAK6uD,MAAQ,CAAE0wB,KAAMA,OAChB,CAEL,IAAI7sF,EAAIwtF,EAAWjyF,KAAKsjE,OAAO/F,SAC/B,GAAI94D,EAAG,CAELA,EAAEizD,UAAW,EACb,IAAIw6B,EAAQztF,EAAEsN,KAAOiP,EAAO,GAAIvc,EAAEsN,MAClCmgF,EAAM59E,GAAKA,EACX,IAAI69E,EAAS1tF,EAAEsN,KAAK6uD,MAAQ5/C,EAAO,GAAIvc,EAAEsN,KAAK6uD,OAC9CuxB,EAAOb,KAAOA,OAGdv/E,EAAKuC,GAAKA,EAId,OAAO5I,EAAE1L,KAAK8J,IAAKiI,EAAM/R,KAAKsjE,OAAO/F,WAIzC,SAASw0B,EAAY/uF,GAEnB,KAAIA,EAAEovF,SAAWpvF,EAAE69D,QAAU79D,EAAEqvF,SAAWrvF,EAAEsvF,YAExCtvF,EAAEuvF,wBAEW/zF,IAAbwE,EAAEwvF,QAAqC,IAAbxvF,EAAEwvF,QAAhC,CAEA,GAAIxvF,EAAEo+E,eAAiBp+E,EAAEo+E,cAActuE,aAAc,CACnD,IAAIlT,EAASoD,EAAEo+E,cAActuE,aAAa,UAC1C,GAAI,cAAc5S,KAAKN,GAAW,OAMpC,OAHIoD,EAAEyvF,gBACJzvF,EAAEyvF,kBAEG,GAGT,SAASR,EAAYp6D,GACnB,GAAIA,EAEF,IADA,IAAItgB,EACKjJ,EAAI,EAAGA,EAAIupB,EAASv1B,OAAQgM,IAAK,CAExC,GADAiJ,EAAQsgB,EAASvpB,GACC,MAAdiJ,EAAMzN,IACR,OAAOyN,EAET,GAAIA,EAAMsgB,WAAatgB,EAAQ06E,EAAW16E,EAAMsgB,WAC9C,OAAOtgB,GAQf,SAASw9D,EAAS9J,GAChB,IAAI8J,EAAQ2d,WAAa5B,IAAS7lB,EAAlC,CACA8J,EAAQ2d,WAAY,EAEpB5B,EAAO7lB,EAEP,IAAI/a,EAAQ,SAAUj2C,GAAK,YAAazb,IAANyb,GAE9B04E,EAAmB,SAAU73B,EAAI83B,GACnC,IAAItkF,EAAIwsD,EAAGxvD,SAASi+D,aAChBrZ,EAAM5hD,IAAM4hD,EAAM5hD,EAAIA,EAAEyD,OAASm+C,EAAM5hD,EAAIA,EAAEggF,wBAC/ChgF,EAAEwsD,EAAI83B,IAIV3nB,EAAIgK,MAAM,CACRrpE,aAAc,WACRskD,EAAMlwD,KAAKsL,SAASwkF,SACtB9vF,KAAKmuF,YAAcnuF,KACnBA,KAAK6yF,QAAU7yF,KAAKsL,SAASwkF,OAC7B9vF,KAAK6yF,QAAQlxD,KAAK3hC,MAClBirE,EAAI8L,KAAKC,eAAeh3E,KAAM,SAAUA,KAAK6yF,QAAQC,QAAQ/pD,UAE7D/oC,KAAKmuF,YAAenuF,KAAKg+D,SAAWh+D,KAAKg+D,QAAQmwB,aAAgBnuF,KAEnE2yF,EAAiB3yF,KAAMA,OAEzBy2E,UAAW,WACTkc,EAAiB3yF,SAIrBN,OAAO/B,eAAestE,EAAIhtE,UAAW,UAAW,CAC9C2C,IAAK,WAAkB,OAAOZ,KAAKmuF,YAAY0E,WAGjDnzF,OAAO/B,eAAestE,EAAIhtE,UAAW,SAAU,CAC7C2C,IAAK,WAAkB,OAAOZ,KAAKmuF,YAAY4E,UAGjD9nB,EAAIuB,UAAU,aAAcqhB,GAC5B5iB,EAAIuB,UAAU,aAAcykB,GAE5B,IAAI12B,EAAS0Q,EAAI/X,OAAOC,sBAExBoH,EAAOy4B,iBAAmBz4B,EAAO04B,iBAAmB14B,EAAO24B,kBAAoB34B,EAAOic,SAKxF,IAAI9hB,EAA8B,qBAAXzxD,OAIvB,SAASkwF,EACPC,EACA7nB,EACAj5D,GAEA,IAAI+gF,EAAYD,EAASlwF,OAAO,GAChC,GAAkB,MAAdmwF,EACF,OAAOD,EAGT,GAAkB,MAAdC,GAAmC,MAAdA,EACvB,OAAO9nB,EAAO6nB,EAGhB,IAAIE,EAAQ/nB,EAAKr+D,MAAM,KAKlBoF,GAAWghF,EAAMA,EAAMhxF,OAAS,IACnCgxF,EAAMthE,MAKR,IADA,IAAIuW,EAAW6qD,EAAS3yD,QAAQ,MAAO,IAAIvzB,MAAM,KACxCoB,EAAI,EAAGA,EAAIi6B,EAASjmC,OAAQgM,IAAK,CACxC,IAAIk6B,EAAUD,EAASj6B,GACP,OAAZk6B,EACF8qD,EAAMthE,MACe,MAAZwW,GACT8qD,EAAMl/E,KAAKo0B,GASf,MAJiB,KAAb8qD,EAAM,IACRA,EAAM5rC,QAAQ,IAGT4rC,EAAM9zF,KAAK,KAGpB,SAAS+0D,EAAW1iD,GAClB,IAAIkvD,EAAO,GACP+X,EAAQ,GAERya,EAAY1hF,EAAKmC,QAAQ,KACzBu/E,GAAa,IACfxyB,EAAOlvD,EAAK1D,MAAMolF,GAClB1hF,EAAOA,EAAK1D,MAAM,EAAGolF,IAGvB,IAAIC,EAAa3hF,EAAKmC,QAAQ,KAM9B,OALIw/E,GAAc,IAChB1a,EAAQjnE,EAAK1D,MAAMqlF,EAAa,GAChC3hF,EAAOA,EAAK1D,MAAM,EAAGqlF,IAGhB,CACL3hF,KAAMA,EACNinE,MAAOA,EACP/X,KAAMA,GAIV,SAAS0yB,EAAW5hF,GAClB,OAAOA,EAAK4uB,QAAQ,QAAS,KAG/B,IAAIizD,EAAU3qF,MAAM8nB,SAAW,SAAUmgC,GACvC,MAA8C,kBAAvCtxD,OAAOzB,UAAUoC,SAASnB,KAAK8xD,IAMpC2iC,EAAiBC,GACjBC,EAAUjiE,EACVkiE,EAAYC,EACZC,EAAqBC,EACrBC,EAAmBC,GAOnBC,EAAc,IAAIzyE,OAAO,CAG3B,UAOA,0GACAniB,KAAK,KAAM,KASb,SAASoyB,EAAOk6B,EAAKtoD,GACnB,IAKI0uD,EALAmiC,EAAS,GACT3zF,EAAM,EACNmC,EAAQ,EACRgP,EAAO,GACPyiF,EAAmB9wF,GAAWA,EAAQu8B,WAAa,IAGvD,MAAwC,OAAhCmyB,EAAMkiC,EAAYp3F,KAAK8uD,IAAe,CAC5C,IAAIl8C,EAAIsiD,EAAI,GACRqiC,EAAUriC,EAAI,GACd5hD,EAAS4hD,EAAIrvD,MAKjB,GAJAgP,GAAQi6C,EAAI39C,MAAMtL,EAAOyN,GACzBzN,EAAQyN,EAASV,EAAEtN,OAGfiyF,EACF1iF,GAAQ0iF,EAAQ,OADlB,CAKA,IAAIvuF,EAAO8lD,EAAIjpD,GACXkS,EAASm9C,EAAI,GACbxoD,EAAOwoD,EAAI,GACX9zC,EAAU8zC,EAAI,GACd77C,EAAQ67C,EAAI,GACZsiC,EAAWtiC,EAAI,GACfuiC,EAAWviC,EAAI,GAGfrgD,IACFwiF,EAAOjgF,KAAKvC,GACZA,EAAO,IAGT,IAAI6iF,EAAoB,MAAV3/E,GAA0B,MAAR/O,GAAgBA,IAAS+O,EACrD4/E,EAAsB,MAAbH,GAAiC,MAAbA,EAC7BI,EAAwB,MAAbJ,GAAiC,MAAbA,EAC/Bz0D,EAAYmyB,EAAI,IAAMoiC,EACtBze,EAAUz3D,GAAW/H,EAEzBg+E,EAAOjgF,KAAK,CACV1K,KAAMA,GAAQhJ,IACdqU,OAAQA,GAAU,GAClBgrB,UAAWA,EACX60D,SAAUA,EACVD,OAAQA,EACRD,QAASA,EACTD,WAAYA,EACZ5e,QAASA,EAAUgf,EAAYhf,GAAY4e,EAAW,KAAO,KAAOK,EAAa/0D,GAAa,SAclG,OATIl9B,EAAQipD,EAAIxpD,SACduP,GAAQi6C,EAAIipC,OAAOlyF,IAIjBgP,GACFwiF,EAAOjgF,KAAKvC,GAGPwiF,EAUT,SAASN,EAASjoC,EAAKtoD,GACrB,OAAOywF,EAAiBriE,EAAMk6B,EAAKtoD,IASrC,SAASwxF,EAA0BlpC,GACjC,OAAOmpC,UAAUnpC,GAAKrrB,QAAQ,WAAW,SAAUvsB,GACjD,MAAO,IAAMA,EAAE+rB,WAAW,GAAG5/B,SAAS,IAAImlC,iBAU9C,SAAS0vD,EAAgBppC,GACvB,OAAOmpC,UAAUnpC,GAAKrrB,QAAQ,SAAS,SAAUvsB,GAC/C,MAAO,IAAMA,EAAE+rB,WAAW,GAAG5/B,SAAS,IAAImlC,iBAO9C,SAASyuD,EAAkBI,GAKzB,IAHA,IAAIx9E,EAAU,IAAI9N,MAAMsrF,EAAO/xF,QAGtBgM,EAAI,EAAGA,EAAI+lF,EAAO/xF,OAAQgM,IACR,kBAAd+lF,EAAO/lF,KAChBuI,EAAQvI,GAAK,IAAIqT,OAAO,OAAS0yE,EAAO/lF,GAAGunE,QAAU,OAIzD,OAAO,SAAUvlB,EAAKmF,GAMpB,IALA,IAAI5jD,EAAO,GACPE,EAAOu+C,GAAO,GACd9sD,EAAUiyD,GAAQ,GAClBo5B,EAASrrF,EAAQ2xF,OAASH,EAA2BlG,mBAEhDxgF,EAAI,EAAGA,EAAI+lF,EAAO/xF,OAAQgM,IAAK,CACtC,IAAIkyB,EAAQ6zD,EAAO/lF,GAEnB,GAAqB,kBAAVkyB,EAAX,CAMA,IACIgI,EADArqC,EAAQ4T,EAAKyuB,EAAM92B,MAGvB,GAAa,MAATvL,EAAe,CACjB,GAAIqiC,EAAMo0D,SAAU,CAEdp0D,EAAMk0D,UACR7iF,GAAQ2uB,EAAMzrB,QAGhB,SAEA,MAAM,IAAItW,UAAU,aAAe+hC,EAAM92B,KAAO,mBAIpD,GAAIgqF,EAAQv1F,GAAZ,CACE,IAAKqiC,EAAMm0D,OACT,MAAM,IAAIl2F,UAAU,aAAe+hC,EAAM92B,KAAO,kCAAoC20B,KAAKC,UAAUngC,GAAS,KAG9G,GAAqB,IAAjBA,EAAMmE,OAAc,CACtB,GAAIk+B,EAAMo0D,SACR,SAEA,MAAM,IAAIn2F,UAAU,aAAe+hC,EAAM92B,KAAO,qBAIpD,IAAK,IAAIsG,EAAI,EAAGA,EAAI7R,EAAMmE,OAAQ0N,IAAK,CAGrC,GAFAw4B,EAAUqmD,EAAO1wF,EAAM6R,KAElB6G,EAAQvI,GAAGpO,KAAKsoC,GACnB,MAAM,IAAI/pC,UAAU,iBAAmB+hC,EAAM92B,KAAO,eAAiB82B,EAAMq1C,QAAU,oBAAsBx3C,KAAKC,UAAUkK,GAAW,KAGvI32B,IAAe,IAAN7B,EAAUwwB,EAAMzrB,OAASyrB,EAAMT,WAAayI,OApBzD,CA4BA,GAFAA,EAAUhI,EAAMi0D,SAAWS,EAAe/2F,GAAS0wF,EAAO1wF,IAErD0Y,EAAQvI,GAAGpO,KAAKsoC,GACnB,MAAM,IAAI/pC,UAAU,aAAe+hC,EAAM92B,KAAO,eAAiB82B,EAAMq1C,QAAU,oBAAsBrtC,EAAU,KAGnH32B,GAAQ2uB,EAAMzrB,OAASyzB,QArDrB32B,GAAQ2uB,EAwDZ,OAAO3uB,GAUX,SAASijF,EAAchpC,GACrB,OAAOA,EAAIrrB,QAAQ,6BAA8B,QASnD,SAASo0D,EAAax+E,GACpB,OAAOA,EAAMoqB,QAAQ,gBAAiB,QAUxC,SAAS20D,EAAY7wD,EAAIhnC,GAEvB,OADAgnC,EAAGhnC,KAAOA,EACHgnC,EAST,SAASmnB,EAAOloD,GACd,OAAOA,EAAQ6xF,UAAY,GAAK,IAUlC,SAASC,EAAgBzjF,EAAMtU,GAE7B,IAAIyY,EAASnE,EAAKoe,OAAOnZ,MAAM,aAE/B,GAAId,EACF,IAAK,IAAI1H,EAAI,EAAGA,EAAI0H,EAAO1T,OAAQgM,IACjC/Q,EAAK6W,KAAK,CACR1K,KAAM4E,EACNyG,OAAQ,KACRgrB,UAAW,KACX60D,UAAU,EACVD,QAAQ,EACRD,SAAS,EACTD,UAAU,EACV5e,QAAS,OAKf,OAAOuf,EAAWvjF,EAAMtU,GAW1B,SAASg4F,GAAe1jF,EAAMtU,EAAMiG,GAGlC,IAFA,IAAI+rF,EAAQ,GAEHjhF,EAAI,EAAGA,EAAIuD,EAAKvP,OAAQgM,IAC/BihF,EAAMn7E,KAAKw/E,GAAa/hF,EAAKvD,GAAI/Q,EAAMiG,GAASysB,QAGlD,IAAI47B,EAAS,IAAIlqC,OAAO,MAAQ4tE,EAAM/vF,KAAK,KAAO,IAAKksD,EAAMloD,IAE7D,OAAO4xF,EAAWvpC,EAAQtuD,GAW5B,SAASi4F,GAAgB3jF,EAAMtU,EAAMiG,GACnC,OAAO2wF,GAAeviE,EAAM/f,EAAMrO,GAAUjG,EAAMiG,GAWpD,SAAS2wF,GAAgBE,EAAQ92F,EAAMiG,GAChCkwF,EAAQn2F,KACXiG,EAAkCjG,GAAQiG,EAC1CjG,EAAO,IAGTiG,EAAUA,GAAW,GAOrB,IALA,IAAIiyF,EAASjyF,EAAQiyF,OACjBrmE,GAAsB,IAAhB5rB,EAAQ4rB,IACd2+D,EAAQ,GAGHz/E,EAAI,EAAGA,EAAI+lF,EAAO/xF,OAAQgM,IAAK,CACtC,IAAIkyB,EAAQ6zD,EAAO/lF,GAEnB,GAAqB,kBAAVkyB,EACTutD,GAAS+G,EAAat0D,OACjB,CACL,IAAIzrB,EAAS+/E,EAAat0D,EAAMzrB,QAC5BqJ,EAAU,MAAQoiB,EAAMq1C,QAAU,IAEtCt4E,EAAK6W,KAAKosB,GAENA,EAAMm0D,SACRv2E,GAAW,MAAQrJ,EAASqJ,EAAU,MAOpCA,EAJAoiB,EAAMo0D,SACHp0D,EAAMk0D,QAGC3/E,EAAS,IAAMqJ,EAAU,KAFzB,MAAQrJ,EAAS,IAAMqJ,EAAU,MAKnCrJ,EAAS,IAAMqJ,EAAU,IAGrC2vE,GAAS3vE,GAIb,IAAI2hB,EAAY+0D,EAAatxF,EAAQu8B,WAAa,KAC9C21D,EAAoB3H,EAAM5/E,OAAO4xB,EAAUz9B,UAAYy9B,EAkB3D,OAZK01D,IACH1H,GAAS2H,EAAoB3H,EAAM5/E,MAAM,GAAI4xB,EAAUz9B,QAAUyrF,GAAS,MAAQhuD,EAAY,WAI9FguD,GADE3+D,EACO,IAIAqmE,GAAUC,EAAoB,GAAK,MAAQ31D,EAAY,MAG3Dq1D,EAAW,IAAIzzE,OAAO,IAAMosE,EAAOriC,EAAMloD,IAAWjG,GAe7D,SAASq2F,GAAc/hF,EAAMtU,EAAMiG,GAQjC,OAPKkwF,EAAQn2F,KACXiG,EAAkCjG,GAAQiG,EAC1CjG,EAAO,IAGTiG,EAAUA,GAAW,GAEjBqO,aAAgB8P,OACX2zE,EAAezjF,EAA4B,GAGhD6hF,EAAQ7hF,GACH0jF,GAAoC,EAA8B,EAAQ/xF,GAG5EgyF,GAAqC,EAA8B,EAAQhyF,GAEpFmwF,EAAe/hE,MAAQiiE,EACvBF,EAAeI,QAAUD,EACzBH,EAAeM,iBAAmBD,EAClCL,EAAeQ,eAAiBD,EAKhC,IAAIyB,GAAqBj2F,OAAOgG,OAAO,MAEvC,SAASkwF,GACP/jF,EACA4M,EACAo3E,GAEA,IACE,IAAIC,EACFH,GAAmB9jF,KAClB8jF,GAAmB9jF,GAAQ8hF,EAAeI,QAAQliF,IACrD,OAAOikF,EAAOr3E,GAAU,GAAI,CAAE02E,QAAQ,IACtC,MAAOnyF,GAIP,MAAO,IAMX,SAAS+yF,GACPC,EACAC,EACAC,EACAC,GAGA,IAAIC,EAAWH,GAAe,GAE1BI,EAAUH,GAAcx2F,OAAOgG,OAAO,MAEtC4wF,EAAUH,GAAcz2F,OAAOgG,OAAO,MAE1CswF,EAAOp3D,SAAQ,SAAUmvD,GACvBwI,GAAeH,EAAUC,EAASC,EAASvI,MAI7C,IAAK,IAAIz/E,EAAI,EAAG4d,EAAIkqE,EAAS9zF,OAAQgM,EAAI4d,EAAG5d,IACtB,MAAhB8nF,EAAS9nF,KACX8nF,EAAShiF,KAAKgiF,EAASv6E,OAAOvN,EAAG,GAAG,IACpC4d,IACA5d,KAIJ,MAAO,CACL8nF,SAAUA,EACVC,QAASA,EACTC,QAASA,GAIb,SAASC,GACPH,EACAC,EACAC,EACAvI,EACA/iF,EACAwrF,GAEA,IAAI3kF,EAAOk8E,EAAMl8E,KACbnI,EAAOqkF,EAAMrkF,KAUjB,IAAI+sF,EAAsB1I,EAAM0I,qBAAuB,GACnDC,EAAiBC,GACnB9kF,EACA7G,EACAyrF,EAAoBhB,QAGa,mBAAxB1H,EAAM6I,gBACfH,EAAoBpB,UAAYtH,EAAM6I,eAGxC,IAAIhH,EAAS,CACX/9E,KAAM6kF,EACNG,MAAOC,GAAkBJ,EAAgBD,GACzCpiB,WAAY0Z,EAAM1Z,YAAc,CAAE9W,QAASwwB,EAAMvhB,WACjD+hB,UAAW,GACX7kF,KAAMA,EACNsB,OAAQA,EACRwrF,QAASA,EACTO,SAAUhJ,EAAMgJ,SAChB5P,YAAa4G,EAAM5G,YACnB6I,KAAMjC,EAAMiC,MAAQ,GACpB10B,MAAsB,MAAfyyB,EAAMzyB,MACT,GACAyyB,EAAM1Z,WACJ0Z,EAAMzyB,MACN,CAAEiC,QAASwwB,EAAMzyB,QA2BzB,GAxBIyyB,EAAMl2D,UAgBRk2D,EAAMl2D,SAAS+G,SAAQ,SAAUrnB,GAC/B,IAAIy/E,EAAeR,EACf/C,EAAW+C,EAAU,IAAOj/E,EAAU,WACtC/Y,EACJ+3F,GAAeH,EAAUC,EAASC,EAAS/+E,EAAOq4E,EAAQoH,WAI1Cx4F,IAAhBuvF,EAAMkJ,MAAqB,CAC7B,IAAIC,EAAUnuF,MAAM8nB,QAAQk9D,EAAMkJ,OAC9BlJ,EAAMkJ,MACN,CAAClJ,EAAMkJ,OAEXC,EAAQt4D,SAAQ,SAAUq4D,GACxB,IAAIE,EAAa,CACftlF,KAAMolF,EACNp/D,SAAUk2D,EAAMl2D,UAElB0+D,GACEH,EACAC,EACAC,EACAa,EACAnsF,EACA4kF,EAAO/9E,MAAQ,QAKhBwkF,EAAQzG,EAAO/9E,QAClBukF,EAAShiF,KAAKw7E,EAAO/9E,MACrBwkF,EAAQzG,EAAO/9E,MAAQ+9E,GAGrBlmF,IACG4sF,EAAQ5sF,KACX4sF,EAAQ5sF,GAAQkmF,IAWtB,SAASkH,GAAmBjlF,EAAM4kF,GAChC,IAAII,EAAQlD,EAAe9hF,EAAM,GAAI4kF,GAQrC,OAAOI,EAGT,SAASF,GAAe9kF,EAAM7G,EAAQyqF,GAEpC,OADKA,IAAU5jF,EAAOA,EAAK4uB,QAAQ,MAAO,KAC1B,MAAZ5uB,EAAK,IACK,MAAV7G,EAD0B6G,EAEvB4hF,EAAYzoF,EAAW,KAAI,IAAM6G,GAK1C,SAASulF,GACP3/B,EACA1uB,EACAz2B,EACAw9E,GAEA,IAAI9pF,EAAsB,kBAARyxD,EAAmB,CAAE5lD,KAAM4lD,GAAQA,EAErD,GAAIzxD,EAAK0D,MAAQ1D,EAAK08D,YACpB,OAAO18D,EAIT,IAAKA,EAAK6L,MAAQ7L,EAAKyY,QAAUsqB,EAAS,CACxC/iC,EAAOgb,EAAO,GAAIhb,GAClBA,EAAK08D,aAAc,EACnB,IAAIjkD,EAASuC,EAAOA,EAAO,GAAI+nB,EAAQtqB,QAASzY,EAAKyY,QACrD,GAAIsqB,EAAQr/B,KACV1D,EAAK0D,KAAOq/B,EAAQr/B,KACpB1D,EAAKyY,OAASA,OACT,GAAIsqB,EAAQslD,QAAQ/rF,OAAQ,CACjC,IAAI+0F,EAAUtuD,EAAQslD,QAAQtlD,EAAQslD,QAAQ/rF,OAAS,GAAGuP,KAC1D7L,EAAK6L,KAAO+jF,GAAWyB,EAAS54E,EAAS,QAAWsqB,EAAY,WACvD,EAGX,OAAO/iC,EAGT,IAAIsxF,EAAa/iC,EAAUvuD,EAAK6L,MAAQ,IACpC0lF,EAAYxuD,GAAWA,EAAQl3B,MAAS,IACxCA,EAAOylF,EAAWzlF,KAClBshF,EAAYmE,EAAWzlF,KAAM0lF,EAAUjlF,GAAUtM,EAAKsM,QACtDilF,EAEAze,EAAQmW,EACVqI,EAAWxe,MACX9yE,EAAK8yE,MACLgX,GAAUA,EAAOtsF,QAAQ6rF,YAGvBtuB,EAAO/6D,EAAK+6D,MAAQu2B,EAAWv2B,KAKnC,OAJIA,GAA2B,MAAnBA,EAAK79D,OAAO,KACtB69D,EAAO,IAAMA,GAGR,CACL2B,aAAa,EACb7wD,KAAMA,EACNinE,MAAOA,EACP/X,KAAMA,GAQV,SAASy2B,GACPxB,EACAlG,GAEA,IAAI1kB,EAAM2qB,GAAeC,GACrBI,EAAWhrB,EAAIgrB,SACfC,EAAUjrB,EAAIirB,QACdC,EAAUlrB,EAAIkrB,QAElB,SAASmB,EAAWzB,GAClBD,GAAeC,EAAQI,EAAUC,EAASC,GAG5C,SAASx/E,EACP2gD,EACAigC,EACA7H,GAEA,IAAIlmC,EAAWytC,GAAkB3/B,EAAKigC,GAAc,EAAO5H,GACvDpmF,EAAOigD,EAASjgD,KAEpB,GAAIA,EAAM,CACR,IAAIkmF,EAAS0G,EAAQ5sF,GAIrB,IAAKkmF,EAAU,OAAO+H,EAAa,KAAMhuC,GACzC,IAAIiuC,EAAahI,EAAOiH,MAAMt5F,KAC3B2V,QAAO,SAAUxS,GAAO,OAAQA,EAAIk0F,YACpC7yF,KAAI,SAAUrB,GAAO,OAAOA,EAAIgJ,QAMnC,GAJ+B,kBAApBigD,EAASlrC,SAClBkrC,EAASlrC,OAAS,IAGhBi5E,GAA+C,kBAAxBA,EAAaj5E,OACtC,IAAK,IAAI/d,KAAOg3F,EAAaj5E,SACrB/d,KAAOipD,EAASlrC,SAAWm5E,EAAW5jF,QAAQtT,IAAQ,IAC1DipD,EAASlrC,OAAO/d,GAAOg3F,EAAaj5E,OAAO/d,IAKjD,GAAIkvF,EAEF,OADAjmC,EAAS93C,KAAO+jF,GAAWhG,EAAO/9E,KAAM83C,EAASlrC,OAAS,gBAAmB/U,EAAO,KAC7EiuF,EAAa/H,EAAQjmC,EAAUkmC,QAEnC,GAAIlmC,EAAS93C,KAAM,CACxB83C,EAASlrC,OAAS,GAClB,IAAK,IAAInQ,EAAI,EAAGA,EAAI8nF,EAAS9zF,OAAQgM,IAAK,CACxC,IAAIuD,EAAOukF,EAAS9nF,GAChBupF,EAAWxB,EAAQxkF,GACvB,GAAIimF,GAAWD,EAAShB,MAAOltC,EAAS93C,KAAM83C,EAASlrC,QACrD,OAAOk5E,EAAaE,EAAUluC,EAAUkmC,IAK9C,OAAO8H,EAAa,KAAMhuC,GAG5B,SAASotC,EACPnH,EACAjmC,GAEA,IAAIouC,EAAmBnI,EAAOmH,SAC1BA,EAAuC,oBAArBgB,EAClBA,EAAiBpI,EAAYC,EAAQjmC,EAAU,KAAMmmC,IACrDiI,EAMJ,GAJwB,kBAAbhB,IACTA,EAAW,CAAEllF,KAAMklF,KAGhBA,GAAgC,kBAAbA,EAMtB,OAAOY,EAAa,KAAMhuC,GAG5B,IAAIplB,EAAKwyD,EACLrtF,EAAO66B,EAAG76B,KACVmI,EAAO0yB,EAAG1yB,KACVinE,EAAQnvB,EAASmvB,MACjB/X,EAAOpX,EAASoX,KAChBtiD,EAASkrC,EAASlrC,OAKtB,GAJAq6D,EAAQv0C,EAAGtwB,eAAe,SAAWswB,EAAGu0C,MAAQA,EAChD/X,EAAOx8B,EAAGtwB,eAAe,QAAUswB,EAAGw8B,KAAOA,EAC7CtiD,EAAS8lB,EAAGtwB,eAAe,UAAYswB,EAAG9lB,OAASA,EAE/C/U,EAAM,CAEW4sF,EAAQ5sF,GAI3B,OAAOoN,EAAM,CACX4rD,aAAa,EACbh5D,KAAMA,EACNovE,MAAOA,EACP/X,KAAMA,EACNtiD,OAAQA,QACPjgB,EAAWmrD,GACT,GAAI93C,EAAM,CAEf,IAAIwlF,EAAUW,GAAkBnmF,EAAM+9E,GAElCqI,EAAerC,GAAWyB,EAAS54E,EAAS,6BAAgC44E,EAAU,KAE1F,OAAOvgF,EAAM,CACX4rD,aAAa,EACb7wD,KAAMomF,EACNnf,MAAOA,EACP/X,KAAMA,QACLviE,EAAWmrD,GAKd,OAAOguC,EAAa,KAAMhuC,GAI9B,SAASstC,EACPrH,EACAjmC,EACA6sC,GAEA,IAAI0B,EAActC,GAAWY,EAAS7sC,EAASlrC,OAAS,4BAA+B+3E,EAAU,KAC7F2B,EAAerhF,EAAM,CACvB4rD,aAAa,EACb7wD,KAAMqmF,IAER,GAAIC,EAAc,CAChB,IAAI9J,EAAU8J,EAAa9J,QACvB+J,EAAgB/J,EAAQA,EAAQ/rF,OAAS,GAE7C,OADAqnD,EAASlrC,OAAS05E,EAAa15E,OACxBk5E,EAAaS,EAAezuC,GAErC,OAAOguC,EAAa,KAAMhuC,GAG5B,SAASguC,EACP/H,EACAjmC,EACAkmC,GAEA,OAAID,GAAUA,EAAOmH,SACZA,EAASnH,EAAQC,GAAkBlmC,GAExCimC,GAAUA,EAAO4G,QACZS,EAAMrH,EAAQjmC,EAAUimC,EAAO4G,SAEjC7G,EAAYC,EAAQjmC,EAAUkmC,EAAgBC,GAGvD,MAAO,CACLh5E,MAAOA,EACP2gF,UAAWA,GAIf,SAASK,GACPjB,EACAhlF,EACA4M,GAEA,IAAI7O,EAAIiC,EAAKiF,MAAM+/E,GAEnB,IAAKjnF,EACH,OAAO,EACF,IAAK6O,EACV,OAAO,EAGT,IAAK,IAAInQ,EAAI,EAAGqqD,EAAM/oD,EAAEtN,OAAQgM,EAAIqqD,IAAOrqD,EAAG,CAC5C,IAAI5N,EAAMm2F,EAAMt5F,KAAK+Q,EAAI,GACrB+9C,EAAsB,kBAATz8C,EAAEtB,GAAkB0gF,mBAAmBp/E,EAAEtB,IAAMsB,EAAEtB,GAC9D5N,IAEF+d,EAAO/d,EAAIgJ,MAAQ,aAAe2iD,GAItC,OAAO,EAGT,SAAS2rC,GAAmBnmF,EAAM+9E,GAChC,OAAOuD,EAAYthF,EAAM+9E,EAAO5kF,OAAS4kF,EAAO5kF,OAAO6G,KAAO,KAAK,GAKrE,IAAIwmF,GAAgB34F,OAAOgG,OAAO,MAElC,SAAS4yF,KAGPr1F,OAAO6vF,QAAQyF,aAAa,CAAE73F,IAAK83F,MAAiB,GAAIv1F,OAAO0mD,SAAS2nC,KAAK7wD,QAAQx9B,OAAO0mD,SAAS8uC,OAAQ,KAC7Gx1F,OAAOsb,iBAAiB,YAAY,SAAUvb,GAC5C01F,KACI11F,EAAE1B,OAAS0B,EAAE1B,MAAMZ,KACrBi4F,GAAY31F,EAAE1B,MAAMZ,QAK1B,SAASk4F,GACP9I,EACAhkD,EACAD,EACAgtD,GAEA,GAAK/I,EAAOgJ,IAAZ,CAIA,IAAIC,EAAWjJ,EAAOtsF,QAAQw1F,eACzBD,GASLjJ,EAAOgJ,IAAI5tB,WAAU,WACnB,IAAIx5D,EAAWunF,KACXC,EAAeH,EAAS75F,KAAK4wF,EAAQhkD,EAAID,EAAMgtD,EAAQnnF,EAAW,MAEjEwnF,IAI4B,oBAAtBA,EAAa/zF,KACtB+zF,EAAa/zF,MAAK,SAAU+zF,GAC1BC,GAAiB,EAAgBznF,MAChCi/C,OAAM,SAAUkN,GACb,KAKNs7B,GAAiBD,EAAcxnF,QAKrC,SAASgnF,KACP,IAAIh4F,EAAM83F,KACN93F,IACF23F,GAAc33F,GAAO,CACnB8E,EAAGvC,OAAOm2F,YACVhpF,EAAGnN,OAAOo2F,cAKhB,SAASJ,KACP,IAAIv4F,EAAM83F,KACV,GAAI93F,EACF,OAAO23F,GAAc33F,GAIzB,SAAS44F,GAAoBxqB,EAAIx+D,GAC/B,IAAIipF,EAAQnxF,SAASmN,gBACjBikF,EAAUD,EAAMjN,wBAChBmN,EAAS3qB,EAAGwd,wBAChB,MAAO,CACL9mF,EAAGi0F,EAAOjsF,KAAOgsF,EAAQhsF,KAAO8C,EAAO9K,EACvC4K,EAAGqpF,EAAOlM,IAAMiM,EAAQjM,IAAMj9E,EAAOF,GAIzC,SAASspF,GAAiBppC,GACxB,OAAOqpC,GAASrpC,EAAI9qD,IAAMm0F,GAASrpC,EAAIlgD,GAGzC,SAASwpF,GAAmBtpC,GAC1B,MAAO,CACL9qD,EAAGm0F,GAASrpC,EAAI9qD,GAAK8qD,EAAI9qD,EAAIvC,OAAOm2F,YACpChpF,EAAGupF,GAASrpC,EAAIlgD,GAAKkgD,EAAIlgD,EAAInN,OAAOo2F,aAIxC,SAASQ,GAAiBvpC,GACxB,MAAO,CACL9qD,EAAGm0F,GAASrpC,EAAI9qD,GAAK8qD,EAAI9qD,EAAI,EAC7B4K,EAAGupF,GAASrpC,EAAIlgD,GAAKkgD,EAAIlgD,EAAI,GAIjC,SAASupF,GAAU1/E,GACjB,MAAoB,kBAANA,EAGhB,SAASk/E,GAAkBD,EAAcxnF,GACvC,IAAItT,EAAmC,kBAAjB86F,EACtB,GAAI96F,GAA6C,kBAA1B86F,EAAapjF,SAAuB,CACzD,IAAIg5D,EAAK1mE,SAAS2N,cAAcmjF,EAAapjF,UAC7C,GAAIg5D,EAAI,CACN,IAAIx+D,EAAS4oF,EAAa5oF,QAAyC,kBAAxB4oF,EAAa5oF,OAAsB4oF,EAAa5oF,OAAS,GACpGA,EAASupF,GAAgBvpF,GACzBoB,EAAW4nF,GAAmBxqB,EAAIx+D,QACzBopF,GAAgBR,KACzBxnF,EAAWkoF,GAAkBV,SAEtB96F,GAAYs7F,GAAgBR,KACrCxnF,EAAWkoF,GAAkBV,IAG3BxnF,GACFzO,OAAO62F,SAASpoF,EAASlM,EAAGkM,EAAStB,GAMzC,IAAI2pF,GAAoBrlC,GAAa,WACnC,IAAIslC,EAAK/2F,OAAO+xD,UAAU/0D,UAE1B,QACiC,IAA9B+5F,EAAGhmF,QAAQ,gBAAuD,IAA/BgmF,EAAGhmF,QAAQ,iBACd,IAAjCgmF,EAAGhmF,QAAQ,mBACe,IAA1BgmF,EAAGhmF,QAAQ,YACsB,IAAjCgmF,EAAGhmF,QAAQ,oBAKN/Q,OAAO6vF,SAAW,cAAe7vF,OAAO6vF,SAZZ,GAgBjCmH,GAAOvlC,GAAazxD,OAAOowB,aAAepwB,OAAOowB,YAAYC,IAC7DrwB,OAAOowB,YACPxD,KAEAqqE,GAAOC,KAEX,SAASA,KACP,OAAOF,GAAK3mE,MAAM8R,QAAQ,GAG5B,SAASozD,KACP,OAAO0B,GAGT,SAASvB,GAAaj4F,GACpBw5F,GAAOx5F,EAGT,SAAS05F,GAAWC,EAAK55D,GACvBi4D,KAGA,IAAI5F,EAAU7vF,OAAO6vF,QACrB,IACMryD,EACFqyD,EAAQyF,aAAa,CAAE73F,IAAKw5F,IAAQ,GAAIG,IAExCH,GAAOC,KACPrH,EAAQsH,UAAU,CAAE15F,IAAKw5F,IAAQ,GAAIG,IAEvC,MAAOr3F,GACPC,OAAO0mD,SAASlpB,EAAU,UAAY,UAAU45D,IAIpD,SAAS9B,GAAc8B,GACrBD,GAAUC,GAAK,GAKjB,SAASC,GAAU1sC,EAAOphD,EAAI0yD,GAC5B,IAAIpyD,EAAO,SAAUjK,GACfA,GAAS+qD,EAAMtrD,OACjB48D,IAEItR,EAAM/qD,GACR2J,EAAGohD,EAAM/qD,IAAQ,WACfiK,EAAKjK,EAAQ,MAGfiK,EAAKjK,EAAQ,IAInBiK,EAAK,GAKP,SAASytF,GAAwBlM,GAC/B,OAAO,SAAUviD,EAAID,EAAM7lC,GACzB,IAAIw0F,GAAW,EACX97B,EAAU,EACVzhE,EAAQ,KAEZw9F,GAAkBpM,GAAS,SAAUh6B,EAAKjhD,EAAG0D,EAAOpW,GAMlD,GAAmB,oBAAR2zD,QAAkC71D,IAAZ61D,EAAIwU,IAAmB,CACtD2xB,GAAW,EACX97B,IAEA,IA0BIxM,EA1BA15B,EAAUs6B,IAAK,SAAU4nC,GACvBC,GAAWD,KACbA,EAAcA,EAAYn9B,SAG5BlJ,EAAIsX,SAAkC,oBAAhB+uB,EAClBA,EACA5J,EAAK9vE,OAAO05E,GAChB5jF,EAAMu9D,WAAW3zE,GAAOg6F,EACxBh8B,IACIA,GAAW,GACb14D,OAIAyyB,EAASq6B,IAAK,SAAUyZ,GAC1B,IAAIquB,EAAM,qCAAuCl6F,EAAM,KAAO6rE,EAEzDtvE,IACHA,EAAQ2wF,EAAQrhB,GACZA,EACA,IAAI54D,MAAMinF,GACd50F,EAAK/I,OAKT,IACEi1D,EAAMmC,EAAI77B,EAASC,GACnB,MAAOz1B,GACPy1B,EAAOz1B,GAET,GAAIkvD,EACF,GAAwB,oBAAbA,EAAI/sD,KACb+sD,EAAI/sD,KAAKqzB,EAASC,OACb,CAEL,IAAI6yC,EAAOpZ,EAAIsa,UACXlB,GAA6B,oBAAdA,EAAKnmE,MACtBmmE,EAAKnmE,KAAKqzB,EAASC,QAOxB+hE,GAAYx0F,KAIrB,SAASy0F,GACPpM,EACA7hF,GAEA,OAAOquF,GAAQxM,EAAQtsF,KAAI,SAAU6N,GACnC,OAAOlQ,OAAOnC,KAAKqS,EAAEykE,YAAYtyE,KAAI,SAAUrB,GAAO,OAAO8L,EAC3DoD,EAAEykE,WAAW3zE,GACbkP,EAAE2+E,UAAU7tF,GACZkP,EAAGlP,UAKT,SAASm6F,GAAS7pC,GAChB,OAAOjoD,MAAM9K,UAAUP,OAAO2T,MAAM,GAAI2/C,GAG1C,IAAIiF,GACgB,oBAAX1sD,QACuB,kBAAvBA,OAAOkiE,YAEhB,SAASkvB,GAAYrqC,GACnB,OAAOA,EAAIkb,YAAevV,IAAyC,WAA5B3F,EAAI/mD,OAAOkiE,aAOpD,SAAS3Y,GAAMtmD,GACb,IAAImjD,GAAS,EACb,OAAO,WACL,IAAIl7C,EAAO,GAAIkkD,EAAMt2D,UAAUC,OAC/B,MAAQq2D,IAAQlkD,EAAMkkD,GAAQt2D,UAAWs2D,GAEzC,IAAIhJ,EAEJ,OADAA,GAAS,EACFnjD,EAAG6E,MAAMrR,KAAMyU,IAM1B,IAAIqmF,GAAU,SAAkBhL,EAAQvkB,GACtCvrE,KAAK8vF,OAASA,EACd9vF,KAAKurE,KAAOwvB,GAAcxvB,GAE1BvrE,KAAK+oC,QAAUqnD,EACfpwF,KAAK0+D,QAAU,KACf1+D,KAAKg7F,OAAQ,EACbh7F,KAAKi7F,SAAW,GAChBj7F,KAAKk7F,cAAgB,GACrBl7F,KAAKm7F,SAAW,IA2JlB,SAASJ,GAAexvB,GACtB,IAAKA,EACH,GAAI7W,EAAW,CAEb,IAAI0mC,EAAShzF,SAAS2N,cAAc,QACpCw1D,EAAQ6vB,GAAUA,EAAOtoF,aAAa,SAAY,IAElDy4D,EAAOA,EAAK9qC,QAAQ,qBAAsB,SAE1C8qC,EAAO,IAQX,MAJuB,MAAnBA,EAAKroE,OAAO,KACdqoE,EAAO,IAAMA,GAGRA,EAAK9qC,QAAQ,MAAO,IAG7B,SAAS46D,GACPtyD,EACA/iC,GAEA,IAAIsI,EACAC,EAAM5R,KAAK4R,IAAIw6B,EAAQzmC,OAAQ0D,EAAK1D,QACxC,IAAKgM,EAAI,EAAGA,EAAIC,EAAKD,IACnB,GAAIy6B,EAAQz6B,KAAOtI,EAAKsI,GACtB,MAGJ,MAAO,CACLi+E,QAASvmF,EAAKmI,MAAM,EAAGG,GACvBgtF,UAAWt1F,EAAKmI,MAAMG,GACtBitF,YAAaxyD,EAAQ56B,MAAMG,IAI/B,SAASktF,GACPC,EACA/xF,EACAuC,EACA4C,GAEA,IAAI6sF,EAASjB,GAAkBgB,GAAS,SAAUpnC,EAAKsnC,EAAU7kF,EAAOpW,GACtE,IAAIk7F,EAAQC,GAAaxnC,EAAK3qD,GAC9B,GAAIkyF,EACF,OAAO7yF,MAAM8nB,QAAQ+qE,GACjBA,EAAM75F,KAAI,SAAU65F,GAAS,OAAO3vF,EAAK2vF,EAAOD,EAAU7kF,EAAOpW,MACjEuL,EAAK2vF,EAAOD,EAAU7kF,EAAOpW,MAGrC,OAAOm6F,GAAQhsF,EAAU6sF,EAAO7sF,UAAY6sF,GAG9C,SAASG,GACPxnC,EACA3zD,GAMA,MAJmB,oBAAR2zD,IAETA,EAAMy8B,EAAK9vE,OAAOqzC,IAEbA,EAAI7wD,QAAQ9C,GAGrB,SAASo7F,GAAoBP,GAC3B,OAAOC,GAAcD,EAAa,mBAAoBQ,IAAW,GAGnE,SAASC,GAAoBzP,GAC3B,OAAOiP,GAAcjP,EAAS,oBAAqBwP,IAGrD,SAASA,GAAWH,EAAOD,GACzB,GAAIA,EACF,OAAO,WACL,OAAOC,EAAMvqF,MAAMsqF,EAAUt5F,YAKnC,SAAS45F,GACPX,EACA/tB,EACA2uB,GAEA,OAAOV,GAAcF,EAAW,oBAAoB,SAAUM,EAAOxoF,EAAG0D,EAAOpW,GAC7E,OAAOy7F,GAAeP,EAAO9kF,EAAOpW,EAAK6sE,EAAK2uB,MAIlD,SAASC,GACPP,EACA9kF,EACApW,EACA6sE,EACA2uB,GAEA,OAAO,SAA0BpwD,EAAID,EAAM7lC,GACzC,OAAO41F,EAAM9vD,EAAID,GAAM,SAAUqzB,GAC/Bl5D,EAAKk5D,GACa,oBAAPA,GACTqO,EAAIn5D,MAAK,WAMPgoF,GAAKl9B,EAAIpoD,EAAMy3E,UAAW7tF,EAAKw7F,UAOzC,SAASE,GACPl9B,EACAqvB,EACA7tF,EACAw7F,GAGE3N,EAAU7tF,KACT6tF,EAAU7tF,GAAKutE,kBAEhB/O,EAAGqvB,EAAU7tF,IACJw7F,KACTzoE,YAAW,WACT2oE,GAAKl9B,EAAIqvB,EAAW7tF,EAAKw7F,KACxB,IA1RPpB,GAAQ78F,UAAUo+F,OAAS,SAAiBn9B,GAC1Cl/D,KAAKk/D,GAAKA,GAGZ47B,GAAQ78F,UAAUq+F,QAAU,SAAkBp9B,EAAIq9B,GAC5Cv8F,KAAKg7F,MACP97B,KAEAl/D,KAAKi7F,SAAS7mF,KAAK8qD,GACfq9B,GACFv8F,KAAKk7F,cAAc9mF,KAAKmoF,KAK9BzB,GAAQ78F,UAAUu+F,QAAU,SAAkBD,GAC5Cv8F,KAAKm7F,SAAS/mF,KAAKmoF,IAGrBzB,GAAQ78F,UAAUw+F,aAAe,SAAuB9yC,EAAU+yC,EAAYC,GAC1E,IAAIh2B,EAAS3mE,KAEX+tF,EAAQ/tF,KAAK8vF,OAAOh5E,MAAM6yC,EAAU3pD,KAAK+oC,SAC7C/oC,KAAK48F,kBAAkB7O,GAAO,WAC5BpnB,EAAOk2B,YAAY9O,GACnB2O,GAAcA,EAAW3O,GACzBpnB,EAAOm2B,YAGFn2B,EAAOq0B,QACVr0B,EAAOq0B,OAAQ,EACfr0B,EAAOs0B,SAASr8D,SAAQ,SAAUsgC,GAAMA,EAAG6uB,UAE5C,SAAUlwB,GACP8+B,GACFA,EAAQ9+B,GAENA,IAAQ8I,EAAOq0B,QACjBr0B,EAAOq0B,OAAQ,EACfr0B,EAAOu0B,cAAct8D,SAAQ,SAAUsgC,GAAMA,EAAGrB,WAKtDi9B,GAAQ78F,UAAU2+F,kBAAoB,SAA4B7O,EAAO2O,EAAYC,GACjF,IAAIh2B,EAAS3mE,KAEX+oC,EAAU/oC,KAAK+oC,QACfg0D,EAAQ,SAAUl/B,GAChB+vB,EAAQ/vB,KACN8I,EAAOw0B,SAAS74F,OAClBqkE,EAAOw0B,SAASv8D,SAAQ,SAAUsgC,GAAMA,EAAGrB,OAE3CzH,GAAK,EAAO,2CACZzxD,QAAQ1H,MAAM4gE,KAGlB8+B,GAAWA,EAAQ9+B,IAErB,GACEyyB,EAAYvC,EAAOhlD,IAEnBglD,EAAMM,QAAQ/rF,SAAWymC,EAAQslD,QAAQ/rF,OAGzC,OADAtC,KAAK88F,YACEC,IAGT,IAAI3xB,EAAMiwB,GAAar7F,KAAK+oC,QAAQslD,QAASN,EAAMM,SAC7C9B,EAAUnhB,EAAImhB,QACdgP,EAAcnwB,EAAImwB,YAClBD,EAAYlwB,EAAIkwB,UAElB1tC,EAAQ,GAAGlwD,OAEbo+F,GAAmBP,GAEnBv7F,KAAK8vF,OAAOkN,YAEZhB,GAAmBzP,GAEnB+O,EAAUv5F,KAAI,SAAU6N,GAAK,OAAOA,EAAEu3E,eAEtCoT,GAAuBe,IAGzBt7F,KAAK0+D,QAAUqvB,EACf,IAAInhF,EAAW,SAAUnC,EAAMzE,GAC7B,GAAI2gE,EAAOjI,UAAYqvB,EACrB,OAAOgP,IAET,IACEtyF,EAAKsjF,EAAOhlD,GAAS,SAAU+C,IAClB,IAAPA,GAAgB8hD,EAAQ9hD,IAE1B66B,EAAOm2B,WAAU,GACjBC,EAAMjxD,IAEQ,kBAAPA,GACQ,kBAAPA,IACa,kBAAZA,EAAGj6B,MACS,kBAAZi6B,EAAGpiC,OAIZqzF,IACkB,kBAAPjxD,GAAmBA,EAAGrL,QAC/BkmC,EAAOlmC,QAAQqL,GAEf66B,EAAOvyD,KAAK03B,IAId9lC,EAAK8lC,MAGT,MAAO9oC,GACP+5F,EAAM/5F,KAIVs3F,GAAS1sC,EAAOhhD,GAAU,WACxB,IAAIqwF,EAAe,GACff,EAAU,WAAc,OAAOv1B,EAAO59B,UAAYglD,GAGlDmP,EAAcjB,GAAmBX,EAAW2B,EAAcf,GAC1DtuC,EAAQsvC,EAAYx/F,OAAOipE,EAAOmpB,OAAOqN,cAC7C7C,GAAS1sC,EAAOhhD,GAAU,WACxB,GAAI+5D,EAAOjI,UAAYqvB,EACrB,OAAOgP,IAETp2B,EAAOjI,QAAU,KACjBg+B,EAAW3O,GACPpnB,EAAOmpB,OAAOgJ,KAChBnyB,EAAOmpB,OAAOgJ,IAAI5tB,WAAU,WAC1B+xB,EAAar+D,SAAQ,SAAUsgC,GAAMA,iBAO/C47B,GAAQ78F,UAAU4+F,YAAc,SAAsB9O,GACpD,IAAIqP,EAAOp9F,KAAK+oC,QAChB/oC,KAAK+oC,QAAUglD,EACf/tF,KAAKk/D,IAAMl/D,KAAKk/D,GAAG6uB,GACnB/tF,KAAK8vF,OAAOuN,WAAWz+D,SAAQ,SAAUn0B,GACvCA,GAAQA,EAAKsjF,EAAOqP,OA4IxB,IAAIE,GAAgB,SAAUC,GAC5B,SAASD,EAAcxN,EAAQvkB,GAC7B,IAAI5E,EAAS3mE,KAEbu9F,EAAWr+F,KAAKc,KAAM8vF,EAAQvkB,GAE9B,IAAIiyB,EAAe1N,EAAOtsF,QAAQw1F,eAC9ByE,EAAiB1D,IAAqByD,EAEtCC,GACFnF,KAGF,IAAIoF,EAAeC,GAAY39F,KAAKurE,MACpCtoE,OAAOsb,iBAAiB,YAAY,SAAUvb,GAC5C,IAAI+lC,EAAU49B,EAAO59B,QAIjB4gB,EAAWg0C,GAAYh3B,EAAO4E,MAC9B5E,EAAO59B,UAAYqnD,GAASzmC,IAAa+zC,GAI7C/2B,EAAO81B,aAAa9yC,GAAU,SAAUokC,GAClC0P,GACF7E,GAAa9I,EAAQ/B,EAAOhlD,GAAS,SAiD7C,OA3CKw0D,IAAaD,EAAat0F,UAAYu0F,GAC3CD,EAAar/F,UAAYyB,OAAOgG,OAAQ63F,GAAcA,EAAWt/F,WACjEq/F,EAAar/F,UAAUoW,YAAcipF,EAErCA,EAAar/F,UAAU2/F,GAAK,SAAavvF,GACvCpL,OAAO6vF,QAAQ8K,GAAGvvF,IAGpBivF,EAAar/F,UAAUmW,KAAO,SAAeu1C,EAAU+yC,EAAYC,GACjE,IAAIh2B,EAAS3mE,KAETorE,EAAMprE,KACN69F,EAAYzyB,EAAIriC,QACpB/oC,KAAKy8F,aAAa9yC,GAAU,SAAUokC,GACpCqM,GAAU3G,EAAU9sB,EAAO4E,KAAOwiB,EAAMkC,WACxC2I,GAAajyB,EAAOmpB,OAAQ/B,EAAO8P,GAAW,GAC9CnB,GAAcA,EAAW3O,KACxB4O,IAGLW,EAAar/F,UAAUwiC,QAAU,SAAkBkpB,EAAU+yC,EAAYC,GACvE,IAAIh2B,EAAS3mE,KAETorE,EAAMprE,KACN69F,EAAYzyB,EAAIriC,QACpB/oC,KAAKy8F,aAAa9yC,GAAU,SAAUokC,GACpCwK,GAAa9E,EAAU9sB,EAAO4E,KAAOwiB,EAAMkC,WAC3C2I,GAAajyB,EAAOmpB,OAAQ/B,EAAO8P,GAAW,GAC9CnB,GAAcA,EAAW3O,KACxB4O,IAGLW,EAAar/F,UAAU6+F,UAAY,SAAoB1oF,GACrD,GAAIupF,GAAY39F,KAAKurE,QAAUvrE,KAAK+oC,QAAQknD,SAAU,CACpD,IAAIlnD,EAAU0qD,EAAUzzF,KAAKurE,KAAOvrE,KAAK+oC,QAAQknD,UACjD77E,EAAOgmF,GAAUrxD,GAAWwvD,GAAaxvD,KAI7Cu0D,EAAar/F,UAAU6/F,mBAAqB,WAC1C,OAAOH,GAAY39F,KAAKurE,OAGnB+xB,EA3EU,CA4EjBxC,IAEF,SAAS6C,GAAapyB,GACpB,IAAI15D,EAAOksF,UAAU96F,OAAO0mD,SAASq0C,UAIrC,OAHIzyB,GAA+B,IAAvB15D,EAAKmC,QAAQu3D,KACvB15D,EAAOA,EAAK1D,MAAMo9D,EAAKjpE,UAEjBuP,GAAQ,KAAO5O,OAAO0mD,SAASs0C,OAASh7F,OAAO0mD,SAASoX,KAKlE,IAAIm9B,GAAe,SAAUX,GAC3B,SAASW,EAAapO,EAAQvkB,EAAMrI,GAClCq6B,EAAWr+F,KAAKc,KAAM8vF,EAAQvkB,GAE1BrI,GAAYi7B,GAAcn+F,KAAKurE,OAGnC6yB,KA2EF,OAxEKb,IAAaW,EAAYl1F,UAAYu0F,GAC1CW,EAAYjgG,UAAYyB,OAAOgG,OAAQ63F,GAAcA,EAAWt/F,WAChEigG,EAAYjgG,UAAUoW,YAAc6pF,EAIpCA,EAAYjgG,UAAUogG,eAAiB,WACrC,IAAI13B,EAAS3mE,KAET8vF,EAAS9vF,KAAK8vF,OACd0N,EAAe1N,EAAOtsF,QAAQw1F,eAC9ByE,EAAiB1D,IAAqByD,EAEtCC,GACFnF,KAGFr1F,OAAOsb,iBAAiBw7E,GAAoB,WAAa,cAAc,WACrE,IAAIhxD,EAAU49B,EAAO59B,QAChBq1D,MAGLz3B,EAAO81B,aAAa6B,MAAW,SAAUvQ,GACnC0P,GACF7E,GAAajyB,EAAOmpB,OAAQ/B,EAAOhlD,GAAS,GAEzCgxD,IACHwE,GAAYxQ,EAAMkC,iBAM1BiO,EAAYjgG,UAAUmW,KAAO,SAAeu1C,EAAU+yC,EAAYC,GAChE,IAAIh2B,EAAS3mE,KAETorE,EAAMprE,KACN69F,EAAYzyB,EAAIriC,QACpB/oC,KAAKy8F,aAAa9yC,GAAU,SAAUokC,GACpCyQ,GAASzQ,EAAMkC,UACf2I,GAAajyB,EAAOmpB,OAAQ/B,EAAO8P,GAAW,GAC9CnB,GAAcA,EAAW3O,KACxB4O,IAGLuB,EAAYjgG,UAAUwiC,QAAU,SAAkBkpB,EAAU+yC,EAAYC,GACtE,IAAIh2B,EAAS3mE,KAETorE,EAAMprE,KACN69F,EAAYzyB,EAAIriC,QACpB/oC,KAAKy8F,aAAa9yC,GAAU,SAAUokC,GACpCwQ,GAAYxQ,EAAMkC,UAClB2I,GAAajyB,EAAOmpB,OAAQ/B,EAAO8P,GAAW,GAC9CnB,GAAcA,EAAW3O,KACxB4O,IAGLuB,EAAYjgG,UAAU2/F,GAAK,SAAavvF,GACtCpL,OAAO6vF,QAAQ8K,GAAGvvF,IAGpB6vF,EAAYjgG,UAAU6+F,UAAY,SAAoB1oF,GACpD,IAAI20B,EAAU/oC,KAAK+oC,QAAQknD,SACvBqO,OAAcv1D,IAChB30B,EAAOoqF,GAASz1D,GAAWw1D,GAAYx1D,KAI3Cm1D,EAAYjgG,UAAU6/F,mBAAqB,WACzC,OAAOQ,MAGFJ,EAlFS,CAmFhBpD,IAEF,SAASqD,GAAe5yB,GACtB,IAAI5hB,EAAWg0C,GAAYpyB,GAC3B,IAAK,OAAOrrE,KAAKypD,GAIf,OAHA1mD,OAAO0mD,SAASlpB,QACdgzD,EAAUloB,EAAO,KAAO5hB,KAEnB,EAIX,SAASy0C,KACP,IAAIvsF,EAAOysF,KACX,MAAuB,MAAnBzsF,EAAK3O,OAAO,KAGhBq7F,GAAY,IAAM1sF,IACX,GAGT,SAASysF,KAGP,IAAIhN,EAAOruF,OAAO0mD,SAAS2nC,KACvBzuF,EAAQyuF,EAAKt9E,QAAQ,KACzB,OAAkB,IAAXnR,EAAe,GAAKk7F,UAAUzM,EAAKnjF,MAAMtL,EAAQ,IAG1D,SAAS47F,GAAQ5sF,GACf,IAAIy/E,EAAOruF,OAAO0mD,SAAS2nC,KACvBhjF,EAAIgjF,EAAKt9E,QAAQ,KACjBu3D,EAAOj9D,GAAK,EAAIgjF,EAAKnjF,MAAM,EAAGG,GAAKgjF,EACvC,OAAQ/lB,EAAO,IAAM15D,EAGvB,SAAS2sF,GAAU3sF,GACbkoF,GACFK,GAAUqE,GAAO5sF,IAEjB5O,OAAO0mD,SAASoX,KAAOlvD,EAI3B,SAAS0sF,GAAa1sF,GAChBkoF,GACFxB,GAAakG,GAAO5sF,IAEpB5O,OAAO0mD,SAASlpB,QAAQg+D,GAAO5sF,IAMnC,IAAI6sF,GAAmB,SAAUnB,GAC/B,SAASmB,EAAiB5O,EAAQvkB,GAChCgyB,EAAWr+F,KAAKc,KAAM8vF,EAAQvkB,GAC9BvrE,KAAKszF,MAAQ,GACbtzF,KAAK6C,OAAS,EAiDhB,OA9CK06F,IAAamB,EAAgB11F,UAAYu0F,GAC9CmB,EAAgBzgG,UAAYyB,OAAOgG,OAAQ63F,GAAcA,EAAWt/F,WACpEygG,EAAgBzgG,UAAUoW,YAAcqqF,EAExCA,EAAgBzgG,UAAUmW,KAAO,SAAeu1C,EAAU+yC,EAAYC,GACpE,IAAIh2B,EAAS3mE,KAEbA,KAAKy8F,aAAa9yC,GAAU,SAAUokC,GACpCpnB,EAAO2sB,MAAQ3sB,EAAO2sB,MAAMnlF,MAAM,EAAGw4D,EAAO9jE,MAAQ,GAAGnF,OAAOqwF,GAC9DpnB,EAAO9jE,QACP65F,GAAcA,EAAW3O,KACxB4O,IAGL+B,EAAgBzgG,UAAUwiC,QAAU,SAAkBkpB,EAAU+yC,EAAYC,GAC1E,IAAIh2B,EAAS3mE,KAEbA,KAAKy8F,aAAa9yC,GAAU,SAAUokC,GACpCpnB,EAAO2sB,MAAQ3sB,EAAO2sB,MAAMnlF,MAAM,EAAGw4D,EAAO9jE,OAAOnF,OAAOqwF,GAC1D2O,GAAcA,EAAW3O,KACxB4O,IAGL+B,EAAgBzgG,UAAU2/F,GAAK,SAAavvF,GAC1C,IAAIs4D,EAAS3mE,KAET2+F,EAAc3+F,KAAK6C,MAAQwL,EAC/B,KAAIswF,EAAc,GAAKA,GAAe3+F,KAAKszF,MAAMhxF,QAAjD,CAGA,IAAIyrF,EAAQ/tF,KAAKszF,MAAMqL,GACvB3+F,KAAK48F,kBAAkB7O,GAAO,WAC5BpnB,EAAO9jE,MAAQ87F,EACfh4B,EAAOk2B,YAAY9O,QAIvB2Q,EAAgBzgG,UAAU6/F,mBAAqB,WAC7C,IAAI/0D,EAAU/oC,KAAKszF,MAAMtzF,KAAKszF,MAAMhxF,OAAS,GAC7C,OAAOymC,EAAUA,EAAQknD,SAAW,KAGtCyO,EAAgBzgG,UAAU6+F,UAAY,aAI/B4B,EArDa,CAsDpB5D,IAME8D,GAAY,SAAoBp7F,QACjB,IAAZA,IAAqBA,EAAU,IAEpCxD,KAAK84F,IAAM,KACX94F,KAAK6+F,KAAO,GACZ7+F,KAAKwD,QAAUA,EACfxD,KAAKg9F,YAAc,GACnBh9F,KAAKm9F,aAAe,GACpBn9F,KAAKq9F,WAAa,GAClBr9F,KAAK+W,QAAUygF,GAAch0F,EAAQwyF,QAAU,GAAIh2F,MAEnD,IAAI8qF,EAAOtnF,EAAQsnF,MAAQ,OAU3B,OATA9qF,KAAKkjE,SAAoB,YAAT4nB,IAAuBiP,KAA0C,IAArBv2F,EAAQ0/D,SAChEljE,KAAKkjE,WACP4nB,EAAO,QAEJp2B,IACHo2B,EAAO,YAET9qF,KAAK8qF,KAAOA,EAEJA,GACN,IAAK,UACH9qF,KAAK8yF,QAAU,IAAIwK,GAAat9F,KAAMwD,EAAQ+nE,MAC9C,MACF,IAAK,OACHvrE,KAAK8yF,QAAU,IAAIoL,GAAYl+F,KAAMwD,EAAQ+nE,KAAMvrE,KAAKkjE,UACxD,MACF,IAAK,WACHljE,KAAK8yF,QAAU,IAAI4L,GAAgB1+F,KAAMwD,EAAQ+nE,MACjD,MACF,QACM,IAMNtT,GAAqB,CAAEy/B,aAAc,CAAEx5F,cAAc,IAgJzD,SAAS4gG,GAActjF,EAAMhP,GAE3B,OADAgP,EAAKpH,KAAK5H,GACH,WACL,IAAI8B,EAAIkN,EAAKxH,QAAQxH,GACjB8B,GAAK,GAAKkN,EAAKK,OAAOvN,EAAG,IAIjC,SAASywF,GAAYxzB,EAAM0kB,EAAUnF,GACnC,IAAIj5E,EAAgB,SAATi5E,EAAkB,IAAMmF,EAAWA,EAC9C,OAAO1kB,EAAOkoB,EAAUloB,EAAO,IAAM15D,GAAQA,EAxJ/C+sF,GAAU3gG,UAAU6Y,MAAQ,SAC1B2gD,EACA1uB,EACA8mD,GAEA,OAAO7vF,KAAK+W,QAAQD,MAAM2gD,EAAK1uB,EAAS8mD,IAG1C53B,GAAmBy/B,aAAa92F,IAAM,WACpC,OAAOZ,KAAK8yF,SAAW9yF,KAAK8yF,QAAQ/pD,SAGtC61D,GAAU3gG,UAAU0jC,KAAO,SAAem3D,GACtC,IAAInyB,EAAS3mE,KAWf,GAHAA,KAAK6+F,KAAKzqF,KAAK0kF,IAGX94F,KAAK84F,IAAT,CAIA94F,KAAK84F,IAAMA,EAEX,IAAIhG,EAAU9yF,KAAK8yF,QAEnB,GAAIA,aAAmBwK,GACrBxK,EAAQ2J,aAAa3J,EAAQgL,2BACxB,GAAIhL,aAAmBoL,GAAa,CACzC,IAAIc,EAAoB,WACtBlM,EAAQuL,kBAEVvL,EAAQ2J,aACN3J,EAAQgL,qBACRkB,EACAA,GAIJlM,EAAQuJ,QAAO,SAAUtO,GACvBpnB,EAAOk4B,KAAKjgE,SAAQ,SAAUk6D,GAC5BA,EAAI/F,OAAShF,UAKnB6Q,GAAU3gG,UAAUghG,WAAa,SAAqBzyF,GACpD,OAAOsyF,GAAa9+F,KAAKg9F,YAAaxwF,IAGxCoyF,GAAU3gG,UAAUihG,cAAgB,SAAwB1yF,GAC1D,OAAOsyF,GAAa9+F,KAAKm9F,aAAc3wF,IAGzCoyF,GAAU3gG,UAAUkhG,UAAY,SAAoB3yF,GAClD,OAAOsyF,GAAa9+F,KAAKq9F,WAAY7wF,IAGvCoyF,GAAU3gG,UAAUq+F,QAAU,SAAkBp9B,EAAIq9B,GAClDv8F,KAAK8yF,QAAQwJ,QAAQp9B,EAAIq9B,IAG3BqC,GAAU3gG,UAAUu+F,QAAU,SAAkBD,GAC9Cv8F,KAAK8yF,QAAQ0J,QAAQD,IAGvBqC,GAAU3gG,UAAUmW,KAAO,SAAeu1C,EAAU+yC,EAAYC,GAC9D38F,KAAK8yF,QAAQ1+E,KAAKu1C,EAAU+yC,EAAYC,IAG1CiC,GAAU3gG,UAAUwiC,QAAU,SAAkBkpB,EAAU+yC,EAAYC,GACpE38F,KAAK8yF,QAAQryD,QAAQkpB,EAAU+yC,EAAYC,IAG7CiC,GAAU3gG,UAAU2/F,GAAK,SAAavvF,GACpCrO,KAAK8yF,QAAQ8K,GAAGvvF,IAGlBuwF,GAAU3gG,UAAUmhG,KAAO,WACzBp/F,KAAK49F,IAAI,IAGXgB,GAAU3gG,UAAUohG,QAAU,WAC5Br/F,KAAK49F,GAAG,IAGVgB,GAAU3gG,UAAUqhG,qBAAuB,SAA+BxzD,GACxE,IAAIiiD,EAAQjiD,EACRA,EAAGuiD,QACDviD,EACA9rC,KAAKw4B,QAAQsT,GAAIiiD,MACnB/tF,KAAK03F,aACT,OAAK3J,EAGE,GAAGrwF,OAAO2T,MAAM,GAAI08E,EAAMM,QAAQtsF,KAAI,SAAU6N,GACrD,OAAOlQ,OAAOnC,KAAKqS,EAAEykE,YAAYtyE,KAAI,SAAUrB,GAC7C,OAAOkP,EAAEykE,WAAW3zE,UAJf,IASXk+F,GAAU3gG,UAAUu6B,QAAU,SAC5BsT,EACA/C,EACAz2B,GAEA,IAAIq3C,EAAWytC,GACbtrD,EACA/C,GAAW/oC,KAAK8yF,QAAQ/pD,QACxBz2B,EACAtS,MAEE+tF,EAAQ/tF,KAAK8W,MAAM6yC,EAAU5gB,GAC7BknD,EAAWlC,EAAM8B,gBAAkB9B,EAAMkC,SACzC1kB,EAAOvrE,KAAK8yF,QAAQvnB,KACpB+lB,EAAOyN,GAAWxzB,EAAM0kB,EAAUjwF,KAAK8qF,MAC3C,MAAO,CACLnhC,SAAUA,EACVokC,MAAOA,EACPuD,KAAMA,EAENiO,aAAc51C,EACdgiB,SAAUoiB,IAId6Q,GAAU3gG,UAAUw5F,UAAY,SAAoBzB,GAClDh2F,KAAK+W,QAAQ0gF,UAAUzB,GACnBh2F,KAAK8yF,QAAQ/pD,UAAYqnD,GAC3BpwF,KAAK8yF,QAAQ2J,aAAaz8F,KAAK8yF,QAAQgL,uBAI3Cp+F,OAAOgD,iBAAkBk8F,GAAU3gG,UAAWg6D,IAe9C2mC,GAAU7pB,QAAUA,EACpB6pB,GAAUl0C,QAAU,QAEhBgK,GAAazxD,OAAOgoE,KACtBhoE,OAAOgoE,IAAI0J,IAAIiqB,IAGF,W,oCCxjFf,IAAIY,EAAgC,EAAQ,QACxCniG,EAAW,EAAQ,QACnB6I,EAAW,EAAQ,QACnB8F,EAAW,EAAQ,QACnBvP,EAAY,EAAQ,QACpB0tD,EAAyB,EAAQ,QACjCs1C,EAAqB,EAAQ,QAC7BC,EAAa,EAAQ,QAErBnxF,EAAM5R,KAAK4R,IACX7R,EAAMC,KAAKD,IACXkC,EAAQjC,KAAKiC,MACb+gG,EAAuB,4BACvBC,EAAgC,oBAEhCC,EAAgB,SAAUviG,GAC5B,YAAckB,IAAPlB,EAAmBA,EAAKoB,OAAOpB,IAIxCkiG,EAA8B,UAAW,GAAG,SAAUx0C,EAAS4D,EAAekxC,EAAiBvzB,GAC7F,IAAIthB,EAA+CshB,EAAOthB,6CACtDF,EAAmBwhB,EAAOxhB,iBAC1Bg1C,EAAoB90C,EAA+C,IAAM,KAE7E,MAAO,CAGL,SAAiB+0C,EAAaC,GAC5B,IAAIt9F,EAAIwnD,EAAuBnqD,MAC3BkgG,OAA0B1hG,GAAfwhG,OAA2BxhG,EAAYwhG,EAAYh1C,GAClE,YAAoBxsD,IAAb0hG,EACHA,EAAShhG,KAAK8gG,EAAar9F,EAAGs9F,GAC9BrxC,EAAc1vD,KAAKR,OAAOiE,GAAIq9F,EAAaC,IAIjD,SAAUp0C,EAAQo0C,GAChB,IACIh1C,GAAgDF,GACzB,kBAAjBk1C,IAA0E,IAA7CA,EAAajsF,QAAQ+rF,GAC1D,CACA,IAAI7tC,EAAM4tC,EAAgBlxC,EAAe/C,EAAQ7rD,KAAMigG,GACvD,GAAI/tC,EAAIllD,KAAM,OAAOklD,EAAI/zD,MAG3B,IAAIumD,EAAKrnD,EAASwuD,GACd7sD,EAAIN,OAAOsB,MAEXmgG,EAA4C,oBAAjBF,EAC1BE,IAAmBF,EAAevhG,OAAOuhG,IAE9C,IAAIljG,EAAS2nD,EAAG3nD,OAChB,GAAIA,EAAQ,CACV,IAAIqjG,EAAc17C,EAAGvhD,QACrBuhD,EAAG/zB,UAAY,EAEjB,IAAI0vE,EAAU,GACd,MAAO,EAAM,CACX,IAAIphG,EAASygG,EAAWh7C,EAAI1lD,GAC5B,GAAe,OAAXC,EAAiB,MAGrB,GADAohG,EAAQjsF,KAAKnV,IACRlC,EAAQ,MAEb,IAAIujG,EAAW5hG,OAAOO,EAAO,IACZ,KAAbqhG,IAAiB57C,EAAG/zB,UAAY8uE,EAAmBzgG,EAAGgN,EAAS04C,EAAG/zB,WAAYyvE,IAKpF,IAFA,IAAIG,EAAoB,GACpBC,EAAqB,EAChBlyF,EAAI,EAAGA,EAAI+xF,EAAQ/9F,OAAQgM,IAAK,CACvCrP,EAASohG,EAAQ/xF,GAUjB,IARA,IAAI+/E,EAAU3vF,OAAOO,EAAO,IACxByS,EAAWnD,EAAI7R,EAAID,EAAUwC,EAAO4D,OAAQ7D,EAAEsD,QAAS,GACvDm+F,EAAW,GAMNzwF,EAAI,EAAGA,EAAI/Q,EAAOqD,OAAQ0N,IAAKywF,EAASrsF,KAAKyrF,EAAc5gG,EAAO+Q,KAC3E,IAAI0wF,EAAgBzhG,EAAO+W,OAC3B,GAAImqF,EAAmB,CACrB,IAAIQ,EAAe,CAACtS,GAAS3wF,OAAO+iG,EAAU/uF,EAAU1S,QAClCR,IAAlBkiG,GAA6BC,EAAavsF,KAAKssF,GACnD,IAAIE,EAAcliG,OAAOuhG,EAAa5uF,WAAM7S,EAAWmiG,SAEvDC,EAAcC,EAAgBxS,EAASrvF,EAAG0S,EAAU+uF,EAAUC,EAAeT,GAE3EvuF,GAAY8uF,IACdD,GAAqBvhG,EAAEmP,MAAMqyF,EAAoB9uF,GAAYkvF,EAC7DJ,EAAqB9uF,EAAW28E,EAAQ/rF,QAG5C,OAAOi+F,EAAoBvhG,EAAEmP,MAAMqyF,KAKvC,SAASK,EAAgBxS,EAASviC,EAAKp6C,EAAU+uF,EAAUC,EAAeE,GACxE,IAAIE,EAAUpvF,EAAW28E,EAAQ/rF,OAC7BsN,EAAI6wF,EAASn+F,OACby+F,EAAUnB,EAKd,YAJsBphG,IAAlBkiG,IACFA,EAAgBx6F,EAASw6F,GACzBK,EAAUpB,GAEL/wC,EAAc1vD,KAAK0hG,EAAaG,GAAS,SAAUjqF,EAAOmlE,GAC/D,IAAI79D,EACJ,OAAQ69D,EAAG/4E,OAAO,IAChB,IAAK,IAAK,MAAO,IACjB,IAAK,IAAK,OAAOmrF,EACjB,IAAK,IAAK,OAAOviC,EAAI39C,MAAM,EAAGuD,GAC9B,IAAK,IAAK,OAAOo6C,EAAI39C,MAAM2yF,GAC3B,IAAK,IACH1iF,EAAUsiF,EAAczkB,EAAG9tE,MAAM,GAAI,IACrC,MACF,QACE,IAAIE,GAAK4tE,EACT,GAAU,IAAN5tE,EAAS,OAAOyI,EACpB,GAAIzI,EAAIuB,EAAG,CACT,IAAIpS,EAAIoB,EAAMyP,EAAI,IAClB,OAAU,IAAN7Q,EAAgBsZ,EAChBtZ,GAAKoS,OAA8BpR,IAApBiiG,EAASjjG,EAAI,GAAmBy+E,EAAG/4E,OAAO,GAAKu9F,EAASjjG,EAAI,GAAKy+E,EAAG/4E,OAAO,GACvF4T,EAETsH,EAAUqiF,EAASpyF,EAAI,GAE3B,YAAmB7P,IAAZ4f,EAAwB,GAAKA,U,uBCnI1C,IAAIrhB,EAAS,EAAQ,QAErBH,EAAOC,QAAUE,EAAOw7B,S,oCCDxB,IAAIh2B,EAAc,EAAQ,QACtBa,EAAQ,EAAQ,QAChBX,EAAa,EAAQ,QACrBrF,EAA8B,EAAQ,QACtC4jG,EAA6B,EAAQ,QACrC96F,EAAW,EAAQ,QACnB9G,EAAgB,EAAQ,QAExB6hG,EAAevhG,OAAO6E,OACtB5G,EAAiB+B,OAAO/B,eAI5Bf,EAAOC,SAAWokG,GAAgB79F,GAAM,WAEtC,GAAIb,GAQiB,IARF0+F,EAAa,CAAEv8F,EAAG,GAAKu8F,EAAatjG,EAAe,GAAI,IAAK,CAC7EkG,YAAY,EACZjD,IAAK,WACHjD,EAAeqC,KAAM,IAAK,CACxB7B,MAAO,EACP0F,YAAY,OAGd,CAAEa,EAAG,KAAMA,EAAS,OAAO,EAE/B,IAAIorC,EAAI,GACJoxD,EAAI,GAEJp8D,EAASv7B,SACT43F,EAAW,uBAGf,OAFArxD,EAAEhL,GAAU,EACZq8D,EAASj0F,MAAM,IAAI0xB,SAAQ,SAAUwiE,GAAOF,EAAEE,GAAOA,KACf,GAA/BH,EAAa,GAAInxD,GAAGhL,IAAgBriC,EAAWw+F,EAAa,GAAIC,IAAI1hG,KAAK,KAAO2hG,KACpF,SAAgBvhG,EAAQqwB,GAC3B,IAAIzb,EAAItO,EAAStG,GACbyhG,EAAkBh/F,UAAUC,OAC5BO,EAAQ,EACRpF,EAAwBL,EAA4BI,EACpD2P,EAAuB6zF,EAA2BxjG,EACtD,MAAO6jG,EAAkBx+F,EAAO,CAC9B,IAIInC,EAJA1B,EAAII,EAAciD,UAAUQ,MAC5BtF,EAAOE,EAAwBgF,EAAWzD,GAAGtB,OAAOD,EAAsBuB,IAAMyD,EAAWzD,GAC3FsD,EAAS/E,EAAK+E,OACd0N,EAAI,EAER,MAAO1N,EAAS0N,EACdtP,EAAMnD,EAAKyS,KACNzN,IAAe4K,EAAqBjO,KAAKF,EAAG0B,KAAM8T,EAAE9T,GAAO1B,EAAE0B,IAEpE,OAAO8T,GACPysF,G,kCClDJ,IAAI9hG,EAAI,EAAQ,QACZmiG,EAA4B,EAAQ,QACpCh3C,EAAiB,EAAQ,QACzB3hD,EAAiB,EAAQ,QACzB/C,EAAiB,EAAQ,QACzB9E,EAA8B,EAAQ,QACtCV,EAAW,EAAQ,QACnBvC,EAAkB,EAAQ,QAC1BiH,EAAU,EAAQ,QAClBF,EAAY,EAAQ,QACpB28F,EAAgB,EAAQ,QAExB97F,EAAoB87F,EAAc97F,kBAClC+7F,EAAyBD,EAAcC,uBACvC38F,EAAWhH,EAAgB,YAC3B4jG,EAAO,OACPC,EAAS,SACTC,EAAU,UAEV97F,EAAa,WAAc,OAAO7F,MAEtCpD,EAAOC,QAAU,SAAU+kG,EAAU77F,EAAMD,EAAqBE,EAAM67F,EAASC,EAAQ39F,GACrFm9F,EAA0Bx7F,EAAqBC,EAAMC,GAErD,IAkBI+7F,EAA0Br1D,EAAS0e,EAlBnC42C,EAAqB,SAAUC,GACjC,GAAIA,IAASJ,GAAWK,EAAiB,OAAOA,EAChD,IAAKV,GAA0BS,KAAQE,EAAmB,OAAOA,EAAkBF,GACnF,OAAQA,GACN,KAAKR,EAAM,OAAO,WAAkB,OAAO,IAAI37F,EAAoB9F,KAAMiiG,IACzE,KAAKP,EAAQ,OAAO,WAAoB,OAAO,IAAI57F,EAAoB9F,KAAMiiG,IAC7E,KAAKN,EAAS,OAAO,WAAqB,OAAO,IAAI77F,EAAoB9F,KAAMiiG,IAC/E,OAAO,WAAc,OAAO,IAAIn8F,EAAoB9F,QAGpDlC,EAAgBiI,EAAO,YACvBq8F,GAAwB,EACxBD,EAAoBP,EAAS3jG,UAC7BokG,EAAiBF,EAAkBt9F,IAClCs9F,EAAkB,eAClBN,GAAWM,EAAkBN,GAC9BK,GAAmBV,GAA0Ba,GAAkBL,EAAmBH,GAClFS,EAA4B,SAARv8F,GAAkBo8F,EAAkBvkE,SAA4BykE,EAiCxF,GA7BIC,IACFP,EAA2Bz3C,EAAeg4C,EAAkBpjG,KAAK,IAAI0iG,IACjEn8F,IAAsB/F,OAAOzB,WAAa8jG,EAAyB/7F,OAChElB,GAAWwlD,EAAey3C,KAA8Bt8F,IACvDkD,EACFA,EAAeo5F,EAA0Bt8F,GACa,mBAAtCs8F,EAAyBl9F,IACzC/D,EAA4BihG,EAA0Bl9F,EAAUgB,IAIpED,EAAem8F,EAA0BjkG,GAAe,GAAM,GAC1DgH,IAASF,EAAU9G,GAAiB+H,KAKxCg8F,GAAWH,GAAUW,GAAkBA,EAAe34F,OAASg4F,IACjEU,GAAwB,EACxBF,EAAkB,WAAoB,OAAOG,EAAenjG,KAAKc,QAI7D8E,IAAWX,GAAWg+F,EAAkBt9F,KAAcq9F,GAC1DphG,EAA4BqhG,EAAmBt9F,EAAUq9F,GAE3Dt9F,EAAUmB,GAAQm8F,EAGdL,EAMF,GALAn1D,EAAU,CACRh9B,OAAQsyF,EAAmBN,GAC3BnkG,KAAMukG,EAASI,EAAkBF,EAAmBP,GACpD7jE,QAASokE,EAAmBL,IAE1Bx9F,EAAQ,IAAKinD,KAAO1e,GAClB80D,GAA0BY,KAA2Bh3C,KAAO+2C,KAC9D/hG,EAAS+hG,EAAmB/2C,EAAK1e,EAAQ0e,SAEtCjsD,EAAE,CAAES,OAAQmG,EAAMlG,OAAO,EAAMC,OAAQ0hG,GAA0BY,GAAyB11D,GAGnG,OAAOA,I,qBCxFT,IAAI3vC,EAAS,EAAQ,QACjB+D,EAA8B,EAAQ,QAE1ClE,EAAOC,QAAU,SAAU6D,EAAKvC,GAC9B,IACE2C,EAA4B/D,EAAQ2D,EAAKvC,GACzC,MAAOlB,GACPF,EAAO2D,GAAOvC,EACd,OAAOA,I,uBCRX,IAAI1B,EAAY,EAAQ,QACpB0tD,EAAyB,EAAQ,QAGjC+C,EAAe,SAAUq1C,GAC3B,OAAO,SAAUp1C,EAAOk/B,GACtB,IAGImW,EAAOC,EAHPzjG,EAAIN,OAAOyrD,EAAuBgD,IAClCz7C,EAAWjV,EAAU4vF,GACrBp0E,EAAOjZ,EAAEsD,OAEb,OAAIoP,EAAW,GAAKA,GAAYuG,EAAasqF,EAAoB,QAAK/jG,GACtEgkG,EAAQxjG,EAAEihC,WAAWvuB,GACd8wF,EAAQ,OAAUA,EAAQ,OAAU9wF,EAAW,IAAMuG,IACtDwqF,EAASzjG,EAAEihC,WAAWvuB,EAAW,IAAM,OAAU+wF,EAAS,MAC1DF,EAAoBvjG,EAAEkE,OAAOwO,GAAY8wF,EACzCD,EAAoBvjG,EAAEmP,MAAMuD,EAAUA,EAAW,GAA+B+wF,EAAS,OAAlCD,EAAQ,OAAU,IAA0B,SAI7G5lG,EAAOC,QAAU,CAGf6lG,OAAQx1C,GAAa,GAGrBhqD,OAAQgqD,GAAa,K,uBCzBvB,IAAItvD,EAAM,EAAQ,QACdu4D,EAAU,EAAQ,QAClBwsC,EAAiC,EAAQ,QACzCngG,EAAuB,EAAQ,QAEnC5F,EAAOC,QAAU,SAAU+C,EAAQqwB,GAIjC,IAHA,IAAI1yB,EAAO44D,EAAQlmC,GACftyB,EAAiB6E,EAAqBhF,EACtCsL,EAA2B65F,EAA+BnlG,EACrD8Q,EAAI,EAAGA,EAAI/Q,EAAK+E,OAAQgM,IAAK,CACpC,IAAI5N,EAAMnD,EAAK+Q,GACV1Q,EAAIgC,EAAQc,IAAM/C,EAAeiC,EAAQc,EAAKoI,EAAyBmnB,EAAQvvB,O,uBCXxF,IAAI0C,EAAQ,EAAQ,QAEpBxG,EAAOC,SAAWuG,GAAM,WACtB,SAASkF,KAET,OADAA,EAAErK,UAAUoW,YAAc,KACnB3U,OAAO4qD,eAAe,IAAIhiD,KAASA,EAAErK,c,oCCJ9C,IAAIoB,EAAkB,EAAQ,QAC1BujG,EAAmB,EAAQ,QAC3Bh+F,EAAY,EAAQ,QACpB6nD,EAAsB,EAAQ,QAC9Bo2C,EAAiB,EAAQ,QAEzBC,EAAiB,iBACjBC,EAAmBt2C,EAAoB9rD,IACvC+rD,EAAmBD,EAAoBrrD,UAAU0hG,GAYrDlmG,EAAOC,QAAUgmG,EAAe95F,MAAO,SAAS,SAAUi6F,EAAUC,GAClEF,EAAiB/iG,KAAM,CACrBuB,KAAMuhG,EACNljG,OAAQP,EAAgB2jG,GACxBngG,MAAO,EACPogG,KAAMA,OAIP,WACD,IAAI3hG,EAAQorD,EAAiB1sD,MACzBJ,EAAS0B,EAAM1B,OACfqjG,EAAO3hG,EAAM2hG,KACbpgG,EAAQvB,EAAMuB,QAClB,OAAKjD,GAAUiD,GAASjD,EAAO0C,QAC7BhB,EAAM1B,YAASpB,EACR,CAAEL,WAAOK,EAAWwO,MAAM,IAEvB,QAARi2F,EAAuB,CAAE9kG,MAAO0E,EAAOmK,MAAM,GACrC,UAARi2F,EAAyB,CAAE9kG,MAAOyB,EAAOiD,GAAQmK,MAAM,GACpD,CAAE7O,MAAO,CAAC0E,EAAOjD,EAAOiD,IAASmK,MAAM,KAC7C,UAKHpI,EAAUs+F,UAAYt+F,EAAUmE,MAGhC65F,EAAiB,QACjBA,EAAiB,UACjBA,EAAiB,Y,oCClDjB,IAAIx/F,EAAQ,EAAQ,QAIpB,SAAS+/F,EAAGl3E,EAAGzuB,GACb,OAAOmkB,OAAOsK,EAAGzuB,GAGnBX,EAAQoyD,cAAgB7rD,GAAM,WAE5B,IAAImhC,EAAK4+D,EAAG,IAAK,KAEjB,OADA5+D,EAAG5T,UAAY,EACW,MAAnB4T,EAAGvnC,KAAK,WAGjBH,EAAQqyD,aAAe9rD,GAAM,WAE3B,IAAImhC,EAAK4+D,EAAG,KAAM,MAElB,OADA5+D,EAAG5T,UAAY,EACU,MAAlB4T,EAAGvnC,KAAK,W,qBCrBjB,IAAIK,EAAW,EAAQ,QACnB4I,EAAY,EAAQ,QACpBpI,EAAkB,EAAQ,QAE1B2I,EAAU3I,EAAgB,WAI9BjB,EAAOC,QAAU,SAAU8F,EAAGygG,GAC5B,IACIpkG,EADAsG,EAAIjI,EAASsF,GAAG0R,YAEpB,YAAa7V,IAAN8G,QAAiD9G,IAA7BQ,EAAI3B,EAASiI,GAAGkB,IAAyB48F,EAAqBn9F,EAAUjH,K,qBCXrG,IAAIwC,EAAQ,EAAQ,QAEhB6hG,EAAmBtgG,SAAS1C,SAGE,mBAAvBmB,EAAMgrD,gBACfhrD,EAAMgrD,cAAgB,SAAUlvD,GAC9B,OAAO+lG,EAAiBnkG,KAAK5B,KAIjCV,EAAOC,QAAU2E,EAAMgrD,e,qBCXvB,IAAIzvD,EAAS,EAAQ,QACjBqB,EAAW,EAAQ,QAEnBgK,EAAWrL,EAAOqL,SAElBk7F,EAASllG,EAASgK,IAAahK,EAASgK,EAASoN,eAErD5Y,EAAOC,QAAU,SAAUS,GACzB,OAAOgmG,EAASl7F,EAASoN,cAAclY,GAAM,K,qBCR/C,IAAI8L,EAAgB,EAAQ,QAE5BxM,EAAOC,QAAUuM,IAEXG,OAAO8hD,MAEkB,iBAAnB9hD,OAAOqD,U,qBCNnB,IAAI7P,EAAS,EAAQ,QACjB+L,EAA2B,EAAQ,QAAmDtL,EACtFsD,EAA8B,EAAQ,QACtCV,EAAW,EAAQ,QACnBmsD,EAAY,EAAQ,QACpBg3C,EAA4B,EAAQ,QACpCC,EAAW,EAAQ,QAgBvB5mG,EAAOC,QAAU,SAAU2G,EAASysB,GAClC,IAGI9rB,EAAQvE,EAAQc,EAAK+iG,EAAgBC,EAAgBC,EAHrDC,EAASpgG,EAAQ5D,OACjBikG,EAASrgG,EAAQzG,OACjBiB,EAASwF,EAAQgB,KASrB,GANE5E,EADEikG,EACO9mG,EACAiB,EACAjB,EAAO6mG,IAAWr3C,EAAUq3C,EAAQ,KAEnC7mG,EAAO6mG,IAAW,IAAI3lG,UAE9B2B,EAAQ,IAAKc,KAAOuvB,EAAQ,CAQ9B,GAPAyzE,EAAiBzzE,EAAOvvB,GACpB8C,EAAQspD,aACV62C,EAAa76F,EAAyBlJ,EAAQc,GAC9C+iG,EAAiBE,GAAcA,EAAWxlG,OACrCslG,EAAiB7jG,EAAOc,GAC/ByD,EAASq/F,EAASK,EAASnjG,EAAMkjG,GAAU5lG,EAAS,IAAM,KAAO0C,EAAK8C,EAAQ1D,SAEzEqE,QAA6B3F,IAAnBilG,EAA8B,CAC3C,UAAWC,WAA0BD,EAAgB,SACrDF,EAA0BG,EAAgBD,IAGxCjgG,EAAQ6nD,MAASo4C,GAAkBA,EAAep4C,OACpDvqD,EAA4B4iG,EAAgB,QAAQ,GAGtDtjG,EAASR,EAAQc,EAAKgjG,EAAgBlgG,M,kCClD1C,IAAIsgG,EAA6B,GAAG32F,qBAChCrE,EAA2BpJ,OAAOoJ,yBAGlCi7F,EAAcj7F,IAA6Bg7F,EAA2B5kG,KAAK,CAAE8kG,EAAG,GAAK,GAIzFnnG,EAAQW,EAAIumG,EAAc,SAA8B9lD,GACtD,IAAI0lD,EAAa76F,EAAyB9I,KAAMi+C,GAChD,QAAS0lD,GAAcA,EAAW9/F,YAChCigG,G,qBCZJ,IAAI56F,EAAS,EAAQ,QACjBC,EAAM,EAAQ,QAEd5L,EAAO2L,EAAO,QAElBtM,EAAOC,QAAU,SAAU6D,GACzB,OAAOnD,EAAKmD,KAASnD,EAAKmD,GAAOyI,EAAIzI,M,qBCNvC,IAAIrC,EAAU,EAAQ,QAItBzB,EAAOC,QAAUkM,MAAM8nB,SAAW,SAAiBs7B,GACjD,MAAuB,SAAhB9tD,EAAQ8tD,K,qBCLjB,IAAIpvD,EAAS,EAAQ,QACjByvD,EAAgB,EAAQ,QAExBtrD,EAAUnE,EAAOmE,QAErBtE,EAAOC,QAA6B,oBAAZqE,GAA0B,cAAchB,KAAKssD,EAActrD,K,kCCJnF,IAaIuE,EAAmBw+F,EAAmCC,EAbtD55C,EAAiB,EAAQ,QACzBxpD,EAA8B,EAAQ,QACtClD,EAAM,EAAQ,QACdC,EAAkB,EAAQ,QAC1BiH,EAAU,EAAQ,QAElBD,EAAWhH,EAAgB,YAC3B2jG,GAAyB,EAEzB37F,EAAa,WAAc,OAAO7F,MAMlC,GAAGzC,OACL2mG,EAAgB,GAAG3mG,OAEb,SAAU2mG,GAEdD,EAAoC35C,EAAeA,EAAe45C,IAC9DD,IAAsCvkG,OAAOzB,YAAWwH,EAAoBw+F,IAHlDzC,GAAyB,QAOlChjG,GAArBiH,IAAgCA,EAAoB,IAGnDX,GAAYlH,EAAI6H,EAAmBZ,IACtC/D,EAA4B2E,EAAmBZ,EAAUgB,GAG3DjJ,EAAOC,QAAU,CACf4I,kBAAmBA,EACnB+7F,uBAAwBA,I,kCClC1B,IAiDI2C,EAAUC,EAAsBC,EAAgBC,EAjDhDnlG,EAAI,EAAQ,QACZ2F,EAAU,EAAQ,QAClB/H,EAAS,EAAQ,QACjBG,EAAa,EAAQ,QACrB6H,EAAgB,EAAQ,QACxB3E,EAAW,EAAQ,QACnBmkG,EAAc,EAAQ,QACtB3+F,EAAiB,EAAQ,QACzB4+F,EAAa,EAAQ,QACrBpmG,EAAW,EAAQ,QACnB6H,EAAY,EAAQ,QACpBw+F,EAAa,EAAQ,QACrBpmG,EAAU,EAAQ,QAClBmuD,EAAgB,EAAQ,QACxBlgD,EAAU,EAAQ,QAClBo4F,EAA8B,EAAQ,QACtC1/F,EAAqB,EAAQ,QAC7B2/F,EAAO,EAAQ,QAAqBhkG,IACpCikG,EAAY,EAAQ,QACpB3/F,EAAiB,EAAQ,QACzB4/F,EAAmB,EAAQ,QAC3BC,EAA6B,EAAQ,QACrCC,EAAU,EAAQ,QAClBt4C,EAAsB,EAAQ,QAC9B+2C,EAAW,EAAQ,QACnB3lG,EAAkB,EAAQ,QAC1B0sD,EAAa,EAAQ,QAErB/jD,EAAU3I,EAAgB,WAC1BmnG,EAAU,UACVt4C,EAAmBD,EAAoB7rD,IACvCmiG,EAAmBt2C,EAAoB9rD,IACvCskG,EAA0Bx4C,EAAoBrrD,UAAU4jG,GACxDE,EAAqBngG,EACrBtG,EAAY1B,EAAO0B,UACnB2J,EAAWrL,EAAOqL,SAClBuiD,EAAU5tD,EAAO4tD,QACjBw6C,EAASjoG,EAAW,SACpBkoG,EAAuBN,EAA2BtnG,EAClD6nG,EAA8BD,EAC9BE,EAA8B,WAApBjnG,EAAQssD,GAClB46C,KAAoBn9F,GAAYA,EAASuW,aAAe5hB,EAAOyhB,eAC/DgnF,EAAsB,qBACtBC,EAAoB,mBACpBC,EAAU,EACVC,EAAY,EACZC,EAAW,EACXC,EAAU,EACVC,GAAY,EAGZ3hG,GAASq/F,EAASwB,GAAS,WAC7B,IAAIe,EAAyBv5C,EAAc04C,KAAwBxmG,OAAOwmG,GAC1E,IAAKa,EAAwB,CAI3B,GAAmB,KAAfx7C,EAAmB,OAAO,EAE9B,IAAK+6C,GAA2C,mBAAzBU,sBAAqC,OAAO,EAGrE,GAAIlhG,IAAYogG,EAAmBjnG,UAAU,WAAY,OAAO,EAIhE,GAAIssD,GAAc,IAAM,cAAcrqD,KAAKglG,GAAqB,OAAO,EAEvE,IAAIe,EAAUf,EAAmB1sE,QAAQ,GACrC0tE,EAAc,SAAUlpG,GAC1BA,GAAK,eAA6B,gBAEhCqX,EAAc4xF,EAAQ5xF,YAAc,GAExC,OADAA,EAAY7N,GAAW0/F,IACdD,EAAQ9gG,MAAK,yBAAwC+gG,MAG5DC,GAAsBhiG,KAAWugG,GAA4B,SAAUn4F,GACzE24F,EAAmBkB,IAAI75F,GAAU,UAAS,kBAIxC85F,GAAa,SAAU/oG,GACzB,IAAI6H,EACJ,SAAO/G,EAASd,IAAkC,mBAAnB6H,EAAO7H,EAAG6H,QAAsBA,GAG7DyxD,GAAS,SAAUqvC,EAAS3kG,EAAOglG,GACrC,IAAIhlG,EAAMilG,SAAV,CACAjlG,EAAMilG,UAAW,EACjB,IAAIC,EAAQllG,EAAMmlG,UAClB7B,GAAU,WACR,IAAIzmG,EAAQmD,EAAMnD,MACdmjC,EAAKhgC,EAAMA,OAASqkG,EACpB9iG,EAAQ,EAEZ,MAAO2jG,EAAMlkG,OAASO,EAAO,CAC3B,IAKI5D,EAAQkG,EAAMuhG,EALdC,EAAWH,EAAM3jG,KACjBu7D,EAAU98B,EAAKqlE,EAASrlE,GAAKqlE,EAASC,KACtCpuE,EAAUmuE,EAASnuE,QACnBC,EAASkuE,EAASluE,OAClBjwB,EAASm+F,EAASn+F,OAEtB,IACM41D,GACG98B,IACChgC,EAAMulG,YAAcf,IAAWgB,GAAkBb,EAAS3kG,GAC9DA,EAAMulG,UAAYhB,IAEJ,IAAZznC,EAAkBn/D,EAASd,GAEzBqK,GAAQA,EAAO6J,QACnBpT,EAASm/D,EAAQjgE,GACbqK,IACFA,EAAO2J,OACPu0F,GAAS,IAGTznG,IAAW0nG,EAASV,QACtBxtE,EAAOh6B,EAAU,yBACR0G,EAAOkhG,GAAWpnG,IAC3BkG,EAAKjG,KAAKD,EAAQu5B,EAASC,GACtBD,EAAQv5B,IACVw5B,EAAOt6B,GACd,MAAOlB,GACHuL,IAAWk+F,GAAQl+F,EAAO2J,OAC9BsmB,EAAOx7B,IAGXqE,EAAMmlG,UAAY,GAClBnlG,EAAMilG,UAAW,EACbD,IAAahlG,EAAMulG,WAAWE,GAAYd,EAAS3kG,QAIvDkd,GAAgB,SAAU9U,EAAMu8F,EAAS15B,GAC3C,IAAI5uD,EAAOygD,EACPmnC,GACF5nF,EAAQvV,EAASuW,YAAY,SAC7BhB,EAAMsoF,QAAUA,EAChBtoF,EAAM4uD,OAASA,EACf5uD,EAAMiB,UAAUlV,GAAM,GAAO,GAC7B3M,EAAOyhB,cAAcb,IAChBA,EAAQ,CAAEsoF,QAASA,EAAS15B,OAAQA,IACvCnO,EAAUrhE,EAAO,KAAO2M,IAAO00D,EAAQzgD,GAClCjU,IAAS87F,GAAqBX,EAAiB,8BAA+Bt4B,IAGrFw6B,GAAc,SAAUd,EAAS3kG,GACnCqjG,EAAKzlG,KAAKnC,GAAQ,WAChB,IAEIkC,EAFAd,EAAQmD,EAAMnD,MACd6oG,EAAeC,GAAY3lG,GAE/B,GAAI0lG,IACF/nG,EAAS8lG,GAAQ,WACXO,EACF36C,EAAQ+lB,KAAK,qBAAsBvyE,EAAO8nG,GACrCznF,GAAcgnF,EAAqBS,EAAS9nG,MAGrDmD,EAAMulG,UAAYvB,GAAW2B,GAAY3lG,GAASwkG,GAAYD,EAC1D5mG,EAAOhC,OAAO,MAAMgC,EAAOd,UAKjC8oG,GAAc,SAAU3lG,GAC1B,OAAOA,EAAMulG,YAAchB,IAAYvkG,EAAM0J,QAG3C87F,GAAoB,SAAUb,EAAS3kG,GACzCqjG,EAAKzlG,KAAKnC,GAAQ,WACZuoG,EACF36C,EAAQ+lB,KAAK,mBAAoBu1B,GAC5BznF,GAAcinF,EAAmBQ,EAAS3kG,EAAMnD,WAIvD8N,GAAO,SAAUO,EAAIy5F,EAAS3kG,EAAO4lG,GACvC,OAAO,SAAU/oG,GACfqO,EAAGy5F,EAAS3kG,EAAOnD,EAAO+oG,KAI1BC,GAAiB,SAAUlB,EAAS3kG,EAAOnD,EAAO+oG,GAChD5lG,EAAM0L,OACV1L,EAAM0L,MAAO,EACTk6F,IAAQ5lG,EAAQ4lG,GACpB5lG,EAAMnD,MAAQA,EACdmD,EAAMA,MAAQskG,EACdhvC,GAAOqvC,EAAS3kG,GAAO,KAGrB8lG,GAAkB,SAAUnB,EAAS3kG,EAAOnD,EAAO+oG,GACrD,IAAI5lG,EAAM0L,KAAV,CACA1L,EAAM0L,MAAO,EACTk6F,IAAQ5lG,EAAQ4lG,GACpB,IACE,GAAIjB,IAAY9nG,EAAO,MAAMM,EAAU,oCACvC,IAAI0G,EAAOkhG,GAAWloG,GAClBgH,EACFy/F,GAAU,WACR,IAAIyC,EAAU,CAAEr6F,MAAM,GACtB,IACE7H,EAAKjG,KAAKf,EACR8N,GAAKm7F,GAAiBnB,EAASoB,EAAS/lG,GACxC2K,GAAKk7F,GAAgBlB,EAASoB,EAAS/lG,IAEzC,MAAOrE,GACPkqG,GAAelB,EAASoB,EAASpqG,EAAOqE,QAI5CA,EAAMnD,MAAQA,EACdmD,EAAMA,MAAQqkG,EACd/uC,GAAOqvC,EAAS3kG,GAAO,IAEzB,MAAOrE,GACPkqG,GAAelB,EAAS,CAAEj5F,MAAM,GAAS/P,EAAOqE,MAKhD6C,KAEF+gG,EAAqB,SAAiBoC,GACpC7C,EAAWzkG,KAAMklG,EAAoBF,GACrC/+F,EAAUqhG,GACVnD,EAASjlG,KAAKc,MACd,IAAIsB,EAAQorD,EAAiB1sD,MAC7B,IACEsnG,EAASr7F,GAAKm7F,GAAiBpnG,KAAMsB,GAAQ2K,GAAKk7F,GAAgBnnG,KAAMsB,IACxE,MAAOrE,GACPkqG,GAAennG,KAAMsB,EAAOrE,KAIhCknG,EAAW,SAAiBmD,GAC1BvE,EAAiB/iG,KAAM,CACrBuB,KAAMyjG,EACNh4F,MAAM,EACNu5F,UAAU,EACVv7F,QAAQ,EACRy7F,UAAW,GACXI,WAAW,EACXvlG,MAAOokG,EACPvnG,WAAOK,KAGX2lG,EAASlmG,UAAYsmG,EAAYW,EAAmBjnG,UAAW,CAG7DkH,KAAM,SAAcoiG,EAAaC,GAC/B,IAAIlmG,EAAQ2jG,EAAwBjlG,MAChC2mG,EAAWvB,EAAqBpgG,EAAmBhF,KAAMklG,IAO7D,OANAyB,EAASrlE,GAA2B,mBAAfimE,GAA4BA,EACjDZ,EAASC,KAA4B,mBAAdY,GAA4BA,EACnDb,EAASn+F,OAAS88F,EAAU36C,EAAQniD,YAAShK,EAC7C8C,EAAM0J,QAAS,EACf1J,EAAMmlG,UAAUryF,KAAKuyF,GACjBrlG,EAAMA,OAASokG,GAAS9uC,GAAO52D,KAAMsB,GAAO,GACzCqlG,EAASV,SAIlB,MAAS,SAAUuB,GACjB,OAAOxnG,KAAKmF,UAAK3G,EAAWgpG,MAGhCpD,EAAuB,WACrB,IAAI6B,EAAU,IAAI9B,EACd7iG,EAAQorD,EAAiBu5C,GAC7BjmG,KAAKimG,QAAUA,EACfjmG,KAAKw4B,QAAUvsB,GAAKm7F,GAAiBnB,EAAS3kG,GAC9CtB,KAAKy4B,OAASxsB,GAAKk7F,GAAgBlB,EAAS3kG,IAE9CwjG,EAA2BtnG,EAAI4nG,EAAuB,SAAU9/F,GAC9D,OAAOA,IAAM4/F,GAAsB5/F,IAAM++F,EACrC,IAAID,EAAqB9+F,GACzB+/F,EAA4B//F,IAG7BR,GAAmC,mBAAjBC,IACrBu/F,EAAav/F,EAAc9G,UAAUkH,KAGrC/E,EAAS2E,EAAc9G,UAAW,QAAQ,SAAcspG,EAAaC,GACnE,IAAI/6F,EAAOzM,KACX,OAAO,IAAIklG,GAAmB,SAAU1sE,EAASC,GAC/C6rE,EAAWplG,KAAKuN,EAAM+rB,EAASC,MAC9BtzB,KAAKoiG,EAAaC,KAEpB,CAAElnG,QAAQ,IAGQ,mBAAV6kG,GAAsBhmG,EAAE,CAAEpC,QAAQ,EAAM8G,YAAY,EAAM/D,QAAQ,GAAQ,CAEnF2hC,MAAO,SAAeC,GACpB,OAAOz8B,EAAeigG,EAAoBC,EAAO9zF,MAAMtU,EAAQsF,iBAMvElD,EAAE,CAAEpC,QAAQ,EAAMuhB,MAAM,EAAMxe,OAAQqE,IAAU,CAC9Co0B,QAAS2sE,IAGXt/F,EAAes/F,EAAoBF,GAAS,GAAO,GACnDR,EAAWQ,GAEXX,EAAiBnnG,EAAW8nG,GAG5B7lG,EAAE,CAAES,OAAQolG,EAASxgG,MAAM,EAAM1E,OAAQqE,IAAU,CAGjDs0B,OAAQ,SAAgB7M,GACtB,IAAI67E,EAAarC,EAAqBplG,MAEtC,OADAynG,EAAWhvE,OAAOv5B,UAAKV,EAAWotB,GAC3B67E,EAAWxB,WAItB9mG,EAAE,CAAES,OAAQolG,EAASxgG,MAAM,EAAM1E,OAAQgF,GAAWX,IAAU,CAG5Dq0B,QAAS,SAAiBhzB,GACxB,OAAOP,EAAeH,GAAW9E,OAASqkG,EAAiBa,EAAqBllG,KAAMwF,MAI1FrG,EAAE,CAAES,OAAQolG,EAASxgG,MAAM,EAAM1E,OAAQqmG,IAAuB,CAG9DC,IAAK,SAAa75F,GAChB,IAAIjH,EAAItF,KACJynG,EAAarC,EAAqB9/F,GAClCkzB,EAAUivE,EAAWjvE,QACrBC,EAASgvE,EAAWhvE,OACpBx5B,EAAS8lG,GAAQ,WACnB,IAAI2C,EAAkBzhG,EAAUX,EAAEkzB,SAC9B9oB,EAAS,GACTi+C,EAAU,EACVg6C,EAAY,EAChBr7F,EAAQC,GAAU,SAAU05F,GAC1B,IAAIpjG,EAAQ8qD,IACRi6C,GAAgB,EACpBl4F,EAAO0E,UAAK5V,GACZmpG,IACAD,EAAgBxoG,KAAKoG,EAAG2gG,GAAS9gG,MAAK,SAAUhH,GAC1CypG,IACJA,GAAgB,EAChBl4F,EAAO7M,GAAS1E,IACdwpG,GAAanvE,EAAQ9oB,MACtB+oB,QAEHkvE,GAAanvE,EAAQ9oB,MAGzB,OADIzQ,EAAOhC,OAAOw7B,EAAOx5B,EAAOd,OACzBspG,EAAWxB,SAIpB4B,KAAM,SAAct7F,GAClB,IAAIjH,EAAItF,KACJynG,EAAarC,EAAqB9/F,GAClCmzB,EAASgvE,EAAWhvE,OACpBx5B,EAAS8lG,GAAQ,WACnB,IAAI2C,EAAkBzhG,EAAUX,EAAEkzB,SAClClsB,EAAQC,GAAU,SAAU05F,GAC1ByB,EAAgBxoG,KAAKoG,EAAG2gG,GAAS9gG,KAAKsiG,EAAWjvE,QAASC,SAI9D,OADIx5B,EAAOhC,OAAOw7B,EAAOx5B,EAAOd,OACzBspG,EAAWxB,Y,mBCxXtBrpG,EAAOC,SAAU,G,kCCCjB,IAAIQ,EAAW,EAAQ,QAIvBT,EAAOC,QAAU,WACf,IAAI4P,EAAOpP,EAAS2C,MAChBf,EAAS,GAOb,OANIwN,EAAK1P,SAAQkC,GAAU,KACvBwN,EAAKq7F,aAAY7oG,GAAU,KAC3BwN,EAAKgjD,YAAWxwD,GAAU,KAC1BwN,EAAKs7F,SAAQ9oG,GAAU,KACvBwN,EAAKtJ,UAASlE,GAAU,KACxBwN,EAAK6iD,SAAQrwD,GAAU,KACpBA,I,mBCdT,IAAIoB,EAAW,GAAGA,SAElBzD,EAAOC,QAAU,SAAUS,GACzB,OAAO+C,EAASnB,KAAK5B,GAAI6Q,MAAM,GAAI,K,mBCHrCvR,EAAOC,QAAU,SAAUS,EAAIoJ,EAAagD,GAC1C,KAAMpM,aAAcoJ,GAClB,MAAMjI,UAAU,cAAgBiL,EAAOA,EAAO,IAAM,IAAM,cAC1D,OAAOpM,I,qBCFX,IAAI8B,EAAgB,EAAQ,QACxB+qD,EAAyB,EAAQ,QAErCvtD,EAAOC,QAAU,SAAUS,GACzB,OAAO8B,EAAc+qD,EAAuB7sD,M,qBCL9C,IAAID,EAAW,EAAQ,QAGvBT,EAAOC,QAAU,SAAU+P,EAAUJ,EAAIrO,EAAOwjG,GAC9C,IACE,OAAOA,EAAUn1F,EAAGnP,EAASc,GAAO,GAAIA,EAAM,IAAMqO,EAAGrO,GAEvD,MAAOlB,GACP,IAAI+qG,EAAep7F,EAAS,UAE5B,WADqBpO,IAAjBwpG,GAA4B3qG,EAAS2qG,EAAa9oG,KAAK0N,IACrD3P,K,kCCTV,IAAIkD,EAAwB,EAAQ,QAChC9B,EAAU,EAAQ,QAItBzB,EAAOC,QAAUsD,EAAwB,GAAGE,SAAW,WACrD,MAAO,WAAahC,EAAQ2B,MAAQ,M,qBCPtC,IAAIoD,EAAQ,EAAQ,QAGpBxG,EAAOC,SAAWuG,GAAM,WACtB,OAA8E,GAAvE1D,OAAO/B,eAAe,GAAI,EAAG,CAAEiD,IAAK,WAAc,OAAO,KAAQ,O,qBCJ1E,IAAI7D,EAAS,EAAQ,QACjBwvD,EAAY,EAAQ,QAEpB07C,EAAS,qBACTzmG,EAAQzE,EAAOkrG,IAAW17C,EAAU07C,EAAQ,IAEhDrrG,EAAOC,QAAU2E,G,kCCLjB,IAAIyE,EAAY,EAAQ,QAEpBiiG,EAAoB,SAAU5iG,GAChC,IAAIkzB,EAASC,EACbz4B,KAAKimG,QAAU,IAAI3gG,GAAE,SAAU6iG,EAAWC,GACxC,QAAgB5pG,IAAZg6B,QAAoCh6B,IAAXi6B,EAAsB,MAAMh6B,UAAU,2BACnE+5B,EAAU2vE,EACV1vE,EAAS2vE,KAEXpoG,KAAKw4B,QAAUvyB,EAAUuyB,GACzBx4B,KAAKy4B,OAASxyB,EAAUwyB,IAI1B77B,EAAOC,QAAQW,EAAI,SAAU8H,GAC3B,OAAO,IAAI4iG,EAAkB5iG,K,qBChB/B,IAcI+iG,EAAOC,EAAMhnC,EAAM1K,EAAQ2xC,EAAQpyF,EAAM8vF,EAAS9gG,EAdlDpI,EAAS,EAAQ,QACjB+L,EAA2B,EAAQ,QAAmDtL,EACtFa,EAAU,EAAQ,QAClBmqG,EAAY,EAAQ,QAAqB7nG,IACzC4sD,EAAS,EAAQ,QAEjBsR,EAAmB9hE,EAAO8hE,kBAAoB9hE,EAAO0rG,uBACrD99C,EAAU5tD,EAAO4tD,QACjBpyB,EAAUx7B,EAAOw7B,QACjB+sE,EAA8B,WAApBjnG,EAAQssD,GAElB+9C,EAA2B5/F,EAAyB/L,EAAQ,kBAC5D4rG,EAAiBD,GAA4BA,EAAyBvqG,MAKrEwqG,IACHN,EAAQ,WACN,IAAIr9F,EAAQwB,EACR84F,IAAYt6F,EAAS2/C,EAAQniD,SAASwC,EAAOmH,OACjD,MAAOm2F,EAAM,CACX97F,EAAK87F,EAAK97F,GACV87F,EAAOA,EAAKtiG,KACZ,IACEwG,IACA,MAAOvP,GAGP,MAFIqrG,EAAM1xC,IACL0K,OAAO9iE,EACNvB,GAERqkE,OAAO9iE,EACLwM,GAAQA,EAAOqH,SAIjBizF,EACF1uC,EAAS,WACPjM,EAAQyD,SAASi6C,IAGVxpC,IAAqBtR,GAC9Bg7C,GAAS,EACTpyF,EAAO/N,SAAS42D,eAAe,IAC/B,IAAIH,EAAiBwpC,GAAO3uC,QAAQvjD,EAAM,CAAE8oD,eAAe,IAC3DrI,EAAS,WACPzgD,EAAKpE,KAAOw2F,GAAUA,IAGfhwE,GAAWA,EAAQC,SAE5BytE,EAAU1tE,EAAQC,aAAQh6B,GAC1B2G,EAAO8gG,EAAQ9gG,KACfyxD,EAAS,WACPzxD,EAAKjG,KAAK+mG,EAASoC,KASrBzxC,EAAS,WAEP4xC,EAAUtpG,KAAKnC,EAAQsrG,KAK7BzrG,EAAOC,QAAU8rG,GAAkB,SAAUn8F,GAC3C,IAAIm4F,EAAO,CAAEn4F,GAAIA,EAAIxG,UAAMxH,GACvB8iE,IAAMA,EAAKt7D,KAAO2+F,GACjB2D,IACHA,EAAO3D,EACP/tC,KACA0K,EAAOqjC,I,qBC5EX,IAAIpiG,EAAc,EAAQ,QACtBqmG,EAAiB,EAAQ,QACzBvrG,EAAW,EAAQ,QACnBwrG,EAAc,EAAQ,QAEtBC,EAAuBppG,OAAO/B,eAIlCd,EAAQW,EAAI+E,EAAcumG,EAAuB,SAAwBnmG,EAAGsgD,EAAG8lD,GAI7E,GAHA1rG,EAASsF,GACTsgD,EAAI4lD,EAAY5lD,GAAG,GACnB5lD,EAAS0rG,GACLH,EAAgB,IAClB,OAAOE,EAAqBnmG,EAAGsgD,EAAG8lD,GAClC,MAAO9rG,IACT,GAAI,QAAS8rG,GAAc,QAASA,EAAY,MAAMtqG,UAAU,2BAEhE,MADI,UAAWsqG,IAAYpmG,EAAEsgD,GAAK8lD,EAAW5qG,OACtCwE,I,qBClBT,IAAI9E,EAAkB,EAAQ,QAE1BC,EAAgBD,EAAgB,eAChCqC,EAAO,GAEXA,EAAKpC,GAAiB,IAEtBlB,EAAOC,QAA2B,eAAjB6B,OAAOwB,I,mBCPxBtD,EAAOC,QAAU,I,qBCAjB,IAAIuG,EAAQ,EAAQ,QAEhBw9F,EAAc,kBAEd4C,EAAW,SAAUwF,EAASC,GAChC,IAAI9qG,EAAQ4T,EAAKwgC,EAAUy2D,IAC3B,OAAO7qG,GAAS+qG,GACZ/qG,GAASgrG,IACW,mBAAbF,EAA0B7lG,EAAM6lG,KACrCA,IAGJ12D,EAAYixD,EAASjxD,UAAY,SAAUluC,GAC7C,OAAO3F,OAAO2F,GAAQo8B,QAAQmgE,EAAa,KAAKt1E,eAG9CvZ,EAAOyxF,EAASzxF,KAAO,GACvBo3F,EAAS3F,EAAS2F,OAAS,IAC3BD,EAAW1F,EAAS0F,SAAW,IAEnCtsG,EAAOC,QAAU2mG,G,qBCpBjB,IAAI1+F,EAAU,EAAQ,QAClBtD,EAAQ,EAAQ,SAEnB5E,EAAOC,QAAU,SAAU6D,EAAKvC,GAC/B,OAAOqD,EAAMd,KAASc,EAAMd,QAAiBlC,IAAVL,EAAsBA,EAAQ,MAChE,WAAY,IAAIiW,KAAK,CACtBs2C,QAAS,QACTogC,KAAMhmF,EAAU,OAAS,SACzBskG,UAAW,0C,qBCRb,IAAI/rG,EAAW,EAAQ,QACnBe,EAAW,EAAQ,QACnBgnG,EAAuB,EAAQ,QAEnCxoG,EAAOC,QAAU,SAAUyI,EAAGE,GAE5B,GADAnI,EAASiI,GACLlH,EAASoH,IAAMA,EAAE6O,cAAgB/O,EAAG,OAAOE,EAC/C,IAAI6jG,EAAoBjE,EAAqB5nG,EAAE8H,GAC3CkzB,EAAU6wE,EAAkB7wE,QAEhC,OADAA,EAAQhzB,GACD6jG,EAAkBpD,U,mBCV3B,IAAIhyF,EAAiB,GAAGA,eAExBrX,EAAOC,QAAU,SAAUS,EAAIoD,GAC7B,OAAOuT,EAAe/U,KAAK5B,EAAIoD,K,qBCHjC,IAAI6B,EAAc,EAAQ,QACtBy+F,EAA6B,EAAQ,QACrCr7F,EAA2B,EAAQ,QACnCtG,EAAkB,EAAQ,QAC1BwpG,EAAc,EAAQ,QACtBjrG,EAAM,EAAQ,QACdgrG,EAAiB,EAAQ,QAEzBU,EAAiC5pG,OAAOoJ,yBAI5CjM,EAAQW,EAAI+E,EAAc+mG,EAAiC,SAAkC3mG,EAAGsgD,GAG9F,GAFAtgD,EAAItD,EAAgBsD,GACpBsgD,EAAI4lD,EAAY5lD,GAAG,GACf2lD,EAAgB,IAClB,OAAOU,EAA+B3mG,EAAGsgD,GACzC,MAAOhmD,IACT,GAAIW,EAAI+E,EAAGsgD,GAAI,OAAOt9C,GAA0Bq7F,EAA2BxjG,EAAE0B,KAAKyD,EAAGsgD,GAAItgD,EAAEsgD,M,qBClB7F,IAAI7/C,EAAQ,EAAQ,QAEpBxG,EAAOC,UAAY6C,OAAOjC,wBAA0B2F,GAAM,WAGxD,OAAQ1E,OAAO6K,c,qBCLjB,IAAIsI,EAAO,EAAQ,QACf9U,EAAS,EAAQ,QAEjBkJ,EAAY,SAAUsjG,GACxB,MAA0B,mBAAZA,EAAyBA,OAAW/qG,GAGpD5B,EAAOC,QAAU,SAAU+Y,EAAWnS,GACpC,OAAOpB,UAAUC,OAAS,EAAI2D,EAAU4L,EAAK+D,KAAe3P,EAAUlJ,EAAO6Y,IACzE/D,EAAK+D,IAAc/D,EAAK+D,GAAWnS,IAAW1G,EAAO6Y,IAAc7Y,EAAO6Y,GAAWnS,K,kCCR3F,IAAI+7F,EAAgC,EAAQ,QACxCniG,EAAW,EAAQ,QACnB2O,EAAW,EAAQ,QACnBm+C,EAAyB,EAAQ,QACjCs1C,EAAqB,EAAQ,QAC7BC,EAAa,EAAQ,QAGzBF,EAA8B,QAAS,GAAG,SAAUlhG,EAAOkrG,EAAa1J,GACtE,MAAO,CAGL,SAAej0C,GACb,IAAIlpD,EAAIwnD,EAAuBnqD,MAC3B+W,OAAoBvY,GAAVqtD,OAAsBrtD,EAAYqtD,EAAOvtD,GACvD,YAAmBE,IAAZuY,EAAwBA,EAAQ7X,KAAK2sD,EAAQlpD,GAAK,IAAIgf,OAAOkqC,GAAQvtD,GAAOI,OAAOiE,KAI5F,SAAUkpD,GACR,IAAIqG,EAAM4tC,EAAgB0J,EAAa39C,EAAQ7rD,MAC/C,GAAIkyD,EAAIllD,KAAM,OAAOklD,EAAI/zD,MAEzB,IAAIumD,EAAKrnD,EAASwuD,GACd7sD,EAAIN,OAAOsB,MAEf,IAAK0kD,EAAG3nD,OAAQ,OAAO2iG,EAAWh7C,EAAI1lD,GAEtC,IAAIohG,EAAc17C,EAAGvhD,QACrBuhD,EAAG/zB,UAAY,EACf,IAEI1xB,EAFA6wC,EAAI,GACJzhC,EAAI,EAER,MAAwC,QAAhCpP,EAASygG,EAAWh7C,EAAI1lD,IAAc,CAC5C,IAAIshG,EAAW5hG,OAAOO,EAAO,IAC7B6wC,EAAEzhC,GAAKiyF,EACU,KAAbA,IAAiB57C,EAAG/zB,UAAY8uE,EAAmBzgG,EAAGgN,EAAS04C,EAAG/zB,WAAYyvE,IAClF/xF,IAEF,OAAa,IAANA,EAAU,KAAOyhC,Q,kCCvC9B,IAAI0vD,EAAgC,EAAQ,QACxCjhG,EAAW,EAAQ,QACnBlB,EAAW,EAAQ,QACnB8sD,EAAyB,EAAQ,QACjCnlD,EAAqB,EAAQ,QAC7By6F,EAAqB,EAAQ,QAC7BzzF,EAAW,EAAQ,QACnBy9F,EAAiB,EAAQ,QACzB3qG,EAAa,EAAQ,QACrBsE,EAAQ,EAAQ,QAEhBsmG,EAAY,GAAGt1F,KACf1X,EAAMC,KAAKD,IACXitG,EAAa,WAGbC,GAAcxmG,GAAM,WAAc,OAAQue,OAAOgoF,EAAY,QAGjEnK,EAA8B,QAAS,GAAG,SAAUqK,EAAOC,EAAahK,GACtE,IAAIiK,EAmDJ,OAzCEA,EAR2B,KAA3B,OAAO78F,MAAM,QAAQ,IACc,GAAnC,OAAOA,MAAM,QAAS,GAAG5K,QACO,GAAhC,KAAK4K,MAAM,WAAW5K,QACU,GAAhC,IAAI4K,MAAM,YAAY5K,QACtB,IAAI4K,MAAM,QAAQ5K,OAAS,GAC3B,GAAG4K,MAAM,MAAM5K,OAGC,SAAUvC,EAAWiqG,GACnC,IAAI3lG,EAAS3F,OAAOyrD,EAAuBnqD,OACvCiqG,OAAgBzrG,IAAVwrG,EAAsBL,EAAaK,IAAU,EACvD,GAAY,IAARC,EAAW,MAAO,GACtB,QAAkBzrG,IAAduB,EAAyB,MAAO,CAACsE,GAErC,IAAK9F,EAASwB,GACZ,OAAO+pG,EAAY5qG,KAAKmF,EAAQtE,EAAWkqG,GAE7C,IAQInzF,EAAO6Z,EAAWu5E,EARlBh3D,EAAS,GACTwY,GAAS3rD,EAAU+nG,WAAa,IAAM,KAC7B/nG,EAAU0vD,UAAY,IAAM,KAC5B1vD,EAAUoD,QAAU,IAAM,KAC1BpD,EAAUuvD,OAAS,IAAM,IAClC66C,EAAgB,EAEhBC,EAAgB,IAAIzoF,OAAO5hB,EAAUkwB,OAAQy7B,EAAQ,KAEzD,MAAO50C,EAAQhY,EAAWI,KAAKkrG,EAAe/lG,GAAS,CAErD,GADAssB,EAAYy5E,EAAcz5E,UACtBA,EAAYw5E,IACdj3D,EAAO9+B,KAAK/P,EAAO8J,MAAMg8F,EAAerzF,EAAMjU,QAC1CiU,EAAMxU,OAAS,GAAKwU,EAAMjU,MAAQwB,EAAO/B,QAAQonG,EAAUr4F,MAAM6hC,EAAQp8B,EAAM3I,MAAM,IACzF+7F,EAAapzF,EAAM,GAAGxU,OACtB6nG,EAAgBx5E,EACZuiB,EAAO5wC,QAAU2nG,GAAK,MAExBG,EAAcz5E,YAAc7Z,EAAMjU,OAAOunG,EAAcz5E,YAK7D,OAHIw5E,IAAkB9lG,EAAO/B,QACvB4nG,GAAeE,EAAclqG,KAAK,KAAKgzC,EAAO9+B,KAAK,IAClD8+B,EAAO9+B,KAAK/P,EAAO8J,MAAMg8F,IACzBj3D,EAAO5wC,OAAS2nG,EAAM/2D,EAAO/kC,MAAM,EAAG87F,GAAO/2D,GAG7C,IAAIhmC,WAAM1O,EAAW,GAAG8D,OACjB,SAAUvC,EAAWiqG,GACnC,YAAqBxrG,IAAduB,GAAqC,IAAViqG,EAAc,GAAKF,EAAY5qG,KAAKc,KAAMD,EAAWiqG,IAEpEF,EAEhB,CAGL,SAAe/pG,EAAWiqG,GACxB,IAAIrnG,EAAIwnD,EAAuBnqD,MAC3BqqG,OAAwB7rG,GAAbuB,OAAyBvB,EAAYuB,EAAU8pG,GAC9D,YAAoBrrG,IAAb6rG,EACHA,EAASnrG,KAAKa,EAAW4C,EAAGqnG,GAC5BD,EAAc7qG,KAAKR,OAAOiE,GAAI5C,EAAWiqG,IAO/C,SAAUn+C,EAAQm+C,GAChB,IAAI93C,EAAM4tC,EAAgBiK,EAAel+C,EAAQ7rD,KAAMgqG,EAAOD,IAAkBD,GAChF,GAAI53C,EAAIllD,KAAM,OAAOklD,EAAI/zD,MAEzB,IAAIumD,EAAKrnD,EAASwuD,GACd7sD,EAAIN,OAAOsB,MACXsF,EAAIN,EAAmB0/C,EAAI/iC,QAE3B2oF,EAAkB5lD,EAAGvhD,QACrBuoD,GAAShH,EAAGojD,WAAa,IAAM,KACtBpjD,EAAG+K,UAAY,IAAM,KACrB/K,EAAGvhD,QAAU,IAAM,KACnBymG,EAAa,IAAM,KAI5BS,EAAW,IAAI/kG,EAAEskG,EAAallD,EAAK,OAASA,EAAGz0B,OAAS,IAAKy7B,GAC7Du+C,OAAgBzrG,IAAVwrG,EAAsBL,EAAaK,IAAU,EACvD,GAAY,IAARC,EAAW,MAAO,GACtB,GAAiB,IAAbjrG,EAAEsD,OAAc,OAAuC,OAAhCmnG,EAAeY,EAAUrrG,GAAc,CAACA,GAAK,GACxE,IAAI+T,EAAI,EACJ6d,EAAI,EACJkf,EAAI,GACR,MAAOlf,EAAI5xB,EAAEsD,OAAQ,CACnB+nG,EAAS15E,UAAYi5E,EAAah5E,EAAI,EACtC,IACI5tB,EADAuqB,EAAIk8E,EAAeY,EAAUT,EAAa5qG,EAAIA,EAAEmP,MAAMyiB,IAE1D,GACQ,OAANrD,IACCvqB,EAAItG,EAAIsP,EAASq+F,EAAS15E,WAAai5E,EAAa,EAAIh5E,IAAK5xB,EAAEsD,WAAayQ,EAE7E6d,EAAI6uE,EAAmBzgG,EAAG4xB,EAAG05E,OACxB,CAEL,GADAx6D,EAAE17B,KAAKpV,EAAEmP,MAAM4E,EAAG6d,IACdkf,EAAExtC,SAAW2nG,EAAK,OAAOn6D,EAC7B,IAAK,IAAIxhC,EAAI,EAAGA,GAAKif,EAAEjrB,OAAS,EAAGgM,IAEjC,GADAwhC,EAAE17B,KAAKmZ,EAAEjf,IACLwhC,EAAExtC,SAAW2nG,EAAK,OAAOn6D,EAE/Blf,EAAI7d,EAAI/P,GAIZ,OADA8sC,EAAE17B,KAAKpV,EAAEmP,MAAM4E,IACR+8B,OAGT85D,I,qBCrIJ,IAAIvqG,EAAkB,EAAQ,QAC1B2M,EAAW,EAAQ,QACnBu+F,EAAkB,EAAQ,QAG1Br9C,EAAe,SAAUs9C,GAC3B,OAAO,SAAUr9C,EAAO2hB,EAAI27B,GAC1B,IAGItsG,EAHAwE,EAAItD,EAAgB8tD,GACpB7qD,EAAS0J,EAASrJ,EAAEL,QACpBO,EAAQ0nG,EAAgBE,EAAWnoG,GAIvC,GAAIkoG,GAAe17B,GAAMA,GAAI,MAAOxsE,EAASO,EAG3C,GAFA1E,EAAQwE,EAAEE,KAEN1E,GAASA,EAAO,OAAO,OAEtB,KAAMmE,EAASO,EAAOA,IAC3B,IAAK2nG,GAAe3nG,KAASF,IAAMA,EAAEE,KAAWisE,EAAI,OAAO07B,GAAe3nG,GAAS,EACnF,OAAQ2nG,IAAgB,IAI9B5tG,EAAOC,QAAU,CAGf6tG,SAAUx9C,GAAa,GAGvBl5C,QAASk5C,GAAa,K,qBC9BxB,IAAIy9C,EAAqB,EAAQ,QAC7B/jG,EAAc,EAAQ,QAI1BhK,EAAOC,QAAU6C,OAAOnC,MAAQ,SAAcoF,GAC5C,OAAOgoG,EAAmBhoG,EAAGiE,K,qBCN/B,IAAIqF,EAAO,EAAQ,QACf7M,EAAgB,EAAQ,QACxB8G,EAAW,EAAQ,QACnB8F,EAAW,EAAQ,QACnB4+F,EAAqB,EAAQ,QAE7Bx2F,EAAO,GAAGA,KAGV84C,EAAe,SAAU7rD,GAC3B,IAAIwpG,EAAiB,GAARxpG,EACTypG,EAAoB,GAARzpG,EACZ0pG,EAAkB,GAAR1pG,EACV2pG,EAAmB,GAAR3pG,EACX4pG,EAAwB,GAAR5pG,EAChB6pG,EAAmB,GAAR7pG,GAAa4pG,EAC5B,OAAO,SAAU99C,EAAO/qD,EAAYqK,EAAM0+F,GASxC,IARA,IAOIhtG,EAAOc,EAPP0D,EAAIuD,EAASinD,GACbv3B,EAAOx2B,EAAcuD,GACrBoK,EAAgBd,EAAK7J,EAAYqK,EAAM,GACvCnK,EAAS0J,EAAS4pB,EAAKtzB,QACvBO,EAAQ,EACR6C,EAASylG,GAAkBP,EAC3BhrG,EAASirG,EAASnlG,EAAOynD,EAAO7qD,GAAUwoG,EAAYplG,EAAOynD,EAAO,QAAK3uD,EAEvE8D,EAASO,EAAOA,IAAS,IAAIqoG,GAAYroG,KAAS+yB,KACtDz3B,EAAQy3B,EAAK/yB,GACb5D,EAAS8N,EAAc5O,EAAO0E,EAAOF,GACjCtB,GACF,GAAIwpG,EAAQjrG,EAAOiD,GAAS5D,OACvB,GAAIA,EAAQ,OAAQoC,GACvB,KAAK,EAAG,OAAO,EACf,KAAK,EAAG,OAAOlD,EACf,KAAK,EAAG,OAAO0E,EACf,KAAK,EAAGuR,EAAKlV,KAAKU,EAAQzB,QACrB,GAAI6sG,EAAU,OAAO,EAGhC,OAAOC,GAAiB,EAAIF,GAAWC,EAAWA,EAAWprG,IAIjEhD,EAAOC,QAAU,CAGf+hC,QAASsuB,EAAa,GAGtBnrD,IAAKmrD,EAAa,GAGlBh6C,OAAQg6C,EAAa,GAGrB88B,KAAM98B,EAAa,GAGnB31B,MAAO21B,EAAa,GAGpBrpB,KAAMqpB,EAAa,GAGnBk+C,UAAWl+C,EAAa,K,qBC/D1B,IAAIzwD,EAAY,EAAQ,QAEpB8R,EAAM5R,KAAK4R,IACX7R,EAAMC,KAAKD,IAKfE,EAAOC,QAAU,SAAUgG,EAAOP,GAChC,IAAI+oG,EAAU5uG,EAAUoG,GACxB,OAAOwoG,EAAU,EAAI98F,EAAI88F,EAAU/oG,EAAQ,GAAK5F,EAAI2uG,EAAS/oG,K,qBCV/D,IAAIC,EAAc,EAAQ,QACtBC,EAAuB,EAAQ,QAC/BmD,EAA2B,EAAQ,QAEvC/I,EAAOC,QAAU0F,EAAc,SAAUm7B,EAAQh9B,EAAKvC,GACpD,OAAOqE,EAAqBhF,EAAEkgC,EAAQh9B,EAAKiF,EAAyB,EAAGxH,KACrE,SAAUu/B,EAAQh9B,EAAKvC,GAEzB,OADAu/B,EAAOh9B,GAAOvC,EACPu/B,I,qBCRT,IAAIitE,EAAqB,EAAQ,QAC7B/jG,EAAc,EAAQ,QAEtB3F,EAAa2F,EAAYlJ,OAAO,SAAU,aAI9Cb,EAAQW,EAAIkC,OAAOw5D,qBAAuB,SAA6Bv2D,GACrE,OAAOgoG,EAAmBhoG,EAAG1B,K,qBCR/B,IAAI7C,EAAW,EAAQ,QACnByyB,EAAU,EAAQ,QAClBhzB,EAAkB,EAAQ,QAE1B2I,EAAU3I,EAAgB,WAI9BjB,EAAOC,QAAU,SAAUyuG,EAAehpG,GACxC,IAAIgD,EASF,OAREurB,EAAQy6E,KACVhmG,EAAIgmG,EAAcj3F,YAEF,mBAAL/O,GAAoBA,IAAMyD,QAAS8nB,EAAQvrB,EAAErH,WAC/CG,EAASkH,KAChBA,EAAIA,EAAEkB,GACI,OAANlB,IAAYA,OAAI9G,IAH+C8G,OAAI9G,GAKlE,SAAWA,IAAN8G,EAAkByD,MAAQzD,GAAc,IAAXhD,EAAe,EAAIA,K,mBClBhE1F,EAAOC,QAAU","file":"js/chunk-vendors.e9873496.js","sourcesContent":["var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseFloat = global.parseFloat;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = $parseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.github.io/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// patch native Promise.prototype for native async functions\nif (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {\n redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n}\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar test = [];\nvar nativeSort = test.sort;\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","export var name = \"d3\";\nexport var version = \"5.9.1\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && node rollup.node\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test && rollup -c\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"0.64\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"1\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\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","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 start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - 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","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) 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","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\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 return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag\";\nimport noevent, {nopropagation} from \"./noevent\";\nimport constant from \"./constant\";\nimport DragEvent from \"./event\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return \"ontouchstart\" in this;\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\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\";\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 reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\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 displayable: function() {\n return this.rgb().displayable();\n },\n hex: function() {\n return this.rgb().hex();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\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])\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 <= this.r && this.r <= 255)\n && (0 <= this.g && this.g <= 255)\n && (0 <= this.b && this.b <= 255)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: function() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n },\n toString: function() {\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}));\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}));\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 var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://beta.observablehq.com/@mbostock/lab-and-rgb\nvar 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) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\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.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\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\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 labConvert(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\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) * rad2deg - 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) * deg2rad,\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","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\";\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 function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\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\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\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","import value from \"./value\";\n\nexport default function(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 -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\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\";\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 decompose, {identity} from \"./decompose\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\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 {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\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 : Array.isArray(b) ? array\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 -= a, function(t) {\n return Math.round(a + b * t);\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 number from \"../number\";\nimport {parseCss, parseSvg} from \"./parse\";\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 rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n 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\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(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;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color\";\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","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color\";\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 {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color\";\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","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","import {Timer} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i(t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i(t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i(t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {Transition, newId} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr\";\nimport transition_attrTween from \"./attrTween\";\nimport transition_delay from \"./delay\";\nimport transition_duration from \"./duration\";\nimport transition_ease from \"./ease\";\nimport transition_filter from \"./filter\";\nimport transition_merge from \"./merge\";\nimport transition_on from \"./on\";\nimport transition_remove from \"./remove\";\nimport transition_select from \"./select\";\nimport transition_selectAll from \"./selectAll\";\nimport transition_selection from \"./selection\";\nimport transition_style from \"./style\";\nimport transition_styleTween from \"./styleTween\";\nimport transition_text from \"./text\";\nimport transition_transition from \"./transition\";\nimport transition_tween from \"./tween\";\nimport transition_end from \"./end\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","var tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","import {Transition, newId} from \"../transition/index\";\nimport schedule from \"../transition/schedule\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt\";\nimport selection_transition from \"./transition\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant\";\nimport BrushEvent from \"./event\";\nimport noevent, {nopropagation} from \"./noevent\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nvar X = {\n name: \"x\",\n handles: [\"e\", \"w\"].map(type),\n input: function(x, e) { return x && [[x[0], e[0][1]], [x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y && [[e[0][0], y[0]], [e[1][0], y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\"].map(type),\n input: function(xy) { return xy; },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n listeners = dispatch(brush, \"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\")\n .on(\"mousedown.brush touchstart.brush\", started);\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && empty(selection1) ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 && selection1 ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 == null || empty(selection1) ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args) {\n return that.__brush.emitter || new Emitter(that, args);\n }\n\n function Emitter(that, args) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (event.touches) { if (event.changedTouches.length < event.touches.length) return noevent(); }\n else if (touchending) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx,\n dy,\n moving,\n shifting = signX && signY && event.shiftKey,\n lockX,\n lockY,\n point0 = mouse(that),\n point = point0,\n emit = emitter(that, arguments).beforestart();\n\n if (type === \"overlay\") {\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n group\n .on(\"touchmove.brush\", moved, true)\n .on(\"touchend.brush touchcancel.brush\", ended, true);\n } else {\n var view = select(event.view)\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = mouse(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n group.on(\"touchmove.brush touchend.brush touchcancel.brush\", null);\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = extent.apply(this, arguments);\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","export var slice = Array.prototype.slice;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","var 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;\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","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows\n };\n}\n","import dsv from \"./dsv\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\n","import dsv from \"./dsv\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(d) {\n var 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,\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\";\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\";\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\";\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\";\nimport tree_cover from \"./cover\";\nimport tree_data from \"./data\";\nimport tree_extent from \"./extent\";\nimport tree_find from \"./find\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove\";\nimport tree_root from \"./root\";\nimport tree_size from \"./size\";\nimport tree_visit from \"./visit\";\nimport tree_visitAfter from \"./visitAfter\";\nimport tree_x, {defaultX} from \"./x\";\nimport tree_y, {defaultY} from \"./y\";\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","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\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 = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\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.each(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 (!isNaN(node.fx)) node.x = node.fx;\n if (!isNaN(node.fy)) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(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);\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.each(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 force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(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","// 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 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 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 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","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\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 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 \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = 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.reset();\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.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\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 \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\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.reset();\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};\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 compose from \"./compose\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\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\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\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 noop from \"../noop\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\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\";\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\";\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 the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\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\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 adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nexport default function(polygon, point) {\n var lambda = point[0],\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\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 = point0[0],\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 = point1[0],\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 < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer\";\nimport clipRejoin from \"./rejoin\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\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\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\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","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n areaRingSum = 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.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\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 {tau} from \"../math\";\nimport noop from \"../noop\";\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 \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = 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.reset();\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","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 {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\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\";\nimport clipCircle from \"../clip/circle\";\nimport clipRectangle from \"../clip/rectangle\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\nimport resample from \"./resample\";\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) {\n function transform(x, y) {\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k, (dy - y) / k];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, alpha) {\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 return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [ai * x - bi * y + ci, 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\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.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, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], 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 {asin, atan2, cos, sin, sqrt} from \"../math\";\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 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\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\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\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\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\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\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 projection from \"./index\";\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, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {equirectangularRaw} from \"./equirectangular\";\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 return [atan2(x, abs(gy)) / n * sign(gy), 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\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\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 projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\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\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\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\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\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\";\nimport {mercatorProjection} from \"./mercator\";\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","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) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\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 var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\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","import node_count from \"./count\";\nimport node_each from \"./each\";\nimport node_eachBefore from \"./eachBefore\";\nimport node_eachAfter from \"./eachAfter\";\nimport node_sum from \"./sum\";\nimport node_sort from \"./sort\";\nimport node_path from \"./path\";\nimport node_ancestors from \"./ancestors\";\nimport node_descendants from \"./descendants\";\nimport node_leaves from \"./leaves\";\nimport node_links from \"./links\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[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 defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\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 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};\n","export var slice = Array.prototype.slice;\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","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 {Node} from \"./hierarchy/index\";\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","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 treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\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\";\nimport treemapSlice from \"./slice\";\nimport {phi, squarifyRatio} from \"./squarify\";\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, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, 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 cross from \"./cross\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\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: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = 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 = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), 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 {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, 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 return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\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(domain) {\n var a = domain[0], b = domain[domain.length - 1], 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 piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return 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 = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : 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(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(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","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\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 i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","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 = new Date(+date)), date;\n }\n\n interval.floor = interval;\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","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\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\";\nimport {durationMinute, durationSecond} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\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","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\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\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\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\";\nimport {durationWeek} from \"./duration\";\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\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\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 {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","import colors from \"../colors\";\n\nfunction ramp(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\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\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","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 curveLinear from \"./linear\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","export var slice = Array.prototype.slice;\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\";\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","import {pi, tau} from \"../math\";\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 function() {}\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","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","import noop from \"../noop\";\nimport {point} from \"./basis\";\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\";\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\";\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 noop from \"../noop\";\nimport {point} from \"./cardinal\";\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","import {point} from \"./cardinal\";\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 {epsilon} from \"../math\";\nimport {Cardinal} from \"./cardinal\";\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\";\nimport noop from \"../noop\";\nimport {point} from \"./catmullRom\";\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\";\nimport {point} from \"./catmullRom\";\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","import noop from \"../noop\";\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","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n 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) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n return node.__zoom || identity;\n}\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? 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 ? ObjectPrototype : null;\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\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 (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (classof(process) == 'process') {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n !fails(post) &&\n location.protocol !== 'file:'\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","/*!\n * Vue.js v2.6.11\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.